jinlin
2024-01-02 a38a1ac77bb6ac9ea8bf0cf5f5f6b68d0e6e6974
web/src/views/modules/configAuditReport/ConfigAuditReport-AddOrUpdate.vue
@@ -1,58 +1,207 @@
<template>
  <zt-dialog ref="dialog"  @confirm="formSubmit">
    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
      <zt-form-item label="项目ID" prop="projectId" rules="required">
                        <el-input v-model="dataForm.projectId"></el-input>
                </zt-form-item>
      <zt-form-item label="编号" prop="code" rules="required">
                        <el-input v-model="dataForm.code"></el-input>
                </zt-form-item>
      <zt-form-item label="审核人" prop="auditor" rules="required">
                        <el-input v-model="dataForm.auditor"></el-input>
                </zt-form-item>
      <zt-form-item label="审核人ID" prop="auditorId" rules="required">
                        <el-input v-model="dataForm.auditorId"></el-input>
                </zt-form-item>
      <zt-form-item label="审核时间" prop="auditorDate" rules="required">
                        <el-input v-model="dataForm.auditorDate"></el-input>
                </zt-form-item>
      <zt-form-item label="年份" prop="year" rules="required">
                        <el-input v-model="dataForm.year"></el-input>
                </zt-form-item>
    <el-form :model="dataForm" :inline="true" ref="dataForm" style="padding-top: 0" :disabled="dataForm.disabled"
             label-width="120px" class="configAuditFormAuto">
      <div>
        <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px">
          <span>{{dataForm.auditReport.code || '编号自动生成'}}</span>
        </el-form-item>
      </div>
      <div style="border: 1px solid rgba(0,0,0,.2);width: 99%">
        <div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="configAuditContentWidth">
          <el-form-item class="marginTopAndMarginBottom" label="项目名称" style="width: 48%">
            <el-input v-model="dataForm.project.softwareName" placeholder="项目名称"></el-input>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom" label="项目标识" style="width: 48%">
            <el-input v-model="dataForm.project.softwareIdentity" placeholder="项目标识"></el-input>
          </el-form-item>
        </div>
        <div style="border-bottom: 1px solid rgba(0,0,0,.2);">
          <div>
            <div style="text-align: center;font-weight: 600;border-bottom:1px solid rgba(0,0,0,.2);height: 40px;line-height: 40px;font-size: 18px">审核内容</div>
            <el-form-item label="状态标记" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
              √合格         ×不合格       NA不适用
            </el-form-item>
            <div class="table-container">
              <el-table ref="tableConfigAuditList" class="el-software el-margin-top-bot" border
                        :data="dataForm.contentList"
                        stripe>
                <el-table-column prop="no" align="center" width="60" label="序号">
                  <template slot-scope="scope">
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
                </el-table-column>
                <el-table-column prop="auditContent" min-width="180" label="审核内容">
                  <template v-slot="{ row }">
                    <el-input v-model="row.auditContent" placeholder="审核内容"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="auditResult" align="center" width="150" label="审核结果">
                  <template v-slot="{ row }">
                    <zt-dict v-model="row.auditResult" placeholder="审核结果" dict="status_tag"
                             clearable></zt-dict>
                  </template>
                </el-table-column>
                <el-table-column prop="remark" label="备注" width="100" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.remark" placeholder="备注"></el-input>
                  </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
          <div>
            <div style="text-align: center;font-weight: 600;height: 40px;line-height: 40px;font-size: 18px">发现的问题</div>
            <div class="table-container">
              <el-table ref="tableConfigAuditList" class="el-software el-margin-top-bot" border
                        :data="dataForm.problemList"
                        stripe>
                <el-table-column prop="no" align="center" width="60" label="序号">
                  <template slot-scope="scope">
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
                </el-table-column>
                <el-table-column prop="problemDescription" min-width="180" label="问题描述">
                  <template v-slot="{ row }">
                    <el-input v-model="row.problemDescription" placeholder="问题描述"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="isNotTrue" align="center" width="150" label="是否为不符合项">
                  <template v-slot="{ row }">
                    <zt-dict v-model="row.isNotTrue" placeholder="是否为不符合项" dict="is_or_not" :radio="true"
                             clearable></zt-dict>
                  </template>
                </el-table-column>
                <el-table-column prop="problemRectification" label="问题整改情况" width="100" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.problemRectification" placeholder="问题整改情况"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="discoveryPhase" label="发现阶段" width="100" align="center">
                  <template v-slot="{ row }">
                    <el-input v-model="row.discoveryPhase" placeholder="发现阶段"></el-input>
                  </template>
                </el-table-column>
              </el-table>
              <div class="icon-container" @click="addConfigAuditRow()">
                <!-- 放置固定的图标 -->
                <i class="el-icon-plus"></i>
              </div>
            </div>
          </div>
        </div>
        <div class="el-flexConfigAuditDialog">
          <div style="width: 112px;text-align: center;font-weight: 600">
            审核人员:
          </div>
          <div class="el-border-left-right" style="width: 20%;height: 40px;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-input type="textarea" :rows="1" placeholder="请输入审核人员"
                        v-model="dataForm.auditReport.auditor"></el-input>
              <!--{{dataForm.configAuditReport.auditor}}-->
            </el-form-item>
          </div>
          <div style="width: 52px;text-align: center;font-weight: 600">
            日 期
          </div>
          <div class="el-border-left" style="width: 20%;height: 40px;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-date-picker
                v-model="dataForm.auditReport.auditorDate"
                type="date"
                placeholder="请选择日期">
              </el-date-picker>
              <!--{{ dataForm.configAuditReport.auditorDate | filterTime('YYYY年MM月DD日') }}-->
            </el-form-item>
          </div>
        </div>
      </div>
      <div class="el-flex report-sc" style="height: 60px">
        <el-form-item class="marginTopAndMarginBottom" style="width: 100%">
          <config-uploader :lineHeight="true" busi-type="config_audit_report" model-name="dataForm" :dataForm="dataForm"
                           v-model="dataForm.files"/>
        </el-form-item>
      </div>
    </el-form>
    <template v-slot:footer>
      <el-button v-if="dataForm.disabled" type="primary" @click="print()">打印</el-button>
    </template>
  </zt-dialog>
</template>
<script>
  import qs from "qs";
  import Cookies from "js-cookie";
  export default {
    data() {
      return {
        dataForm: {
          id: '',
          configAuditReport:{
          auditReport:{
            code: '',
            auditor: '',
            auditorId: '',
            auditorDate: '',
          },
          project: {
            softwareIdentity: '',
            softwareName: ''
          }
          },
          problemList:[],
          contentList:[]
        }
      }
    },
    methods: {
      indexFormat(index) {
        return index += 1
      },
      init(id, row) {
        if (id) {
          this.dataForm.id = id
        } else {
          this.dataForm.id = row.id
        }
        if (row.projectId) {
          this.dataForm.projectId = row.projectId
        }
        this.getInfo()
        console.log(this.dataForm.id, this.dataForm.projectId, 'params params')
      },
      // 获取信息
      async getInfo() {
        let res = await this.$http.get(`/configAuditReport/ConfigAuditReport/${this.dataForm.id}`)
        let params = {
          reportId: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/configAuditReport/ConfigAuditReport/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
        if(this.dataForm.configAuditReport === null){
          this.dataForm.contractReview={}
        }
        console.log(this.dataForm, "getInfo this.dataForm")
      },
      addConfigAuditRow() {
        this.dataForm.problemList.push({})
        this.$nextTick(() => {
          const tableBody = this.$refs.tableConfigAuditList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
      async print(){
        var params = qs.stringify({
          token: Cookies.get('token'),
          id:this.dataForm.id
        })
        let apiURL = `/configAuditReport/ConfigAuditReport/exportConfigAudit`
        window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
      },
      // 表单提交
      async formSubmit() {
        console.log(this.dataForm,"formSubmit")
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/configAuditReport/ConfigAuditReport/', this.dataForm)
        if (res.success) {
          await this.$tip.success()
@@ -63,3 +212,37 @@
    }
  }
</script>
<style>
.el-flexConfigAuditDialog{
  display: flex;
  align-items: center
}
.configAuditContentWidth > .el-form-item > .el-form-item__content {
  width: calc(100% - 120px);
}
.configAuditFormAuto .marginTopAndMarginBottom {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
.configAuditFormAuto .marginTopAndMarginBottom2 {
  margin-top: -10px !important;
  margin-bottom: 10px !important;
}
.configAuditFormAuto .marginTopAndMarginBottom3 {
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
.acceptDate > .el-form-item > .el-form-item__content {
  line-height: 80px;
}
.configAuditFormAuto .el-radio {
  margin-right: 10px;
}
.report-sc > .el-form-item > .el-form-item__content {
  width:100%;
}
</style>