wente
2023-12-07 95d6ebce17cdb14e65cc1a5cad0ae276ada2b68f
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue
@@ -1,90 +1,415 @@
<template>
  <zt-dialog ref="dialog" column="2" @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="projectCode" rules="required">
                        <el-input v-model="dataForm.projectCode"></el-input>
                </zt-form-item>
      <zt-form-item label="项目名称" prop="projectName" rules="required">
                        <el-input v-model="dataForm.projectName"></el-input>
                </zt-form-item>
      <zt-form-item label="申请人" prop="applicant" rules="required">
                        <el-input v-model="dataForm.applicant"></el-input>
                </zt-form-item>
      <zt-form-item label="申请日期" prop="applyDate" rules="required">
                        <el-input v-model="dataForm.applyDate"></el-input>
                </zt-form-item>
      <zt-form-item label="库类型" prop="libraryType" rules="required">
                        <zt-dict v-model="dataForm.libraryType" dict="library_type"></zt-dict>
                </zt-form-item>
      <zt-form-item label="批准意见" prop="approvalOpinions" rules="required">
                        <zt-dict v-model="dataForm.approvalOpinions" dict="is_agree"></zt-dict>
                </zt-form-item>
      <zt-form-item label="批准签字" prop="approvalSign" rules="required">
                        <el-input v-model="dataForm.approvalSign"></el-input>
                </zt-form-item>
      <zt-form-item label="批准日期" prop="approvalDate" rules="required">
                        <el-input v-model="dataForm.approvalDate"></el-input>
                </zt-form-item>
      <zt-form-item label="项目CM操作" prop="projectCmOperations" rules="required">
                        <el-input v-model="dataForm.projectCmOperations"></el-input>
                </zt-form-item>
      <zt-form-item label="操作人" prop="operator" rules="required">
                        <el-input v-model="dataForm.operator"></el-input>
                </zt-form-item>
      <zt-form-item label="操作日期" prop="operateDate" rules="required">
                        <el-input v-model="dataForm.operateDate"></el-input>
                </zt-form-item>
      <zt-form-item label="备注" prop="remark" rules="required">
                        <el-input v-model="dataForm.remark"></el-input>
                </zt-form-item>
      <zt-form-item label="年份" prop="year" rules="required">
                        <el-input v-model="dataForm.year"></el-input>
                </zt-form-item>
  <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">
      <div>
        <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px">
          <span>{{dataForm.configItemWarehouse.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">
          <el-form-item class="marginTopAndMarginBottom" label="项目编号" style="width: 49%">
            <el-input v-model="dataForm.project.code" placeholder="请输入项目编号"></el-input>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom" 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 :disabled="stepMarker!=='pzxrk_first'" v-model="dataForm.configItemWarehouse.applicant"
                      placeholder="请输入申请人"></el-input>
          </el-form-item>
          <el-form-item label="申请日期" style="width: 49%">
            <el-date-picker
              :disabled="stepMarker!=='pzxrk_first'"
              v-model="dataForm.configItemWarehouse.applyDate"
              type="date"
              placeholder="请选择申请日期">
            </el-date-picker>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom2" label="库类型" style="width: 99%">
            <zt-dict v-model="dataForm.configItemWarehouse.libraryType" :radio="true" dict="library_type"></zt-dict>
          </el-form-item>
        </div>
        <div class="el-flexManageDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            入库配置项
          </div>
          <div class="el-border-left" style="width: calc(100% - 120px)">
            <div class="table-container">
              <el-table ref="tableConfigItemList" class="el-software el-margin-top-bot"
                        style="width: 99%;margin-left: 5px" border :data="dataForm.configItemList"
                        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="itemName" width="200" label="配置项名称">
                  <template v-slot="{ row }">
                    <el-input v-if="showAddAndEdit" v-model="row.itemName" placeholder="配置项名称"></el-input>
                    <span v-else>{{row.itemName}}</span>
                  </template>
                </el-table-column>
                <el-table-column prop="itemDentify" align="center" min-width="290" label="配置项标识">
                  <template v-slot="{ row }">
                    <el-input  v-if="showAddAndEdit" v-model="row.itemIdentify" placeholder="配置项标识"></el-input>
                    <span v-else>{{row.itemIdentify}}</span>
                  </template>
                </el-table-column>
                <el-table-column prop="version" align="center" width="120" label="版本">
                  <template v-slot="{ row }">
                    <el-input  v-if="showAddAndEdit" v-model="row.version" placeholder="版本"></el-input>
                    <span v-else>{{row.version}}</span>
                  </template>
                </el-table-column>
                <el-table-column prop="retrospectVersion" label="上溯版" width="120" align="center">
                  <template v-slot="{ row }">
                    <el-input  v-if="showAddAndEdit" v-model="row.retrospectVersion" placeholder="上溯版"></el-input>
                    <span v-else>{{row.retrospectVersion}}</span>
                  </template>
                </el-table-column>
                <el-table-column prop="secretClass" label="密级" width="100" align="center">
                  <template v-slot="{ row }">
                    <zt-dict  :disabled="!showAddAndEdit" v-model="row.secretClass" placeholder="密级" dict="secret_class"
                             clearable></zt-dict>
                  </template>
                </el-table-column>
                <el-table-column v-if="showColumn" fixed="right" label="管理" width="100" align="center">
                  <template v-slot="{ row }">
                    <zt-table-button v-if="row.checkId"
                                     @click="openCheckOrderWin(row)">修改检查单
                    </zt-table-button>
                    <zt-table-button v-else-if="',软件测试计划,软件测试说明,软件测试记录,软件测试报告'.indexOf(row.itemName)>0"
                                     @click="openCheckOrderWin(row)">新增检查单
                    </zt-table-button>
                  </template>
                </el-table-column>
                <el-table-column fixed="right" prop="files" label="上传附件" width="240" align="center">
                  <template v-slot="{ row }">
                    <!--                    <zt-table-button @click="files(row.id)">上传附件</zt-table-button>-->
                    <table-uploader busi-type="config_item_warehouse" model-name="row" :dataForm="row"
                                    v-model="row.files"/>
                  </template>
                </el-table-column>
              </el-table>
              <div v-if="showAddAndEdit" class="icon-container">
                <el-dropdown @command="handleCommand">
                  <span class="el-dropdown-link">
                    <i class="el-icon-plus"></i>
                  </span>
                  <el-dropdown-menu slot="dropdown">
                    <el-dropdown-item v-for="item in menuOptions" :key="item.pageCode" :command="item.pageCode">
                      {{ item.name }}
                    </el-dropdown-item>
                  </el-dropdown-menu>
                </el-dropdown>
                <!-- 放置固定的图标 -->
                <!-- <i class="el-icon-plus"></i>-->
              </div>
            </div>
          </div>
        </div>
        <div class="el-flexManageDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            项目QA审核
          </div>
          <div class="el-border-left" style="width: calc(100% - 120px)">
            <el-table class="el-software el-margin-top-bot" style="width: 99%;margin-left: 5px" border
                      :data="dataForm.qaAuditList"
                      stripe>
              <el-table-column prop="no" align="center" width="80" label="序号"></el-table-column>
              <el-table-column prop="examineItem" min-width="300" label="检查项"></el-table-column>
              <el-table-column label="检查结果" width="250" align="center">
                <template slot-scope="scope">
                  <zt-dict :disabled="stepMarker!=='pzxrk_qash'" v-model="scope.row.examineResult" placeholder="检查结果"
                           dict="tristate2" :radio="true"
                           clearable></zt-dict>
                </template>
              </el-table-column>
              <el-table-column align="center" width="120" label="不适用说明">
                <template v-slot="{ row }">
                  <el-input v-if="stepMarker=='pzxrk_qash'" v-model="row.notApplyExplan" placeholder="不适用说明"></el-input>
                  <span v-else>{{row.notApplyExplan}}</span>
                </template>
              </el-table-column>
            </el-table>
            <div class="el-border-top">
              <el-form-item label="审核结果" style="width: 99%">
                <zt-dict :disabled="stepMarker!=='pzxrk_qash'" v-model="dataForm.configItemWarehouse.qaAuditResults"
                         dict="is_pass" :radio="true"
                         clearable></zt-dict>
              </el-form-item>
              <el-form-item label="审核人:" style="width: 48%">
                <span>{{dataForm.configItemWarehouse.qaAuditor}}</span>
              </el-form-item>
              <el-form-item label="审核日期:" style="width: 48%">
                <span>{{dataForm.configItemWarehouse.qaAuditDate}}</span>
              </el-form-item>
            </div>
          </div>
        </div>
        <div class="el-flexManageDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            CM审核
          </div>
          <div class="el-border-left" style="width: calc(100% - 120px)">
            <el-table class="el-software el-margin-top-bot" style="width: 99%;margin-left: 5px" border
                      :data="dataForm.cmAuditList"
                      stripe>
              <el-table-column prop="no" align="center" width="80" label="序号"></el-table-column>
              <el-table-column prop="examineItem" min-width="300" label="检查项"></el-table-column>
              <el-table-column label="检查结果" width="250" align="center">
                <template slot-scope="scope">
                  <zt-dict :disabled="stepMarker!=='pzxrk_cmsh'" v-model="scope.row.examineResult" placeholder="检查结果"
                           dict="tristate2" :radio="true"
                           clearable></zt-dict>
                </template>
              </el-table-column>
              <el-table-column prop="notApplyExplan" align="center" width="120" label="不适用说明">
                <template v-slot="{ row }">
                  <el-input v-if="stepMarker=='pzxrk_cmsh'" v-model="row.notApplyExplan" placeholder="不适用说明"></el-input>
                  <span v-else>{{row.notApplyExplan}}</span>
                </template>
              </el-table-column>
            </el-table>
            <div class="el-border-top">
              <el-form-item label="审核结果" style="width: 99%">
                <zt-dict :disabled="stepMarker!=='pzxrk_cmsh'" v-model="dataForm.configItemWarehouse.cmAuditResults"
                         placeholder="审核结果" dict="is_pass" :radio="true"
                         clearable></zt-dict>
              </el-form-item>
              <el-form-item label="审核人:" style="width: 48%">
                <span>{{dataForm.configItemWarehouse.cmAuditor}}</span>
              </el-form-item>
              <el-form-item label="审核日期:" style="width: 48%">
                <span>{{dataForm.configItemWarehouse.cmAuditDate}}</span>
              </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-wt-form-item-margin" label-width="20px" style="width: 85%">
              <zt-dict :disabled="stepMarker!=='pzxrk_bmsh'" v-model="dataForm.configItemWarehouse.approvalOpinions"
                       dict="is_pass" :radio="true"
                       clearable></zt-dict>
            </el-form-item>
            <el-form-item label-width="80%" label="签字:" style="width: 65%">
              <span>{{dataForm.configItemWarehouse.approvalSign}}</span>
            </el-form-item>
            <el-form-item label="日期:" style="width: 20%">
              <span>{{dataForm.configItemWarehouse.approvalDate}}</span>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexManageDialog el-border-bottom">
          <div class="DFormWidth DAlign DHold">
            项目CM操作
          </div>
          <div style="width: calc(100% - 120px)" class="el-border-left">
            <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
              <el-input v-if="stepMarker=='pzxrk_cmcz'" type="textarea" :rows="2" placeholder="请输入内容"
                        v-model="dataForm.configItemWarehouse.projectCmOperations"></el-input>
              <span v-else>{{dataForm.configItemWarehouse.projectCmOperations}}</span>
            </el-form-item>
            <el-form-item label-width="80%" label="操作人:" style="width: 65%">
              <span>{{dataForm.configItemWarehouse.operator}}</span>
            </el-form-item>
            <el-form-item label="日期:" style="width: 20%">
              <span>{{dataForm.configItemWarehouse.operateDate}}</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.configItemWarehouse.remark"></el-input>
            </el-form-item>
          </div>
        </div>
      </div>
      <add-or-update-check ref="addOrUpdate" @recall="setCheckId"/>
    </el-form>
  </zt-dialog>
</template>
<script>
  import AddOrUpdateCheck from '../testCheckOrder/TestCheckOrder-AddOrUpdate'
  export default {
    data() {
      return {
        disabled: true,
        stepMarker: '',
        title: '查看',
        showColumn:false,
        showAddAndEdit:false,
        menuOptions: [
          {pageCode: 'plan', name: '软件测试计划',itemIdentify:''},
          {pageCode: 'explain', name: '软件测试说明'},
          {pageCode: 'record', name: '软件测试记录'},
          {pageCode: 'report', name: '软件测试报告'},
          {pageCode: 'other', name: '其他'}
        ],
        pageNameCode: {'软件测试计划':'plan', '软件测试说明': 'explain', '软件测试记录': 'record', '软件测试报告': 'report'},
        dataForm: {
          id: '',
          projectId: '',
          code: '',
          projectCode: '',
          projectName: '',
          applicant: '',
          applyDate: '',
          libraryType: '',
          approvalOpinions: '',
          approvalSign: '',
          approvalDate: '',
          projectCmOperations: '',
          operator: '',
          operateDate: '',
          remark: '',
          year: ''
          configItemWarehouse: {
            id: "",
            code: "",
            applicant: "",
            applyDate: "",
            libraryType: "",
            qaAuditResults: "",
            qaAuditor: "",
            qaAuditDate: "",
            cmAuditResults: "",
            cmAuditor: "",
            cmAuditDate: "",
            approvalOpinions: "",
            approvalSign: "",
            approvalDate: "",
            projectCmOperations: "",
            operator: "",
            operateDate: "",
            remark: "",
          },
          project: {
            code: '',
            softwareName: '',
          },
          cmAuditList: [],
          configItemList: [],
          qaAuditList: [],
          flowInfoDto: {}
        }
      }
    },
    created() {
      const roleName = localStorage.getItem('roleName')
      if (roleName && roleName.includes('QA')) {
        this.showColumn = true;
      }
      if (roleName && roleName.includes('测试员')) {
        this.showAddAndEdit = true;
      }
    },
    computed: {
    },
    components: {
      AddOrUpdateCheck
    },
    methods: {
      indexFormat(index) {
        return index += 1
      },
      init(id, row) {
        console.log(id, row, '入库单的')
        if (id) {
          this.dataForm.id = id
        } else {
          this.dataForm.id = row.id
        }
        if (row.projectId) {
          this.dataForm.projectId = row.projectId
        }
        this.getInfo()
        if (!this.dataForm.disabled) {
          if (!row.stepMarker) {
            this.stepMarker = 'pzxrk_first'
            this.title = '入库申请'
          } else {
            this.title = row.stepName
            this.stepMarker = row.stepMarker
          }
        }
        console.log(this.dataForm.id, this.dataForm.projectId, 'params params')
      },
      // addConfigItemWarehouseRow(){
      //   this.dataForm.configItemList.push({})
      //   this.$nextTick(()=>{
      //     const tableBody=this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper')
      //     tableBody.scrollTop = tableBody.scrollHeight;
      //   })
      // },
      handleCommand(pageCode) {
        const selectedItem = this.menuOptions.find(item => item.pageCode === pageCode);
        console.log(selectedItem, "handleCommand(pageCode) selectedItem")
        if (selectedItem.pageCode === 'other') {
          this.dataForm.configItemList.push({})
        } else if (selectedItem) {
          this.dataForm.configItemList.push({itemName: selectedItem.name, pageCode: selectedItem.pageCode})
        }
        this.$nextTick(() => {
          const tableBody = this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
      openCheckOrderWin(row) {
        console.log(row, "openCheckOrderWin(row)")
        row.projectId = this.dataForm.projectId
        if (!row.pageCode){
          row.pageCode = this.pageNameCode[row.itemName]
          console.log(row.itemName,row.pageCode, "row.itemName,openCheckOrderWin(row) row.pageCode")
        }
        this.$refs.addOrUpdate.$refs.dialog.init(null, row)
      },
      setCheckId(checkId, row) {
        console.log(checkId, row, "setCheckId(checkId, row)")
        this.$set(row, 'checkId', checkId)
      },
      // 获取信息
      async getInfo() {
        let res = await this.$http.get(`/configItemWarehouse/ConfigItemWarehouse/${this.dataForm.id}`)
        let params = {
          warehouseId: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/configItemWarehouse/ConfigItemWarehouse/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
        if (this.dataForm.project === null) {
          this.dataForm.project = {}
        }
        if (this.dataForm.configItemWarehouse === null) {
          this.dataForm.circulatOrder = {}
        }
        if (this.dataForm.flowInfoDto === null) {
          this.dataForm.flowInfoDto = {}
        }
        console.log(this.dataForm, "getInfo this.dataForm")
      },
      // 表单提交
      async formSubmit() {
      async formSubmit(submitType) {
        if (this.showColumn && submitType == 'bl') {
          for (let item of this.dataForm.configItemList) {
            if (item) {
              if (this.pageNameCode[item.itemName] && !item.checkId) {
                this.$alert("有未提交的检查单")
                return
              }
            }
          }
        }
        if (submitType == 'tj' || submitType == 'bl') {
          let flowInfo = {
            flowCode: 'pzxrk',
            stepIdMark: this.stepMarker,
            submitType: submitType
          }
          this.dataForm.flowInfoDto = flowInfo;
        }
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/configItemWarehouse/ConfigItemWarehouse/', this.dataForm)
        if (res.success) {
          await this.$tip.success()
@@ -95,3 +420,87 @@
    }
  }
</script>
<style>
  .ManageFormAuto {
    width: 70%;
    margin: 0 auto;
  }
  .confirmDAuto {
    border: 1px solid;
  }
  .el-flexManageDialog {
    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;
  }
  .warehouseContentWidth > .el-form-item > .el-form-item__content {
    width: calc(100% - 120px);
  }
  .warehouseContentWidth > .el-form-item.lastChild > .el-form-item__content {
    width: calc(100% - 142px);
  }
  .warehouseFormAuto .marginTopAndMarginBottom {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
  }
  .warehouseFormAuto .marginTopAndMarginBottom2 {
    margin-top: -10px !important;
    margin-bottom: 0 !important;
  }
</style>