6
jinlin
2023-11-30 ae68db0801b89aa31c4a4d4e506a68c641da97b3
web/src/views/modules/project/Environ-AddOrUpdate.vue
@@ -1,23 +1,23 @@
<template>
  <zt-dialog ref="dialog" column="2" @confirm="formSubmit" append-to-body title="测试环境建立确认表">
      <el-form :model="dataForm" style="padding: 0" :inline="true"  ref="dataForm" :disabled="dataForm.disabled" label-width="130px" class="confirmFormAuto">
      <el-form :model="dataForm" style="padding-top: 0" :inline="true"  ref="dataForm" :disabled="dataForm.disabled" label-width="130px" class="confirmFormAuto">
        <div class="DConfirmForm">
          <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: 0">
            <span>{{dataForm.code}}</span>
            <span>{{dataForm.environ.code}}</span>
          </el-form-item>
        </div>
        <div style="border: 1px solid rgba(0,0,0,.2);width: 99%" class="confirmDAuto DConfirmForm">
          <el-form-item class="marginTopAndMarginBottom" label="专业实验室名称" style="width: 49%">
            <el-input v-model="dataForm.agencyName" placeholder="专业实验室名称"></el-input>
            <el-input v-model="dataForm.testAgencyInfo.agencyName" placeholder="专业实验室名称"></el-input>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom" label="测试地点" style="width: 49%">
            <el-input v-model="dataForm.site" placeholder="测试地点"></el-input>
            <el-input v-model="dataForm.testAgencyInfo.site" placeholder="测试地点"></el-input>
          </el-form-item>
          <el-form-item  label="被测软件" style="width: 49%">
            <el-input v-model="dataForm.softwareName" placeholder="被测软件"></el-input>
            <el-input v-model="dataForm.project.softwareName" placeholder="被测软件"></el-input>
          </el-form-item>
          <el-form-item label="版本" style="width: 49%">
            <el-input v-model="dataForm.softwareIdentity" placeholder="版本"></el-input>
            <el-input v-model="dataForm.project.softwareIdentity" placeholder="版本"></el-input>
          </el-form-item>
          <div class="el-flexConfigDialog el-form-border">
            <div class="DFormWidth DAlign DHold">
@@ -26,9 +26,9 @@
            <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)">
              <div style="padding: 5px">软件资源:</div>
              <div class="table-container">
              <el-table class="el-software el-margin-top-bot" height="150" border :data="dataForm.softwareResourcesList"
              <el-table ref="tableSoftwareList" class="el-software el-margin-top-bot" border :data="dataForm.softwareResourcesList"
                        stripe>
                <el-table-column prop="code" align="center" width="80" label="序号">
                <el-table-column prop="no" align="center" width="80" label="序号">
                  <template slot-scope="scope">
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
@@ -43,9 +43,9 @@
                    <el-input v-model="row.version" placeholder="版本"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="use" align="center" width="180" label="用途">
                <el-table-column prop="purposes" align="center" width="180" label="用途">
                  <template v-slot="{ row }">
                    <el-input v-model="row.usage" placeholder="用途"></el-input>
                    <el-input v-model="row.purposes" placeholder="用途"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="unit" label="提供单位" width="180"  align="center">
@@ -61,14 +61,38 @@
              </div>
              <div style="padding: 5px">硬件资源:</div>
              <div class="table-container">
              <el-table class="el-software el-margin-top-bot" height="150" border :data="dataForm.hardwareResourcesList"
              <el-table ref="tableHardwareList" class="el-software el-margin-top-bot" border :data="dataForm.hardwareResourcesList"
                        stripe>
                <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column>
                <el-table-column prop="itemName" min-width="300" label="硬件和固件项目名称"></el-table-column>
                <el-table-column prop="usage" align="center" width="180" label="用途"></el-table-column>
                <el-table-column prop="number" align="center" width="80" label="数量"></el-table-column>
                <el-table-column prop="state" align="center" width="120" label="状态"></el-table-column>
                <el-table-column prop="provideUnit" align="center" width="180" label="提供单位"></el-table-column>
                <el-table-column prop="no" align="center" width="80" label="序号">
                  <template slot-scope="scope">
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
                </el-table-column>
                <el-table-column prop="itemName" min-width="300" label="硬件和固件项目名称">
                  <template v-slot="{ row }">
                    <el-input v-model="row.itemName" placeholder="硬件和固件项目名称"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="purposes" align="center" width="180" label="用途">
                  <template v-slot="{ row }">
                    <el-input v-model="row.purposes" placeholder="用途"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="number" align="center" width="80" label="数量">
                  <template v-slot="{ row }">
                    <el-input v-model="row.number" placeholder="数量"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="state" align="center" width="120" label="状态">
                  <template v-slot="{ row }">
                    <el-input v-model="row.state" placeholder="状态"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="provideUnit" align="center" width="180" label="提供单位">
                  <template v-slot="{ row }">
                    <el-input v-model="row.provideUnit" placeholder="提供单位"></el-input>
                  </template>
                </el-table-column>
              </el-table>
                <div class="icon-container" @click="addHardwareRow()">
                  <!-- 放置固定的图标 -->
@@ -82,8 +106,14 @@
              动态测试环境图
            </div>
            <div style="width: calc(100% - 120px);">
              <div style="height:150px" class="el-wt-border-left">
                <span>{{dataForm.testEnvirontDiagram}}</span>
              <div  class="el-wt-border-left">
                <span>{{dataForm.environ.testEnvirontDiagram}}</span>
                <config-uploader busi-type="test_environt_diagram" model-name="dataForm" :dataForm="dataForm"
                                 @getImageUrl="getImageUrl"
                                 v-model="dataForm.files"/>
                <div v-if="dataForm.url">
                  <el-image :src="dataForm.url"></el-image>
                </div>
              </div>
            </div>
          </div>
@@ -93,14 +123,38 @@
            </div>
            <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)">
              <div class="table-container">
              <el-table class="el-software el-margin-top-bot" height="150" border :data="dataForm.environAnalysisList"
              <el-table ref="tableEnvironeList" class="el-software el-margin-top-bot" border :data="dataForm.environAnalysisList"
                        stripe>
                <el-table-column prop="code" align="center" width="80" label="序号"></el-table-column>
                <el-table-column prop="realEnviron" min-width="300" label="真实环境"></el-table-column>
                <el-table-column prop="testEnviron" align="center" width="100" label="测试环境"></el-table-column>
                <el-table-column prop="environDifference" align="center" width="100" label="环境差异"></el-table-column>
                <el-table-column prop="resultImpact" align="center" width="160" label="对测试结果影响"></el-table-column>
                <el-table-column prop="measure" align="center" width="180" label="措施"></el-table-column>
                <el-table-column prop="no" align="center" width="80" label="序号">
                  <template slot-scope="scope">
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
                </el-table-column>
                <el-table-column prop="realEnviron" min-width="300" label="真实环境">
                  <template v-slot="{ row }">
                    <el-input v-model="row.realEnviron" placeholder="真实环境"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="testEnviron" align="center" width="100" label="测试环境">
                  <template v-slot="{ row }">
                    <el-input v-model="row.testEnviron" placeholder="测试环境"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="environDifference" align="center" width="100" label="环境差异">
                  <template v-slot="{ row }">
                    <el-input v-model="row.environDifference" placeholder="环境差异"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="resultImpact" align="center" width="160" label="对测试结果影响">
                  <template v-slot="{ row }">
                    <el-input v-model="row.resultImpact" placeholder="对测试结果影响"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="measure" align="center" width="180" label="措施">
                  <template v-slot="{ row }">
                    <el-input v-model="row.measure" placeholder="措施"></el-input>
                  </template>
                </el-table-column>
              </el-table>
                <div class="icon-container" @click="addDiscrepancyRow()">
                  <!-- 放置固定的图标 -->
@@ -115,20 +169,20 @@
            </div>
            <div style="width: calc(100% - 120px)"  class="DConfirmForm el-wt-border-left">
              <el-form-item class="marginTopAndMarginBottom" label="人员" style="width: 49%">
                <el-input v-model="dataForm.establishStaff" placeholder="人员"></el-input>
                <el-input v-model="dataForm.environ.establishStaff" placeholder="人员"></el-input>
              </el-form-item>
              <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%">
                <el-date-picker
                  v-model="dataForm.establishDate"
                  v-model="dataForm.environ.establishDate"
                  type="date"
                  placeholder="日期">
                </el-date-picker>
              </el-form-item>
              <el-form-item label-width="180px" class="isKill" label="是否进行环境病毒查杀" style="width: 49%">
                <zt-dict v-model="dataForm.isVirusScan" dict="is_or_not" :radio="true"></zt-dict>
                <zt-dict v-model="dataForm.environ.isVirusScan" dict="is_or_not" :radio="true"></zt-dict>
              </el-form-item>
              <el-form-item label="病毒库版本" style="width: 48%">
                <el-input v-model="dataForm.virusDatabaseVersion" placeholder="请输入病毒库版本"></el-input>
                <el-input v-model="dataForm.environ.virusDatabaseVersion" placeholder="请输入病毒库版本"></el-input>
              </el-form-item>
            </div>
          </div>
@@ -139,12 +193,12 @@
            <div style="width: calc(100% - 120px)" class="DConfirmForm el-wt-border-left">
              <!-- 单位名称 -->
              <el-form-item class="marginTopAndMarginBottom" label="人员" style="width: 49%">
                <el-input v-model="dataForm.confirmatStaff" placeholder="人员"></el-input>
                <el-input v-model="dataForm.environ.confirmatStaff" placeholder="人员"></el-input>
              </el-form-item>
              <!-- 联系人 -->
              <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%">
                <el-date-picker
                  v-model="dataForm.confirmatDate"
                  v-model="dataForm.environ.confirmatDate"
                  type="date"
                  placeholder="日期">
                </el-date-picker>
@@ -162,26 +216,32 @@
      return {
        dataForm: {
          id: '',
          code: '',
          agencyName:'',
          site:'',
          softwareName:'',
          softwareIdentity:'',
          hardSoftwareRes: '',
          testEnvirontDiagram: '',
          url:'',
          environ:{
            code: '1',
            hardSoftwareRes: '',
            testEnvirontDiagram: '',
            establishStaff:'',
            establishDate:'',
            environAnalysis: '',
            environEstablish: '',
            environConfirmat: '',
            confirmatStaff: '',
            confirmatDate: '',
            isVirusScan: '',
            virusDatabaseVersion: '',
          },
          project: {
            softwareIdentity: '',
            softwareName: '',
          },
          testAgencyInfo: {
            agencyName:'',
            site:'',
          },
          softwareResourcesList:[],
          hardwareResourcesList:[],
          environAnalysisList:[],
          establishStaff:'',
          establishDate:'',
          environAnalysis: '',
          environEstablish: '',
          environConfirmat: '',
          confirmatStaff: '',
          confirmatDate: '',
          isVirusScan: '',
          virusDatabaseVersion: '',
          softwareData:[]
          environAnalysisList:[]
        }
      }
    },
@@ -196,7 +256,7 @@
      // 获取信息
      async getInfo() {
        let params = {
          orderId: this.dataForm.id,
          environId: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/project/Environ/getDto`,{params: params})
@@ -210,10 +270,30 @@
        return index += 1
      },
      addSoftwareRow(){
        this.dataForm.softwareData.push({})
        this.dataForm.softwareResourcesList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableSoftwareList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight
        })
      },
      addHardwareRow(){},
      addDiscrepancyRow(){},
      addHardwareRow(){
        this.dataForm.hardwareResourcesList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableHardwareList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
      addDiscrepancyRow(){
        this.dataForm.environAnalysisList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableEnvironeList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
      getImageUrl(url){
        this.dataForm.url  = url
        console.log(this.dataForm.url,' this.dataForm.url')
      },
      // 表单提交
      async formSubmit() {
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project/Environ/', this.dataForm)
@@ -243,11 +323,6 @@
.DFormWidth {
  width: 120px;
}
.DAlign {
  text-align: center;
}
.DConfirmForm {
  /*border-left: 1px solid;*/
  width: 100%;
@@ -299,23 +374,5 @@
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
.table-container {
  position: relative;
}
.icon-container {
  z-index: 1;
  position: absolute;
  bottom: -20px;
  left: 50%;
  width: 40px;
  height: 30px;
  text-align: center;
  line-height: 30px;
  transform: translateX(-50%);
  border: 1px solid #EBEEF5;
  background-color: #fafafa;
  box-shadow: 0 3px 6px 0 rgba(72, 119, 232, 0.14);
  border-radius: 2px;
}
</style>