6
jinlin
2023-12-01 68981c58ea61ff4edc0479facfb8b76181d2a582
6
8个文件已修改
501 ■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/ConfigItemWarehouseService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/components/config-uploader/src/config-uploader.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/project/Environ-AddOrUpdate.vue 419 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/ConfigItemWarehouseService.java
@@ -23,6 +23,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@@ -32,11 +33,11 @@
/**
 * config_item_warehouse
 *
 * @author zt generator
 * @author zt generator
 * @since 1.0.0 2023-11-27
 */
@Service
public class ConfigItemWarehouseService  extends BaseService<ConfigItemWarehouseDao, ConfigItemWarehouse> {
public class ConfigItemWarehouseService extends BaseService<ConfigItemWarehouseDao, ConfigItemWarehouse> {
    @Autowired
    private SysOssConfigService sysOssConfigService;
@@ -87,7 +88,7 @@
        else {
            Map<String, String> map = new HashMap<>();
            map.put("funCode", "config_item_warehouse");
            map.put("projectId",configItemDto.getProjectId().toString());
            map.put("projectId", configItemDto.getProjectId().toString());
            configItemDto.getConfigItemWarehouse().setProjectId(configItemDto.getProjectId());
            configItemDto.getConfigItemWarehouse().setCode(sysCodeRuleService.getNewCode(map));
            baseDao.insert(configItemDto.getConfigItemWarehouse());
@@ -128,7 +129,7 @@
        Long bizId = configItemDto.getConfigItemWarehouse().getId();
        FlowInfoDto flowInfoDto = configItemDto.getFlowInfoDto();
        if (flowInfoDto != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
        if (flowInfoDto != null && flowInfoDto.getBizId() != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
            if ("tj".equals(flowInfoDto.getSubmitType())) {
                workflowService.startFlow(flowInfoDto.getFlowCode(), bizId);
            }
@@ -144,7 +145,7 @@
            ConfigItemWarehouse configItemWarehouse = this.get(warehouseId);
            data.setConfigItemWarehouse(configItemWarehouse);
            if (projectId==null) {
            if (projectId == null) {
                projectId = configItemWarehouse.getProjectId();
            }
            List<WarehouseCmAudit> CmAuditList = cmAuditService.getList(warehouseId);
@@ -155,7 +156,7 @@
            data.setConfigItemList(ConfigItemList);
        } else {
            ConfigItemWarehouse configItemWarehouse =new ConfigItemWarehouse();
            ConfigItemWarehouse configItemWarehouse = new ConfigItemWarehouse();
            data.setConfigItemWarehouse(configItemWarehouse);
            List<?> cmList = baseDao.itemList("warehouse_cm_audit");
            List<?> CmAuditList = cmList;
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
@@ -64,16 +64,6 @@
    @ApiModelProperty(value = "校准检测情况说明")
    private String detectSituation;
/*    @ApiModelProperty(value = "物品入库人")
    private String warehousePerson;
    @ApiModelProperty(value = "物品入库时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date warehouseDate;
    @ApiModelProperty(value = "物品入库情况")
    private String warehouseSituation;*/
    @ApiModelProperty(value = "物品发放人")
    private String itemIssuer;
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java
@@ -120,7 +120,7 @@
        Long bizId = itemCirculatOrderDto.getCirculatOrder().getId();
        FlowInfoDto flowInfoDto = itemCirculatOrderDto.getFlowInfoDto();
        if (flowInfoDto != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
        if (flowInfoDto != null && flowInfoDto.getBizId() != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
            if ("tj".equals(flowInfoDto.getSubmitType())) {
                workflowService.startFlow(flowInfoDto.getFlowCode(), bizId);
            }
@@ -135,7 +135,7 @@
            data.setId(circulatOrderid);
            ItemCirculatOrder itemCirculatOrder = this.get(circulatOrderid);
            data.setCirculatOrder(itemCirculatOrder);
            if (projectId==null){
            if (projectId == null) {
                projectId = itemCirculatOrder.getProjectId();
            }
@@ -154,7 +154,15 @@
        if (projectId != null) {
            data.setProjectId(projectId);
            data.setProject(projectService.get(projectId));
            Project project = projectService.get(projectId);
            String type = project.getSoftwareType();
            if (type == "3") {
                type = "2";
            } else {
                type = "1";
            }
            project.setSoftwareType(type);
            data.setProject(project);
        }
        if (data.getTestAgencyInfo() == null)
modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironController.java
@@ -80,14 +80,8 @@
        EnvironDto data = environService.getDto(environId, projectId);
        if (environId != null) {
            OssDto ossDto = sysOssConfigService.getOssByBusiType(environId, "test_environt_diagram");
            List<SysOss> sysOss1 =sysOssService.getSysOssByBusiIdAnd(environId,"test_environt_diagram");
            String Url = "";
            for (SysOss sysOss: sysOss1){
                Url=sysOss.getUrl();
            }
            if (ossDto != null) {
                data.setFiles(ossDto);
                data.setUrl(Url);
            }
        }
        return Result.ok(data);
web/src/components/config-uploader/src/config-uploader.vue
@@ -27,7 +27,7 @@
        </el-table>
      </el-collapse-item>
    </el-collapse>
    <div v-else class="config-uploader" v-model="activeNames" >
    <div v-else class="config-uploader" v-model="activeNames">
      <div v-for="group in (oss.groups || [])" :key="group.busiFieldGroup">
        <!-- <zt-form-item :label="field.busiFieldName" :prop="field.busiField" v-for="field in group.fields"
                       :key="field.busiField" :rules="field.isRequired ? 'required':''" style="width: 100%;">
@@ -53,7 +53,7 @@
              <zt-uploader v-model="dataForm[scope.row.busiField]" :dataForm="dataForm" multiple
                           :limit="scope.row.fileLimit" :file-type="scope.row.fileTypeArr"
                           :showFileList2="false" :accept="scope.row.accept" :file-size="scope.row.fileSize"
                           @input="change(scope.row.busiField)"/>
                           @input="change(scope.row.busiField)" @getUploaderImg="getUploaderImg"/>
            </template>
          </el-table-column>
        </el-table>
@@ -139,21 +139,33 @@
              field.fileTypeArr = arrType
            })
          })
          console.log(JSON.parse(JSON.stringify(arr[0])),'JSON.parse(JSON.stringify(arr[0]))')
          console.log(JSON.parse(JSON.stringify(arr[0])), 'JSON.parse(JSON.stringify(arr[0]))')
          return JSON.parse(JSON.stringify(arr[0]))
        }
        return null
      },
      getUploaderImg(list) {
        // this.imageList = list
        if (list[0].url) {
          this.$emit('getImageUrl', list[0].url)
        }
      },
      change(busiField) {
        console.log(busiField, 'config_uploader change(busiField) busiField')
        this.fields.forEach(field => {
          if (field.busiField === busiField) {
            field.files.length = 0
            this.dataForm[busiField].forEach(file => field.files.push(file))
            this.dataForm[busiField].forEach(file => {
                field.files.push(file)
              }
            )
            if (this.dataForm) {
              this.dataForm.hasUploadFinsh = 100
            }
          }
        })
        console.log(this.dataForm, 'config_uploader change(busiField)')
        this.$emit('getImageUrl')
      }
    }
  }
@@ -162,7 +174,8 @@
  .config-uploader label {
    width: 260px !important;
  }
   .zt .el-upload-list__item .el-progress{
    top:15px !important;
  .zt .el-upload-list__item .el-progress {
    top: 15px !important;
  }
</style>
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue
@@ -142,7 +142,7 @@
            </el-table>
            <div class="el-border-top">
              <el-form-item label="审核结果" style="width: 99%">
                <zt-dict v-model="dataForm.configItemWarehouse.cmAuditResults" placeholder="审核结果" dict="is_pass" :radio="true"
                <zt-dict :disabled="getRoleName.indexOf('CM角色')===-1" v-model="dataForm.configItemWarehouse.cmAuditResults" placeholder="审核结果" dict="is_pass" :radio="true"
                         clearable></zt-dict>
              </el-form-item>
              <el-form-item label="审核人:" style="width: 48%">
@@ -177,7 +177,7 @@
          </div>
          <div style="width: calc(100% - 120px)" class="el-border-left">
            <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
              <el-input  type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.configItemWarehouse.projectCmOperations"></el-input>
              <el-input v-if="getRoleName.indexOf('CM角色')>=0" type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.configItemWarehouse.projectCmOperations"></el-input>
            </el-form-item>
            <el-form-item label-width="80%" label="操作人:" style="width: 65%">
              <span>{{dataForm.configItemWarehouse.operator}}</span>
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
@@ -185,7 +185,7 @@
          </div>
          <div class="el-border-left " style="width: 35%;height: 40px;">
            <el-form-item label="是否满足测试要求" label-width="150px" style="padding-left:20px;margin-bottom:0">
              <zt-dict v-model="dataForm.circulatOrder.detectSituation" :radio="true" dict="is_or_not"></zt-dict>
              <zt-dict :disabled="getRoleName.indexOf('QA角色')===-1" v-model="dataForm.circulatOrder.detectSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
          </div>
        </div>
@@ -248,7 +248,7 @@
          </div>
          <div class="el-border-left " style="width: 20%;height: 40px">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-input v-model="dataForm.circulatOrder.itemAcceptr"></el-input>
              <el-input v-model="dataForm.circulatOrder.remark"></el-input>
            </el-form-item>
          </div>
        </div>
@@ -297,6 +297,12 @@
        }
      }
    },
    computed:{
      getRoleName(){
        console.log(this.$store.state.user.roleName,'this.$store.state.user.roleName')
        return this.$store.state.user.roleName || ''
      },
    },
    methods: {
      indexFormat(index) {
        return index += 1
web/src/views/modules/project/Environ-AddOrUpdate.vue
@@ -1,32 +1,34 @@
<template>
  <zt-dialog ref="dialog" column="2" @confirm="formSubmit" append-to-body title="测试环境建立确认表">
      <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.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.testAgencyInfo.agencyName" placeholder="专业实验室名称"></el-input>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom" label="测试地点" style="width: 49%">
            <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.project.softwareName" placeholder="被测软件"></el-input>
          </el-form-item>
          <el-form-item label="版本" style="width: 49%">
            <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">
              硬软件资源
            </div>
            <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 ref="tableSoftwareList" class="el-software el-margin-top-bot" border :data="dataForm.softwareResourcesList"
    <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.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.testAgencyInfo.agencyName" placeholder="专业实验室名称"></el-input>
        </el-form-item>
        <el-form-item class="marginTopAndMarginBottom" label="测试地点" style="width: 49%">
          <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.project.softwareName" placeholder="被测软件"></el-input>
        </el-form-item>
        <el-form-item label="版本" style="width: 49%">
          <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">
            硬软件资源
          </div>
          <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 ref="tableSoftwareList" class="el-software el-margin-top-bot" border
                        :data="dataForm.softwareResourcesList"
                        stripe>
                <el-table-column prop="no" align="center" width="80" label="序号">
                  <template slot-scope="scope">
@@ -48,20 +50,21 @@
                    <el-input v-model="row.purposes" placeholder="用途"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="unit" label="提供单位" width="180"  align="center">
                <el-table-column prop="unit" label="提供单位" width="180" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.provideUnit" placeholder="提供单位"></el-input>
                  </template>
                </el-table-column>
              </el-table>
                <div class="icon-container" @click="addSoftwareRow()">
                  <!-- 放置固定的图标 -->
                  <i class="el-icon-plus"></i>
                </div>
              <div class="icon-container" @click="addSoftwareRow()">
                <!-- 放置固定的图标 -->
                <i class="el-icon-plus"></i>
              </div>
              <div style="padding: 5px">硬件资源:</div>
              <div class="table-container">
              <el-table ref="tableHardwareList" class="el-software el-margin-top-bot" border :data="dataForm.hardwareResourcesList"
            </div>
            <div style="padding: 5px">硬件资源:</div>
            <div class="table-container">
              <el-table ref="tableHardwareList" class="el-software el-margin-top-bot" border
                        :data="dataForm.hardwareResourcesList"
                        stripe>
                <el-table-column prop="no" align="center" width="80" label="序号">
                  <template slot-scope="scope">
@@ -94,36 +97,37 @@
                  </template>
                </el-table-column>
              </el-table>
                <div class="icon-container" @click="addHardwareRow()">
                  <!-- 放置固定的图标 -->
                  <i class="el-icon-plus"></i>
                </div>
              <div class="icon-container" @click="addHardwareRow()">
                <!-- 放置固定的图标 -->
                <i class="el-icon-plus"></i>
              </div>
            </div>
          </div>
          <div class="el-flexConfigDialog el-B-border">
            <div class="DFormWidth DAlign DHold">
              动态测试环境图
            </div>
            <div style="width: calc(100% - 120px);">
              <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 class="el-flexConfigDialog el-B-border">
          <div class="DFormWidth DAlign DHold">
            动态测试环境图
          </div>
          <div style="width: calc(100% - 120px);">
            <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 class="el-flexConfigDialog el-B-border">
            <div class="DFormWidth DAlign DHold">
              环境差异性分析
            </div>
            <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)">
              <div class="table-container">
              <el-table ref="tableEnvironeList" class="el-software el-margin-top-bot" border :data="dataForm.environAnalysisList"
        </div>
        <div class="el-flexConfigDialog el-B-border">
          <div class="DFormWidth DAlign DHold">
            环境差异性分析
          </div>
          <div class="el-wt-border-left" style="padding-left:5px;width: calc(100% - 130px)">
            <div class="table-container">
              <el-table ref="tableEnvironeList" class="el-software el-margin-top-bot" border
                        :data="dataForm.environAnalysisList"
                        stripe>
                <el-table-column prop="no" align="center" width="80" label="序号">
                  <template slot-scope="scope">
@@ -156,57 +160,57 @@
                  </template>
                </el-table-column>
              </el-table>
                <div class="icon-container" @click="addDiscrepancyRow()">
                  <!-- 放置固定的图标 -->
                  <i class="el-icon-plus"></i>
                </div>
              <div class="icon-container" @click="addDiscrepancyRow()">
                <!-- 放置固定的图标 -->
                <i class="el-icon-plus"></i>
              </div>
            </div>
          </div>
          <div class="el-flexConfigDialog el-B-border">
            <div class="DFormWidth DAlign DHold">
              环境建立
            </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.environ.establishStaff" placeholder="人员"></el-input>
              </el-form-item>
              <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%">
                <el-date-picker
                  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.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.environ.virusDatabaseVersion" placeholder="请输入病毒库版本"></el-input>
              </el-form-item>
            </div>
        </div>
        <div class="el-flexConfigDialog el-B-border">
          <div class="DFormWidth DAlign DHold">
            环境建立
          </div>
          <div class="el-flexConfigDialog">
            <div class="DFormWidth DAlign DHold">
              环境确认
            </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.environ.confirmatStaff" placeholder="人员"></el-input>
              </el-form-item>
              <!-- 联系人 -->
              <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%">
                <el-date-picker
                  v-model="dataForm.environ.confirmatDate"
                  type="date"
                  placeholder="日期">
                </el-date-picker>
              </el-form-item>
            </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.environ.establishStaff" placeholder="人员"></el-input>
            </el-form-item>
            <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%">
              <el-date-picker
                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.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.environ.virusDatabaseVersion" placeholder="请输入病毒库版本"></el-input>
            </el-form-item>
          </div>
        </div>
      </el-form>
        <div class="el-flexConfigDialog">
          <div class="DFormWidth DAlign DHold">
            环境确认
          </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.environ.confirmatStaff" placeholder="人员"></el-input>
            </el-form-item>
            <!-- 联系人 -->
            <el-form-item class="marginTopAndMarginBottom" label="日期" style="width: 48%">
              <el-date-picker
                v-model="dataForm.environ.confirmatDate"
                type="date"
                placeholder="日期">
              </el-date-picker>
            </el-form-item>
          </div>
        </div>
      </div>
    </el-form>
  </zt-dialog>
</template>
@@ -216,13 +220,13 @@
      return {
        dataForm: {
          id: '',
          url:'',
          environ:{
          url: '',
          environ: {
            code: '1',
            hardSoftwareRes: '',
            testEnvirontDiagram: '',
            establishStaff:'',
            establishDate:'',
            establishStaff: '',
            establishDate: '',
            environAnalysis: '',
            environEstablish: '',
            environConfirmat: '',
@@ -236,22 +240,23 @@
            softwareName: '',
          },
          testAgencyInfo: {
            agencyName:'',
            site:'',
            agencyName: '',
            site: '',
          },
          softwareResourcesList:[],
          hardwareResourcesList:[],
          environAnalysisList:[]
          softwareResourcesList: [],
          hardwareResourcesList: [],
          environAnalysisList: []
        }
      }
    },
    methods: {
      init(id,row){
      init(id, row) {
        this.dataForm.id = row.id
        this.dataForm.projectId = row.projectId
        // this.dataForm.disabled
        this.getInfo()
        console.log(this.dataForm.id,this.dataForm.projectId,'params params')
        this.getImageUrl()
        console.log(this.dataForm.id, this.dataForm.projectId, 'params params')
      },
      // 获取信息
      async getInfo() {
@@ -259,40 +264,58 @@
          environId: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/project/Environ/getDto`,{params: params})
        let res = await this.$http.get(`/project/Environ/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
        console.log(this.dataForm,'this.dataForm')
        console.log(this.dataForm, 'this.dataForm')
      },
      indexFormat(index){
      indexFormat(index) {
        return index += 1
      },
      addSoftwareRow(){
      addSoftwareRow() {
        this.dataForm.softwareResourcesList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableSoftwareList.$el.querySelector('.el-table__body-wrapper')
        this.$nextTick(() => {
          const tableBody = this.$refs.tableSoftwareList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight
        })
      },
      addHardwareRow(){
      addHardwareRow() {
        this.dataForm.hardwareResourcesList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableHardwareList.$el.querySelector('.el-table__body-wrapper')
        this.$nextTick(() => {
          const tableBody = this.$refs.tableHardwareList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
      addDiscrepancyRow(){
      addDiscrepancyRow() {
        this.dataForm.environAnalysisList.push({})
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableEnvironeList.$el.querySelector('.el-table__body-wrapper')
        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')
      getImageUrl() {
        let pictureId = this.getFirstImageId(this.dataForm.files, 'test_environt_diagram')
        this.dataForm.url = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${pictureId}`
        console.log(this.dataForm.url, ' this.dataForm.url')
      },
      getFirstImageId(oss) {
        console.log(oss, ' getFirstImageId(oss)')
        let fileId = 0
        if (oss != null) {
          if (oss.groups.length > 0) {
            let group = oss.groups[0]
            if (group.fields.length > 0) {
              let field = group.fields[0]
              if (field.files.length > 0) {
                let file = field.files[0]
                fileId = file.id
              }
            }
          }
        }
        return fileId
      },
      // 表单提交
      async formSubmit() {
@@ -307,72 +330,84 @@
  }
</script>
<style>
.confirmFormAuto {
  width: 70%;
  margin: 0 auto;
}
.confirmDAuto{
  border: 1px solid rgba(0,0,0,.2);
}
  .confirmFormAuto {
    width: 70%;
    margin: 0 auto;
  }
.el-flexConfigDialog {
  display: flex;
  align-items: center;
}
  .confirmDAuto {
    border: 1px solid rgba(0, 0, 0, .2);
  }
.DFormWidth {
  width: 120px;
}
.DConfirmForm {
  /*border-left: 1px solid;*/
  width: 100%;
}
  .el-flexConfigDialog {
    display: flex;
    align-items: center;
  }
.DConfirmForm > .el-form-item > .el-form-item__content {
  width: calc(100% - 130px);
}
.DConfirmForm > .el-form-item.isKill > .el-form-item__content {
  width: calc(100% - 180px);
}
.el-form-border{
  border-top: 1px solid rgba(0,0,0,.2);
  border-bottom: 1px solid rgba(0,0,0,.2);
}
.el-B-border{
  border-bottom: 1px solid rgba(0,0,0,.2);
}
.el-margin-top-bot{
  margin-top:5px;
  margin-bottom:5px;
}
.el-wt-border-left{
  border-left:1px solid rgba(0,0,0,.2);
}
.zt .el-table.el-software th {
  background: transparent;
}
  .DFormWidth {
    width: 120px;
  }
.zt .el-table.el-software th > .cell {
  font-weight: 500;
}
.DHold{
  font-weight: 600;
}
.zt .el-table.el-software{
  font-size: 14px;
}
.confirmFormAuto .marginTopAndMarginBottom {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}
  .DConfirmForm {
    /*border-left: 1px solid;*/
    width: 100%;
  }
.confirmFormAuto .marginTopAndMarginBottom2 {
  margin-top: -10px !important;
  margin-bottom: 10px !important;
}
.confirmFormAuto .marginTopAndMarginBottom3 {
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
  .DConfirmForm > .el-form-item > .el-form-item__content {
    width: calc(100% - 130px);
  }
  .DConfirmForm > .el-form-item.isKill > .el-form-item__content {
    width: calc(100% - 180px);
  }
  .el-form-border {
    border-top: 1px solid rgba(0, 0, 0, .2);
    border-bottom: 1px solid rgba(0, 0, 0, .2);
  }
  .el-B-border {
    border-bottom: 1px solid rgba(0, 0, 0, .2);
  }
  .el-margin-top-bot {
    margin-top: 5px;
    margin-bottom: 5px;
  }
  .el-wt-border-left {
    border-left: 1px solid rgba(0, 0, 0, .2);
  }
  .zt .el-table.el-software th {
    background: transparent;
  }
  .zt .el-table.el-software th > .cell {
    font-weight: 500;
  }
  .DHold {
    font-weight: 600;
  }
  .zt .el-table.el-software {
    font-size: 14px;
  }
  .confirmFormAuto .marginTopAndMarginBottom {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
  }
  .confirmFormAuto .marginTopAndMarginBottom2 {
    margin-top: -10px !important;
    margin-bottom: 10px !important;
  }
  .confirmFormAuto .marginTopAndMarginBottom3 {
    margin-top: 0 !important;
    margin-bottom: 10px !important;
  }
</style>