jinlin
2024-02-01 2df883fcbed176f83d8d144fd007e7f72fcb54d6
web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue
@@ -1,26 +1,28 @@
<template>
  <zt-dialog ref="dialog" column="3" :title="title" :stepMarker="stepMarker" @confirm="formSubmit">
    <el-form ref="dataForm" style="padding-top: 0" :inline="true" :disabled="dataForm.disabled" :model="dataForm"
             label-width="120px" class="warehouseFormAuto">
             label-width="120px" class="contractFormAuto">
      <div>
        <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px">
          <span>{{dataForm.contractReview.code || '编号自动生成'}}</span>
          <span>{{ dataForm.contractReview.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="warehouseContentWidth">
        <div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="contractContentWidth">
          <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.labContactNum" placeholder="请输入联系电话"></el-input>
          </el-form-item>
          <zt-dict v-model="dataForm.contractReview.reviewType" :radio="true" dict="review_type"></zt-dict>
          <el-form-item label-width="60px" label="原委托单编号:" style="width:100%;margin-bottom: -5px">
            <span>{{dataForm.contractReview.orderCode}}</span>
          <el-form-item class="marginTopAndMarginBottom reviewLeft" style="width: 49%">
            <zt-dict v-model="dataForm.contractReview.reviewType" :radio="true" dict="review_type"></zt-dict>
          </el-form-item>
          <el-form-item label-width="160px" class="lastChild" label="原委托单编号:" style="width: 49%">
            <span>{{ dataForm.contractReview.orderCode }}</span>
          </el-form-item>
        </div>
        <div class="el-flexManageDialog el-border-bottom">
        <div class="el-flexContractDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            评审项目
          </div>
@@ -34,171 +36,275 @@
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
                </el-table-column>
                <el-table-column prop="item" width="200" label="配置项名称">
                <el-table-column prop="item" min-width="400" label="评审项">
                  <template v-slot="{ row }">
                    <el-input v-model="row.item" placeholder="评审项"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="result" label="密级" width="100" align="center">
                <el-table-column prop="result"  width="220" align="center" label="评审结果">
                  <template v-slot="{ row }">
                    <zt-dict v-model="row.result" placeholder="评审结果" dict="tristate1"></zt-dict>
                    <zt-dict v-model="row.result" placeholder="评审结果" dict="tristate1" :radio="true"
                             clearable></zt-dict>
                  </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
        </div>
      </div>
      <div class="el-flexManageDialog el-border-bottom">
        <div class="DFormWidth DAlign DHold">
          评审记录
        <div class="el-flexContractDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            评审记录
          </div>
          <div style="width: calc(100% - 120px)" class="el-border-left">
            <el-form-item class="el-CMTextarea" label-width="20px" style="width: 100%;padding: 5px">
              <el-input type="textarea" :rows="2" placeholder="请输入内容"
                        v-model="dataForm.contractReview.reviewRecord"></el-input>
            </el-form-item>
          </div>
        </div>
        <div style="width: calc(100% - 120px)" class="el-border-left">
          <el-form-item class="el-wt-form-item-margin" label-width="20px" style="width: 85%">
            <el-input type="textarea" :rows="2" placeholder="请输入内容"
                      v-model="dataForm.contractReview.reviewRecord"></el-input>
          </el-form-item>
        <div class="el-flexContractDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            客户的特殊要求
          </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.contractReview.specialRequire"></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexContractDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            分包
          </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.contractReview.subcontract"></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexContractDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            评审结论
          </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.contractReview.reviewConclusion"></el-input>
            </el-form-item>
            <el-form-item label="技术负责人:" style="width: 48%">
              <el-input placeholder="请输入技术负责人"
                        v-model="dataForm.contractReview.technicalDirector"></el-input>
            </el-form-item>
            <el-form-item label="日期:" style="width: 48%">
              <el-date-picker
                v-model="dataForm.contractReview.reviewDate"
                type="date"
                placeholder="请选择日期">
              </el-date-picker>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexContractDialog">
          <div class="DFormWidth DAlign DHold">
            评审组成员
          </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.contractReview.reviewPanelMember"></el-input>
            </el-form-item>
          </div>
        </div>
      </div>
      <div class="el-flexManageDialog el-border-bottom">
        <div class="DFormWidth DAlign DHold">
          客户的特殊要求
        </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.contractReview.specialRequire"></el-input>
          </el-form-item>
        </div>
      <div class="el-flex review-sc" style="height: 60px">
        <el-form-item class="marginTopAndMarginBottom" style="width: 100%">
          <config-uploader :lineHeight="true" busi-type="contract_review" model-name="dataForm" :dataForm="dataForm"
                           v-model="dataForm.files"/>
        </el-form-item>
      </div>
      <div class="el-flexManageDialog">
        <div class="DFormWidth DAlign DHold">
          分包
        </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.contractReview.subcontract"></el-input>
          </el-form-item>
        </div>
      </div>
      <div class="el-flexManageDialog">
        <div class="DFormWidth DAlign DHold">
          评审结论
        </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.contractReview.reviewConclusion"></el-input>
          </el-form-item>
          <el-form-item label="技术负责人:" style="width: 48%">
            <span>{{dataForm.contractReview.technicalDirector}}</span>
          </el-form-item>
          <el-form-item label="日期:" style="width: 48%">
            <span>{{dataForm.contractReview.reviewDate}}</span>
          </el-form-item>
        </div>
      </div>
      <div class="el-flexManageDialog">
        <div class="DFormWidth DAlign DHold">
          评审组成员
        </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.contractReview.reviewPanelMember"></el-input>
          </el-form-item>
        </div>
      </div>
      <add-or-update-check ref="addOrUpdate" @recall="setCheckId"/>
    </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";
import qs from "qs";
import Cookies from "js-cookie";
  export default {
    data() {
      return {
        dataForm: {
          id: '',
          contractReview: {
            code: '',
            orderCode: '',
            reviewType: '',
            reviewRecord: '',
            specialRequire: '',
            subcontract: '',
            reviewConclusion: '',
            technicalDirector: '',
            reviewDate: '',
            reviewPanelMember: '',
          },
          testAgencyInfo:{
            agencyName:'',
            labContactNum:''
          },
          reviewItemList:[]
        }
export default {
  data() {
    return {
      dataForm: {
        id: '',
        files:'',
        contractReview: {
          code: '',
          orderCode: '',
          reviewType: '',
          reviewRecord: '',
          specialRequire: '',
          subcontract: '',
          reviewConclusion: '',
          technicalDirector: '',
          reviewDate: '',
          reviewPanelMember: '',
        },
        testAgencyInfo: {
          agencyName: '',
          labContactNum: ''
        },
        reviewItemList: []
      }
    }
  },
  methods: {
    indexFormat(index) {
      return index += 1
    },
    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 params = {
          reviewId: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/contractReview/ContractReview/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
        console.log(this.dataForm, "getInfo this.dataForm")
      },
    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 params = {
        reviewId: this.dataForm.id,
        projectId: this.dataForm.projectId
      setCheckId(checkId, row) {
        console.log(checkId, row, "setCheckId(checkId, row)")
        this.$set(row, 'checkId', checkId)
      },
      /*async print(){
        var params = qs.stringify({
          token: Cookies.get('token'),
          id:this.dataForm.id
        })
        let apiURL = `/contractReview/ContractReview/exportWarehouseOrder`
        window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
      },*/
      // 表单提交
      async formSubmit(submitType) {
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/contractReview/ContractReview/', this.dataForm)
        if (res.success) {
          await this.$tip.success()
          this.$refs.dialog.close()
          this.$emit('refreshDataList')
        }
      }
      let res = await this.$http.get(`/contractReview/ContractReview/getDto`, {params: params})
      this.dataForm = {
        ...this.dataForm,
        ...res.data
      }
      if(this.dataForm.contractReview === null){
        this.dataForm.contractReview={}
      }
      if(this.dataForm.testAgencyInfo === null){
        this.dataForm.testAgencyInfo={}
      }
      console.log(this.dataForm, "getInfo this.dataForm")
    },
    async print(){
      var params = qs.stringify({
        token: Cookies.get('token'),
        id:this.dataForm.id
      })
      let apiURL = `/contractReview/ContractReview/exportReview`
      window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
    },
    // 表单提交
    async formSubmit(submitType) {
      let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/contractReview/ContractReview/', this.dataForm)
      if (res.success) {
        await this.$tip.success()
        this.$refs.dialog.close()
        this.$emit('refreshDataList')
      }
    }
  }
}
</script>
<style>
.ManageFormAuto {
  width: 70%;
  margin: 0 auto;
}
.confirmDAuto {
  border: 1px solid;
}
.el-flexContractDialog {
  display: flex;
  align-items: center;
}
.DFormWidth {
  width: 120px;
}
.DAlign {
  text-align: center;
}
.DManageForm {
  /*border-left: 1px solid;*/
  width: 100%;
}
.DManageForm > .el-form-item > .el-form-item__content {
  width: calc(100% - 120px);
}
.el-form-item.el-CMTextarea > .el-form-item__content {
  width: 100%;
}
.el-form .el-form-item.el-wt-form-item-margin {
  margin-left: 120px;
}
.el-form-border {
  border-top: 1px solid;
  border-bottom: 1px solid;
}
.el-margin-top-bot {
  margin-top: 5px;
  margin-bottom: 5px;
}
.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;
}
.contractContentWidth > .el-form-item > .el-form-item__content {
  width: calc(100% - 120px);
}
.contractContentWidth > .el-form-item.reviewLeft > .el-form-item__content {
  margin-left: 17%;
}
.contractContentWidth > .el-form-item.lastChild > .el-form-item__content {
  width: calc(100% - 160px);
}
.contractFormAuto .marginTopAndMarginBottom {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}
.contractFormAuto .marginTopAndMarginBottom2 {
  margin-top: -10px !important;
  margin-bottom: 0 !important;
}
.review-sc > .el-form-item > .el-form-item__content {
  width:100%;
}
</style>