spring
2025-03-10 eb8a6c6d3dcec5f49803669d69b1c22f70583640
完成设施和环境条件搬迁
已添加13个文件
已修改4个文件
4677 ■■■■ 文件已修改
src/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment.js 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cnas/resourceDemand/facilitiesEnvironment/internalWastes.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cnas/resourceDemand/foreignRegister/foreignRegister.js 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/styles/index.scss 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/Personnel-management-dia.vue 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/Personnel-management.vue 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/illuminance-recording.vue 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/lightning-protection-detection.vue 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/power-supply-stability.vue 360 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/temperature-humidity-record.vue 428 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/three-wastes-dialog.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/three-wastes-treatment.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/facilitiesEnvironment/index.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionOrder/add.vue 874 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionOrder/index.vue 779 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index.vue 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,254 @@
import request from '@/utils/request'
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-电源稳定性查询
export function getLaboratoryFacilityPowerStablePage(query) {
  return request({
    url: '/fePowerStable/getLaboratoryFacilityPowerStablePage',
    method: 'get',
    params: query
  })
}
// é€šè¿‡è®¾å¤‡åˆ†ç±»èŽ·å–è®¾å¤‡åˆ—è¡¨
export function deviceScopeSearch(query) {
  return request({
    url: '/deviceScope/search',
    method: 'get',
    params: query
  })
}
// è®¾å¤‡æ ‘å½¢
export function treeDevice(query) {
  return request({
    url: '/deviceScope/treeDevice',
    method: 'get',
    params: query
  })
}
//获取用户列表
export function selectUserCondition(query) {
  return request({
    url: "/system/newUser/selectUserCondition",
    method: "get",
    params: query,
  });
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-电源稳定性新增/修改
export function addLaboratoryFacilityPowerStable(query) {
  return request({
    url: '/fePowerStable/addLaboratoryFacilityPowerStable',
    method: 'post',
    data: query
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶-设施和环境条件要求-电源稳定性-测定量 åˆ é™¤
export function deleteFeMeasuredQuantity(query) {
  return request({
    url: '/fePowerStable/deleteFeMeasuredQuantity',
    method: 'delete',
    params: query
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-电源稳定性删除
export function deleteLaboratoryFacilityPowerStable(query) {
  return request({
    url: '/fePowerStable/deleteLaboratoryFacilityPowerStable',
    method: 'delete',
    params: query
  })
}
// ç”µæºç¨³å®šæ€§-测定量 æ ¹æ®ç”µæºç¨³å®šæ€§æŸ¥è¯¢
export function getFeMeasuredQuantityService(query) {
  return request({
    url: "/fePowerStable/getFeMeasuredQuantityService",
    method: "get",
    params: query,
  });
}
// ç”µæºç¨³å®šæ€§-测定量 å¯¼å‡º
export function exportFePowerStable(query) {
  return request({
    url: "/fePowerStable/exportFePowerStable",
    method: "get",
    responseType: "blob",
    params: query,
  });
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-防雷检测查询
export function getLightningProtectionDetection(query) {
  return request({
    url: '/feLightningProtection/getLightningProtectionDetection',
    method: 'get',
    params: query
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-防雷检测新增/修改
export function addLightningProtectionDetection(query) {
  return request({
    url: '/feLightningProtection/addLightningProtectionDetection',
    method: 'post',
    data: query,
    headers: {
      'Content-Type': 'multipart/form-data' // å¿…须设置为 multipart
    }
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-防雷检测删除
export function deleteLightningProtectionDetection(query) {
  return request({
    url: '/feLightningProtection/deleteLightningProtectionDetection',
    method: 'delete',
    params: query
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-防雷检测导出
export function exportOfLightningProtectionDetection(query) {
  return request({
    url: "/feLightningProtection/exportOfLightningProtectionDetection",
    method: "get",
    responseType: "blob",
    params: query,
  });
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-照度记录表-检测区域 æŸ¥è¯¢
export function getFeLightningProtection(query) {
  return request({
    url: '/feIllumination/getFeLightningProtection',
    method: 'get',
    params: query
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-照度记录表-检测区域 æ–°å¢ž/修改
export function addFeLightningProtection(query) {
  return request({
    url: '/feIllumination/addFeLightningProtection',
    method: 'post',
    data: query,
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-照度记录表-检测区域 åˆ é™¤
export function deleteFeLightningProtection(query) {
  return request({
    url: '/feIllumination/deleteFeLightningProtection',
    method: 'delete',
    params: query
  })
}
// ç…§åº¦è®°å½•表-检测区域 æ ¹æ®ç…§åº¦è®°å½•查询
export function getFeIlluminationDetectionArea(query) {
  return request({
    url: '/feIllumination/getFeIlluminationDetectionArea',
    method: 'get',
    params: query
  })
}
// ç…§åº¦è®°å½•表-检测区域 åˆ é™¤
export function deleteFeIlluminationDetectionArea(query) {
  return request({
    url: '/feIllumination/deleteFeIlluminationDetectionArea',
    method: 'delete',
    params: query
  })
}
// ç…§åº¦è®°å½•表-检测区域 å¯¼å‡º
export function exportFeIllumination(query) {
  return request({
    url: "/feIllumination/exportFeIllumination",
    method: "get",
    responseType: "blob",
    params: query,
  });
}
// è¯•验区域-查询"
export function getFeTempHumDate(query) {
  return request({
    url: '/feTempHumDate/getFeTempHumDate',
    method: 'get',
    params: query
  })
}
// è¯•验区域-新增/修改
export function addFeTempHumDate(query) {
  return request({
    url: '/feTempHumDate/addFeTempHumDate',
    method: 'post',
    data: query,
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-温湿度记录查询
export function getFeTempHumRecordPage(query) {
  return request({
    url: '/feTempHumDate/getFeTempHumRecordPage',
    method: 'get',
    params: query
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-温湿度记录新增/修改
export function addFeTempHumRecord(query) {
  return request({
    url: '/feTempHumDate/addFeTempHumRecord',
    method: 'post',
    data: query,
  })
}
// è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-温湿度记录删除
export function deleteFeTempHumRecord(query) {
  return request({
    url: '/feTempHumDate/deleteFeTempHumRecord',
    method: 'delete',
    params: query
  })
}
// è¯•验区域-删除
export function deleteFeTempHumDate(query) {
  return request({
    url: '/feTempHumDate/deleteFeTempHumDate',
    method: 'delete',
    params: query
  })
}
// // è®¾æ–½å’ŒçŽ¯å¢ƒæ¡ä»¶è¦æ±‚-温湿度记录 å¯¼å‡º
export function exportTemperatureAndHumidityRecords(query) {
  return request({
    url: "/feTempHumDate/exportTemperatureAndHumidityRecords",
    method: "get",
    responseType: "blob",
    params: query,
  });
}
// æ¸©æ¹¿åº¦ç¡®è®¤
export function affirmFeTempHumDate(query) {
  return request({
    url: '/feTempHumDate/affirmFeTempHumDate',
    method: 'post',
    data: query,
  })
}
src/api/cnas/resourceDemand/facilitiesEnvironment/internalWastes.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
import request from '@/utils/request'
// å®‰å…¨å†…务三废处理分页查询
export function pageInternalWastes(query) {
  return request({
    url: '/internalWastes/pageInternalWastes',
    method: 'get',
    params: query
  })
}
// å®‰å…¨å†…务三废处理查看详情
export function getInternalWastesOne(query) {
  return request({
    url: '/internalWastes/getInternalWastesOne',
    method: 'get',
    params: query
  })
}
// å®‰å…¨å†…务三废处理新增
export function addInternalWastes(query) {
  return request({
    url: '/internalWastes/addInternalWastes',
    method: 'post',
    data: query
  })
}
// å®‰å…¨å†…务三废处理分页修改
export function updateInternalWastes(query) {
  return request({
    url: '/internalWastes/updateInternalWastes',
    method: 'post',
    data: query
  })
}
// å¯¼å‡ºä¸‰åºŸå¤„理
export function exportInternalWastes(query) {
  return request({
    url: "/internalWastes/exportInternalWastes",
    method: "get",
    responseType: "blob",
    params: query,
  });
}
//安全内务三废处理删除
export function removeStandardSubstance(query) {
  return request({
    url: '/internalWastes/delInternalWastes',
    method: 'delete',
    params: query
  })
}
src/api/cnas/resourceDemand/foreignRegister/foreignRegister.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
import request from '@/utils/request'
// å¤–来人员分页查询
export function pageForeignRegister(query) {
  return request({
    url: '/foreignRegister/pageForeignRegister',
    method: 'get',
    params: query
  })
}
// å¤–来人员查看详情
export function getForeignRegisterOne(query) {
  return request({
    url: '/foreignRegister/getForeignRegisterOne',
    method: 'get',
    params: query
  })
}
// èŽ·å–ç”¨æˆ·åˆ—è¡¨
export function selectUserCondition(query) {
  return request({
    url: "/system/newUser/selectUserCondition",
    method: "get",
    params: query,
  });
}
// å¤–来人员新增
export function addForeignRegister(query) {
  return request({
    url: '/foreignRegister/addForeignRegister',
    method: 'post',
    data: query
  })
}
// å¤–来人员修改
export function updateForeignRegister(query) {
  return request({
    url: '/foreignRegister/updateForeignRegister',
    method: 'post',
    data: query
  })
}
//外来人员删除
export function delForeignRegister(query) {
  return request({
    url: '/foreignRegister/delForeignRegister',
    method: 'delete',
    params: query
  })
}
// å¯¼å‡ºå¤–来人员
export function exportForeignRegister(query) {
  return request({
    url: "/foreignRegister/exportForeignRegister",
    method: "get",
    responseType: "blob",
    params: query,
  });
}
src/assets/styles/index.scss
@@ -196,3 +196,11 @@
.required-span {
  color: red;
}
.bg-1 {
  width: 100%;
  height: calc(100% - 50px);
  overflow-y: auto;
  padding: 20px 10px 10px;
  background: rgb(245, 247, 251);
}
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/Personnel-management-dia.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,212 @@
<template>
  <div>
    <el-dialog v-loading="diaLoading" :close-on-click-modal="false"
               :close-on-press-escape="false"
               :visible.sync="formDia"
               title="外来人员管理信息"
               width="80%" @close="closeThreeWastesDia">
      <el-form ref="form" :model="form" :rules="rules" label-width="auto">
        <el-col :span="12">
          <el-form-item label="日期" prop="registerDate">
            <el-date-picker v-model="form.registerDate"
                            clearable
                            format="yyyy-MM-dd"
                            placeholder="选择日期"
                            size="small"
                            type="date"
                            value-format="yyyy-MM-dd">
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="进入区域" prop="area">
            <el-input v-model="form.area" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="进入人员" prop="personnel">
            <el-input v-model="form.personnel" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="进入原因" prop="reason">
            <el-input v-model="form.reason" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="陪同人员" prop="accompanyingId">
            <el-select v-model="form.accompanyingId" clearable filterable
                       placeholder="请选择陪同人员" size="small">
              <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="批准人签名" prop="approveId">
            <el-select v-model="form.approveId" clearable filterable
                       placeholder="请选择批准人" size="small">
              <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="保密及其它情况" prop="confidentiality">
            <el-input v-model="form.confidentiality" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="备注" prop="remark">
            <el-input v-model="form.remark" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeThreeWastesDia">取 æ¶ˆ</el-button>
        <el-button :loading="loading" type="primary" @click="handleEdit">提 äº¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  getForeignRegisterOne,
  selectUserCondition,
  addForeignRegister,
  updateForeignRegister
} from '@/api/cnas/resourceDemand/foreignRegister/foreignRegister'
export default {
  name: 'Personnel-management-dia',
  // import å¼•入的组件需要注入到对象中才能使用
  components: {},
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      formDia: false,
      diaLoading: false,
      loading: false,
      form: {
        registerDate: '',
        area: '',
        personnel: '',
        reason: '',
        accompanyingId: '',
        accompanyingName: '',
        approveId: '',
        approveName: '',
        confidentiality: '',
        remark: '',
      },
      rules: {
        registerDate: [{required: true, message: '请选择日期',trigger: 'change'}],
        area: [{required: true, message: '请填写进入区域',trigger: 'blur'}],
        personnel: [{required: true, message: '请填写进入人员',trigger: 'blur'}],
        reason: [{required: true, message: '请填写进入原因',trigger: 'blur'}],
        accompanyingId: [{required: true, message: '请选择陪同人员',trigger: 'change'}],
        approveId: [{required: true, message: '请选择批准人',trigger: 'change'}],
        confidentiality: [{required: true, message: '请填写保密及其他情况',trigger: 'blur'}],
        remark: [{required: false, message: '请填写备注',trigger: 'blur'}],
      },
      operationType: '',
      personList: []
    };
  },
  mounted() {
  },
  // æ–¹æ³•集合
  methods: {
    // æ‰“开弹框
    openDia (type, row) {
      this.getAuthorizedPerson()
      this.formDia = true
      this.operationType = type
      if (type !== 'add') {
        this.searchInfo(row)
      } else {
        this.form.accompanyingId = JSON.parse(localStorage.getItem("user")).userId
      }
    },
    // æŸ¥è¯¢è¯¦æƒ…
    searchInfo (row) {
      this.diaLoading = true
      getForeignRegisterOne({registerId : row.registerId}).then(res =>{
        this.diaLoading = false
        if (res.code === 200){
          this.form = res.data
        }
      }).catch(err => {
        console.log(err)
        this.diaLoading = false
      })
    },
    // æäº¤å¼¹æ¡†æ•°æ®
    handleEdit () {
      this.$refs['form'].validate((valid) => {
        if (valid) {
          this.loading = true
          const internalImplementDto = this.HaveJson(this.form)
          const index = this.personList.findIndex(item => item.value === internalImplementDto.accompanyingId)
          if (index > -1) {
            internalImplementDto.accompanyingName = this.personList[index].label
          }
          const index1 = this.personList.findIndex(item => item.value === internalImplementDto.approveId)
          if (index1 > -1) {
            internalImplementDto.approveName = this.personList[index].label
          }
          if (this.operationType === 'add') {
            addForeignRegister(internalImplementDto).then(res => {
              this.loading = false
              if (res.code === 200){
                this.$message.success('操作成功')
                this.closeThreeWastesDia()
              }
            }).catch(err => {
              console.log('err---', err);
              this.loading = false
            })
          } else if (this.operationType === 'edit') {
            updateForeignRegister(internalImplementDto).then(res => {
              this.loading = false
              if (res.code === 200){
                this.$message.success('操作成功')
                this.closeThreeWastesDia()
              }
            }).catch(err => {
              console.log('err---', err);
              this.loading = false
            })
          }
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    closeThreeWastesDia () {
      this.$refs.form.resetFields();
      this.formDia = false
      this.$emit('closeThreeWastesDia')
    },
    getAuthorizedPerson() {
      selectUserCondition().then(res => {
        let data = []
        res.data.forEach(a => {
          data.push({
            label: a.name,
            value: a.id
          })
        })
        this.personList = data
      })
    },
  }
};
</script>
<style scoped>
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/Personnel-management.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,217 @@
<template>
  <div class="capacity-scope">
    <div class="search">
      <div>
        <el-form :model="searchForm" ref="searchForm" size="small" :inline="true">
          <el-form-item label="日期" prop="registerDate">
            <el-date-picker v-model="searchForm.registerDate" clearable format="yyyy-MM-dd" placeholder="选择日期"
              size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd">
            </el-date-picker>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">查 è¯¢</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">重 ç½®</el-button>
          </el-form-item>
        </el-form>
      </div>
      <div>
        <el-button size="medium" @click="handleDown">导 å‡º</el-button>
        <el-button size="medium" type="primary" @click="openFormDia('add')">新 å¢ž</el-button>
      </div>
    </div>
    <div class="table">
      <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 280px)'" @pagination="pagination"
        :page="page" :tableLoading="tableLoading"></lims-table>
    </div>
    <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia"
      @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia>
  </div>
</template>
<script>
import PersonnelManagementDia from '../component/Personnel-management-dia.vue';
import limsTable from '@/components/Table/lims-table.vue'
import {
  pageForeignRegister,
  delForeignRegister,
  exportForeignRegister
} from '@/api/cnas/resourceDemand/foreignRegister/foreignRegister'
export default {
  name: 'Personnel-management',
  // import å¼•入的组件需要注入到对象中才能使用
  components: { limsTable, PersonnelManagementDia },
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      searchForm: {
        registerDate: '',
      },
      tableColumn: [
        {
          label: '日期',
          prop: 'registerDate',
          minWidth: '100'
        },
        {
          label: '进入区域',
          prop: 'area',
          minWidth: '100'
        },
        {
          label: '进入人员',
          prop: 'personnel',
          minWidth: '100'
        },
        {
          label: '进入原因',
          prop: 'reason',
          minWidth: '100'
        },
        {
          label: '陪同人员',
          prop: 'accompanyingName',
          minWidth: '100'
        },
        {
          label: '批准人签名',
          prop: 'approveName',
          minWidth: '100'
        },
        {
          label: '保密及其他情况',
          prop: 'confidentiality',
          minWidth: '100'
        },
        {
          label: '备注',
          prop: 'remark',
          minWidth: '100'
        },
        {
          dataType: 'action',
          fixed: 'right',
          minWidth: '220',
          label: '操作',
          operation: [
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.openFormDia('edit', row);
              },
            },
            {
              name: '删除',
              type: 'text',
              color: '#f56c6c',
              clickFun: (row) => {
                this.delPlan(row)
              },
            }
          ]
        }
      ],
      tableData: [],
      tableLoading: false,
      page: {
        total: 0,
        size: 10,
        current: 1
      },
      total: 0,
      threeWastesDia: false
    };
  },
  mounted() {
    this.searchList()
  },
  // æ–¹æ³•集合
  methods: {
    // æŸ¥è¯¢åˆ—表
    searchList() {
      this.tableLoading = true
      pageForeignRegister({
        ...this.page,
        ...this.searchForm
      }).then(res => {
        this.tableLoading = false
        if (res.code === 200) {
          this.tableData = res.data.records
          this.page.total = res.data.total
        }
      }).catch(err => {
        console.log('err---', err);
        this.tableLoading = false
      })
    },
    // åˆ é™¤
    delPlan(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.tableLoading = true
        delForeignRegister({ registerId: row.registerId }).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.$message.success('删除成功')
            this.searchList()
          }
        }).catch(err => {
          this.tableLoading = false
          console.log('err---', err);
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // æ–°å¢žï¼Œç¼–辑,批准弹框
    openFormDia(type, row) {
      this.threeWastesDia = true
      this.$nextTick(() => {
        this.$refs.threeWastesDia.openDia(type, row)
      })
    },
    // å¯¼å‡º
    handleDown() {
      exportForeignRegister(this.searchForm).then(res => {
        const blob = new Blob([res], { type: 'application/msword' });
        this.$download.saveAs(blob, '外来人员登记.docx')
      })
    },
    closeThreeWastesDia() {
      this.threeWastesDia = false
      this.searchList()
    },
    // é‡ç½®æŸ¥è¯¢æ¡ä»¶
    resetSearchForm() {
      this.searchForm.registerDate = '';
      this.searchList()
    },
    // åˆ†é¡µåˆ‡æ¢
    pagination(page) {
      this.page.size = page.limit
      this.searchList();
    },
  }
};
</script>
<style scoped>
.search {
  height: 46px;
  display: flex;
  justify-content: space-between;
}
.capacity-scope {
  padding: 20px;
}
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
<template>
  <el-row>
    <el-col :span="2">
      <el-menu style="height: 100vh;" @select="clickSelect" :default-active="activeName">
        <el-menu-item index="电源稳定性">
          <span slot="title">电源稳定性</span>
        </el-menu-item>
        <el-menu-item index="防雷检测">
          <span slot="title">防雷检测</span>
        </el-menu-item>
        <el-menu-item index="照度记录">
          <span slot="title">照度记录</span>
        </el-menu-item>
        <el-menu-item index="温湿度记录">
          <span slot="title">温湿度记录</span>
        </el-menu-item>
      </el-menu>
    </el-col>
    <el-col :span="22" style="padding: 10px">
      <power-supply-stability v-if="activeName === '电源稳定性'"/>
      <lightning-protection-detection v-if="activeName === '防雷检测'" />
      <illuminance-recording v-if="activeName === '照度记录'"/>
      <temperature-humidity-record v-if="activeName === '温湿度记录'"/>
    </el-col>
  </el-row>
</template>
<script>
// ç”µæºç¨³å®šæ€§
import PowerSupplyStability from "./facilities-environmental-conditions/power-supply-stability.vue";
// é˜²é›·æ£€æµ‹
import LightningProtectionDetection from "./facilities-environmental-conditions/lightning-protection-detection.vue";
// ç…§åº¦è®°å½•
import IlluminanceRecording from "./facilities-environmental-conditions/illuminance-recording.vue";
// æ¸©æ¹¿åº¦è®°å½•
import TemperatureHumidityRecord from "./facilities-environmental-conditions/temperature-humidity-record.vue";
export default {
  components: {TemperatureHumidityRecord, IlluminanceRecording, LightningProtectionDetection, PowerSupplyStability},
  data() {
    return {
      activeName: "电源稳定性"
    }
  },
  methods: {
    clickSelect(index) {
      this.activeName = index;
    }
  }
}
</script>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/illuminance-recording.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,359 @@
<template>
  <div>
    <div class="header">
      <div>照度记录</div>
      <div>
        <el-button size="small" type="primary" @click="clickAdd">新 å¢ž</el-button>
      </div>
    </div>
    <el-table :data="tableData" height="calc(100vh - 19em)" style="width: 100%">
      <el-table-column label="序号" type="index" width="120">
        <template v-slot="scope">
          <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span>
        </template>
      </el-table-column>
      <el-table-column label="结论" min-width="180" prop="conclusion"></el-table-column>
      <el-table-column label="测试日期" min-width="180" prop="testDate" width="testDate"></el-table-column>
      <el-table-column label="检测者" min-width="180" prop="testerUser"></el-table-column>
      <el-table-column label="核查人" min-width="180" prop="checkerUser"></el-table-column>
      <el-table-column label="设备名称" min-width="180" prop="deviceName"></el-table-column>
      <el-table-column label="设备编号" min-width="180" prop="managementNumber"></el-table-column>
      <el-table-column label="校准日期" min-width="180" prop="lastCalibrationDate"></el-table-column>
      <el-table-column label="下次校准日期" min-width="180" prop="nextCalibrationDate"></el-table-column>
      <el-table-column label="创建时间" min-width="180" prop="createTime"></el-table-column>
      <el-table-column fixed="right" label="操作" min-width="140">
        <template v-slot="scope">
          <el-button size="small" type="text" @click="downLoadPost(scope.row)">导出</el-button>
          <el-button size="small" type="text" @click="edit(scope.row)">编辑</el-button>
          <el-button size="small" type="text" @click="deleteRowFun(scope.row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" :total="search.total"
      layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
      @current-change="handleCurrentChange">
    </el-pagination>
    <el-dialog :visible.sync="dialogVisible" title="新增" width="50%" @open="openDialog">
      <div style="height: 50vh; overflow-y: auto">
        <el-form ref="form" :model="form" label-width="120px">
          <el-row>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'change' }]" label="测试日期"
                prop="testDate">
                <el-date-picker v-model="form.testDate" format="yyyy-MM-dd" placeholder="选择日期" size="small"
                  style="width: 100%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入设备名称', trigger: 'change' }]" label="设备名称"
                prop="deviceId">
                <el-select v-model="form.deviceId" class="table_input" clearable filterable placeholder="设备名称"
                  size="small" @change="getCalibrationDateFun">
                  <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id">
                    {{ item.deviceName + item.managementNumber }}
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="设备编号">
                <el-input v-model="form.managementNumber" disabled size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="最近校准日期">
                <el-input v-model="form.lastCalibrationDate" disabled size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="下次校准日期">
                <el-input v-model="form.nextCalibrationDate" disabled size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="检测者" prop="recipientUser">
                <el-select v-model="form.testerId" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="核查人" prop="recipientUser">
                <el-select v-model="form.checkerId" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="结论">
                <el-input v-model="form.conclusion" :rows="2" placeholder="请输入内容" type="textarea">
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <div>
            <div style="display: flex; justify-content: flex-end; margin-bottom: 0.5em">
              <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">新增</el-button>
            </div>
            <div>
              <el-table :data="form.illuminationDetectionAreaList" height="40vh" style="width: 100%; margin: auto">
                <el-table-column label="序号" type="index" width="80"></el-table-column>
                <el-table-column align="center" label="检测区域名称" min-width="180" prop="detectionAreaLabel">
                  <template #default="{ row }">
                    <el-input v-model="row.detectionAreaLabel" :rows="1" type="textarea"></el-input>
                  </template>
                </el-table-column>
                <el-table-column align="center" label="检测值" min-width="300" prop="name">
                  <template>
                    <el-table-column align="center" label="第一次" min-width="100" prop="valueOne">
                      <template #default="{ row }">
                        <el-input v-model="row.valueOne" :rows="1" @blur="getAverage(row)"></el-input>
                      </template>
                    </el-table-column>
                    <el-table-column align="center" label="第二次" min-width="100" prop="valueTwo">
                      <template #default="{ row }">
                        <el-input v-model="row.valueTwo" :rows="1" @blur="getAverage(row)"></el-input>
                      </template>
                    </el-table-column>
                    <el-table-column align="center" label="第三次" min-width="100" prop="valueThree">
                      <template #default="{ row }">
                        <el-input v-model="row.valueThree" :rows="1" @blur="getAverage(row)"></el-input>
                      </template>
                    </el-table-column>
                    <el-table-column align="center" label="平均值" min-width="100" prop="average">
                      <template #default="{ row }">
                        <el-input v-model="row.average" :rows="1"></el-input>
                      </template>
                    </el-table-column>
                  </template>
                </el-table-column>
                <el-table-column align="center" label="备注" min-width="180" prop="detectionAreaLabel">
                  <template #default="{ row }">
                    <el-input v-model="row.remark" :rows="1" type="textarea"></el-input>
                  </template>
                </el-table-column>
                <el-table-column fixed="right" label="操作" width="100">
                  <template slot-scope="scope">
                    <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)">
                      åˆ é™¤
                    </el-button>
                  </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  getFeLightningProtection,
  deviceScopeSearch,
  selectUserCondition,
  treeDevice,
  addFeLightningProtection,
  deleteFeLightningProtection,
  getFeIlluminationDetectionArea,
  deleteFeIlluminationDetectionArea,
  exportFeIllumination
} from '@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment'
export default {
  data() {
    return {
      search: {
        size: 10,
        current: 1,
        total: 0
      },
      tableData: [],
      dialogVisible: false,
      submitLoading: false,
      form: {
        testDate: '',
        deviceId: '',
        managementNumber: '',
        lastCalibrationDate: '',
        nextCalibrationDate: '',
        testerId: '',
        checkerId: '',
        conclusion: '',
        illuminationDetectionAreaList: []
      },
      cascaderList: [],
      responsibleOptions: [],
      equipOptions: [],
    }
  },
  mounted() {
    this.initData()
  },
  watch: {
    dialogVisible(newVal) {
      if (!newVal) {
        this.form = {
          deviceId: null,
          illuminationDetectionAreaList: []
        }
      }
    }
  },
  methods: {
    getAverage(row) {
      if (row.valueOne && row.valueTwo && row.valueThree) {
        if (!isNaN(row.valueOne) && !isNaN(row.valueTwo) && !isNaN(row.valueThree)) {
          const avg = Number(row.valueOne) + Number(row.valueTwo) + Number(row.valueThree)
          console.log(avg)
          row.average = Math.round(avg / 3);
        } else {
          this.$message.warning("必须为数字!")
        }
      }
    },
    edit(row) {
      getFeIlluminationDetectionArea({ intensityIlluminationId: row.intensityIlluminationId }).then(res => {
        this.form = { ...row }
        this.form.illuminationDetectionAreaList = res.data;
        this.dialogVisible = true
      });
    },
    initData() {
      getFeLightningProtection({ ...this.search }).then(res => {
        if (res.code === 200) {
          this.tableData = res.data.records;
          this.search.total = res.data.total;
        }
      });
    },
    handleSizeChange(val) {
      this.search.size = val;
      this.initData();
    },
    handleCurrentChange(val) {
      this.search.current = val;
      this.initData();
    },
    deleteRowFun(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteFeLightningProtection({ intensityIlluminationId: row.intensityIlluminationId }).then(res => {
          this.$message.success('删除成功!')
          this.initData()
        })
      })
    },
    feMeasuredQuantityListDelete(row, index) {
      if (row.detectionAreaId) {
        deleteFeIlluminationDetectionArea({ detectionAreaId: row.detectionAreaId }).then(res => {
          if (res.code === 200) {
            this.form.illuminationDetectionAreaList.splice(index, 1)
            this.$message.success('删除成功!')
          }
        })
      } else {
        this.form.illuminationDetectionAreaList.splice(index, 1)
        this.$message.success('删除成功!')
      }
    },
    openDialog() {
      treeDevice().then(res => {
        this.cascaderList = res.data;
      });
      this.$nextTick(() => {
        this.$refs['form'].clearValidate()
      })
      this.getUserList()
    },
    clickAdd() {
      this.dialogVisible = true
      this.getEquipOptions()
    },
    // èŽ·å–æ‰€æœ‰è®¾å¤‡
    getEquipOptions() {
      this.equipOptions = []
      deviceScopeSearch({ status: '0' }).then(res => {
        if (res.code === 200 && res.data) {
          this.equipOptions = res.data
        }
      }).catch(error => {
        console.error(error)
      })
    },
    feMeasuredQuantityListAdd() {
      const obj = {
        detectionAreaLabel: null,
        valueOne: null,
        valueTwo: null,
        valueThree: null,
        average: null,
        remark: null,
      }
      this.form.illuminationDetectionAreaList.push(obj)
    },
    addPowerSupplyStability() {
      this.submitLoading = true
      this.$refs.form.validate((valid) => {
        if (valid) {
          addFeLightningProtection(this.form).then(res => {
            this.submitLoading = false
            if (res.code === 200) {
              this.initData()
              this.dialogVisible = false
            }
          }).catch(error => {
            this.submitLoading = false
          })
        }
      });
    },
    // èŽ·å–è´Ÿè´£äººä¿¡æ¯æŽ¥å£
    getUserList() {
      selectUserCondition().then(res => {
        if (res.code == 200) {
          this.responsibleOptions = res.data
        }
      })
    },
    getCalibrationDateFun(val) {
      const index = this.equipOptions.findIndex(item => item.id === val)
      if (index > -1) {
        this.form.managementNumber = this.equipOptions[index].managementNumber
        this.form.lastCalibrationDate = this.equipOptions[index].lastCalibrationDate
        this.form.nextCalibrationDate = this.equipOptions[index].nextCalibrationDate
      }
    },
    // å¯¼å‡º
    downLoadPost(row) {
      exportFeIllumination({ intensityIlluminationId: row.intensityIlluminationId }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/msword' });
        this.$download.saveAs(blob, '照度记录.docx')
      })
    },
  }
}
</script>
<style scoped>
.header {
  height: 3em;
  width: 100%;
  display: flex;
  justify-content: space-between;
}
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/lightning-protection-detection.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,231 @@
<template>
  <div>
    <div class="header">
      <div>防雷检测</div>
      <div>
        <el-button size="small" type="primary" @click="clickAdd">导 å…¥</el-button>
        <el-button size="small" type="primary" @click="downLoadPost">导 å‡º</el-button>
      </div>
    </div>
    <el-table :data="tableData" height="calc(100vh - 19em)" style="width: 100%">
      <el-table-column label="序号" type="index" width="120">
        <template v-slot="scope">
          <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span>
        </template>
      </el-table-column>
      <el-table-column label="原文件名" min-width="180" prop="fileName">
      </el-table-column>
      <el-table-column label="检测日期" min-width="180" prop="detectionDate">
      </el-table-column>
      <el-table-column label="有效期" min-width="180" prop="termValidity">
      </el-table-column>
      <el-table-column label="检测单位" min-width="180" prop="detectionUnit">
      </el-table-column>
      <el-table-column fixed="right" label="操作" min-width="100">
        <template v-slot="scope">
          <el-button size="small" type="text" @click="edit(scope.row)">编辑</el-button>
          <el-button size="small" type="text" @click="deleteRowFun(scope.row)">删除</el-button>
          <el-button size="small" type="text" @click="download(scope.row)">下载</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" :total="search.total"
      layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
      @current-change="handleCurrentChange">
    </el-pagination>
    <el-dialog :visible.sync="dialogVisible" title="新 å¢ž" width="50%">
      <div style="height: 50vh;">
        <el-form ref="form" :model="form" label-width="80px">
          <el-row>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'blur' }]" label="检测日期"
                prop="detectionDate">
                <el-date-picker v-model="form.detectionDate" format="yyyy-MM-dd" placeholder="选择日期" size="small"
                  style="width: 100%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'blur' }]" label="有效期"
                prop="termValidity">
                <el-date-picker v-model="form.termValidity" format="yyyy-MM-dd" placeholder="选择日期" size="small"
                  style="width: 100%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'blur' }]" label="检测单位"
                prop="detectionUnit">
                <el-input v-model="form.detectionUnit" size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="检测单位">
                <el-upload :file-list="form.fileList" :http-request="httpRequest" :limit="1" :on-exceed="handleExceed"
                  :on-remove="handleRemove" action="#" class="upload-demo" drag multiple>
                  <i class="el-icon-upload"></i>
                  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
                </el-upload>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="addImport">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  getLightningProtectionDetection,
  addLightningProtectionDetection,
  deleteLightningProtectionDetection,
  exportOfLightningProtectionDetection
} from '@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment'
import axios from 'axios';
export default {
  data() {
    return {
      search: {
        size: 10,
        current: 1,
        total: 0
      },
      tableData: [],
      dialogVisible: false,
      form: {
        fileList: [],
        fileData: []
      },
    }
  },
  mounted() {
    this.initData()
  },
  watch: {
    dialogVisible(newVal) {
      if (!newVal) {
        this.form = {
          fileList: [],
          fileData: []
        }
      }
    }
  },
  methods: {
    // å¯¼å‡º
    downLoadPost() {
      exportOfLightningProtectionDetection().then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/msword' });
        //将Blob å¯¹è±¡è½¬æ¢æˆå­—符串
        this.$download.saveAs(blob, '防雷检测导出.xlsx')
      })
    },
    initData() {
      getLightningProtectionDetection({ ...this.search }).then(res => {
        if (res.code === 200) {
          this.tableData = res.data.records;
          this.search.total = res.data.total;
        }
      });
    },
    handleSizeChange(val) {
      this.search.size = val;
      this.initData();
    },
    handleCurrentChange(val) {
      this.search.current = val;
      this.initData();
    },
    clickAdd() {
      this.dialogVisible = true
    },
    // æ–‡ä»¶æ•°é‡è¿‡å¤šæ—¶æé†’
    handleExceed() {
      this.$message({ type: 'error', message: '最多支持1个附件上传' })
    },
    // è¦†ç›–默认的上传行为,可以自定义上传的实现,将上传的文件依次添加到fileList数组中,支持多个文件
    httpRequest(option) {
      this.form.fileData.push(option)
    },
    addImport() {
      console.log(this.form)
      this.$refs.form.validate((valid) => {
        if (valid) {
          let params = new FormData()
          if (this.form.lightningProtectionId) {
            params.append("lightningProtectionId", this.form.lightningProtectionId)
          }
          params.append("termValidity", this.form.termValidity)
          params.append("detectionUnit", this.form.detectionUnit)
          params.append("detectionDate", this.form.detectionDate)
          if (this.form.fileData.length > 0) {
            params.append("file", this.form.fileData[0].file)
          }
          addLightningProtectionDetection(params).then(res => {
            if (res.code === 200) {
              this.dialogVisible = false
              this.initData()
            }
          });
        }
      });
    },
    edit(row) {
      this.dialogVisible = true
      this.form = { ...row }
      this.form.fileList = []
      this.form.fileData = []
      this.form.fileList.push({ name: row.systemFileName, url: "123434" })
      console.log(this.form)
    },
    deleteRowFun(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteLightningProtectionDetection({ lightningProtectionId: row.lightningProtectionId }).then(res => {
          this.$message.success('删除成功!')
          this.initData()
        })
      })
    },
    handleRemove(file) {
      this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + file.name).then(res => {
        if (res.code === 201) return;
        this.$message.success('删除成功!')
        let index = this.form.fileList.indexOf(fileName)
        if (index != -1) {
          this.successFileList.splice(index, 1)
        }
      })
    },
    download(row) {
      if (!row.systemFileName) {
        this.$message.warning('暂无文件')
        return
      }
      this.$download.downloadFileFromUrl(row.systemFileName, row.fileName)
    }
  }
}
</script>
<style scoped>
.header {
  height: 3em;
  width: 100%;
  display: flex;
  justify-content: space-between;
}
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/power-supply-stability.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,360 @@
<template>
  <div>
    <div class="header">
      <div>电源稳定性</div>
      <div>
        <el-button size="small" type="primary" @click="openAddDia">新 å¢ž</el-button>
      </div>
    </div>
    <el-table :data="tableData" height="calc(100vh - 19em)" style="width: 100%">
      <el-table-column label="序号" type="index" width="120">
        <template v-slot="scope">
          <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span>
        </template>
      </el-table-column>
      <el-table-column label="测试地点" min-width="180" prop="testLocation"></el-table-column>
      <el-table-column label="测试日期" min-width="180" prop="testDate" width="testDate"></el-table-column>
      <el-table-column label="结论" min-width="180" prop="conclusion"></el-table-column>
      <el-table-column label="检测者" min-width="180" prop="testerUser"></el-table-column>
      <el-table-column label="核查人" min-width="180" prop="checkerUser"></el-table-column>
      <el-table-column label="设备名称" min-width="180" prop="deviceName"></el-table-column>
      <el-table-column label="设备编号" min-width="180" prop="managementNumber"></el-table-column>
      <el-table-column label="校准日期" min-width="180" prop="lastCalibrationDate"></el-table-column>
      <el-table-column label="下次校准日期" min-width="180" prop="nextCalibrationDate"></el-table-column>
      <el-table-column label="创建时间" min-width="180" prop="createTime"></el-table-column>
      <el-table-column fixed="right" label="操作" min-width="140">
        <template v-slot="scope">
          <el-button size="small" type="text" @click="downLoadPost(scope.row)">导出</el-button>
          <el-button size="small" type="text" @click="edit(scope.row)">编辑</el-button>
          <el-button size="small" type="text" @click="deleteRowFun(scope.row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" :total="search.total"
      layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
      @current-change="handleCurrentChange">
    </el-pagination>
    <el-dialog :visible.sync="dialogVisible" title="新增" width="50%" @open="openDialog">
      <div style="height: 50vh; overflow-y: auto">
        <el-form ref="form" :model="form" label-width="120px">
          <el-row>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'blur' }]" label="测试地点"
                prop="testLocation">
                <el-input v-model="form.testLocation" size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入测试日期', trigger: 'change' }]" label="测试日期"
                prop="testDate">
                <el-date-picker v-model="form.testDate" format="yyyy-MM-dd" placeholder="选择日期" size="small"
                  style="width: 100%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item :rules="[{ required: true, message: '请输入设备名称', trigger: 'change' }]" label="设备名称"
                prop="deviceId">
                <el-select v-model="form.deviceId" class="table_input" clearable filterable placeholder="设备名称"
                  size="small" @change="getCalibrationDateFun">
                  <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id">
                    {{ item.deviceName + item.managementNumber }}
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="设备编号">
                <el-input v-model="form.managementNumber" disabled size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="最近校准日期">
                <el-input v-model="form.lastCalibrationDate" disabled size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="下次校准日期">
                <el-input v-model="form.nextCalibrationDate" disabled size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="检测者" prop="recipientUser">
                <el-select v-model="form.testerId" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="核查人" prop="recipientUser">
                <el-select v-model="form.checkerId" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="结论">
                <el-input v-model="form.conclusion" :rows="2" placeholder="请输入内容" type="textarea">
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <div>
            <div style="display: flex; justify-content: flex-end; margin-bottom: 0.5em">
              <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">新增</el-button>
            </div>
            <div>
              <el-table :data="form.feMeasuredQuantityList" height="40vh" style="width: 100%; margin: auto">
                <el-table-column label="序号" type="index" width="80"></el-table-column>
                <el-table-column align="center" label="测定量名称" min-width="180" prop="measuredQuantityLabel">
                  <template #default="{ row }">
                    <el-input v-model="row.measuredQuantityLabel" :rows="1" type="textarea"></el-input>
                  </template>
                </el-table-column>
                <el-table-column align="center" label="值" min-width="300" prop="name">
                  <template>
                    <el-table-column align="center" label="A" min-width="100" prop="valueA">
                      <template #default="{ row }">
                        <el-input v-model="row.valueA" :rows="1"></el-input>
                      </template>
                    </el-table-column>
                    <el-table-column align="center" label="B" min-width="100" prop="valueB">
                      <template #default="{ row }">
                        <el-input v-model="row.valueB" :rows="1"></el-input>
                      </template>
                    </el-table-column>
                    <el-table-column align="center" label="C" min-width="100" prop="valueC">
                      <template #default="{ row }">
                        <el-input v-model="row.valueC" :rows="1"></el-input>
                      </template>
                    </el-table-column>
                  </template>
                </el-table-column>
                <el-table-column fixed="right" label="操作" width="100">
                  <template slot-scope="scope">
                    <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)">
                      åˆ é™¤
                    </el-button>
                  </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  getLaboratoryFacilityPowerStablePage,
  deviceScopeSearch,
  treeDevice,
  selectUserCondition,
  addLaboratoryFacilityPowerStable,
  deleteFeMeasuredQuantity,
  getFeMeasuredQuantityService,
  deleteLaboratoryFacilityPowerStable,
  exportFePowerStable
} from '@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment'
export default {
  data() {
    return {
      search: {
        size: 10,
        current: 1,
        total: 0
      },
      tableData: [],
      dialogVisible: false,
      submitLoading: false,
      form: {
        testLocation: '',
        testDate: '',
        deviceId: '',
        managementNumber: '',
        lastCalibrationDate: '',
        nextCalibrationDate: '',
        testerId: '',
        checkerId: '',
        conclusion: '',
        feMeasuredQuantityList: []
      },
      equipOptions: [],
      cascaderList: [],
      responsibleOptions: []
    }
  },
  mounted() {
    this.initData()
  },
  watch: {
    dialogVisible(newVal) {
      if (!newVal) {
        this.form = {
          deviceId: null,
          feMeasuredQuantityList: []
        }
      }
    }
  },
  methods: {
    // åˆå§‹åŒ–调用
    initData() {
      getLaboratoryFacilityPowerStablePage({
        ...this.search
      }).then(res => {
        if (res.code === 200) {
          this.tableData = res.data.records;
          this.search.total = res.data.total;
        }
      })
    },
    handleSizeChange(val) {
      this.search.size = val;
      this.initData();
    },
    handleCurrentChange(val) {
      this.search.current = val;
      this.initData();
    },
    // ç”µæºç¨³å®šæ€§ è¡¨æ ¼ä¸­çš„行删除按钮
    deleteRowFun(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteLaboratoryFacilityPowerStable({ powerStableId: row.powerStableId }).then(res => {
          this.$message.success('删除成功!')
          this.initData()
        })
      })
    },
    openAddDia() {
      this.dialogVisible = true
      this.getEquipOptions()
    },
    // èŽ·å–æ‰€æœ‰è®¾å¤‡
    getEquipOptions() {
      this.equipOptions = []
      deviceScopeSearch({ status: '0' }).then(res => {
        if (res.code === 200 && res.data) {
          this.equipOptions = res.data
        }
      }).catch(error => {
        console.error(error)
      })
    },
    // ç”µæºç¨³å®šæ€§-打开弹框调用设备接口,查询使用的设备
    openDialog() {
      treeDevice().then(res => {
        this.cascaderList = res.data;
      })
      this.$nextTick(() => {
        this.$refs['form'].clearValidate()
      })
      this.getUserList()
    },
    //
    getCalibrationDateFun(val) {
      const index = this.equipOptions.findIndex(item => item.id === val)
      if (index > -1) {
        this.form.managementNumber = this.equipOptions[index].managementNumber
        this.form.lastCalibrationDate = this.equipOptions[index].lastCalibrationDate
        this.form.nextCalibrationDate = this.equipOptions[index].nextCalibrationDate
      }
    },
    // ç”µæºç¨³å®šæ€§-测定量弹框中表格的删除行
    feMeasuredQuantityListDelete(row, index) {
      if (row.measuredQuantityId) {
        deleteFeMeasuredQuantity({ measuredQuantityId: row.measuredQuantityId }).then(res => {
          if (res.code === 201) return
          this.form.feMeasuredQuantityList.splice(index, 1)
          this.$message.success('删除成功!')
        })
      } else {
        this.form.feMeasuredQuantityList.splice(index, 1)
        this.$message.success('删除成功!')
      }
    },
    // ç”µæºç¨³å®šæ€§-测定量表格新增行
    feMeasuredQuantityListAdd() {
      const obj = {
        measuredQuantityLabel: null,
        valueA: null,
        valueB: null,
        valueC: null,
      }
      this.form.feMeasuredQuantityList.push(obj)
    },
    // ç”µæºç¨³å®šæ€§ æ–°å¢ž
    addPowerSupplyStability() {
      this.submitLoading = true
      this.$refs.form.validate((valid) => {
        if (valid) {
          addLaboratoryFacilityPowerStable(this.form).then(res => {
            this.submitLoading = false
            if (res.code === 200) {
              this.initData()
              this.dialogVisible = false
            }
          }).catch(error => {
            this.submitLoading = false
          })
        }
      });
    },
    // å¯¼å‡º
    downLoadPost(row) {
      exportFePowerStable({ powerStableId: row.powerStableId }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/msword' });
        this.$download.saveAs(blob, '电源稳定性.docx')
      })
    },
    // ç”µæºç¨³å®šæ€§ ç‚¹å‡»è¡Œç¼–辑触发
    edit(row) {
      getFeMeasuredQuantityService({ powerStableId: row.powerStableId }).then((res => {
        this.form = { ...row }
        this.form.feMeasuredQuantityList = res.data;
        this.dialogVisible = true
      }))
    },
    // èŽ·å–è´Ÿè´£äººä¿¡æ¯æŽ¥å£
    getUserList() {
      selectUserCondition().then(res => {
        if (res.code == 200) {
          let data = []
          res.data.forEach(a => {
            data.push({
              id: a.id,
              name: a.name
            })
          })
          this.responsibleOptions = data
        }
      })
    },
  }
}
</script>
<style scoped>
.header {
  height: 3em;
  width: 100%;
  display: flex;
  justify-content: space-between;
}
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/facilities-environmental-conditions/temperature-humidity-record.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,428 @@
<template>
  <div>
    <el-row :gutter="20">
      <el-col :span="12">
        <div class="header">
          <div>试验区域</div>
          <div>
            åç§°ï¼š
            <el-input v-model="search.testAreaName" clearable size="small" style="width: 120px"></el-input>
            <el-button size="small" type="primary" @click="initData">查询</el-button>
            <el-button size="small" type="primary" @click="clickAdd">新 å¢ž</el-button>
          </div>
        </div>
        <el-table :data="tableData" height="calc(100vh - 19em)" highlight-current-row style="width: 100%"
          @row-click="clickRow">
          <el-table-column label="序号" type="index" width="60" align="center"></el-table-column>
          <el-table-column label="月度时间" min-width="180" prop="monthDate"></el-table-column>
          <el-table-column label="试验区域名称" min-width="180" prop="testAreaName"></el-table-column>
          <el-table-column label="确认状态" min-width="180" prop="isAffirm">
            <template slot-scope="scope">
              <el-tag type="danger" v-if="scope.row.isAffirm == 0">未确认</el-tag>
              <el-tag type="success" v-if="scope.row.isAffirm == 1">已确认</el-tag>
            </template>
          </el-table-column>
          <el-table-column label="增补信息" min-width="180" prop="subjoin"></el-table-column>
          <el-table-column fixed="right" label="操作" min-width="180" align="center">
            <template v-slot="scope">
              <el-button size="small" type="text" @click="downLoadPost(scope.row)">导出</el-button>
              <el-button size="small" type="text" @click="edit(scope.row)">编辑</el-button>
              <el-button :disabled="scope.row.isAffirm === '1'" size="small" type="text"
                @click="openApprovalDialog(scope.row)">确认</el-button>
              <el-button size="small" type="text" @click="deleteRowFun(scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]"
          :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
          @current-change="handleCurrentChange">
        </el-pagination>
      </el-col>
      <el-col :span="12">
        <div class="header">
          <div>温湿度记录:{{ saveRow.monthDate }}</div>
          <div>
            <el-button v-if="saveRow.monthDate" size="small" type="primary" @click="dialogVisible1 = true">新
              å¢ž</el-button>
          </div>
        </div>
        <el-table :data="tableData1" height="calc(100vh - 18em)" style="width: 100%">
          <el-table-column label="序号" type="index" width="60" align="center"></el-table-column>
          <el-table-column label="日期" min-width="100" prop="recordDate"></el-table-column>
          <el-table-column align="center" label="上午" min-width="200">
            <template>
              <el-table-column label="时间" min-width="110" prop="morningTestTime"
                show-overflow-tooltip></el-table-column>
              <el-table-column label="温度" min-width="80" prop="morningTemp" show-overflow-tooltip></el-table-column>
              <el-table-column label="湿度" min-width="80" prop="morningHum" show-overflow-tooltip></el-table-column>
            </template>
          </el-table-column>
          <el-table-column label="记录员" min-width="100" prop="morningRecorderUser"></el-table-column>
          <el-table-column align="center" label="下午" min-width="200">
            <template>
              <el-table-column label="时间" min-width="110" prop="afternoonTime" show-overflow-tooltip></el-table-column>
              <el-table-column label="温度" min-width="80" prop="afternoonTemp" show-overflow-tooltip></el-table-column>
              <el-table-column label="湿度" min-width="80" prop="afternoonHum" show-overflow-tooltip></el-table-column>
            </template>
          </el-table-column>
          <el-table-column label="记录员" min-width="100" prop="afternoonRecorderUser"></el-table-column>
          <el-table-column label="备注" min-width="100" prop="note" show-overflow-tooltip></el-table-column>
          <el-table-column fixed="right" label="操作" min-width="100">
            <template v-slot="scope">
              <el-button size="small" type="text" @click="edit1(scope.row)">编辑</el-button>
              <el-button size="small" type="text" @click="deleteRowFun1(scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]"
          :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange1"
          @current-change="handleCurrentChange1">
        </el-pagination>
      </el-col>
    </el-row>
    <el-dialog :visible.sync="dialogVisible" title="提示" width="50%">
      <div style="height: 20vh;">
        <el-form ref="form" :model="form" label-width="80px">
          <el-row>
            <el-col :span="24">
              <el-form-item :rules="[{ required: true, message: '请输入月度时间', trigger: 'blur' }]" label="月度时间"
                prop="monthDate">
                <el-date-picker v-model="form.monthDate" format="yyyy-MM" placeholder="选择月份" size="small"
                  style="width: 100%" type="month" value-format="yyyy-MM">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item :rules="[{ required: true, message: '请输入试验区域', trigger: 'blur' }]" label="试验区域"
                prop="testAreaName">
                <el-input v-model="form.testAreaName"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog :visible.sync="dialogVisible1" title="提示" width="50%" @open="openDialog">
      <div style="height: 40vh;">
        <el-form ref="form1" :model="form1" label-width="120px">
          <el-row>
            <el-col :span="24">
              <el-form-item label="日期">
                <el-date-picker v-model="form1.recordDate" format="yyyy-MM-dd" placeholder="请选择日期" size="small"
                  style="width: 50%" type="date" value-format="yyyy-MM-dd">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="上午时间">
                <el-time-picker v-model="form1.morningTestTime" size="small" value-format="HH:mm:ss" format="HH:mm:ss"
                  style="width: 100%" placeholder="请选择时间">
                </el-time-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="上午温度">
                <el-input v-model="form1.morningTemp" size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="上午湿度">
                <el-input v-model="form1.morningHum" size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="上午记录员">
                <el-select v-model="form1.morningRecorderId" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="下午时间">
                <el-time-picker v-model="form1.afternoonTime" size="small" value-format="HH:mm:ss" format="HH:mm:ss"
                  style="width: 100%" placeholder="请选择时间">
                </el-time-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="下午温度">
                <el-input v-model="form1.afternoonTemp" size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="下午湿度">
                <el-input v-model="form1.afternoonHum" size="small"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="下午记录员">
                <el-select v-model="form1.afternoonRecorderId" clearable filterable placeholder="请选择" size="small"
                  style="width: 100%;">
                  <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="备注">
                <el-input v-model="form1.note" :rows="2" placeholder="请输入内容" type="textarea">
                </el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible1 = false">取 æ¶ˆ</el-button>
        <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability1">ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog :visible.sync="approvalDialog" title="确认" width="30%" @close="subjoin = ''">
      <span>
        å¢žè¡¥ä¿¡æ¯ï¼š
        <el-input v-model="subjoin" type="textarea"></el-input>
      </span>
      <span slot="footer" class="dialog-footer">
        <el-button :loading="approvalLoading" @click="subjoin = '', approvalDialog = false">不确认</el-button>
        <el-button :loading="approvalLoading" type="primary" @click="handleApproval">ç¡® è®¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  getFeTempHumDate,
  addFeTempHumDate,
  getFeTempHumRecordPage,
  addFeTempHumRecord,
  selectUserCondition,
  deleteFeTempHumRecord,
  deleteFeTempHumDate,
  exportTemperatureAndHumidityRecords,
  affirmFeTempHumDate
} from '@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment'
export default {
  data() {
    return {
      search: {
        size: 20,
        current: 1,
        total: 0,
        testAreaName: ''
      },
      search1: {
        size: 20,
        current: 1,
        total: 0
      },
      tableData: [],
      tableData1: [],
      dialogVisible: false,
      submitLoading: false,
      dialogVisible1: false,
      form: {},
      form1: {},
      saveRow: {},
      responsibleOptions: [],
      approvalDialog: false,
      approvalLoading: false,
      subjoin: '',
      approvalRow: {},
    }
  },
  mounted() {
    this.initData()
  },
  watch: {
    dialogVisible(newVal) {
      if (!newVal) {
        this.form = {
        }
      }
    },
    dialogVisible1(newVal) {
      if (!newVal) {
        this.form1 = {
        }
      }
    }
  },
  methods: {
    openApprovalDialog(row) {
      this.approvalDialog = true
      this.approvalRow = row
    },
    handleApproval() {
      this.approvalLoading = true
      const params = {
        dateId: this.approvalRow.dateId,
        subjoin: this.subjoin,
      }
      affirmFeTempHumDate(params).then(res => {
        this.approvalLoading = false
        if (res.code === 200) {
          this.$message.success('确认成功!')
          this.approvalDialog = false
          this.initData()
        }
      }).catch(err => {
        this.approvalDialog = false
      })
    },
    openDialog() {
      selectUserCondition().then(res => {
        if (res.code == 200) {
          this.responsibleOptions = res.data
        }
      })
    },
    addPowerSupplyStability() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          this.submitLoading = true
          addFeTempHumDate(this.form).then(res => {
            if (res.code === 200) {
              this.$message.success('新增成功!')
              this.submitLoading = false
              this.initData()
              this.dialogVisible = false
            }
          }).catch(err => {
            this.submitLoading = false
          })
        }
      });
    },
    addPowerSupplyStability1() {
      if (!this.saveRow) {
        this.$message.warning("请选择试验区域!")
        return
      }
      this.$refs.form1.validate((valid) => {
        this.submitLoading = true
        if (valid) {
          this.form1.dateId = this.saveRow.dateId
          addFeTempHumRecord(this.form1).then(res => {
            if (res.code === 200) {
              this.$message.success('新增成功!')
              this.submitLoading = false
              this.initData1(this.saveRow.dateId)
              this.dialogVisible1 = false
            }
          }).catch(err => {
            this.submitLoading = false
          })
        }
      });
    },
    clickRow(row) {
      this.saveRow = row
      this.initData1(row.dateId)
    },
    edit(row) {
      this.form = { ...row }
      this.dialogVisible = true
    },
    deleteRowFun(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteFeTempHumDate({ dateId: row.dateId }).then(res => {
          this.$message.success('删除成功!')
          this.initData()
        })
      })
    },
    edit1(row) {
      this.form1 = { ...row }
      this.dialogVisible1 = true
    },
    // å¯¼å‡º
    downLoadPost(row) {
      exportTemperatureAndHumidityRecords({ dateId: row.dateId }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/msword' });
        this.$download.saveAs(blob, '温湿度记录.docx')
      })
    },
    deleteRowFun1(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteFeTempHumRecord({ tempHumId: row.tempHumId }).then(res => {
          this.$message.success('删除成功!')
          this.initData1(this.saveRow.dateId)
        })
      })
    },
    initData() {
      getFeTempHumDate({
        ...this.search,
        ...this.search
      }).then(res => {
        if (res.code === 200) {
          this.tableData = res.data.records;
          this.search.total = res.data.total;
          if (res.data.records.length === 0) {
            this.tableData1 = []
            this.saveRow.monthDate = ''
          }
        }
      })
    },
    initData1(dateId) {
      let form = { dateId: dateId }
      getFeTempHumRecordPage({
        ...this.search1,
        ...form
      }).then(res => {
        if (res.code === 200) {
          this.tableData1 = res.data.records;
          this.search1.total = res.data.total;
        }
      });
    },
    handleSizeChange(val) {
      this.search.size = val;
      this.initData();
    },
    handleCurrentChange(val) {
      this.search.current = val;
      this.initData();
    },
    handleSizeChange1(val) {
      this.search1.size = val;
      this.initData1();
    },
    handleCurrentChange1(val) {
      this.search1.current = val;
      this.initData1();
    },
    clickAdd() {
      this.dialogVisible = true
    }
  }
}
</script>
<style scoped>
.header {
  height: 3em;
  width: 100%;
  display: flex;
  justify-content: space-between;
}
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/three-wastes-dialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
<template>
  <div>
    <el-dialog v-loading="diaLoading" :close-on-click-modal="false"
               :close-on-press-escape="false"
               :visible.sync="formDia"
               title="三废处理信息"
               width="80%" @close="closeThreeWastesDia">
      <el-form ref="form" :model="form" :rules="rules" label-width="auto">
        <el-col :span="24">
          <el-form-item label="备注" prop="purposes">
            <el-input v-model="form.remark" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
      </el-form>
      <div style="text-align: right;margin-bottom: 10px">
        <el-button size="small" type="primary" @click="addRow">添加</el-button>
        <el-button size="small" type="danger" @click="clearTable">清空</el-button>
      </div>
      <el-table :data="wastesDetailList" border height="300" style="width: 100%">
        <el-table-column align="center" label="序号" type="index" width="60" />
        <el-table-column header-align="center" label="接收人" prop="acceptor">
          <template slot-scope="{row}">
            <el-input v-model="row.acceptor" size="small"/>
          </template>
        </el-table-column>
        <el-table-column header-align="center" label="接收单位" prop="receivingUnit">
          <template slot-scope="{row}">
            <el-input v-model="row.receivingUnit" size="small"/>
          </template>
        </el-table-column>
        <el-table-column header-align="center" label="名称" prop="designation">
          <template slot-scope="{row}">
            <el-input v-model="row.designation" size="small"/>
          </template>
        </el-table-column>
        <el-table-column header-align="center" label="移交人" prop="transferPeople" width="180">
          <template slot-scope="{row}">
            <el-input v-model="row.transferPeople" size="small"/>
          </template>
        </el-table-column>
        <el-table-column header-align="center" label="体积" prop="volume" width="180">
          <template slot-scope="{row}">
            <el-input v-model="row.volume" size="small"/>
          </template>
        </el-table-column>
        <el-table-column header-align="center" label="送处理日期" prop="deliveryDate" width="180">
          <template slot-scope="{row}">
            <!-- <el-input v-model="row.deliveryDate" size="small"/> -->
            <el-date-picker
                value-format="yyyy-MM-dd"
                style="width: 100%"
                format="yyyy-MM-dd"
                size="small"
                v-model="row.deliveryDate"
                type="date"
                placeholder="选择日期">
              </el-date-picker>
          </template>
        </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeThreeWastesDia">取 æ¶ˆ</el-button>
        <el-button :loading="loading" type="primary" @click="handleEdit">提 äº¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {
  getInternalWastesOne,
  addInternalWastes,
  updateInternalWastes
} from '@/api/cnas/resourceDemand/facilitiesEnvironment/internalWastes'
export default {
  name: 'three-wastes-dialog',
  // import å¼•入的组件需要注入到对象中才能使用
  components: {},
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      formDia: false,
      diaLoading: false,
      loading: false,
      form: {
        remark: '',
        wastesId: '',
      },
      rules: {
        remark: [{required: false, message: '请填写备注',trigger: 'blur'}],
      },
      wastesDetailList: [],
      operationType: '',
    };
  },
  mounted() {
  },
  // æ–¹æ³•集合
  methods: {
    // æ‰“开弹框
    openDia (type, row) {
      this.formDia = true
      this.operationType = type
      if (type !== 'add') {
        this.searchInfo(row)
      }
    },
    // æŸ¥è¯¢è¯¦æƒ…
    searchInfo (row) {
      this.diaLoading = true
      getInternalWastesOne({wastesId: row.wastesId}).then(res => {
        this.diaLoading = false
        if (res.code === 200){
          this.form = res.data
          this.wastesDetailList = this.form.wastesDetailList
        }
      }).catch(err => {
        console.log(err)
        this.diaLoading = false
      })
    },
    // æäº¤å¼¹æ¡†æ•°æ®
    handleEdit () {
      this.$refs['form'].validate((valid) => {
        if (valid) {
          if (this.wastesDetailList.length === 0) {
            this.$message.warning('请添加表格数据')
            return
          }
          this.loading = true
          const internalImplementDto = this.HaveJson(this.form)
          internalImplementDto.wastesDetailList = this.HaveJson(this.wastesDetailList)
          if (this.operationType === 'add') {
            addInternalWastes(internalImplementDto).then(res => {
              this.loading = false
              if (res.code === 200){
                this.$message.success('操作成功')
                this.closeThreeWastesDia()
              }
            }).catch(err => {
              console.log('err---', err);
              this.loading = false
            })
          } else if (this.operationType === 'edit') {
            updateInternalWastes(internalImplementDto).then(res => {
              this.loading = false
              if (res.code === 200){
                this.$message.success('操作成功')
                this.closeThreeWastesDia()
              }
            }).catch(err => {
              console.log('err---', err);
              this.loading = false
            })
          }
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    // å¢žåŠ è¡¨æ ¼è¡Œæ•°æ®
    addRow () {
      this.wastesDetailList.push({
        acceptor: '',
        receivingUnit: '',
        designation: '',
        transferPeople: '',
        volume: '',
        deliveryDate: '',
      })
    },
    // æ¸…空表格数据
    clearTable () {
      this.wastesDetailList = []
    },
    closeThreeWastesDia () {
      this.$refs.form.resetFields();
      this.formDia = false
      this.$emit('closeThreeWastesDia')
    },
  }
};
</script>
<style scoped>
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/component/three-wastes-treatment.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,206 @@
<template>
  <div class="capacity-scope">
    <div class="search">
      <div>
        <el-form :model="searchForm" ref="searchForm" size="small" :inline="true">
          <el-form-item label="备注" prop="remark">
            <el-input size="small" placeholder="请输入" clearable v-model="searchForm.remark">
            </el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">查 è¯¢</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">重 ç½®</el-button>
          </el-form-item>
        </el-form>
      </div>
      <div>
        <el-button size="medium" type="primary" @click="openFormDia('add')">新 å¢ž</el-button>
      </div>
    </div>
    <div class="table">
      <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 280px)'" @pagination="pagination"
        :page="page" :tableLoading="tableLoading"></lims-table>
    </div>
    <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia"
      @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog>
  </div>
</template>
<script>
import ThreeWastesDialog from './three-wastes-dialog.vue';
import limsTable from '@/components/Table/lims-table.vue'
import {
  pageInternalWastes,
  removeStandardSubstance,
  exportInternalWastes
} from '@/api/cnas/resourceDemand/facilitiesEnvironment/internalWastes'
export default {
  name: 'a6-three-wastes-treatment',
  // import å¼•入的组件需要注入到对象中才能使用
  components: {
    ThreeWastesDialog,
    limsTable
  },
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      searchForm: {
        remark: '',
      },
      tableColumn: [
        {
          label: '创建时间',
          prop: 'createTime',
          minWidth: '100'
        },
        {
          label: '创建人',
          prop: 'createUserName',
          minWidth: '100'
        },
        {
          label: '备注',
          prop: 'remark',
          minWidth: '100'
        },
        {
          label: '修改时间',
          prop: 'updateTime',
          minWidth: '100'
        },
        {
          label: '修改人',
          prop: 'updateUserName',
          minWidth: '100'
        },
        {
          dataType: 'action',
          fixed: 'right',
          minWidth: '220',
          label: '操作',
          operation: [
            {
              name: '导出',
              type: 'text',
              clickFun: (row) => {
                this.handleDown(row)
              }
            },
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.openFormDia('edit', row);
              },
            },
            {
              name: '删除',
              type: 'text',
              color: '#f56c6c',
              clickFun: (row) => {
                this.delPlan(row)
              },
            }
          ]
        }
      ],
      tableData: [],
      tableLoading: false,
      page: {
        total: 0,
        size: 10,
        current: 1
      },
      total: 0,
      threeWastesDia: false
    };
  },
  mounted() {
    this.searchList()
  },
  // æ–¹æ³•集合
  methods: {
    // æŸ¥è¯¢åˆ—表
    searchList() {
      this.tableLoading = true
      pageInternalWastes({ ...this.page, ...this.searchForm }).then(res => {
        this.tableLoading = false
        if (res.code === 200) {
          this.tableData = res.data.records
          this.page.total = res.data.total
        }
      }).catch(err => {
        console.log('err---', err);
        this.tableLoading = false
      })
    },
    // åˆ é™¤
    delPlan(row) {
      this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.tableLoading = true
        removeStandardSubstance({ wastesId: row.wastesId }).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.$message.success('删除成功')
            this.searchList()
          }
        }).catch(err => {
          this.tableLoading = false
          console.log('err---', err);
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // æ–°å¢žï¼Œç¼–辑,批准弹框
    openFormDia(type, row) {
      this.threeWastesDia = true
      this.$nextTick(() => {
        this.$refs.threeWastesDia.openDia(type, row)
      })
    },
    // å¯¼å‡º
    handleDown(row) {
      exportInternalWastes({ wastesId: row.wastesId }).then(res => {
        this.outLoading = false
        const blob = new Blob([res], { type: 'application/msword' });
        this.$download.saveAs(blob, '三废处理导出.docx')
      })
    },
    closeThreeWastesDia() {
      this.threeWastesDia = false
      this.searchList()
    },
    // é‡ç½®æŸ¥è¯¢æ¡ä»¶
    resetSearchForm() {
      this.searchForm.remark = '';
      this.searchList()
    },
    // åˆ†é¡µåˆ‡æ¢
    pagination(page) {
      this.page.size = page.limit
      this.searchList();
    },
  }
};
</script>
<style scoped>
.search {
  height: 46px;
  display: flex;
  justify-content: space-between;
}
.capacity-scope {
  padding: 20px;
}
</style>
src/views/CNAS/resourceDemand/facilitiesEnvironment/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
<template>
  <div class="main">
    <el-tabs v-model="activeName" :lazy="true" type="border-card">
      <el-tab-pane label="设施和环境条件要求" name="设施和环境条件要求">
        <FacilitiesEnvironmentalConditions v-if="activeName === '设施和环境条件要求'" />
      </el-tab-pane>
      <el-tab-pane label="三废处理" name="三废处理">
        <a6-three-wastes-treatment v-if="activeName === '三废处理'"></a6-three-wastes-treatment>
      </el-tab-pane>
      <el-tab-pane label="进出人员管理" name="进出人员管理">
        <personnel-management v-if="activeName === '进出人员管理'"></personnel-management>
      </el-tab-pane>
    </el-tabs>
  </div>
</template>
<script>
import FacilitiesEnvironmentalConditions from "../facilitiesEnvironment/component/facilities-environmental-conditions.vue";
//   // å¤–来人员管理
//   import ExternalPersonnelManagement from "../facilitiesEnvironment/component/Personnel-management.vue";
import A6ThreeWastesTreatment from '../facilitiesEnvironment/component/three-wastes-treatment.vue';
import PersonnelManagement from '../facilitiesEnvironment/component/Personnel-management.vue';
export default {
  components: {
    //   PersonnelManagement,
    A6ThreeWastesTreatment,
    PersonnelManagement,
    FacilitiesEnvironmentalConditions
  },
  data() {
    return {
      activeName: '设施和环境条件要求',
    }
  }
}
</script>
<style scoped>
.main {
  padding: 15px 0;
  width: 100%;
  border-radius: 15px;
}
>>>.el-tabs--border-card>.el-tabs__content {
  height: calc(100vh - 10em) !important;
  padding: 0;
}
</style>
src/views/business/inspectionOrder/add.vue
@@ -1,94 +1,35 @@
<template>
  <div>
  <div class="bg-1">
    <div v-show="!configShow && !equipConfigShow && !cableConfigShow">
      <el-row class="title">
        <el-col :span="6" style="padding-left: 20px; text-align: left"
          >委托单信息&nbsp;&nbsp;&nbsp;总价:<span style="color: #3a7bfa"
            >ï¿¥{{ total }}</span
          ></el-col
        >
        <el-col :span="6" style="padding-left: 20px; text-align: left">委托单信息&nbsp;&nbsp;&nbsp;总价:<span
            style="color: #3a7bfa">ï¿¥{{ total }}</span></el-col>
        <el-col :span="18" style="text-align: right">
          <el-select
            v-model="template"
            size="medium"
            filterable
            placeholder="下单模板"
            style="margin-right: 10px"
            v-show="active == 1"
            @change="selectInsOrderTemplateById"
          >
            <el-option
              v-for="(a, ai) in templates"
              :key="ai"
              :value="a.id"
              :label="a.name"
            >
          <el-select v-model="template" size="medium" filterable placeholder="下单模板" style="margin-right: 10px"
            v-show="active == 1" @change="selectInsOrderTemplateById">
            <el-option v-for="(a, ai) in templates" :key="ai" :value="a.id" :label="a.name">
              <span style="float: left">{{ a.name }}</span>
              <i
                class="el-icon-delete"
                style="float: right; color: #66b1ff; font-size: 16px"
                @click.stop="handleDelete(a)"
              ></i>
              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px"
                @click.stop="handleDelete(a)"></i>
            </el-option>
          </el-select>
          <el-button
            size="medium"
            @click="templateDia = true"
            v-show="active == 1"
          >
          <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="openCableConfig"
            v-if="
              active == 1 &&
              PROJECT == '装备电缆' &&
              addObj.sampleType != undefined &&
              addObj.sampleType.indexOf('电缆') > -1
            "
            >电缆配置</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="openEquipConfig"
            v-if="active == 1"
            >子样品配置</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="openConfig"
            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" type="primary" @click="openCableConfig" v-if="
            active == 1 &&
            PROJECT == '装备电缆' &&
            addObj.sampleType != undefined &&
            addObj.sampleType.indexOf('电缆') > -1
          ">电缆配置</el-button>
          <el-button size="medium" type="primary" @click="openEquipConfig" v-if="active == 1">子样品配置</el-button>
          <el-button size="medium" type="primary" @click="openConfig" 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 && addObj.companyId"
            :disabled="saveLoad"
            >不通过</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="upInsOrderOfState(1)"
            :loading="saveLoad"
            v-show="active == 3 && addObj.companyId"
            >通过</el-button
          >
          <el-button size="medium" @click="upInsOrderOfState(2)" :loading="saveLoad"
            v-show="active == 3 && addObj.companyId" :disabled="saveLoad">不通过</el-button>
          <el-button size="medium" type="primary" @click="upInsOrderOfState(1)" :loading="saveLoad"
            v-show="active == 3 && addObj.companyId">通过</el-button>
          <el-button size="medium" @click="$parent.playOrder(0)">
            <span style="color: #3a7bfa">返回</span>
          </el-button>
@@ -96,79 +37,35 @@
      </el-row>
    </div>
    <basic-container>
      <div
        class="search"
        v-show="!configShow && !equipConfigShow && !cableConfigShow"
      >
        <el-form
          :model="addObj"
          :rules="formRule"
          label-position="right"
          inline
        >
      <div class="search" v-show="!configShow && !equipConfigShow && !cableConfigShow">
        <el-form :model="addObj" :rules="formRule" label-position="right" inline>
          <el-row>
            <el-col :span="6">
              <el-form-item label="委托编号:" prop="entrustCode">
                <el-input
                  v-model="addObj.entrustCode"
                  size="small"
                  class="search_input"
                  placeholder="系统生成"
                  disabled
                ></el-input>
                <el-input v-model="addObj.entrustCode" size="small" class="search_input" placeholder="系统生成"
                  disabled></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="检验类别:" prop="orderType">
                <el-select
                  size="small"
                  class="search_input"
                  clearable
                  v-model="addObj.orderType"
                  :disabled="active > 1"
                >
                  <el-option
                    v-for="(a, ai) in orderType"
                    :key="ai"
                    :value="a.dictValue"
                    :label="a.dictLabel"
                  ></el-option>
                <el-select size="small" class="search_input" clearable v-model="addObj.orderType"
                  :disabled="active > 1">
                  <el-option v-for="(a, ai) in orderType" :key="ai" :value="a.dictValue"
                    :label="a.dictLabel"></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="制单人:" prop="custom">
                <el-input
                  size="small"
                  class="search_input"
                  clearable
                  disabled
                  v-model="addObj.custom"
                ></el-input>
                <el-input size="small" class="search_input" clearable disabled v-model="addObj.custom"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="委托单位:"
                prop="company"
                class="company_input"
              >
                <el-input
                  readonly
                  size="small"
                  v-model="addObj.company"
                  placeholder="选择委托单位"
                >
                  <template slot="append"
                    ><el-button
                      slot="append"
                      icon="el-icon-search"
                      @click="selectUserDia = true"
                      :disabled="
                        active > 1 || addObj.company != '中天科技检测中心'
                      "
                    ></el-button
                  ></template>
              <el-form-item label="委托单位:" prop="company" class="company_input">
                <el-input readonly size="small" v-model="addObj.company" placeholder="选择委托单位">
                  <template slot="append"><el-button slot="append" icon="el-icon-search" @click="selectUserDia = true"
                      :disabled="active > 1 || addObj.company != '中天科技检测中心'
                        "></el-button></template>
                </el-input>
              </el-form-item>
            </el-col>
@@ -176,82 +73,39 @@
          <el-row>
            <el-col :span="6">
              <el-form-item label="联系方式:" prop="phone">
                <el-input
                  size="small"
                  placeholder="请输入"
                  class="search_input"
                  clearable
                  :readonly="active > 1"
                  v-model="addObj.phone"
                ></el-input>
                <el-input size="small" placeholder="请输入" class="search_input" clearable :readonly="active > 1"
                  v-model="addObj.phone"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="紧急程度:" prop="type">
                <el-select
                  @change="changeType"
                  size="small"
                  class="search_input"
                  clearable
                  v-model="addObj.type"
                  :disabled="active > 1"
                >
                  <el-option
                    v-for="(a, ai) in type"
                    :key="ai"
                    :value="a.dictValue"
                    :label="a.dictLabel"
                  ></el-option>
                <el-select @change="changeType" size="small" class="search_input" clearable v-model="addObj.type"
                  :disabled="active > 1">
                  <el-option v-for="(a, ai) in type" :key="ai" :value="a.dictValue" :label="a.dictLabel"></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="样品名称:"
                prop="sample"
                class="sample_input"
              >
              <el-form-item label="样品名称:" prop="sample" class="sample_input">
                <el-input readonly size="small" v-model="addObj.sample">
                  <template slot="append"
                    ><el-button
                      slot="append"
                      icon="el-icon-search"
                      @click="selectStandardTree = true"
                      :disabled="active > 1"
                    ></el-button
                  ></template>
                  <template slot="append"><el-button slot="append" icon="el-icon-search"
                      @click="selectStandardTree = true" :disabled="active > 1"></el-button></template>
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="样品数量:" prop="sampleNum">
                <el-input-number
                  size="small"
                  v-model="addObj.sampleNum"
                  :min="1"
                  :max="100"
                  :precision="0"
                  @change="addStandardTree"
                  :disabled="active > 1"
                ></el-input-number>
                <el-input-number size="small" v-model="addObj.sampleNum" :min="1" :max="100" :precision="0"
                  @change="addStandardTree" :disabled="active > 1"></el-input-number>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="来样方式:" prop="formType">
                <el-select
                  v-model="addObj.formType"
                  size="small"
                  class="search_input"
                  :disabled="active > 1"
                >
                  <el-option
                    v-for="(a, ai) in formType"
                    :key="ai"
                    :label="a.dictLabel"
                    :value="a.dictValue"
                  ></el-option>
                <el-select v-model="addObj.formType" size="small" class="search_input" :disabled="active > 1">
                  <el-option v-for="(a, ai) in formType" :key="ai" :label="a.dictLabel"
                    :value="a.dictValue"></el-option>
                </el-select>
              </el-form-item>
            </el-col>
@@ -264,11 +118,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="样品处理方式:"
                prop="processing"
                class="processing_input"
              >
              <el-form-item label="样品处理方式:" prop="processing" class="processing_input">
                <el-radio-group v-model="addObj.processing" size="mini">
                  <el-radio :label="0">委托单位取回</el-radio>
                  <el-radio :label="1">实验室处理</el-radio>
@@ -277,59 +127,28 @@
            </el-col>
            <el-col :span="6">
              <el-form-item label="工程名称:" prop="engineering">
                <el-input
                  size="small"
                  class="search_input"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.engineering"
                  :readonly="active > 1"
                ></el-input>
                <el-input size="small" class="search_input" :placeholder="active > 1 ? '' : '请输入'" clearable
                  v-model="addObj.engineering" :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item
                label="工程名称EN:"
                prop="engineeringEn"
                class="engineeringEn_input"
              >
                <el-input
                  size="small"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.engineeringEn"
                  :readonly="active > 1"
                ></el-input>
              <el-form-item label="工程名称EN:" prop="engineeringEn" class="engineeringEn_input">
                <el-input size="small" :placeholder="active > 1 ? '' : '请输入'" clearable v-model="addObj.engineeringEn"
                  :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="生产单位:" prop="production">
                <el-input
                  size="small"
                  class="search_input"
                  placeholder="请输入"
                  clearable
                  v-model="addObj.production"
                  :readonly="active > 1"
                ></el-input>
                <el-input size="small" class="search_input" placeholder="请输入" clearable v-model="addObj.production"
                  :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="生产单位EN:"
                prop="productionEn"
                class="productionEn_input"
              >
                <el-input
                  size="small"
                  class="search_input"
                  placeholder="请输入"
                  clearable
                  v-model="addObj.productionEn"
                  :readonly="active > 1"
                ></el-input>
              <el-form-item label="生产单位EN:" prop="productionEn" class="productionEn_input">
                <el-input size="small" class="search_input" placeholder="请输入" clearable v-model="addObj.productionEn"
                  :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
@@ -344,53 +163,28 @@
          <el-row>
            <el-col :span="6">
              <el-form-item label="是否涉及配套样品:" prop="mating">
                <el-radio-group
                  v-model="addObj.mating"
                  @change="$refs.sampleTable.doLayout()"
                >
                <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()">
                  <el-radio :label="1">是</el-radio>
                  <el-radio :label="0">否</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="OTC订单号:"
                prop="otcCode"
                class="otcCode_input"
              >
                <el-input
                  size="small"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.otcCode"
                  :readonly="active > 1"
                ></el-input>
              <el-form-item label="OTC订单号:" prop="otcCode" class="otcCode_input">
                <el-input size="small" :placeholder="active > 1 ? '' : '请输入'" clearable v-model="addObj.otcCode"
                  :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="委托人:" prop="prepareUser">
                <el-input
                  size="small"
                  class="search_input"
                  :placeholder="active > 1 ? '' : '请输入'"
                  clearable
                  v-model="addObj.prepareUser"
                  :readonly="active > 1"
                ></el-input>
                <el-input size="small" class="search_input" :placeholder="active > 1 ? '' : '请输入'" clearable
                  v-model="addObj.prepareUser" :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="备注:" prop="remark">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 2, maxRows: 2 }"
                  size="small"
                  clearable
                  :placeholder="active > 1 ? '' : '请输入'"
                  v-model="addObj.remark"
                  :readonly="active > 1"
                ></el-input>
                <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 2 }" size="small" clearable
                  :placeholder="active > 1 ? '' : '请输入'" v-model="addObj.remark" :readonly="active > 1"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
@@ -399,29 +193,13 @@
    </basic-container>
    <basic-container>
      <div style="height: auto">
        <div
          class="search"
          v-if="active == 1"
          style="display: flex; background: transparent"
        >
        <div class="search" v-if="active == 1" style="display: flex; background: transparent">
          <div>
            <div class="search_label">样品型号:</div>
            <div class="search_input">
              <el-select
                v-model="model"
                :placeholder="active > 1 ? '' : '请输入'"
                filterable
                allow-create
                default-first-option
                size="small"
                @change="changeModel"
              >
                <el-option
                  v-for="item in models"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
              <el-select v-model="model" :placeholder="active > 1 ? '' : '请输入'" filterable allow-create
                default-first-option size="small" @change="changeModel">
                <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
@@ -429,385 +207,151 @@
          <div>
            <div class="search_label">检验标准:</div>
            <div class="search_input">
              <el-select
                filterable
                v-model="standardMethodListId"
                :placeholder="active > 1 ? '' : '请输入'"
                size="small"
                @focus="methodFocus"
                :loading="methodLoad"
                @change="changeStandardMethodListId"
              >
                <el-option
                  v-for="item in methods"
                  :key="item.id"
                  :label="item.code"
                  :value="item.id"
                >
              <el-select filterable v-model="standardMethodListId" :placeholder="active > 1 ? '' : '请输入'" size="small"
                @focus="methodFocus" :loading="methodLoad" @change="changeStandardMethodListId">
                <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
                </el-option>
              </el-select>
            </div>
          </div>
        </div>
        <el-table
          class="el-table sampleTable"
          ref="sampleTable"
          :data="sampleList"
          max-height="400px"
          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>
          <el-table-column
            type="index"
            label="序号"
            width="65"
            align="center"
          ></el-table-column>
          <el-table-column
            prop="sample"
            label="样品名称"
            align="center"
            min-width="100"
          >
        <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" max-height="400px"
          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>
          <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>
              <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"
          >
          <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>
              <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"
          >
          <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-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)"
          >
          <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>
              <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"
          >
          <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="检验标准"
                filterable
                size="small"
                :loading="methodLoad"
                @change="(value) => methodChange(value, scope.row)"
                @focus="methodFocus"
                :readonly="active > 1"
                style="width: 100%"
                clearable
                @clear="productList = []"
              >
                <el-option
                  v-for="item in methods"
                  :key="item.id"
                  :label="item.code"
                  :value="item.id"
                >
              <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model == null || active > 1"
                placeholder="检验标准" filterable size="small" :loading="methodLoad"
                @change="(value) => methodChange(value, scope.row)" @focus="methodFocus" :readonly="active > 1"
                style="width: 100%" clearable @clear="productList = []">
                <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"
            v-if="addObj.mating == 1"
          >
          <el-table-column prop="joinName" label="配套样品名称" width="140" align="center" v-if="addObj.mating == 1">
            <template slot-scope="scope">
              <el-input
                size="small"
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 1 }"
                v-model="scope.row.joinName"
              ></el-input>
              <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1 }"
                v-model="scope.row.joinName"></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="joinModel"
            label="配套样品型号"
            width="140"
            align="center"
            v-if="addObj.mating == 1"
          >
          <el-table-column prop="joinModel" label="配套样品型号" width="140" align="center" v-if="addObj.mating == 1">
            <template slot-scope="scope">
              <el-input
                size="small"
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 1 }"
                v-model="scope.row.joinModel"
              ></el-input>
              <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1 }"
                v-model="scope.row.joinModel"></el-input>
            </template>
          </el-table-column>
          <el-table-column
            prop="joinNum"
            label="配套样品数量"
            width="140"
            align="center"
            v-if="addObj.mating == 1"
          >
          <el-table-column prop="joinNum" label="配套样品数量" width="140" align="center" v-if="addObj.mating == 1">
            <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%"
              ></el-input-number>
              <el-input-number size="small" v-model="scope.row.joinNum" :min="1" :max="100" :precision="0"
                :controls="false" style="width: 80%"></el-input-number>
            </template>
          </el-table-column>
          <el-table-column
            prop="proNum"
            label="待检项数量"
            width="105"
            align="center"
          ></el-table-column>
          <el-table-column prop="proNum" label="待检项数量" width="105" align="center"></el-table-column>
        </el-table>
        <el-table
          class="el-table"
          ref="productTable"
          :data="productList"
          max-height="400px"
          tooltip-effect="dark"
          border
          @selection-change="selectProduct"
          style="margin-bottom: 10px"
          @select="upProductSelect"
          :row-class-name="tableRowClassName"
          v-loading="standardLoading || 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 class="el-table" ref="productTable" :data="productList" max-height="400px" tooltip-effect="dark"
          border @selection-change="selectProduct" style="margin-bottom: 10px" @select="upProductSelect"
          :row-class-name="tableRowClassName" v-loading="standardLoading || 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>
            <template slot="header" slot-scope="scope">
              <div
                style="
              <div style="
                  display: flex;
                  align-items: center;
                  flex-direction: column;
                  font-size: 14px;
                "
              >
                ">
                <span>检验项</span>
                <el-input
                  v-if="active == 1"
                  v-model="inspectionItem"
                  @input="searchFilterList"
                  size="mini"
                  placeholder="请输入"
                />
                <el-input v-if="active == 1" v-model="inspectionItem" @input="searchFilterList" size="mini"
                  placeholder="请输入" />
              </div>
            </template>
          </el-table-column>
          <el-table-column
            prop="inspectionItemSubclass"
            label="检验项子项"
            min-width="140"
            show-overflow-tooltip
          >
          <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140" show-overflow-tooltip>
            <template slot="header" slot-scope="scope">
              <div
                style="
              <div style="
                  display: flex;
                  align-items: center;
                  flex-direction: column;
                  font-size: 14px;
                "
              >
                ">
                <span>检验项子项</span>
                <el-input
                  v-if="active == 1"
                  v-model="inspectionItemSubclass"
                  @input="searchFilterList"
                  size="mini"
                  placeholder="请输入"
                />
                <el-input v-if="active == 1" v-model="inspectionItemSubclass" @input="searchFilterList" size="mini"
                  placeholder="请输入" />
              </div>
            </template>
          </el-table-column>
          <el-table-column prop="tell" label="要求描述" min-width="220px">
            <template slot-scope="scope">
              <el-input
                size="small"
                placeholder="要求描述"
                v-model="scope.row.tell"
                clearable
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }"
                @change="(e) => requestChange(e, scope.row, 'tell')"
                v-if="active == 1 && isAskOnlyRead"
              ></el-input>
              <el-input size="small" placeholder="要求描述" v-model="scope.row.tell" clearable type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }" @change="(e) => requestChange(e, scope.row, 'tell')"
                v-if="active == 1 && isAskOnlyRead"></el-input>
              <span v-else>
                <template>{{ scope.row.tell }}</template>
              </span>
            </template>
          </el-table-column>
          <el-table-column
            prop="ask"
            label="要求值"
            min-width="220px"
            v-if="isAskOnlyRead"
          >
          <el-table-column prop="ask" label="要求值" min-width="220px" v-if="isAskOnlyRead">
            <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, 'ask')"
                v-if="
              <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }" @change="(e) => requestChange(e, scope.row, 'ask')" v-if="
                  active == 1 &&
                  isAskOnlyRead &&
                  scope.row.inspectionValueType != '5'
                "
              ></el-input>
                "></el-input>
              <span v-else>
                <template>{{ scope.row.ask }}</template>
              </span>
            </template>
          </el-table-column>
          <el-table-column
            prop="methodS"
            label="试验方法"
            min-width="120"
            show-overflow-tooltip
          >
          <el-table-column prop="methodS" label="试验方法" min-width="120" show-overflow-tooltip>
            <template slot="header" slot-scope="scope">
              <div
                style="
              <div style="
                  display: flex;
                  align-items: center;
                  flex-direction: column;
                  font-size: 14px;
                "
              >
                ">
                <span>试验方法</span>
                <el-input
                  v-if="active == 1"
                  v-model="methodS"
                  @input="searchFilterList"
                  size="mini"
                  placeholder="请输入"
                />
                <el-input v-if="active == 1" v-model="methodS" @input="searchFilterList" size="mini"
                  placeholder="请输入" />
              </div>
            </template>
          </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="sonLaboratory"
            label="子实验室"
            min-width="130"
            show-overflow-tooltip
            :filters="filters"
            :filter-method="filterHandler"
          ></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="sonLaboratory" label="子实验室" min-width="130" show-overflow-tooltip :filters="filters"
            :filter-method="filterHandler"></el-table-column>
        </el-table>
      </div>
    </basic-container>
@@ -1226,7 +770,7 @@
      });
    },
    //保存单根垂直燃烧特殊值
    saveSingleVerticalCombustionData() {},
    saveSingleVerticalCombustionData() { },
    openSingleVerticalCombustionDialog() {
      this.$prompt("单根垂直燃烧次数", "特殊检测项目", {
        confirmButtonText: "确定",
@@ -1244,7 +788,7 @@
          this.currentMethod.insProduct = this.productList0;
          this.getProNum();
        })
        .catch(() => {});
        .catch(() => { });
    },
    singleVerticalData(arr, value) {
      arr.forEach((ins) => {
@@ -1745,7 +1289,7 @@
      try {
        let num = this.replaceAll(tell, symbolItem, value);
        return num;
      } catch (e) {}
      } catch (e) { }
    },
    replaceAll(str, find, value) {
      if (str === undefined) {
@@ -1927,7 +1471,7 @@
                      .then(() => {
                        this.saveMethod(sampleList);
                      })
                      .catch(() => {});
                      .catch(() => { });
                  } else {
                    let isRTS = this.totalArr.find(
                      (a) =>
@@ -2009,7 +1553,7 @@
                .then(() => {
                  this.saveMethod(sampleList);
                })
                .catch(() => {});
                .catch(() => { });
            } else {
              let isRTS = this.totalArr.find(
                (a) =>
@@ -2040,7 +1584,7 @@
        });
      }
    },
    errorSet() {},
    errorSet() { },
    /**
     * æ ¡éªŒå§”托要求的检验项的要求描述和要求值
     *
@@ -2062,10 +1606,10 @@
          console.log("ask or tell is null");
          this.errorInspectionItemList.push(
            ele.inspectionItem +
              " " +
              (ele.inspectionItemSubclass == null
                ? ""
                : ele.inspectionItemSubclass)
            " " +
            (ele.inspectionItemSubclass == null
              ? ""
              : ele.inspectionItemSubclass)
          );
        });
        isTrue = false;
@@ -2102,10 +1646,10 @@
                    );
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  }
@@ -2114,10 +1658,10 @@
                  console.log("要求值中没有数字");
                  this.errorInspectionItemList.push(
                    ele.inspectionItem +
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    " " +
                    (ele.inspectionItemSubclass == null
                      ? ""
                      : ele.inspectionItemSubclass)
                  );
                  isTrue = false;
                }
@@ -2128,10 +1672,10 @@
                  console.log("直径公差之半与0.5不匹配");
                  this.errorInspectionItemList.push(
                    ele.inspectionItem +
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    " " +
                    (ele.inspectionItemSubclass == null
                      ? ""
                      : ele.inspectionItemSubclass)
                  );
                  isTrue = false;
                  //   if(ele.tell.indexOf(askVal[0])<0 && ele.tell.indexOf('半')<0){
@@ -2182,10 +1726,10 @@
                    console.log("最大值和最小值相等");
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  }
@@ -2194,20 +1738,20 @@
                    console.log("要求描述中不包含±以及区间的数字");
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  } else if (ele.tell.indexOf("-") == 0) {
                    console.log("要求值的区间格式错误");
                    this.errorInspectionItemList.push(
                      ele.inspectionItem +
                        " " +
                        (ele.inspectionItemSubclass == null
                          ? ""
                          : ele.inspectionItemSubclass)
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    );
                    isTrue = false;
                  } else if (tell.indexOf("-") > 0 || tell.indexOf("±") > 0) {
@@ -2226,10 +1770,10 @@
                            console.log("错误的区间设置");
                            this.errorInspectionItemList.push(
                              ele.inspectionItem +
                                " " +
                                (ele.inspectionItemSubclass == null
                                  ? ""
                                  : ele.inspectionItemSubclass)
                              " " +
                              (ele.inspectionItemSubclass == null
                                ? ""
                                : ele.inspectionItemSubclass)
                            );
                            isTrue = false;
                          }
@@ -2242,10 +1786,10 @@
                        console.log(777777);
                        this.errorInspectionItemList.push(
                          ele.inspectionItem +
                            " " +
                            (ele.inspectionItemSubclass == null
                              ? ""
                              : ele.inspectionItemSubclass)
                          " " +
                          (ele.inspectionItemSubclass == null
                            ? ""
                            : ele.inspectionItemSubclass)
                        );
                        isTrue = false;
                      } else {
@@ -2262,10 +1806,10 @@
                          console.log(888888);
                          this.errorInspectionItemList.push(
                            ele.inspectionItem +
                              " " +
                              (ele.inspectionItemSubclass == null
                                ? ""
                                : ele.inspectionItemSubclass)
                            " " +
                            (ele.inspectionItemSubclass == null
                              ? ""
                              : ele.inspectionItemSubclass)
                          );
                          isTrue = false;
                        }
@@ -2279,10 +1823,10 @@
                        console.log(99999);
                        this.errorInspectionItemList.push(
                          ele.inspectionItem +
                            " " +
                            (ele.inspectionItemSubclass == null
                              ? ""
                              : ele.inspectionItemSubclass)
                          " " +
                          (ele.inspectionItemSubclass == null
                            ? ""
                            : ele.inspectionItemSubclass)
                        );
                        isTrue = false;
                      }
@@ -2292,10 +1836,10 @@
                  console.log(1010101001);
                  this.errorInspectionItemList.push(
                    ele.inspectionItem +
                      " " +
                      (ele.inspectionItemSubclass == null
                        ? ""
                        : ele.inspectionItemSubclass)
                    " " +
                    (ele.inspectionItemSubclass == null
                      ? ""
                      : ele.inspectionItemSubclass)
                  );
                  isTrue = false;
                }
@@ -2606,8 +2150,8 @@
                    a.model =
                      a.model +
                      (a.modelNum == null ||
                      a.modelNum == "" ||
                      a.modelNum == "null"
                        a.modelNum == "" ||
                        a.modelNum == "null"
                        ? ""
                        : "-" + a.modelNum);
                  }
@@ -2615,8 +2159,8 @@
                  a.model =
                    a.model +
                    (a.modelNum == null ||
                    a.modelNum == "" ||
                    a.modelNum == "null"
                      a.modelNum == "" ||
                      a.modelNum == "null"
                      ? ""
                      : "-" + a.modelNum);
                }
@@ -3036,7 +2580,7 @@
            } else {
              this.methods = res.data.standardMethodList;
            }
          } catch (e) {}
          } catch (e) { }
        });
    },
    addStandardTree(currentValue, oldValue) {
@@ -3234,7 +2778,7 @@
          // row.manHour = arr2[index];
          // row.price = arr3[index];
          // row.tell = arr4[index];
        } catch (e) {}
        } catch (e) { }
      }
      if (
        row.bsm === "1" &&
@@ -3393,8 +2937,8 @@
      this.$axios
        .get(
          this.$api.insOrder.selectInsOrderTemplate +
            "?company=" +
            this.addObj.company
          "?company=" +
          this.addObj.company
        )
        .then((res) => {
          if (res.code == 201) return;
@@ -3424,7 +2968,7 @@
              this.$message.error("删除失败");
            });
        })
        .catch(() => {});
        .catch(() => { });
    },
    // ä¿å­˜æ¨¡æ¿
    addTemplateDia() {
@@ -4454,17 +3998,21 @@
  line-height: 24px;
  margin-top: 5px;
}
.circulateTable {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}
.opticalProject {
  width: 38%;
}
.temperatureList {
  width: 60%;
}
.temperatureListTitle {
  display: flex;
  flex-direction: row;
@@ -4484,10 +4032,7 @@
  border-radius: 2px;
}
.ins_order_add
  .el-tree--highlight-current
  .el-tree-node.is-current
  > .el-tree-node__content {
.ins_order_add .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  color: #3a7bfa;
}
@@ -4515,15 +4060,18 @@
.ins_order_add .el-select .is-disabled .el-input__inner {
  background: transparent !important;
}
.company_input .el-form-item__content,
.sample_input .el-form-item__content {
  width: 72%;
}
.engineeringEn_input .el-form-item__content,
.otcCode_input .el-form-item__content,
.productionEn_input .el-form-item__content {
  width: 65%;
}
.processing_input .el-form-item__content {
  width: 60%;
}
src/views/business/inspectionOrder/index.vue
@@ -1,26 +1,14 @@
<template>
  <div>
  <div class="bg-1">
    <div style="margin: 5px 15px">
      <el-row class="title">
        <el-col :span="12" style="text-align: left">检验下单</el-col>
        <el-col :span="12" style="text-align: right">
          <el-button
            size="medium"
            type="primary"
            @click="dialogVisible1 = true"
            :loading="exportCheckedLoading"
            >导出检验结果</el-button
          >
          <el-button size="medium" type="primary" @click="print"
            >标签打印</el-button
          >
          <el-button
            size="medium"
            type="primary"
            @click="playOrder(1)"
            v-hasPermi="['business:order:add']"
            >下单</el-button
          >
          <el-button size="medium" type="primary" @click="dialogVisible1 = true"
            :loading="exportCheckedLoading">导出检验结果</el-button>
          <el-button size="medium" type="primary" @click="print">标签打印</el-button>
          <el-button size="medium" type="primary" @click="playOrder(1)"
            v-hasPermi="['business:order:add']">下单</el-button>
        </el-col>
      </el-row>
    </div>
@@ -31,13 +19,8 @@
            <div class="search_thing" style="width: 20%">
              <div class="search_label">委托编号:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.entrustCode"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.entrustCode"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 20%">
@@ -45,119 +28,68 @@
                å¤–部委托编号:
              </div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.outEntrustCode"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.outEntrustCode"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 20%">
              <div class="search_label">样品名称:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.sampleName"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.sampleName"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 20%">
              <div class="search_label">样品型号:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.sampleModel"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.sampleModel"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 20%">
              <div class="search_label">样品编号:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.sampleCode"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.sampleCode"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 40%" v-if="more">
              <div class="search_label">下单时间:</div>
              <div class="search_input">
                <el-date-picker
                  style="width: 100%"
                  v-model="queryParams.startAndEndTime"
                  type="daterange"
                  size="small"
                  range-separator="至"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  value-format="yyyy-MM-dd"
                  clearable
                  placeholder="选择日期"
                >
                <el-date-picker style="width: 100%" v-model="queryParams.startAndEndTime" type="daterange" size="small"
                  range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
                  clearable placeholder="选择日期">
                </el-date-picker>
              </div>
            </div>
            <div class="search_thing" style="width: 20%" v-if="more">
              <div class="search_label">下单人:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.name"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.name"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 20%" v-if="more">
              <div class="search_label">工程名称:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.engineering"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.engineering"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
            <div class="search_thing" style="width: 20%" v-if="more">
              <div class="search_label">生产单位:</div>
              <div class="search_input">
                <el-input
                  size="small"
                  placeholder="请输入"
                  clearable
                  v-model="queryParams.production"
                  @keyup.enter.native="refreshTable()"
                ></el-input>
                <el-input size="small" placeholder="请输入" clearable v-model="queryParams.production"
                  @keyup.enter.native="refreshTable()"></el-input>
              </div>
            </div>
          </el-col>
          <el-col :span="4">
            <div class="search_thing">
              <el-button
                type="text"
                :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
                style="color: #3a7bfa"
                @click="more = !more"
                >{{ !more ? "更多" : "收起" }}</el-button
              >
              <el-button type="text" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3a7bfa"
                @click="more = !more">{{ !more ? "更多" : "收起" }}</el-button>
              <el-button size="small" @click="refresh()">重 ç½®</el-button>
              <el-button size="small" type="primary" @click="refreshTable()"
                >查 è¯¢</el-button
              >
              <el-button size="small" type="primary" @click="refreshTable()">查 è¯¢</el-button>
            </div>
          </el-col>
        </el-row>
@@ -167,115 +99,59 @@
      <div v-show="active == 0">
        <div class="table">
          <ul class="tab">
            <li
              v-for="(m, i) in tabList"
              :key="i + 'afgh'"
              :class="{ active: i == tabIndex }"
              @click="handleTab(m, i)"
            >
            <li v-for="(m, i) in tabList" :key="i + 'afgh'" :class="{ active: i == tabIndex }" @click="handleTab(m, i)">
              {{ m.label }}
            </li>
          </ul>
          <lims-table
            :tableData="tableData"
            :height="tableHeight + ''"
            @pagination="pagination"
            :column="column"
            :page="page"
            :tableLoading="tableLoading"
          ></lims-table>
          <lims-table :tableData="tableData" :height="tableHeight + ''" @pagination="pagination" :column="column"
            :page="page" :tableLoading="tableLoading"></lims-table>
        </div>
        <!-- å®¡æ ¸ -->
        <el-dialog
          title="下单审核"
          :visible.sync="verifyDialogVisible"
          width="30%"
          :before-close="handleClose"
        >
        <el-dialog title="下单审核" :visible.sync="verifyDialogVisible" width="30%" :before-close="handleClose">
          <p style="font-size: 16px; color: #333333" v-if="!isPass">
            å§”托编号<span style="color: #34bd66">ZTMS2023071001</span
            >的信息是否通过
            å§”托编号<span style="color: #34bd66">ZTMS2023071001</span>的信息是否通过
          </p>
          <el-form
            :label-position="labelPosition"
            :model="formData"
            label-width="150px"
            ref="ruleForm"
            v-else
          >
          <el-form :label-position="labelPosition" :model="formData" label-width="150px" ref="ruleForm" v-else>
            <el-form-item label="请输入样品库位号:">
              <el-input
                v-model="formData.specificationModel"
                size="small"
                style="width: 60%"
              ></el-input>
              <el-input v-model="formData.specificationModel" size="small" style="width: 60%"></el-input>
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-row v-if="!isPass">
              <el-button @click="handleClose">退 å›ž</el-button>
              <el-button type="primary" @click="submitForm" :loading="upLoad"
                >通 è¿‡</el-button
              >
              <el-button type="primary" @click="submitForm" :loading="upLoad">通 è¿‡</el-button>
            </el-row>
            <el-row v-else>
              <el-button @click="handleClose">返 å›ž</el-button>
              <el-button type="primary" @click="submitForm" :loading="upLoad"
                >ç¡® å®š</el-button
              >
              <el-button type="primary" @click="submitForm" :loading="upLoad">ç¡® å®š</el-button>
            </el-row>
          </span>
        </el-dialog>
        <!-- æ’¤é”€ -->
        <el-dialog
          title="下单撤销"
          :visible.sync="quashDialogVisible"
          width="30%"
          :before-close="handleClose"
        >
        <el-dialog title="下单撤销" :visible.sync="quashDialogVisible" width="30%" :before-close="handleClose">
          <p style="font-size: 16px; color: #333333" v-if="!isQuash">
            å§”托编号<span style="color: #34bd66">{{
              this.insOrderRow.entrustCode
            }}</span
            >的信息是否撤销
            }}</span>的信息是否撤销
          </p>
          <el-form
            :label-position="labelPosition"
            :model="formData"
            label-width="150px"
            ref="ruleForm"
            v-else
          >
          <el-form :label-position="labelPosition" :model="formData" label-width="150px" ref="ruleForm" v-else>
            <el-form-item label="请输入撤销原因:">
              <el-input
                v-model="formData.specificationModel"
                size="small"
                style="width: 60%"
              ></el-input>
              <el-input v-model="formData.specificationModel" size="small" style="width: 60%"></el-input>
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-row v-if="!isQuash">
              <el-button @click="handleClose">取 æ¶ˆ</el-button>
              <el-button type="primary" @click="submitForm" :loading="upLoad"
                >ç¡® å®š</el-button
              >
              <el-button type="primary" @click="submitForm" :loading="upLoad">ç¡® å®š</el-button>
            </el-row>
            <el-row v-else>
              <el-button @click="handleClose">返 å›ž</el-button>
              <el-button type="primary" @click="submitForm" :loading="upLoad"
                >ç¡® å®š</el-button
              >
              <el-button type="primary" @click="submitForm" :loading="upLoad">ç¡® å®š</el-button>
            </el-row>
          </span>
        </el-dialog>
        <!-- ä¸‹å‘ -->
        <el-dialog
          title="检验分配"
          :visible.sync="issuedDialogVisible"
          width="400px"
          :before-close="handleClose"
        >
        <el-dialog title="检验分配" :visible.sync="issuedDialogVisible" width="400px" :before-close="handleClose">
          <div class="body" style="max-height: 60vh">
            <el-row>
              <el-col class="search_thing" style="width: 95%">
@@ -283,73 +159,34 @@
                  <span class="required-span">* </span>约定时间:
                </div>
                <div class="search_input">
                  <el-date-picker
                    size="small"
                    v-model="distributeData.appointed"
                    type="date"
                    placeholder="选择日期"
                    value-format="yyyy-MM-dd"
                    style="width: 100%"
                    format="yyyy-MM-dd"
                  >
                  <el-date-picker size="small" v-model="distributeData.appointed" type="date" placeholder="选择日期"
                    value-format="yyyy-MM-dd" style="width: 100%" format="yyyy-MM-dd">
                  </el-date-picker>
                </div>
              </el-col>
              <el-col class="search_thing" style="width: 95%">
                <div class="search_label">
                  <span class="required-span" v-show="distributeData.type == 2"
                    >* </span
                  >指派人员:
                  <span class="required-span" v-show="distributeData.type == 2">* </span>指派人员:
                </div>
                <div class="search_input">
                  <el-select
                    v-model="distributeData.userId"
                    placeholder="请选择"
                    size="small"
                    style="width: 100%"
                    clearable
                    filterable
                    @change="changeUser"
                  >
                    <el-option-group
                      v-for="(item, index) in Object.keys(personList)"
                      :key="index"
                      :label="item"
                    >
                      <el-option
                        v-for="op in personList[item]"
                        :key="op.id"
                        :label="op.name"
                        :value="op.id"
                      >
                  <el-select v-model="distributeData.userId" placeholder="请选择" size="small" style="width: 100%"
                    clearable filterable @change="changeUser">
                    <el-option-group v-for="(item, index) in Object.keys(personList)" :key="index" :label="item">
                      <el-option v-for="op in personList[item]" :key="op.id" :label="op.name" :value="op.id">
                      </el-option>
                    </el-option-group>
                  </el-select>
                </div>
              </el-col>
              <el-col
                class="search_thing"
                style="width: 95%"
                v-if="distributeData.userId"
              >
              <el-col class="search_thing" style="width: 95%" v-if="distributeData.userId">
                <div class="search_label">
                  <span class="required-span">* </span>试验室:
                </div>
                <div class="search_input">
                  <el-select
                    v-model="distributeData.sonLaboratory"
                    placeholder="请选择11"
                    size="small"
                    style="width: 100%"
                    clearable
                    filterable
                  >
                    <el-option
                      v-for="(item, i) in sonLaboratoryList"
                      :key="i + 'oooo'"
                      :label="item.label"
                      :value="item.value"
                    >
                  <el-select v-model="distributeData.sonLaboratory" placeholder="请选择11" size="small" style="width: 100%"
                    clearable filterable>
                    <el-option v-for="(item, i) in sonLaboratoryList" :key="i + 'oooo'" :label="item.label"
                      :value="item.value">
                    </el-option>
                  </el-select>
                </div>
@@ -359,34 +196,18 @@
          <span slot="footer" class="dialog-footer">
            <el-row>
              <el-button @click="handleClose2">取 æ¶ˆ</el-button>
              <el-button type="primary" @click="submitForm2" :loading="upLoad"
                >ç¡® å®š</el-button
              >
              <el-button type="primary" @click="submitForm2" :loading="upLoad">ç¡® å®š</el-button>
            </el-row>
          </span>
        </el-dialog>
        <el-dialog
          title="数据查看"
          :visible.sync="dataDialogVisible"
          width="100%"
          fullscreen
        >
        <el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="100%" fullscreen>
          <div style="height: 80vh; overflow-y: auto" v-if="dataDialogVisible">
            <ValueTable
              ref="ValueTableDataLook"
              :rowKey="'insProductId'"
              :url="$api.insOrder.selectSampleAndProductByOrderId"
              :componentData="componentDataDataLook"
            />
            <ValueTable ref="ValueTableDataLook" :rowKey="'insProductId'"
              :url="$api.insOrder.selectSampleAndProductByOrderId" :componentData="componentDataDataLook" />
          </div>
        </el-dialog>
        <el-dialog
          top="5vh"
          :title="deleteTilte"
          :visible.sync="deleteDialogVisible"
          :before-close="handleCloseDelete"
          width="80%"
        >
        <el-dialog top="5vh" :title="deleteTilte" :visible.sync="deleteDialogVisible" :before-close="handleCloseDelete"
          width="80%">
          <div class="table-container" v-if="deleteDialogVisible">
            <!-- <ValueTable
            ref="ValueTableDataDelete"
@@ -400,57 +221,23 @@
            :componentData="componentDataDelete"
            :isColumnWidth="true"
          /> -->
            <el-table
              height="500px"
              ref="revokeTable"
              @select="handleSelectionChange"
              @select-all="handleSelectionAll"
              :data="treeTableData"
              style="width: 100%"
              row-key="id"
              border
              lazy
              :load="load"
              :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
            >
              <el-table-column
                v-if="deleteTilte == '撤销'"
                type="selection"
                width="55"
              ></el-table-column>
              <el-table-column
                prop="sampleCode"
                label="样品编号"
                show-overflow-tooltip
              >
            <el-table height="500px" ref="revokeTable" @select="handleSelectionChange" @select-all="handleSelectionAll"
              :data="treeTableData" style="width: 100%" row-key="id" border lazy :load="load"
              :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
              <el-table-column v-if="deleteTilte == '撤销'" type="selection" width="55"></el-table-column>
              <el-table-column prop="sampleCode" label="样品编号" show-overflow-tooltip>
              </el-table-column>
              <el-table-column
                prop="inspectionItem"
                label="检验项"
                show-overflow-tooltip
              >
              <el-table-column prop="inspectionItem" label="检验项" show-overflow-tooltip>
              </el-table-column>
              <el-table-column
                prop="inspectionItemSubclass"
                label="检验子项"
                show-overflow-tooltip
              >
              <el-table-column prop="inspectionItemSubclass" label="检验子项" show-overflow-tooltip>
              </el-table-column>
              <el-table-column
                prop="sampleType"
                label="样品分类"
                show-overflow-tooltip
              >
              <el-table-column prop="sampleType" label="样品分类" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="sample" label="样品" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="model" label="型号" show-overflow-tooltip>
              </el-table-column>
              <el-table-column
                prop="sonLaboratory"
                label="试验室"
                show-overflow-tooltip
              >
              <el-table-column prop="sonLaboratory" label="试验室" show-overflow-tooltip>
              </el-table-column>
              <el-table-column prop="tell" label="要求值" show-overflow-tooltip>
              </el-table-column>
@@ -461,118 +248,46 @@
              <el-button @click="handleNo">{{
                deleteTilte == "撤销" ? "取 æ¶ˆ" : "不通过"
              }}</el-button>
              <el-button
                type="primary"
                @click="submitDelete"
                :loading="printLoading"
                >{{ deleteTilte == "撤销" ? "ç¡® å®š" : "通 è¿‡" }}</el-button
              >
              <el-button type="primary" @click="submitDelete" :loading="printLoading">{{ deleteTilte == "撤销" ? "ç¡® å®š" :
                "通 è¿‡" }}</el-button>
            </el-row>
          </span>
        </el-dialog>
        <!-- æ•°æ®æŸ¥çœ‹è¯¦æƒ… -->
        <el-dialog
          title="查看详情"
          :visible.sync="dialogVisible"
          width="70%"
          :before-close="handleClose3"
        >
          <el-table
            v-if="type == '单根垂直燃烧' || type == '松套管'"
            :data="viewDetailsList"
            height="400px"
            border
            style="width: 100%"
          >
            <el-table-column
              type="index"
              label="序号"
              width="80px"
            ></el-table-column>
            <el-table-column
              prop="entrustCode"
              label="委托单号"
            ></el-table-column>
            <el-table-column
              prop="sampleCode"
              label="样品编号"
            ></el-table-column>
        <el-dialog title="查看详情" :visible.sync="dialogVisible" width="70%" :before-close="handleClose3">
          <el-table v-if="type == '单根垂直燃烧' || type == '松套管'" :data="viewDetailsList" height="400px" border
            style="width: 100%">
            <el-table-column type="index" label="序号" width="80px"></el-table-column>
            <el-table-column prop="entrustCode" label="委托单号"></el-table-column>
            <el-table-column prop="sampleCode" label="样品编号"></el-table-column>
            <el-table-column prop="color" label="套管"></el-table-column>
            <!-- <el-table-column prop="inspectionItem" label="检验项"></el-table-column> -->
            <el-table-column prop="insValue" label="检验结果"></el-table-column>
          </el-table>
          <el-table
            v-if="type == '抗拉强度'"
            :data="viewDetailsList"
            height="400px"
            border
            style="width: 100%"
          >
            <el-table-column
              type="index"
              label="序号"
              width="80px"
            ></el-table-column>
            <el-table-column
              prop="inspectionItem"
              label="检验项"
            ></el-table-column>
            <el-table-column
              prop="inspectionItemSubclass"
              label="检验子项"
            ></el-table-column>
          <el-table v-if="type == '抗拉强度'" :data="viewDetailsList" height="400px" border style="width: 100%">
            <el-table-column type="index" label="序号" width="80px"></el-table-column>
            <el-table-column prop="inspectionItem" label="检验项"></el-table-column>
            <el-table-column prop="inspectionItemSubclass" label="检验子项"></el-table-column>
            <el-table-column prop="width" label="宽度"></el-table-column>
            <el-table-column prop="thickness" label="厚度"></el-table-column>
            <el-table-column prop="testValue" label="检验值"></el-table-column>
          </el-table>
          <el-table
            v-if="type == '断裂伸长率'"
            :data="viewDetailsList"
            height="400px"
            border
            style="width: 100%"
          >
            <el-table-column
              type="index"
              label="序号"
              width="80px"
            ></el-table-column>
            <el-table-column
              prop="inspectionItem"
              label="检验项"
            ></el-table-column>
            <el-table-column
              prop="inspectionItemSubclass"
              label="检验子项"
            ></el-table-column>
            <el-table-column
              v-for="(v, i) in tableHeader"
              :key="i"
              :prop="`testValue${i}`"
              :label="`检验值${i + 1}`"
            ></el-table-column>
          <el-table v-if="type == '断裂伸长率'" :data="viewDetailsList" height="400px" border style="width: 100%">
            <el-table-column type="index" label="序号" width="80px"></el-table-column>
            <el-table-column prop="inspectionItem" label="检验项"></el-table-column>
            <el-table-column prop="inspectionItemSubclass" label="检验子项"></el-table-column>
            <el-table-column v-for="(v, i) in tableHeader" :key="i" :prop="`testValue${i}`"
              :label="`检验值${i + 1}`"></el-table-column>
          </el-table>
        </el-dialog>
        <!-- å¯¼å‡ºå·²æ£€æ•°æ® -->
        <el-dialog
          title="选择日期"
          :visible.sync="dialogVisible1"
          width="30%"
          :before-close="handleClose4"
        >
        <el-dialog title="选择日期" :visible.sync="dialogVisible1" width="30%" :before-close="handleClose4">
          <span>下单日期:&nbsp;</span>
          <el-date-picker
            v-model="exportCheckedDate"
            type="daterange"
            size="small"
            value-format="yyyy-MM-dd"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          >
          <el-date-picker v-model="exportCheckedDate" type="daterange" size="small" value-format="yyyy-MM-dd"
            range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
          </el-date-picker>
          <span slot="footer" class="dialog-footer">
            <el-button @click="handleClose4">取 æ¶ˆ</el-button>
@@ -581,47 +296,17 @@
        </el-dialog>
      </div>
      <div style="width: 100%; height: 100%" v-if="active > 0">
        <Add
          :active="active"
          :currentId="currentId"
          v-if="active < 4"
          :examine="examine"
        />
        <Add :active="active" :currentId="currentId" v-if="active < 4" :examine="examine" />
      </div>
      <el-dialog
        title="标签打印"
        :visible.sync="printDialogVisible"
        width="40%"
        top="5vh"
      >
        <div
          style="width: 100%; height: 400px; overflow-y: auto"
          v-loading="loadPint"
        >
      <el-dialog title="标签打印" :visible.sync="printDialogVisible" width="40%" top="5vh">
        <div style="width: 100%; height: 400px; overflow-y: auto" v-loading="loadPint">
          <div class="dia_body">
            <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 qrData"
                :key="i + 'wwwww'"
                style="margin-bottom: 15px; font-size: 16px !important"
              >
                <el-checkbox
                  :label="i"
                  :key="i"
                  style="position: relative; top: -20px; left: 5px"
                  ><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 qrData" :key="i + 'wwwww'"
                style="margin-bottom: 15px; font-size: 16px !important">
                <el-checkbox :label="i" :key="i" style="position: relative; top: -20px; left: 5px"><br /></el-checkbox>
                <div>
                  <el-row style="font-size: 14px; padding-left: 20px">
                    <el-col style="font-weight: bold">{{ item.pName }}</el-col>
@@ -629,89 +314,48 @@
                  <div style="display: flex">
                    <div>
                      <el-col :span="8" :offset="4">
                        <vueQr
                          :text="
                            'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' +
                            item.id +
                            '&type=sample'
                          "
                          :size="140"
                          :margin="2"
                        ></vueQr>
                        <vueQr :text="'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' +
                          item.id +
                          '&type=sample'
                          " :size="140" :margin="2"></vueQr>
                      </el-col>
                    </div>
                    <div style="margin-left: 50px; width: 100%">
                      <el-row>
                        <el-col
                          style="
                        <el-col style="
                            font-weight: bold;
                            text-align: left;
                            font-size: 14px;
                          "
                          ><span>样品编号:&nbsp; </span
                          >{{ item.sampleCode }}</el-col
                        >
                          "><span>样品编号:&nbsp; </span>{{ item.sampleCode }}</el-col>
                      </el-row>
                      <el-row style="margin-top: 1px; font-size: 14px">
                        <el-col style="font-weight: bold; text-align: left"
                          ><span>委托单号:&nbsp; </span>{{ item.code }}</el-col
                        >
                        <el-col style="font-weight: bold; text-align: left"><span>委托单号:&nbsp; </span>{{ item.code
                          }}</el-col>
                      </el-row>
                      <el-row style="margin-top: 1px; font-size: 14px">
                        <el-col style="font-weight: bold; text-align: left"
                          ><span>规格型号:&nbsp; </span>{{ item.model }}</el-col
                        >
                        <el-col style="font-weight: bold; text-align: left"><span>规格型号:&nbsp; </span>{{ item.model
                          }}</el-col>
                      </el-row>
                      <el-row style="margin-top: 1px; font-size: 14px">
                        <el-col style="font-weight: bold; text-align: left"
                          ><span>样品名称:&nbsp; </span
                          >{{ item.sample }}</el-col
                        >
                        <el-col style="font-weight: bold; text-align: left"><span>样品名称:&nbsp; </span>{{ item.sample
                          }}</el-col>
                      </el-row>
                      <el-row
                        style="margin-top: 1px; font-size: 14px"
                        class="ellipsis-multiline"
                      >
                        <el-col style="font-weight: bold; text-align: left"
                          ><span>检测项目:&nbsp; </span>{{ item.item }}</el-col
                        >
                      <el-row style="margin-top: 1px; font-size: 14px" class="ellipsis-multiline">
                        <el-col style="font-weight: bold; text-align: left"><span>检测项目:&nbsp; </span>{{ item.item
                          }}</el-col>
                      </el-row>
                      <el-row style="margin-top: 2px; font-size: 14px">
                        <el-col
                          style="
                        <el-col style="
                            font-weight: bold;
                            display: flex;
                            align-items: center;
                          "
                          ><span>样品状态:&nbsp; </span
                          ><el-radio-group
                            :value="item.insState"
                            style="margin-top: 7px; margin-left: 4px"
                            disabled
                          >
                            <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
                          ><el-radio
                            :label="1"
                            style="font-weight: bold; margin-top: 7px"
                            v-model="item.isLeave"
                            disabled
                            >留样</el-radio
                          ></el-col
                        >
                          "><span>样品状态:&nbsp; </span><el-radio-group :value="item.insState"
                            style="margin-top: 7px; margin-left: 4px" disabled>
                            <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><el-radio :label="1" style="font-weight: bold; margin-top: 7px"
                            v-model="item.isLeave" disabled>留样</el-radio></el-col>
                      </el-row>
                    </div>
                  </div>
@@ -723,61 +367,40 @@
        <span slot="footer" class="dialog-footer">
          <el-row>
            <el-button @click="printDialogVisible = false">取 æ¶ˆ</el-button>
            <el-button
              type="primary"
              @click="submitPrint"
              :loading="printLoading"
              >打 å°</el-button
            >
            <el-button type="primary" @click="submitPrint" :loading="printLoading">打 å°</el-button>
          </el-row>
        </span>
      </el-dialog>
      <div
        class="el-dialog__body"
        style="
      <div class="el-dialog__body" style="
          overflow-y: auto;
          margin-top: 0;
          position: fixed;
          top: 999px;
          z-index: 99999;
          display: none;
        "
      >
        ">
        <div id="printMOrder" class="printMOrder" ref="printMOrder">
          <el-card
            class="box-card"
            v-for="(item, i) in checkDataList"
            :key="i + 'uuuuu'"
            style="
          <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i + 'uuuuu'" style="
              font-size: 0.2cm !important;
              page-break-after: always;
              color: #000;
              box-shadow: none;
              margin: 0 !important;
              padding: 0 !important;
            "
          >
            ">
            <div style="display: flex">
              <div>
                <el-col :span="10" :offset="2">
                  <vueQr
                    :text="
                      'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' +
                      item.id +
                      '&type=sample'
                    "
                    :size="60"
                    :margin="2"
                  ></vueQr>
                  <vueQr :text="'https://zttx-lims.ztt.cn:8021/lims/qr/qrScan?code=' +
                    item.id +
                    '&type=sample'
                    " :size="60" :margin="2"></vueQr>
                </el-col>
              </div>
              <div style="margin-left: 0.32cm; line-height: 0.22cm">
                <el-row>
                  <el-col
                    style="font-size: 0.2cm; width: 4cm"
                    class="single-line-ellipsis"
                    ><span>样品编号:&nbsp; </span>{{ item.sampleCode }}</el-col
                  >
                  <el-col style="font-size: 0.2cm; width: 4cm" class="single-line-ellipsis"><span>样品编号:&nbsp; </span>{{
                    item.sampleCode }}</el-col>
                </el-row>
                <el-row style="font-size: 0.2cm">
                  <el-col><span>委托单号:&nbsp; </span>{{ item.code }}</el-col>
@@ -786,29 +409,19 @@
                  <el-col><span>规格型号:&nbsp; </span>{{ item.model }}</el-col>
                </el-row>
                <el-row style="font-size: 0.2cm">
                  <el-col
                    ><span>样品名称:&nbsp; </span>{{ item.sample }}</el-col
                  >
                  <el-col><span>样品名称:&nbsp; </span>{{ item.sample }}</el-col>
                </el-row>
                <el-row style="font-size: 0.2cm; width: 4cm">
                  <el-col class="ellipsis-multiline"
                    ><span>检测项目:&nbsp; </span>{{ item.item }}</el-col
                  >
                  <el-col class="ellipsis-multiline"><span>检测项目:&nbsp; </span>{{ item.item }}</el-col>
                </el-row>
                <el-row style="margin-top: 0.01cm; font-size: 0.2cm">
                  <el-col style="display: flex; align-items: center"
                    ><span>样品状态:&nbsp; </span>
                    <span style="white-space: nowrap"
                      ><span v-if="item.insState == 0">√</span
                      ><span class="scor" v-if="item.insState != 0"></span>待检
                      <span v-if="item.insState == 1">√</span
                      ><span class="scor" v-if="item.insState != 1"></span>在检
                      <span v-if="item.insState == 2">√</span
                      ><span class="scor" v-if="item.insState != 2"></span>已检
                      <span v-if="item.isLeave == 1">√</span
                      ><span class="scor" v-if="item.isLeave != 1"></span
                      >留样</span
                    >
                  <el-col style="display: flex; align-items: center"><span>样品状态:&nbsp; </span>
                    <span style="white-space: nowrap"><span v-if="item.insState == 0">√</span><span class="scor"
                        v-if="item.insState != 0"></span>待检
                      <span v-if="item.insState == 1">√</span><span class="scor" v-if="item.insState != 1"></span>在检
                      <span v-if="item.insState == 2">√</span><span class="scor" v-if="item.insState != 2"></span>已检
                      <span v-if="item.isLeave == 1">√</span><span class="scor"
                        v-if="item.isLeave != 1"></span>留样</span>
                  </el-col>
                </el-row>
              </div>
@@ -994,32 +607,32 @@
            {
              name: "数据查看",
              type: "text",
              clickFun: (row) => {},
              clickFun: (row) => { },
            },
            {
              name: "报告下载",
              type: "text",
              clickFun: (row) => {},
              clickFun: (row) => { },
            },
            {
              name: "审核",
              type: "text",
              clickFun: (row) => {},
              clickFun: (row) => { },
            },
            {
              name: "撤销",
              type: "text",
              clickFun: (row) => {},
              clickFun: (row) => { },
            },
            {
              name: "撤销审核",
              type: "text",
              clickFun: (row) => {},
              clickFun: (row) => { },
            },
            {
              name: "分配",
              type: "text",
              clickFun: (row) => {},
              clickFun: (row) => { },
            },
          ],
        },
@@ -2022,8 +1635,8 @@
          this.$axios
            .get(
              this.$api.insOrder.selectTemperatureByProductId +
                "?productId=" +
                tree.id
              "?productId=" +
              tree.id
            )
            .then((res) => {
              this.loadRecursion(this.treeTableData, tree.id, res.data);
@@ -2037,10 +1650,10 @@
          this.$axios
            .get(
              this.$api.insOrder.selectTemperatureNumberByProductId +
                "?parentId=" +
                tree.parentId +
                "&inspectionItem=" +
                tree.inspectionItemTwo
              "?parentId=" +
              tree.parentId +
              "&inspectionItem=" +
              tree.inspectionItemTwo
            )
            .then((res) => {
              this.loadRecursion(this.treeTableData, tree.id, res.data);
@@ -2052,10 +1665,10 @@
          this.$axios
            .get(
              this.$api.insOrder.selectProductsBySampleId +
                "?sampleId=" +
                tree.id +
                "&orderId=" +
                this.orderId
              "?sampleId=" +
              tree.id +
              "&orderId=" +
              this.orderId
            )
            .then((res) => {
              this.treeTableData.forEach((m, index) => {
@@ -2087,8 +1700,8 @@
          this.$axios
            .get(
              this.$api.insOrder.revokeReviewTemperatureByProductId +
                "?productId=" +
                tree.id
              "?productId=" +
              tree.id
            )
            .then((res) => {
              resolve(res.data);
@@ -2100,10 +1713,10 @@
          this.$axios
            .get(
              this.$api.insOrder.revokeReviewConsistentByProductId +
                "?parentId=" +
                tree.parentId +
                "&inspectionItem=" +
                tree.inspectionItemTwo
              "?parentId=" +
              tree.parentId +
              "&inspectionItem=" +
              tree.inspectionItemTwo
            )
            .then((res) => {
              resolve(res.data);
@@ -2113,10 +1726,10 @@
          this.$axios
            .get(
              this.$api.insOrder.revokeReviewProduct +
                "?sampleId=" +
                tree.id +
                "&orderId=" +
                this.orderId
              "?sampleId=" +
              tree.id +
              "&orderId=" +
              this.orderId
            )
            .then((res) => {
              resolve(res.data);
@@ -2585,10 +2198,12 @@
.el-form-item {
  margin-bottom: 16px;
}
.box-card >>> .el-radio__inner {
.box-card>>>.el-radio__inner {
  border-radius: 2px !important;
}
.box-card >>> .el-radio__input.is-checked .el-radio__inner::after {
.box-card>>>.el-radio__input.is-checked .el-radio__inner::after {
  content: "";
  width: 8px;
  height: 3px;
@@ -2604,13 +2219,16 @@
  border-radius: 0px;
  background: none;
}
>>> .el-radio__label {
>>>.el-radio__label {
  color: #000 !important;
}
.el-dialog__body >>> .el-radio__label {
.el-dialog__body>>>.el-radio__label {
  font-size: 8px;
}
.el-dialog__body >>> .el-radio__input.is-checked .el-radio__inner::after {
.el-dialog__body>>>.el-radio__input.is-checked .el-radio__inner::after {
  content: "";
  width: 4px;
  height: 3px;
@@ -2626,31 +2244,40 @@
  border-radius: 0px;
  background: none;
}
>>> .el-radio__input.is-disabled.is-checked .el-radio__inner {
>>>.el-radio__input.is-disabled.is-checked .el-radio__inner {
  background: #3a7bfa;
}
.el-dialog__body >>> .el-radio__input.is-disabled.is-checked .el-radio__inner {
.el-dialog__body>>>.el-radio__input.is-disabled.is-checked .el-radio__inner {
  background: transparent;
}
.el-dialog__body >>> .el-radio__inner {
.el-dialog__body>>>.el-radio__inner {
  width: 8px !important;
  height: 8px !important;
}
.el-dialog__body >>> .el-radio__label {
.el-dialog__body>>>.el-radio__label {
  padding-left: 2px !important;
}
.el-dialog__body >>> .el-card__body {
.el-dialog__body>>>.el-card__body {
  padding: 0 !important;
}
.el-dialog__body >>> .el-card {
.el-dialog__body>>>.el-card {
  border: none;
}
.el-dialog__body >>> .el-radio__input.is-disabled .el-radio__inner {
.el-dialog__body>>>.el-radio__input.is-disabled .el-radio__inner {
  border-color: #000 !important;
}
.el-dialog__body >>> .el-radio__input.is-disabled.is-checked .el-radio__inner {
.el-dialog__body>>>.el-radio__input.is-disabled.is-checked .el-radio__inner {
  border: none !important;
}
.scor {
  width: 0.01cm;
  height: 0.01cm;
@@ -2658,6 +2285,7 @@
  border: 1px solid #000;
  display: inline-block;
}
.ellipsis-multiline {
  display: -webkit-box;
  -webkit-line-clamp: 2;
@@ -2665,14 +2293,19 @@
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
  max-height: 3em; /* é«˜åº¦ä¸ºå­—体大小的两倍 */
  line-height: 1.5em; /* è¡Œé«˜ */
  height: 3em; /* é«˜åº¦ä¸ºè¡Œé«˜çš„两倍 */
  max-height: 3em;
  /* é«˜åº¦ä¸ºå­—体大小的两倍 */
  line-height: 1.5em;
  /* è¡Œé«˜ */
  height: 3em;
  /* é«˜åº¦ä¸ºè¡Œé«˜çš„两倍 */
}
.table-container {
  height: 70vh;
  overflow-y: auto;
}
.table-container.el-table {
  overflow: hidden;
  text-overflow: ellipsis;
src/views/index.vue
@@ -1,33 +1,40 @@
<template>
  <div class="index">
  <div class="bg-1">
    <el-row :gutter="25">
      <el-col :lg="14" :md="14" :sm="24" :xl="14" :xs="24">
        <div class="left-1">
          <div class="say">
            <div style="display: flex;align-items: center;flex-wrap: wrap;">
              <div class="say-1">{{user.name}} æ‚¨å¥½ï¼ç¥æ‚¨å¼€å¿ƒæ¯ä¸€å¤©</div>
              <div class="say-2">当前时间: {{now}}</div>
              <div class="say-1">{{ user.name }} æ‚¨å¥½ï¼ç¥æ‚¨å¼€å¿ƒæ¯ä¸€å¤©</div>
              <div class="say-2">当前时间: {{ now }}</div>
            </div>
          </div>
        </div>
        <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;">
          <div v-for="(item,index) in workDay" :key="index" class="left-2-item">
          <div v-for="(item, index) in workDay" :key="index" class="left-2-item">
            <div class="left-item-title">
              <span style="font-size: 18px;">{{ item }}</span>
              <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span>
            </div>
            <div class="left-item-body">
              <div v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" class="body-item">
              <div v-for="(m, i) in workList[index]" :key="i"
                :class="{ color0: m.type == 0, color1: m.type == 1, color2: m.type == 2 }" class="body-item">
                <div>
                  <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span>
                  <div style="display: flex">
                    <span class="body-item-name">{{ m.name }}</span>
                    <span v-if="m.insState == 0" class="body-item-insState" style="background-color: #909399;font-size: 12px;">待检验</span>
                    <span v-if="m.insState == 1" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">检验中</span>
                    <span v-if="m.insState == 2" class="body-item-insState" style="background-color: #67C23A;font-size: 12px;">已检验</span>
                    <span v-if="m.insState == 3" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">待复核</span>
                    <span v-if="m.insState == 4" class="body-item-insState" style="background-color: #F56C6C;font-size: 9px;">复核未通过</span>
                    <span v-if="m.insState == 5" class="body-item-insState" style="background-color: #67C23A;font-size: 10px;">复核通过</span>
                    <span v-if="m.insState == 0" class="body-item-insState"
                      style="background-color: #909399;font-size: 12px;">待检验</span>
                    <span v-if="m.insState == 1" class="body-item-insState"
                      style="background-color: #E6A23C;font-size: 12px;">检验中</span>
                    <span v-if="m.insState == 2" class="body-item-insState"
                      style="background-color: #67C23A;font-size: 12px;">已检验</span>
                    <span v-if="m.insState == 3" class="body-item-insState"
                      style="background-color: #E6A23C;font-size: 12px;">待复核</span>
                    <span v-if="m.insState == 4" class="body-item-insState"
                      style="background-color: #F56C6C;font-size: 9px;">复核未通过</span>
                    <span v-if="m.insState == 5" class="body-item-insState"
                      style="background-color: #67C23A;font-size: 10px;">复核通过</span>
                  </div>
                </div>
              </div>
@@ -42,7 +49,7 @@
              <img alt="" src="@/assets/index_image/index-0.svg">
            </div>
            <div class="mun">
              <p style="font-size: 20px;">{{getNumberFourTypes.totalNumberOfMessages}}</p>
              <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfMessages }}</p>
              <p style="font-size: 14px;margin-bottom: 10px;">我的待办</p>
            </div>
          </div>
@@ -78,52 +85,55 @@
          <div class="right-2-title">
            <span style="color: #333333;font-size: 16px;">我的日程</span>
            <span style="cursor: pointer;font-size: 12px;
color: #3A7BFA;" @click="dialogVisible=true">添加我的日程</span>
color: #3A7BFA;" @click="dialogVisible = true">添加我的日程</span>
          </div>
          <div class="right-2-body">
            <div class="calendar" style="width: 49%;">
              <div class="control">
                <el-button class="prevm" icon="el-icon-arrow-left" @click="prevMonth(calendarValue)"></el-button>
                <span>{{ calendarValue.getFullYear()+'å¹´'+(calendarValue.getMonth() + 1)+'月' }}</span>
                <span>{{ calendarValue.getFullYear() + 'å¹´' + (calendarValue.getMonth() + 1) + '月' }}</span>
                <el-button class="nextm" icon="el-icon-arrow-right" @click="nextMonth(calendarValue)"></el-button>
              </div>
              <el-calendar v-model="calendarValue">
                <template
                  slot="dateCell"
                  slot-scope="{date, data}">
                        <span>
                            {{ data.day.split('-').slice(2)+'' }}
                        </span>
                <template slot="dateCell" slot-scope="{date, data}">
                  <span>
                    {{ data.day.split('-').slice(2) + '' }}
                  </span>
                  <!-- <el-badge v-if="data.isSelected" is-dot class="item">
                  </el-badge> -->
                </template>
              </el-calendar>
            </div>
            <div v-loading="scheduleLoading" class="right-2-list" style="width: 49%;height: 286px;">
              <div v-for="(m,i) in listScheduleByMe" :key="i" class="list2-item">
              <div v-for="(m, i) in listScheduleByMe" :key="i" class="list2-item">
                <span>{{ m.scheduleTimes }}</span>
                <el-tooltip :content="m.text" effect="dark" placement="top" style="margin-left: 10px;">
                  <p class="ellipsis-multiline" >{{ m.text }}</p>
                  <p class="ellipsis-multiline">{{ m.text }}</p>
                </el-tooltip>
              </div>
              <span v-if="listScheduleByMe.length==0" style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;">暂无数据</span>
              <span v-if="listScheduleByMe.length == 0"
                style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;">暂无数据</span>
            </div>
          </div>
        </div>
        <div class="right-3 card" style="overflow: hidden;">
          <div class="right-3-tab">
            <!--            <div :class="{active:currentIndex==4}" class="tab-item" style="cursor: pointer;" @click="currentIndex=4">预警提醒</div>-->
            <div :class="{active:currentIndex==5}" class="tab-item" style="cursor: pointer;" @click="currentIndexChange">CNAS通知通告</div>
            <div :class="{ active: currentIndex == 5 }" class="tab-item" style="cursor: pointer;"
              @click="currentIndexChange">
              CNAS通知通告</div>
          </div>
          <div v-loading="listLoading" class="right-3-list">
            <scroll-pagination v-if="list.length>0||listLoading" :finishLoding="finishLoding" :list="list" @load="getList">
              <div v-for="(m,i) in list" :key="i" class="list3-item">
            <scroll-pagination v-if="list.length > 0 || listLoading" :finishLoding="finishLoding" :list="list"
              @load="getList">
              <div v-for="(m, i) in list" :key="i" class="list3-item">
                <div class="list3-item-title">
                  <!--                <img alt="" src="../../../static/img/index-tip.svg">-->
                  <p style="color: #FF7756">{{ m.theme }}</p>
                </div>
                <div class="list3-item-info">
                  <p class="ellipsis-multiline" style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;" @click="goNoticeDetail(m)">
                  <p class="ellipsis-multiline" style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;"
                    @click="goNoticeDetail(m)">
                    <!-- ç¼–号<span style="color:#3A7BFA;"> SB20240101-001 </span>的设备将于2023-09-09 11:11:11过期 -->
                    {{ m.content }}
                  </p>
@@ -131,7 +141,9 @@
                </div>
              </div>
            </scroll-pagination>
            <div v-if="list.length<1&&!listLoading" style="color:#909399;font-size:14px;text-align: center;margin-top:80px" >暂无数据</div>
            <div v-if="list.length < 1 && !listLoading"
              style="color:#909399;font-size:14px;text-align: center;margin-top:80px">暂无数据
            </div>
          </div>
        </div>
      </el-col>
@@ -142,11 +154,7 @@
          <el-col :span="22" class="search_thing">
            <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>时间:</div>
            <div class="search_input">
              <el-date-picker
                v-model="query.time"
                format="yyyy-MM-dd HH:mm:ss"
                placeholder="选择日期时间"
                size="small"
              <el-date-picker v-model="query.time" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间" size="small"
                style="width: 100%;" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
              </el-date-picker>
            </div>
@@ -154,24 +162,23 @@
          <el-col :span="22" class="search_thing">
            <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>内容:</div>
            <div class="search_input">
              <el-input v-model="query.text" :rows="2"
                        placeholder="请输入内容" size="small" type="textarea"></el-input>
              <el-input v-model="query.text" :rows="2" placeholder="请输入内容" size="small" type="textarea"></el-input>
            </div>
          </el-col>
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
                <el-row>
                    <el-button @click="handleCancel">取 æ¶ˆ</el-button>
                    <el-button :loading="loading" type="primary" @click="submit">ç¡® å®š</el-button>
                </el-row>
            </span>
        <el-row>
          <el-button @click="handleCancel">取 æ¶ˆ</el-button>
          <el-button :loading="loading" type="primary" @click="submit">ç¡® å®š</el-button>
        </el-row>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {getYearAndMonthAndDays} from '@/utils/date.js'
import { getYearAndMonthAndDays } from '@/utils/date.js'
import ScrollPagination from '@/components/index/scroll-paging.vue'
export default {
  components: {
@@ -182,35 +189,35 @@
      user: {},
      now: null,
      calendarValue: new Date(),
      currentIndex:5,
      dialogVisible:false,
      query:{
        time:'',
        text:''
      currentIndex: 5,
      dialogVisible: false,
      query: {
        time: '',
        text: ''
      },
      loading:false,
      workLoading:false,
      workList:[],
      workDay:[],
      weekdays:[],
      listScheduleByMe:[],
      scheduleLoading:false,
      list:[],
      currentPage:1,
      loading: false,
      workLoading: false,
      workList: [],
      workDay: [],
      weekdays: [],
      listScheduleByMe: [],
      scheduleLoading: false,
      list: [],
      currentPage: 1,
      pageSize: 8, // ä¸€é¡µ7条
      total: null,
      listLoading: true, // ç»„ä»¶loading的展示,默认为true
      finishLoding: false, // åŠ è½½å®Œæˆï¼Œæ˜¾ç¤ºå·²ç»æ²¡æœ‰æ›´å¤šäº†
      timer:null,
      keyMap:{},
      timer: null,
      keyMap: {},
      getNumberFourTypes: {},
    }
  },
  watch:{
    calendarValue(val){
  watch: {
    calendarValue(val) {
      this.getScheduleByMe()
    },
    currentIndex(){
    currentIndex() {
      this.keyMap = {}
      this.currentPage = 1;
      this.list = [];
@@ -230,7 +237,7 @@
    this.list = [];
    this.getList();
    this.getScheduleByMe()
    this.timer&&clearInterval(this.timer)
    this.timer && clearInterval(this.timer)
    this.timer = setInterval(() => {
      this.init();
      this.currentPage = 1;
@@ -238,16 +245,16 @@
      this.list = [];
      this.getList();
      this.getScheduleByMe()
    },1000*60*10)
    }, 1000 * 60 * 10)
    this.getNumberFourTypesFun()
  },
  methods: {
    changeState (val) {
    changeState(val) {
      if (val == 0) {
        return '待检验'
      }
    },
    currentIndexChange () {
    currentIndexChange() {
      this.keyMap = {}
      this.currentPage = 1;
      this.list = [];
@@ -258,35 +265,35 @@
        this.getNumberFourTypes = res.data
      })
    },
    getList(){
    getList() {
      const key = `_${this.currentPage}`
      const value = this.keyMap[key]
      // å¦‚æžœvalue存在,表示缓存有值,那么阻止请求
      if(value) {
      if (value) {
        return
      }
      // value不存在,表示第一次请求,设置占位
      this.keyMap[key] = 'temp'
      if(this.currentPage==1){
      if (this.currentPage == 1) {
        this.listLoading = true
      }
      if(this.list.length==0){
      if (this.list.length == 0) {
        this.finishLoding = false;
      }
      this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'&current='+this.currentPage+'&messageType='+this.currentIndex).then(res => {
        if(res.code === 201){
      this.$axios.get(this.$api.informationNotification.page + '?size=' + this.pageSize + '&current=' + this.currentPage + '&messageType=' + this.currentIndex).then(res => {
        if (res.code === 201) {
          return
        }
        let list = res.data.records;
        this.total = res.data.total;
        if(list.length==0){
        if (list.length == 0) {
          this.finishLoding = true;
        }else{
          if(list.length<this.pageSize){
        } else {
          if (list.length < this.pageSize) {
            this.finishLoding = true;
          }
          this.list = this.list.concat(list)
          if(this.total==this.list.length){
          if (this.total == this.list.length) {
            this.finishLoding = true;
          }
          this.currentPage++;
@@ -376,19 +383,19 @@
      // å°†å¾—到的年月日格式转换为标准时间,与饿了么时间格式相同才能联动
      this.calendarValue = new Date(prevtime);
    },
    handleCancel(){
    handleCancel() {
      this.dialogVisible = false;
      this.query = {
        time:'',
        text:''
        time: '',
        text: ''
      }
    },
    submit(){
      if(!this.query.time){
    submit() {
      if (!this.query.time) {
        this.$message.error('时间未填写')
        return
      }
      if(!this.query.text){
      if (!this.query.text) {
        this.$message.error('内容未填写')
        return
      }
@@ -404,16 +411,16 @@
        this.getScheduleByMe()
      })
    },
    init(){
    init() {
      this.workLoading = true;
      this.$axios.get(this.$api.report.calendarWorkByWeek).then(res => {
        if (res.code == 201) return
        this.workLoading = false;
        this.workList = [];
        for(let i=0;i<7;i++){
        for (let i = 0; i < 7; i++) {
          this.workList.push(res.data[`work${i}`])
        }
        this.workDay = res.data.weekDays.map(m=>{
        this.workDay = res.data.weekDays.map(m => {
          let arr = m.split('-')
          return arr[2]
        })
@@ -428,8 +435,8 @@
        weekdays.push(day);
      }
      weekdays.reverse()
      weekdays = weekdays.map(m=>{
        let day =''
      weekdays = weekdays.map(m => {
        let day = ''
        switch (m) {
          case 0:
            day = '星期天'
@@ -457,56 +464,48 @@
      })
      return weekdays;
    },
    getScheduleByMe(){
    getScheduleByMe() {
      this.scheduleLoading = true;
      this.$axios.post(this.$api.report.ScheduleByMe, {
        date:getYearAndMonthAndDays(this.calendarValue)
        date: getYearAndMonthAndDays(this.calendarValue)
      }).then(res => {
        this.loading = false;
        this.scheduleLoading = false;
        if (res.code == 201) {
          return
        }
        this.listScheduleByMe = res.data.map(m=>{
          if(m.scheduleTime){
        this.listScheduleByMe = res.data.map(m => {
          if (m.scheduleTime) {
            let time = m.scheduleTime.split(' ')[1].split(':')
            m.scheduleTimes = time[0] + ':' + time[1]
          }else{
          } else {
            m.scheduleTimes = ''
          }
          return m
        })
      })
    },
    goNoticeDetail(row){
      this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => {
    goNoticeDetail(row) {
      this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead + '/' + row.id).then(res => {
        row.num = Math.random(100);
        this.$bus.$emit("change", JSON.stringify(row));
        this.$parent.addTab({
          v: "消息详情",
          i: "el-icon-s-tools",
          u: "notice-detail",
          k:35,
          k: 35,
          p: "abcd"
        },29);
        }, 29);
      })
    },
  },
  deactivated(){
    this.timer&&clearInterval(this.timer)
  deactivated() {
    this.timer && clearInterval(this.timer)
  }
}
</script>
<style scoped lang="scss">
.index {
  width: 100%;
  height: calc(100% - 50px);
  overflow-y: auto;
  padding: 20px 10px 10px;
  background: rgb(245, 247, 251);
}
.left-1 {
  background-image: url("~@/assets/index_image/index-img1.png");
  background-size: 100% 100%;
@@ -545,14 +544,14 @@
  border-radius: 3px;
}
.card{
.card {
  background: #FFFFFF;
  border-radius: 16px;
  width: 100%;
  box-sizing: border-box;
}
.right-1{
.right-1 {
  padding: 10px 10px 4px;
  display: flex;
  align-items: center;
@@ -560,64 +559,72 @@
  margin-bottom: 16px;
}
.right-1-item{
.right-1-item {
  width: 25%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.right-1-item .mun{
.right-1-item .mun {
  margin-left: 6px;
  color: #0166E2;
}
.right-2{
.right-2 {
  padding: 13px 14px 8px;
  margin-bottom: 16px;
}
.right-2-title{
.right-2-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.right-2-body{
.right-2-body {
  width: 100%;
  margin-top: 20px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}
>>>.el-calendar__header {
  display: none;
}
>>>.el-calendar__body{
>>>.el-calendar__body {
  padding: 0;
}
>>>.el-calendar-table:not(.is-range) td.next {
  /*隐藏下个月的日期*/
  display: none;
}
>>>.el-calendar-day{
>>>.el-calendar-day {
  height: 40px;
}
>>>.el-calendar-table td{
>>>.el-calendar-table td {
  border: 0;
  font-size: 14px;
}
>>>.el-calendar-table tr td:first-child{
>>>.el-calendar-table tr td:first-child {
  border-left: 0;
}
.control{
.control {
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
  padding: 0px 0 10px;
}
.control .el-button{
.control .el-button {
  width: 32px;
  height: 32px;
  border-radius: 8px;
@@ -627,17 +634,20 @@
  color: #0166E2;
  font-size: 20px;
}
.list2-item{
.list2-item {
  line-height: 22px;
  display: flex;
  margin-bottom: 12px;
  font-size: 14px;
}
.right-3-tab{
.right-3-tab {
  display: flex;
  align-items: center;
}
.tab-item{
.tab-item {
  width: 50%;
  box-sizing: border-box;
  text-align: center;
@@ -646,56 +656,68 @@
  background: #F5F7FB;
  color: #333333;
}
.tab-item.active{
.tab-item.active {
  background: #fff;
  color: #FF3838;
  padding-left: 16px;
  text-align: left;
}
.right-3-list{
.right-3-list {
  padding: 0 12px 8px;
  box-sizing: border-box;
  height: 390px;
  overflow-y: auto;
}
.list3-item{
.list3-item {
  padding: 6px 4px;
  margin: 8px 0;
}
.list3-item:hover{
  background: rgba(58, 123, 250,0.05);
.list3-item:hover {
  background: rgba(58, 123, 250, 0.05);
}
.list3-item-title{
.list3-item-title {
  display: flex;
  align-items: flex-start;
  margin-bottom: 10px;
}
.list3-item-info{
.list3-item-info {
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #666666;
  font-size: 14px;
}
.left-2{
.left-2 {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  height: 777px;
}
.left-2-item{
.left-2-item {
  border-right: 1px solid #F1F1F1;
  overflow: hidden !important;
}
.left-2-item:nth-last-child(1){
.left-2-item:nth-last-child(1) {
  border-right: 0;
}
.left-2-item:hover{
  background: rgba(58,123,250,0.05);
.left-2-item:hover {
  background: rgba(58, 123, 250, 0.05);
}
.left-2-item:hover .left-item-title span{
.left-2-item:hover .left-item-title span {
  color: #3A7BFA !important;
}
.left-item-title{
.left-item-title {
  border-bottom: 1px solid #F1F1F1;
  display: flex;
  flex-direction: column;
@@ -703,35 +725,42 @@
  justify-content: center;
  padding: 20px 0;
}
.left-item-body{
.left-item-body {
  box-sizing: border-box;
  padding: 5px;
  height: 693px;
  overflow-y: auto;
}
.body-item{
.body-item {
  background: #70A090;
  border-radius: 16px;
  overflow: hidden;
  margin-bottom: 8px;
}
.body-item.color0{
.body-item.color0 {
  background: #70A090;
}
.body-item.color1{
.body-item.color1 {
  background: #EBD476;
}
.body-item.color2{
.body-item.color2 {
  background: #FF3838;
}
.body-item>div{
.body-item>div {
  height: calc(100% - 16px);
  margin-top: 16px;
  background: rgba(255, 255, 255,0.9);
  background: rgba(255, 255, 255, 0.9);
  padding: 8px 8px 16px;
  display: flex;
  flex-direction: column;
}
.search_thing {
  height: 50px;
  margin-bottom: 26px;
@@ -743,7 +772,8 @@
  text-align: left;
  margin-bottom: 10px;
}
>>>.el-calendar-day span{
>>>.el-calendar-day span {
  display: inline-block;
  width: 30px;
  height: 30px;
@@ -751,26 +781,33 @@
  text-align: center;
  border-radius: 4px;
}
>>>.is-selected{
>>>.is-selected {
  background: transparent !important;
}
>>>.is-selected .el-calendar-day{
>>>.is-selected .el-calendar-day {
  background: transparent !important;
}
>>>.is-selected .el-calendar-day span{
>>>.is-selected .el-calendar-day span {
  background: #3A7BFA !important;
  color: #fff !important;
}
>>>.el-calendar-day:hover{
>>>.el-calendar-day:hover {
  background: transparent;
}
>>>.el-calendar-day span:hover{
>>>.el-calendar-day span:hover {
  background: #3A7BFA !important;
  color: #fff !important;
}
.body-item-name {
  display: inline-block;
  height: 22px;width: 60px;
  height: 22px;
  width: 60px;
  border-radius: 10px;
  line-height: 22px;
  text-align: center;
@@ -778,10 +815,12 @@
  color: #fff;
  font-size: 14px
}
.body-item-insState {
  margin-left: 2px;
  display: inline-block;
  height: 22px;width: 60px;
  height: 22px;
  width: 60px;
  border-radius: 10px;
  line-height: 22px;
  text-align: center;