wente
2023-12-05 bb9bf60cbd34d0638f1df89c69358533b2cc220c
项目表
9个文件已修改
355 ■■■■ 已修改文件
web/src/assets/css/custom.css 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/components/config-uploader/src/config-uploader.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue 240 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestCheckOrder.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestExplainCheckOrder.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestPlanCheckOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestRecordCheckOrder.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestReportCheckOrder.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/css/custom.css
@@ -357,7 +357,19 @@
  transition: transform 0.3s ease,box-shadow 0.3s ease,opacity 0.3s ease;
  opacity: 0;
}
.icon-container:hover{
  transform: translate3d(-50%, 0, 0);
  box-shadow: 0 10px 10px 0 rgba(72, 119, 232, 0.34)
/*.icon-container:hover{*/
/*  transform: translate3d(-50%, 0, 0);*/
/*  box-shadow: 0 10px 10px 0 rgba(72, 119, 232, 0.34)*/
/*}*/
.el-dropdown.dropdown_hover{
  position: absolute;
  border: 1px solid #EBEEF5;
  background-color: #fafafa;
  box-shadow: 0 3px 6px 0 rgba(72, 119, 232, 0.14);
  border-radius: 2px;
  display: block;
  width: 300px;
  left: -325%;
  color: #606266;
  font-size: 14px;
}
web/src/components/config-uploader/src/config-uploader.vue
@@ -158,8 +158,11 @@
        }
      },
      change(busiField) {
        console.log(busiField, 'config_uploader change(busiField) busiField')
        console.log(busiField,this.uploadList, 'config_uploader change(busiField) busiField')
        console.log(this.fields, 'change this.fields')
        if (!Array.isArray(this.dataForm[busiField])) {
          this.$set(this.dataForm, busiField, [])
        }
        this.fields.forEach(field => {
          if (field.busiField === busiField) {
            field.files.length = 0
@@ -170,6 +173,7 @@
            if (this.dataForm) {
              this.dataForm.hasUploadFinsh = 100
            }
            console.log(this.dataForm[busiField], 'config_uploader change(busiField) this.dataForm[busiField]')
          }
        })
        console.log(this.dataForm, 'config_uploader change(busiField)')
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue
@@ -62,7 +62,7 @@
                  <el-input v-model="row.retrospectVersion" placeholder="上溯版"></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="secretClass" label="密级" width="80"  align="center">
              <el-table-column prop="secretClass" label="密级" width="100"  align="center">
                <template v-slot="{ row }">
                  <zt-dict v-model="row.secretClass" placeholder="密级" dict="secret_class"
                           clearable></zt-dict>
@@ -75,10 +75,28 @@
                                  v-model="row.files"/>
                </template>
              </el-table-column>
              <el-table-column fixed="right" label="管理" width="80" align="center">
                <template v-slot="{ row }">
                  <zt-table-button @click="">管理</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 class="icon-container" @click="addConfigItemWarehouseRow()">
              <div 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.command" :command="item.command">
                      {{ item.name }}
                    </el-dropdown-item>
                  </el-dropdown-menu>
                </el-dropdown>
                <!-- 放置固定的图标 -->
                <i class="el-icon-plus"></i>
<!--                <i class="el-icon-plus"></i>-->
              </div>
            </div>
          </div>
@@ -161,7 +179,7 @@
          </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=='wplz_bmsh'" v-model="dataForm.configItemWarehouse.approvalOpinions" dict="is_pass" :radio="true"
              <zt-dict :disabled="stepMarker!=='wplz_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%">
@@ -179,6 +197,7 @@
          <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=='wplz_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>
@@ -210,6 +229,13 @@
        disabled:true,
        stepMarker: '',
        title: '查看',
        menuOptions: [
          { command: 'a', name: '软件测试委托单' },
          { command: 'b', name: '软件需求规格说明' },
          { command: 'c', name: '软件设计说明' },
          { command: 'd', name: '软件研制任务书' },
          { command: 'e', name: '其他' }
        ],
        dataForm: {
          id: '',
          configItemWarehouse:{
@@ -275,8 +301,21 @@
        }
        console.log(this.dataForm.id,this.dataForm.projectId,'params params')
      },
      addConfigItemWarehouseRow(){
        this.dataForm.configItemList.push({})
      // addConfigItemWarehouseRow(){
      //   this.dataForm.configItemList.push({})
      //   this.$nextTick(()=>{
      //     const tableBody=this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper')
      //     tableBody.scrollTop = tableBody.scrollHeight;
      //   })
      // },
      handleCommand(command){
        const selectedItem = this.menuOptions.find(item => item.command === command);
        if (selectedItem.command === 'e') {
          this.dataForm.configItemList.push({})
        }else if(selectedItem){
          this.dataForm.configItemList.push({itemName:selectedItem.name})
        }
        this.$nextTick(()=>{
          const tableBody=this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper')
          tableBody.scrollTop = tableBody.scrollHeight;
web/src/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue
@@ -1,71 +1,172 @@
<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="编号" prop="code" rules="required">
        <el-input v-model="dataForm.code"></el-input>
      </zt-form-item>
      <zt-form-item label="项目标识" prop="softwareidentity" rules="required">
        <el-input v-model="dataForm.softwareidentity"></el-input>
      </zt-form-item>
      <zt-form-item label="项目名称" prop="softwarename" rules="required">
        <el-input v-model="dataForm.softwarename"></el-input>
      </zt-form-item>
      <zt-form-item label="检查人" prop="examiner" rules="required">
        <el-input v-model="dataForm.examiner"></el-input>
      </zt-form-item>
      <zt-form-item label="检查时间" prop="examDate" rules="required">
        <el-input v-model="dataForm.examDate"></el-input>
      </zt-form-item>
      <zt-form-item label="问题描述" prop="problemDescription" rules="required">
        <el-input v-model="dataForm.problemDescription"></el-input>
      </zt-form-item>
      <zt-form-item label="问题处理" prop="problemProcess" rules="required">
        <el-input v-model="dataForm.problemProcess"></el-input>
      </zt-form-item>
      <zt-form-item label="处理人" prop="processor" rules="required">
        <el-input v-model="dataForm.processor"></el-input>
      </zt-form-item>
      <zt-form-item label="处理日期" prop="processDate" rules="required">
        <el-input v-model="dataForm.processDate"></el-input>
      </zt-form-item>
      <zt-form-item label="验证人" prop="verifier" rules="required">
        <el-input v-model="dataForm.verifier"></el-input>
      </zt-form-item>
      <zt-form-item label="验证日期" prop="verifyDate" rules="required">
        <el-input v-model="dataForm.verifyDate"></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="testCheckFormAuto">
      <div>
        <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px">
          <span>{{dataForm.testCheckOrder.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="testCheckContentWidth">
          <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 class="marginTopAndMarginBottom" label="项目名称" style="width: 49%">
            <el-input v-model="dataForm.project.softwareIdentity" placeholder="项目名称"></el-input>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom3" label="检查人" style="width: 49%">
            <el-input v-model="dataForm.project.softwareIdentity" placeholder="检查人"></el-input>
          </el-form-item>
          <el-form-item class="marginTopAndMarginBottom3" label="检查时间" style="width: 49%">
            <el-input v-model="dataForm.project.isContract" placeholder="检查时间"></el-input>
          </el-form-item>
        </div>
        <div style="border-bottom: 1px solid rgba(0,0,0,.2);">
          <div style="padding-left:5px;padding-right:5px;">
            <div style="padding: 5px">测试计划:</div>
            <div class="table-container">
              <el-table ref="tableCirculatOrderList" class="el-software el-margin-top-bot" border
                        :data="dataForm.technicalList"
                        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="infoName" min-width="180" label="主要检查内容">
                  <template v-slot="{ row }">
                    <el-input v-model="row.name" placeholder="主要检查内容"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="identify" align="center" width="150" label="检查结果">
                  <template v-slot="{ row }">
                    <zt-dict v-model="row.identify" dict="is_or_not" :radio="true"></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-column fixed="right" prop="files" label="上传附件" width="300" align="center">
                  <template v-slot="{ row }">
                    &lt;!&ndash;                    <zt-table-button @click="files(row.id)">上传附件</zt-table-button>&ndash;&gt;
                    <table-uploader busi-type="circulat_order" model-name="row" :dataForm="row"
                                    v-model="row.files"/>
                  </template>
                </el-table-column>-->
              </el-table>
<!--              <div class="icon-container" @click="addCirculatRow()">-->
<!--                &lt;!&ndash; 放置固定的图标 &ndash;&gt;-->
<!--                <i class="el-icon-plus"></i>-->
<!--              </div>-->
            </div>
          </div>
        </div>
        <div class="el-flexCirculationDialog el-border-bottom">
          <div style="width: 112px;text-align: center;font-weight: 600">
            问题描述
          </div>
          <div class="el-border-left acceptDate" style="height: 80px;width: 80%;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-input type="textarea"
                        :rows="3" v-model="dataForm.testCheckOrder.itemOther" placeholder="问题描述..."></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexCirculationDialog el-border-bottom">
          <div style="width: 112px;text-align: center;font-weight: 600">
            问题处理
          </div>
          <div class="el-border-left acceptDate" style="height: 80px;width: 80%;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-input type="textarea"
                        :rows="3" v-model="dataForm.testCheckOrder.itemOther" placeholder="问题处理..."></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="el-flexCirculationDialog">
          <div style="width: 112px;text-align: center;font-weight: 600">
            处理人
          </div>
          <div class="el-border-left-right acceptDate1" style="width: 40%;height: 40px;">
            <el-form-item style="width: 100%;padding-left:20px;margin:0;">
              <el-input v-model="dataForm.testCheckOrder.itemOther" placeholder="处理人"></el-input>
            </el-form-item>
          </div>
          <div style="width: 84px;text-align: center;font-weight: 600">
            验证人
          </div>
          <div class="el-border-left acceptDate1" style="width: 40%;height: 40px;">
            <el-form-item  label-width="150px" style="width: 100%;padding-left:20px;margin-bottom:0">
              <el-input v-model="dataForm.testCheckOrder.itemOther" placeholder="验证人"></el-input>
            </el-form-item>
          </div>
        </div>
      </div>
    </el-form>
    <template v-slot:footer>
      <el-button v-if="dataForm.disabled" type="primary" @click="print()">打印</el-button>
    </template>
  </zt-dialog>
</template>
<script>
  export default {
    props:{
      pageCode: {
        type: String,
        default: ''
      },
    },
    data() {
      return {
        dataForm: {
          id: '',
          projectId: '',
          code: '',
          softwareidentity: '',
          softwarename: '',
          examiner: '',
          examDate: '',
          problemDescription: '',
          problemProcess: '',
          processor: '',
          processorId: '',
          processDate: '',
          verifier: '',
          verifierId: '',
          verifyDate: '',
          year: ''
          project:{
            softwareIdentity:'',
            softwareName:'',
            softwareType:'',
            isContract:'',
          },
          testCheckOrder:{
            code: '',
            examiner: '',
            examDate: '',
            problemDescription: '',
            problemProcess: '',
            processor: '',
            processorId: '',
            processDate: '',
            verifier: '',
            verifierId: '',
            verifyDate: '',
            year: ''
          },
          testAgencyInfo:{
            agencyName:''
          }
        }
      }
    },
    methods: {
      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.dataForm.disabled
        this.getInfo()
        console.log(this.dataForm.id, this.dataForm.projectId, this.stepMarker, 'this.dataForm.id, this.dataForm.projectId,this.stepMarker')
      },
      // 获取信息
      async getInfo() {
        let res = await this.$http.get(`/testCheckOrder/TestCheckOrder/${this.dataForm.id}`)
@@ -86,3 +187,40 @@
    }
  }
</script>
<style>
.el-flexCirculationDialog {
  display: flex;
  align-items: center
}
.testCheckFormAuto  .acceptDate > .el-form-item > .el-form-item__content {
  width: 100%;
}
.testCheckFormAuto  .acceptDate1 > .el-form-item > .el-form-item__content {
  width: 100%;
}
.testCheckFormAuto .marginTopAndMarginBottom {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}
.testCheckFormAuto .marginTopAndMarginBottom2 {
  margin-top: -10px !important;
  margin-bottom: 10px !important;
}
.testCheckFormAuto .marginTopAndMarginBottom3 {
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
.testCheckFormAuto .acceptDate > .el-form-item > .el-form-item__content {
  line-height: 78px;
}
.testCheckContentWidth > .el-form-item > .el-form-item__content {
  width: calc(100% - 120px);
}
.testCheckFormAuto .el-radio {
  margin-right: 10px;
}
</style>
web/src/views/modules/testCheckOrder/TestCheckOrder.vue
@@ -11,7 +11,7 @@
          </el-form-item>
          <el-form-item>
            <zt-button type="query" @click="table.query()"/>
            <zt-button type="add" perm="testCheckOrder:add" @click="table.editHandle()"/>
            <zt-button type="primary" class="el-icon-edit" perm="project:add" @click="add()">新增</zt-button>
            <zt-button type="delete" perm="testCheckOrder:delete" @click="table.deleteHandle()"/>
          </el-form-item>
        </el-form>
@@ -23,7 +23,12 @@
              <zt-table-column-handle :table="table" edit-perm="testCheckOrder:update" delete-perm="testCheckOrder::delete"/>
        </el-table>
        <!-- 弹窗, 新增 / 修改 -->
        <add-or-update @refreshDataList="table.query"/>
        <add-or-update ref="addOrUpdate" @refreshDataList="table.query"/>
        <ProjectSelect ref="projectSelect"
                       @refreshDataList="table.query"
                       @setProjectInfo="openAddWin">
        </ProjectSelect>
        <Preview ref="view" :pageMarkerfun="SoftwareTestOrder"></Preview>
      </zt-table-wraper>
    </div>
  </el-card>
@@ -31,6 +36,8 @@
<script>
  import AddOrUpdate from './TestCheckOrder-AddOrUpdate'
  import ProjectSelect from "../project/Project-select.vue"
  import Preview from '@/views/pages/view'
  export default {
    props: {
      pageCode: {
@@ -52,7 +59,21 @@
      }
    },
    components: {
      AddOrUpdate
      AddOrUpdate,
      ProjectSelect,
      Preview
    },
    methods:{
      add() {
        this.$refs.projectSelect.$refs.dialog.init("test_check_order")
      },
      openAddWin(row) {
        console.log(row.id, 'row.id')
        this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id})
      },
      preview(row){
        this.$refs.view.openAccessoryFormatSingle(row)
      }
    }
  }
</script>
web/src/views/modules/testCheckOrder/TestExplainCheckOrder.vue
@@ -1,5 +1,5 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead"/>
</template>
<script>
@@ -9,7 +9,7 @@
    data() {
      return {
        pageCode: 'explain',
        pageRead: 'no'
        pageRead: 'no',
      }
    },
    components: {
web/src/views/modules/testCheckOrder/TestPlanCheckOrder.vue
@@ -1,5 +1,5 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead"/>
</template>
<script>
web/src/views/modules/testCheckOrder/TestRecordCheckOrder.vue
@@ -1,5 +1,5 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" />
</template>
<script>
web/src/views/modules/testCheckOrder/TestReportCheckOrder.vue
@@ -1,5 +1,5 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead"/>
</template>
<script>
@@ -9,7 +9,8 @@
    data() {
      return {
        pageCode: 'report',
        pageRead: 'no'
        pageRead: 'no',
        isShow:'',
      }
    },
    components: {