wente
2024-01-12 ac1cf9f57ed1ef031ddd57fa8c6a9fee3f18e158
web/src/views/modules/project/Project-AddOrUpdate.vue
@@ -1,120 +1,142 @@
<template>
  <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
<!--    <div class="fa-card-a fa-box-a" style="height: calc(100vh - 130px)">-->
      <el-form ref="dataForm" style="padding: 0" :inline="true" :disabled="dataForm.disabled" :model="dataForm" label-width="120px"
               class="projectAuto">
        <div class="DManageForm">
          <el-form-item label-width="80px" label="项目编号" prop="code" style="width: 99%;margin-bottom:-5px" readonly>
            <span>{{dataForm.code}}</span>
          </el-form-item>
        </div>
        <div style="border: 1px solid rgba(0,0,0,.2)">
          <div class="el-flex el-border-bottom">
            <div class="DWidth DAlign DHold">
              委托单位
            </div>
            <div class="DSTOld-1-Form">
              <!-- 单位名称 -->
              <zt-form-item class="marginTopAndMarginBottom" label="单位名称" prop="entrustUnitName" style="width: 49%" rules="required">
                <el-input v-model="dataForm.entrustUnitName" placeholder="请输入单位名称"></el-input>
              </zt-form-item>
              <!-- 联系人 -->
              <zt-form-item class="marginTopAndMarginBottom" label="联系人" prop="entrustUnitContact" style="width: 49%" rules="required">
                <el-input v-model="dataForm.entrustUnitContact" placeholder="请输入联系人"></el-input>
              </zt-form-item>
    <!--    <div class="fa-card-a fa-box-a" style="height: calc(100vh - 130px)">-->
    <el-form ref="dataForm" style="padding: 0" :inline="true" :disabled="dataForm.disabled" :model="dataForm"
             label-width="120px"
             class="projectAuto">
      <div class="DManageForm">
        <el-form-item label-width="80px" label="项目编号" prop="code" style="width: 99%;margin-bottom:-5px" readonly>
          <span>{{dataForm.code}}</span>
        </el-form-item>
      </div>
      <div style="border: 1px solid rgba(0,0,0,.2)">
        <div class="el-flex el-border-bottom">
          <div class="DWidth DAlign DHold">
            委托单位
          </div>
          <div class="DSTOld-1-Form">
            <!-- 单位名称 -->
            <zt-form-item class="marginTopAndMarginBottom" label="单位名称" prop="entrustUnitName" style="width: 49%"
                          rules="required">
              <el-input v-model="dataForm.entrustUnitName" placeholder="请输入单位名称"></el-input>
            </zt-form-item>
            <!-- 联系人 -->
            <zt-form-item class="marginTopAndMarginBottom" label="联系人" prop="entrustUnitContact" style="width: 49%"
                          rules="required">
              <el-input v-model="dataForm.entrustUnitContact" placeholder="请输入联系人"></el-input>
            </zt-form-item>
              <!-- 详细地址 -->
              <zt-form-item label="详细地址" prop="entrustUnitAddress" style="width: 49%" rules="required">
                <el-input v-model="dataForm.entrustUnitAddress" placeholder="请输入详细地址"></el-input>
              </zt-form-item>
              <!-- 联系方式 -->
              <zt-form-item label="联系方式" prop="entrustUnitContWay" style="width: 49%" rules="required">
                <el-input v-model="dataForm.entrustUnitContWay" placeholder="请输入联系方式"></el-input>
              </zt-form-item>
            </div>
            <!-- 详细地址 -->
            <zt-form-item label="详细地址" prop="entrustUnitAddress" style="width: 49%" rules="required">
              <el-input v-model="dataForm.entrustUnitAddress" placeholder="请输入详细地址"></el-input>
            </zt-form-item>
            <!-- 联系方式 -->
            <zt-form-item label="联系方式" prop="entrustUnitContWay" style="width: 49%" rules="required">
              <el-input v-model="dataForm.entrustUnitContWay" placeholder="请输入联系方式"></el-input>
            </zt-form-item>
          </div>
          <div class="el-flex el-border-bottom">
            <div class="DWidth DAlign DHold">
              开发单位
            </div>
            <div class="DSTOld-1-Form">
              <!-- 单位名称 -->
              <zt-form-item class="marginTopAndMarginBottom" label="单位名称" prop="developUnitName" style="width: 49%" rules="required">
                <el-input v-model="dataForm.developUnitName" placeholder="请输入单位名称"></el-input>
              </zt-form-item>
              <!-- 联系人 -->
              <zt-form-item class="marginTopAndMarginBottom" label="联系人" prop="developUnitContact" style="width: 49%" rules="required">
                <el-input v-model="dataForm.developUnitContact" placeholder="请输入联系人"></el-input>
              </zt-form-item>
              <!-- 详细地址 -->
              <zt-form-item label="详细地址" prop="developUnitAddress" style="width: 49%" rules="required">
                <el-input v-model="dataForm.developUnitAddress" placeholder="请输入详细地址"></el-input>
              </zt-form-item>
              <!-- 联系方式 -->
              <zt-form-item label="联系方式" prop="developUnitContWay" style="width: 49%" rules="required">
                <el-input v-model="dataForm.developUnitContWay" placeholder="请输入联系方式"></el-input>
              </zt-form-item>
            </div>
        </div>
        <div class="el-flex el-border-bottom">
          <div class="DWidth DAlign DHold">
            开发单位
          </div>
          <div class="el-flex el-border-bottom">
            <div class="DWidth-Unt DAlign DHold">
              被测件信息
            </div>
            <div class="DSTOld-1-Form">
              <!-- 单位名称 -->
              <zt-form-item class="marginTopAndMarginBottom" label="软件名称" prop="softwareName" style="width: 49%" rules="required">
                <el-input v-model="dataForm.softwareName" placeholder="请输入软件名称"></el-input>
              </zt-form-item>
              <!-- 联系人 -->
              <zt-form-item class="marginTopAndMarginBottom" label="软件标识" prop="softwareIdentity" style="width: 49%" rules="required">
                <el-input v-model="dataForm.softwareIdentity" placeholder="请输入软件标识"></el-input>
              </zt-form-item>
              <!-- 详细地址 -->
              <zt-form-item label="密级" prop="secretClass" style="width: 49%" rules="required">
                <zt-dict v-model="dataForm.secretClass" dict="secret_class"></zt-dict>
              </zt-form-item>
              <!--          <zt-form-item label="保密级别" prop="secretClass"  style="width: 25%">-->
              <!--            <zt-dict v-model="dataForm.secretClass" dict="secret_class" placeholder="保密级别" style="width:200px"></zt-dict>-->
              <!--          </zt-form-item>-->
              <!-- 联系方式 -->
              <zt-form-item label="关键等级" prop="criticalLevel" style="width: 49%" rules="required">
                <zt-dict v-model="dataForm.criticalLevel" dict="critical_level"></zt-dict>
              </zt-form-item>
              <div class="el-flex" style="height: 40px;border-top:1px solid rgba(0,0,0,.2)">
                <div class="DWidth DAlign DHold">
                  软件类型
                </div>
                <div style="width: calc(100% - 120px);">
                  <zt-dict v-model="dataForm.softwareType" :radio="true"  dict="software_type" clearable></zt-dict>
                </div>
          <div class="DSTOld-1-Form">
            <!-- 单位名称 -->
            <zt-form-item class="marginTopAndMarginBottom" label="单位名称" prop="developUnitName" style="width: 49%"
                          rules="required">
              <el-input v-model="dataForm.developUnitName" placeholder="请输入单位名称"></el-input>
            </zt-form-item>
            <!-- 联系人 -->
            <zt-form-item class="marginTopAndMarginBottom" label="联系人" prop="developUnitContact" style="width: 49%"
                          rules="required">
              <el-input v-model="dataForm.developUnitContact" placeholder="请输入联系人"></el-input>
            </zt-form-item>
            <!-- 详细地址 -->
            <zt-form-item label="详细地址" prop="developUnitAddress" style="width: 49%" rules="required">
              <el-input v-model="dataForm.developUnitAddress" placeholder="请输入详细地址"></el-input>
            </zt-form-item>
            <!-- 联系方式 -->
            <zt-form-item label="联系方式" prop="developUnitContWay" style="width: 49%" rules="required">
              <el-input v-model="dataForm.developUnitContWay" placeholder="请输入联系方式"></el-input>
            </zt-form-item>
          </div>
        </div>
        <div class="el-flex el-border-bottom">
          <div class="DWidth-Unt DAlign DHold">
            被测件信息
          </div>
          <div class="DSTOld-1-Form">
            <!-- 单位名称 -->
            <zt-form-item class="marginTopAndMarginBottom" label="软件名称" prop="softwareName" style="width: 49%"
                          rules="required">
              <el-input v-model="dataForm.softwareName" placeholder="请输入软件名称"></el-input>
            </zt-form-item>
            <!-- 联系人 -->
            <zt-form-item class="marginTopAndMarginBottom" label="软件标识" prop="softwareIdentity" style="width: 49%"
                          rules="required">
              <el-input v-model="dataForm.softwareIdentity" placeholder="请输入软件标识"></el-input>
            </zt-form-item>
            <!-- 详细地址 -->
            <zt-form-item label="密级" prop="secretClass" style="width: 49%" rules="required">
              <zt-dict v-model="dataForm.secretClass" dict="secret_class"></zt-dict>
            </zt-form-item>
            <!--          <zt-form-item label="保密级别" prop="secretClass"  style="width: 25%">-->
            <!--            <zt-dict v-model="dataForm.secretClass" dict="secret_class" placeholder="保密级别" style="width:200px"></zt-dict>-->
            <!--          </zt-form-item>-->
            <!-- 联系方式 -->
            <zt-form-item label="关键等级" prop="criticalLevel" style="width: 49%" rules="required">
              <zt-dict v-model="dataForm.criticalLevel" dict="critical_level"></zt-dict>
            </zt-form-item>
            <div class="el-flex" style="height: 40px;border-top:1px solid rgba(0,0,0,.2)">
              <div class="DWidth DAlign DHold">
                软件类型
              </div>
              <div style="width: calc(100% - 120px);">
                <zt-dict v-model="dataForm.softwareType" :radio="true" dict="software_type" clearable></zt-dict>
              </div>
            </div>
          </div>
          <div class="el-flex ">
            <div class="DWidth DAlign DHold">
              项目责任人
            </div>
            <div class="DSTOld-1-Form">
              <!-- 单位名称 -->
              <zt-form-item class="marginTopAndMarginBottom" label-width="120px" label="项目负责人" prop="projectLeader" style="width: 48%" rules="required">
                <el-input v-model="dataForm.projectLeader" placeholder="请输入单位名称"></el-input>
              </zt-form-item>
              <!-- 联系人 -->
              <zt-form-item class="marginTopAndMarginBottom" label-width="120px" label="项目测试人员" prop="projectTesters" style="width: 48%" rules="required">
                <el-input v-model="dataForm.projectTesters" placeholder="请输入联系人"></el-input>
              </zt-form-item>
              <!-- 详细地址 -->
              <zt-form-item label-width="120px" label="项目审核人" prop="projectReviewer" style="width: 48%" rules="required">
                <el-input v-model="dataForm.projectReviewer" placeholder="请输入详细地址"></el-input>
              </zt-form-item>
              <!-- 联系方式 -->
              <zt-form-item label-width="120px" label="是否签署合同" prop="isContract" style="width: 48%" rules="required">
                <zt-dict v-model="dataForm.isContract" dict="is_or_not"></zt-dict>
              </zt-form-item>
            </div>
        </div>
        <div class="el-flex ">
          <div class="DWidth DAlign DHold">
            项目责任人
          </div>
          <div class="DSTOld-1-Form">
            <zt-form-item class="marginTopAndMarginBottom" label-width="120px" label="所属部门" prop="bizDeptId"
                          style="width: 48%">
              <zt-select v-model="dataForm.bizDeptId" :datas="bizDeptList" onchange="getUserList()" placeholder="所属部门"/>
            </zt-form-item>
            <!-- 是否签署合同 -->
            <zt-form-item label-width="120px" label="是否签署合同" prop="isContract" style="width: 48%">
              <zt-dict v-model="dataForm.isContract" dict="is_or_not"></zt-dict>
            </zt-form-item>
            <!-- 项目负责人 -->
            <zt-form-item class="marginTopAndMarginBottom" label-width="120px" label="项目负责人" prop="projectLeader"
                          style="width: 48%">
              <zt-select v-model="dataForm.projectLeader" :datas="projectLeaderList" placeholder="项目负责人"/>
            </zt-form-item>
            <!-- 项目测试人员 -->
            <zt-form-item class="marginTopAndMarginBottom" label-width="120px" label="项目测试人员" prop="projectTesters"
                          style="width: 48%">
              <!--                <el-input v-model="dataForm.projectTesters" placeholder="请输入项目测试人员"></el-input>-->
              <zt-select v-model="dataForm.projectTesters" :datas="projectTestersList" :multiple="true"
                         :clearable="true" placeholder="项目测试人员"/>
            </zt-form-item>
            <!-- 项目审核人 -->
            <zt-form-item label-width="120px" label="项目审核人" prop="projectReviewer" style="width: 48%">
              <!--                <el-input v-model="dataForm.projectReviewer" placeholder="请输入项目审核人"></el-input>-->
              <zt-select v-model="dataForm.projectReviewer" :datas="projectReviewerList" :multiple="true"
                         :clearable="true" placeholder="项目审核人"/>
            </zt-form-item>
            <zt-form-item label-width="120px" label="项目配置人" prop="projectConfiger" style="width: 48%">
              <!--                <el-input v-model="dataForm.projectReviewer" placeholder="请输入项目审核人"></el-input>-->
              <zt-select v-model="dataForm.projectConfiger" :datas="projectConfigerList" :multiple="true"
                         :clearable="true" placeholder="项目配置人"/>
            </zt-form-item>
          </div>
        </div>
      </el-form>
      </div>
    </el-form>
  </zt-dialog>
</template>
@@ -142,106 +164,184 @@
          projectLeader: '',
          projectTesters: '',
          projectReviewer: '',
          projectConfiger: '',
          bizDeptId: '',
          isContract: '',
        }
          usersecretClass: ''
        },
        projectLeaderList: [],
        projectTestersList: [],
        projectReviewerList: [],
        projectConfigerList: [],
        bizDeptList: [],
        bizDeptIdList: [],
      }
    },
    watch: {
      /*      bizDeptId(val, oldval) {
              alert(1)
              this.getUserList()
            },*/
    },
    methods: {
      init() {
        this.getInfo()
        this.getbizDept()
      },
      // 获取信息
      async getInfo() {
        let res = await this.$http.get(`/project/Project//${this.dataForm.id}`)
        console.log(this.dataForm.id, "async getInfo()")
        if (this.dataForm.id == undefined) {
          return
        }
        let res = await this.$http.get(`/project/Project/${this.dataForm.id}`)
        if (res.success) {
          this.dataForm = {
            ...this.dataForm,
            ...res.data
          }
          await this.getUserList()
        }
        console.log(this.dataForm,'this.dataForm')
      },
      async getUserList() {
        let res = await this.$http.get(`/project/Project/getUsersLists?deptId=${this.dataForm.bizDeptId}`)
        if (res.success) {
          this.projectLeaderList = res.data.zrr
          this.projectTestersList = res.data.csry
          this.projectReviewerList = res.data.shry
          this.projectConfigerList = res.data.pzry
        }
        console.log(this.dataForm, 'this.dataForm')
      },
      async getbizDept() {
        let res = await this.$http.get(`/sys/dept/getList`)
        if (res.success) {
          this.bizDeptList = res.data;
        }
        console.log(this.bizDeptList, "getbizDept")
      },
      // 表单提交
      async formSubmit() {
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project/Project//', this.dataForm)
        if (this.dataForm.secretClass>this.dataForm.usersecretClass){
          this.$alert("当前项目设置的密级高于当前用户的密级,请重新设置")
          return
        }
        if (this.dataForm && this.dataForm.projectTesters instanceof Array) {
          this.dataForm.projectTesters = this.dataForm.projectTesters.join(',')
          console.log(this.dataForm.projectTesters)
        }
        if (this.dataForm && this.dataForm.projectReviewer instanceof Array) {
          this.dataForm.projectReviewer = this.dataForm.projectReviewer.join(',')
          console.log(this.dataForm.projectReviewer)
        }
        if (this.dataForm && this.dataForm.projectConfiger instanceof Array) {
          this.dataForm.projectConfiger = this.dataForm.projectConfiger.join(',')
          console.log(this.dataForm.projectConfiger)
        }
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project/Project/', this.dataForm)
        if (res.success) {
          await this.$tip.success()
          this.$refs.dialog.close()
          this.$emit('refreshDataList')
        } else {
          if (this.dataForm && this.dataForm.projectTesters instanceof Array) {
            this.dataForm.projectTesters = this.dataForm.projectTesters.split(',')
            console.log(this.dataForm.projectTesters)
          }
          if (this.dataForm && this.dataForm.projectReviewer instanceof Array) {
            this.dataForm.projectReviewer = this.dataForm.projectReviewer.split(',')
            console.log(this.dataForm.projectReviewer)
          }
          if (this.dataForm && this.dataForm.projectConfiger instanceof Array) {
            this.dataForm.projectConfiger = this.dataForm.projectConfiger.split(',')
            console.log(this.dataForm.projectConfiger)
          }
        }
      }
    }
  }
</script>
<style>
.projectAuto {
  width: 70%;
}
  .projectAuto {
    width: 70%;
  }
.el-flex {
  display: flex;
  align-items: center;
}
  .el-flex {
    display: flex;
    align-items: center;
  }
.DWidth {
  width: 100px;
}
  .DWidth {
    width: 100px;
  }
.DWidth-Unt {
  width: 100px;
}
  .DWidth-Unt {
    width: 100px;
  }
.DAlign {
  text-align: center;
}
  .DAlign {
    text-align: center;
  }
.DSTOld-1-Form,
.DSTOld-1-Form{
  border-left: 1px solid rgba(0,0,0,.2);
  width: 100%;
}
.el-border-left{
  border-left: 1px solid rgba(0,0,0,.2);
}
.DOldForm {
  width: 100%;
}
.el-border-top-and-bottom{
  border-top: 1px solid rgba(0,0,0,.2);
  border-bottom: 1px solid rgba(0,0,0,.2);
}
.DSTOld-1-Form {
  border-left: 1px solid rgba(0,0,0,.2);
  width: 100%;
}
  .DSTOld-1-Form,
  .DSTOld-1-Form {
    border-left: 1px solid rgba(0, 0, 0, .2);
    width: 100%;
  }
.DSTOld-1-Form > .el-form-item>.el-form-item__content {
  width: calc(100% - 120px);
}
.DManageForm > .el-form-item>.el-form-item__content {
  width: calc(100% - 120px);
}
.el-border-bottom {
  border-bottom: 1px solid rgba(0,0,0,.2);
}
  .el-border-left {
    border-left: 1px solid rgba(0, 0, 0, .2);
  }
.zt .el-table.el-software th {
  background: transparent;
}
  .DOldForm {
    width: 100%;
  }
.zt .el-table.el-software th > .cell {
  font-weight: 500;
}
.DHold{
  font-weight: 600;
}
.zt .el-table.el-software{
  font-size: 14px;
}
.projectAuto .marginTopAndMarginBottom {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}
  .el-border-top-and-bottom {
    border-top: 1px solid rgba(0, 0, 0, .2);
    border-bottom: 1px solid rgba(0, 0, 0, .2);
  }
.projectAuto .marginTopAndMarginBottom2 {
  margin-top: -10px !important;
  margin-bottom: 10px !important;
}
  .DSTOld-1-Form {
    border-left: 1px solid rgba(0, 0, 0, .2);
    width: 100%;
  }
  .DSTOld-1-Form > .el-form-item > .el-form-item__content {
    width: calc(100% - 120px);
  }
  .DManageForm > .el-form-item > .el-form-item__content {
    width: calc(100% - 120px);
  }
  .el-border-bottom {
    border-bottom: 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;
  }
  .projectAuto .marginTopAndMarginBottom {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
  }
  .projectAuto .marginTopAndMarginBottom2 {
    margin-top: -10px !important;
    margin-bottom: 10px !important;
  }
</style>