jinlin
2023-12-13 46fb684ba924ada80ed9c0a57ef7151efe432149
修改
7个文件已修改
3个文件已添加
649 ■■■■■ 已修改文件
modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/App.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemOutbound/ConfigItemOutbound.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemOutbound/configItemList.vue 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
@@ -43,7 +43,7 @@
 */
@RestController
@RequestMapping("/configItemChange/ConfigItemChange/")
@Api(tags="config_item_Change")
@Api(tags="config_item_change")
public class ConfigItemChangeController {
    @Autowired
    private ConfigItemChangeService configItemChangeService;
@@ -127,7 +127,7 @@
    @GetMapping("getItemList")
    @ApiOperation("获取入库配置项列表")
    public PageResult<WarehouseConfigItem> getItemList(Long projectId,String ids) {
        String type ="change_select_id";
        String type ="change";
        List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids,type);
        return PageResult.ok(resultList);
    }
modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
@@ -42,8 +42,8 @@
 * @since 1.0.0 2023-11-27
 */
@RestController
@RequestMapping("/ConfigItemOutbound/ConfigItemOutbound/")
@Api(tags="config_item_Change")
@RequestMapping("/configItemOutbound/ConfigItemOutbound/")
@Api(tags="config_item_outbound")
public class ConfigItemOutboundController {
    @Autowired
    private ConfigItemOutboundService configItemOutboundService;
@@ -127,7 +127,7 @@
    @GetMapping("getItemList")
    @ApiOperation("获取入库配置项列表")
    public PageResult<WarehouseConfigItem> getItemList(Long projectId,String ids) {
        String type ="outbound_select_id";
        String type ="outbound";
        List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids,type);
        return PageResult.ok(resultList);
    }
modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java
@@ -18,7 +18,7 @@
 */
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("config_item_change")
@TableName("config_item_outbound")
public class ConfigItemOutbound extends BusiEntity {
    private static final long serialVersionUID = 1L;
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
@@ -23,5 +23,6 @@
    List<WarehouseConfigItem> itemList(Long projectId);
    List<WarehouseConfigItem> warehouseList(Long projectId,String ids,String type);
    List<WarehouseConfigItem> changeSelectList(Long projectId,String ids);
    List<WarehouseConfigItem> outboundSelectList(Long projectId,String ids);
}
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
@@ -52,6 +52,9 @@
    }
    public List<WarehouseConfigItem> warehouseConfigList(Long projectId,String ids,String type) {
        return baseDao.warehouseList(projectId,ids,type);
        if (type.contains("outbound")){
            return baseDao.outboundSelectList(projectId,ids);
        }
        return baseDao.changeSelectList(projectId,ids);
    }
}
modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
@@ -47,22 +47,42 @@
        WHERE i.is_delete = 0
          AND i.project_id = ${projectId}
    </select>
    <select id="warehouseList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
    <select id="changeSelectList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
        SET @row_number = 0;
        SELECT (@row_number := @row_number + 1) AS no,
        a.item_name,a.item_identify,a.version as retrospect_version,a.secret_class,a.project_id,a.id as select_id
        a.item_name,a.item_identify,a.version as retrospect_version,a.secret_class,a.project_id,a.id as change_select_id
        from config_item_warehouse_detail a
        WHERE a.is_delete = 0
        and a.project_id = ${projectId}
        and a.outbound_select_id IS NOT NULL
        <if test="ids!=null and ids!=''">
            AND id not in (${ids})
        </if>
        and a.id NOT IN (SELECT '${type}' FROM config_item_warehouse_detail
        and a.id NOT IN (SELECT change_select_id FROM config_item_warehouse_detail
        WHERE
        ( SELECT count(*) FROM config_item_warehouse_detail WHERE id IN (SELECT
        '${type}'
        change_select_id
        FROM
        config_item_warehouse_detail) ) > 0)
    </select>
    <select id="outboundSelectList" resultType="com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem">
        SET @row_number = 0;
        SELECT (@row_number := @row_number + 1) AS no,
        a.item_name,a.item_identify,a.version,a.secret_class,a.project_id,a.id as outbound_select_id
        from config_item_warehouse_detail a
        WHERE a.is_delete = 0
        and a.project_id = ${projectId}
        and a.change_select_id IS NOT NULL
        <if test="ids!=null and ids!=''">
            AND id not in (${ids})
        </if>
        and a.id NOT IN (SELECT outbound_select_id FROM config_item_warehouse_detail
        WHERE
        ( SELECT count(*) FROM config_item_warehouse_detail WHERE id IN (SELECT
        outbound_select_id
        FROM
        config_item_warehouse_detail) ) > 0)
    </select>
</mapper>
web/src/App.vue
@@ -25,7 +25,7 @@
      document.querySelector('html').setAttribute('lang', val)
      // 可以在这里修改国际化显示名称
      messages[val].brand.lg = '测试过程管理平台'
      messages[val].brand.lg = '软件测试项目管理工具'
      messages[val].company.name = '单位名称'
      messages[val].company.code = '单位代码'
      messages[val].company.shortName = '单位简称'
web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue
New file
@@ -0,0 +1,440 @@
<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="configChangeFormAuto">
      <div>
        <el-form-item label-width="60px" label="编号:" style="width:100%;margin-bottom: -5px">
          <span>{{dataForm.configItemOutbound.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="configChangeContentWidth">
          <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!=='pzxck_first'" v-model="dataForm.configItemOutbound.applicant"
                      placeholder="请输入申请人"></el-input>
          </el-form-item>
          <el-form-item label="申请日期" style="width: 49%">
            <el-date-picker
              :disabled="stepMarker!=='pzxck_first'"
              v-model="dataForm.configItemOutbound.applyDate"
              type="date"
              placeholder="请选择申请日期">
            </el-date-picker>
          </el-form-item>
          <div class="el-configChangeDialog el-border-bottom">
            <div style="width: 120px;text-align: center;font-weight: 600">
              出库原因
            </div>
            <div class="el-border-left acceptDate" style="width: 90%;">
              <el-form-item style="width: 100%;padding-left:20px;margin:0;">
                <el-input :disabled="stepMarker!=='pzxck_first'" v-model="dataForm.configItemOutbound.changeReason" placeholder="出库原因..."></el-input>
              </el-form-item>
            </div>
          </div>
          <el-form-item class="marginTopAndMarginBottom2" label="库类型" style="width: 99%">
            <zt-dict :disabled="stepMarker!=='pzxck_first'" v-model="dataForm.configItemOutbound.libraryType" :radio="true" dict="library_type"></zt-dict>
          </el-form-item>
        </div>
        <div class="el-configChangeDialog 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.configOutboundList"
                        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="itemIdentify" 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="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 && !dataForm.disabled"  class="icon-container" @click="handleCommand">
                <!-- 放置固定的图标 -->
                 <i class="el-icon-plus"></i>
              </div>
            </div>
          </div>
        </div>
        <div class="el-configChangeDialog 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!=='pzxck_bmsh'" v-model="dataForm.configItemOutbound.approvalOpinions"
                       dict="is_pass" :radio="true"
                       clearable></zt-dict>
            </el-form-item>
            <el-form-item label-width="80%" label="签字:" style="width: 65%">
              <span>{{dataForm.configItemOutbound.approvalSign}}</span>
            </el-form-item>
            <el-form-item label="日期:" style="width: 20%">
              <span>{{dataForm.configItemOutbound.approvalDate}}</span>
            </el-form-item>
          </div>
        </div>
        <div class="el-configChangeDialog el-border-bottom">
          <div style="width: 120px;text-align: center;font-weight: 600">
            项目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=='pzxck_cmcz'" type="textarea" :rows="2" placeholder="请输入内容"
                        v-model="dataForm.configItemOutbound.outboundCmOperations"></el-input>
              <span v-else>{{dataForm.configItemOutbound.outboundCmOperations}}</span>
            </el-form-item>
            <el-form-item label-width="80%" label="操作人:" style="width: 65%">
              <span>{{dataForm.configItemOutbound.outboundOperator}}</span>
            </el-form-item>
            <el-form-item label="日期:" style="width: 20%">
              <span>{{dataForm.configItemOutbound.outboundOperateDate}}</span>
            </el-form-item>
          </div>
        </div>
        <div class="el-configChangeDialog">
          <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.configItemOutbound.remark"></el-input>
            </el-form-item>
          </div>
        </div>
      </div>
      <add-or-update-check ref="addOrUpdate" @recall="setCheckId"/>
      <ConfigItemList ref="configItemList" @getChangeItemList="getChangeItemList"></ConfigItemList>
    </el-form>
    <template v-slot:footer>
      <el-button v-if="dataForm.disabled" type="primary" @click="print()">打印</el-button>
    </template>
  </zt-dialog>
</template>
<script>
  import AddOrUpdateCheck from '../testCheckOrder/TestCheckOrder-AddOrUpdate'
  import ConfigItemList from './configItemList.vue'
  import qs from "qs";
  import Cookies from "js-cookie";
  export default {
    data() {
      return {
        disabled: true,
        stepMarker: '',
        title: '查看',
        ids:'',
        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: '',
          configItemOutbound: {
            id: "",
            code: "",
            applicant: "",
            applyDate: "",
            libraryType: "",
            outboundReason:'',
            approvalOpinions: "",
            approvalSign: "",
            approvalDate: "",
            CmOperations: "",
            Operator: "",
            OperateDate: "",
            remark: "",
          },
          project: {
            code: '',
            softwareName: '',
          },
          configItemList: [],
          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,
      ConfigItemList
    },
    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 = 'pzxck_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() {
        this.$nextTick(()=>{
          console.log(this.dataForm.projectId,'this.dataForm.projectId')
          this.ids = this.dataForm.configOutboundList.map(item=>item.outboundSelectId).join(',')
          this.$refs.configItemList.$refs.dialog.init(this.dataForm.projectId,this.ids)
        })
        // this.dataForm.configItemList.push({})
        // this.$nextTick(() => {
        //   const tableBody = this.$refs.tableConfigItemList.$el.querySelector('.el-table__body-wrapper')
        //   tableBody.scrollTop = tableBody.scrollHeight;
        // })
      },
      getChangeItemList(data){
        console.log(data.configOutboundList,'getChangeItemList(data)')
        if(data.configOutboundList){
          this.dataForm.configOutboundList=this.dataForm.configOutboundList.concat(data.configOutboundList)
        }
      },
      openCheckOrderWin(row) {
        console.log(row, "openCheckOrderWin(row)")
        row.projectId = this.dataForm.projectId
        if (!row.pageCode) {
          if (!row.checkId) {
            row.checkId = -1
          }
          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 print(){
        var params = qs.stringify({
          token: Cookies.get('token'),
          id:this.dataForm.id
        })
        let apiURL = `/configItemOutbound/ConfigItemOutbound/exportConfigOutbound`
        window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
      },
      // 获取信息
      async getInfo() {
        let params = {
          changeId: this.dataForm.id,
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/configItemOutbound/ConfigItemOutbound/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
        if (this.dataForm.project === null) {
          this.dataForm.project = {}
        }
        if (this.dataForm.configItemOutbound === null) {
          this.dataForm.circulatOrder = {}
        }
        if (this.dataForm.flowInfoDto === null) {
          this.dataForm.flowInfoDto = {}
        }
        console.log(this.dataForm, "getInfo this.dataForm")
      },
      // 表单提交
      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: 'pzxck',
            stepIdMark: this.stepMarker,
            submitType: submitType
          }
          this.dataForm.flowInfoDto = flowInfo;
        }
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/configItemOutbound/ConfigItemOutbound/', 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-configChangeDialog {
    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;
  }
  .configChangeContentWidth > .el-form-item > .el-form-item__content {
    width: calc(100% - 120px);
  }
  .configChangeContentWidth > .el-form-item.lastChild > .el-form-item__content {
    width: calc(100% - 142px);
  }
  .configChangeFormAuto .acceptDate > .el-form-item > .el-form-item__content {
    width: 100%;
  }
  .configChangeFormAuto .marginTopAndMarginBottom {
    margin-top: 10px !important;
    margin-bottom: 0 !important;
  }
  .configChangeFormAuto .marginTopAndMarginBottom2 {
    margin-top: -10px !important;
    margin-bottom: 0 !important;
  }
</style>
web/src/views/modules/configItemOutbound/ConfigItemOutbound.vue
New file
@@ -0,0 +1,73 @@
<template>
  <div class="fa-card-a">
      <zt-table-wraper query-url="/configItemOutbound/ConfigItemOutbound/page" delete-url="/configItemOutbound/configItemOutbound/deleteConfigOutbound" v-slot="{ table }">
        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
          <el-form-item>
            <el-input v-model="dataForm.code" placeholder="请输入配置项入库编号" clearable></el-input>
          </el-form-item>
          <el-form-item>
            <el-input v-model="dataForm.projectCode" placeholder="请输入项目编号" clearable></el-input>
          </el-form-item>
          <el-form-item>
            <el-input v-model="dataForm.softwareName" placeholder="请输入项目名称" clearable></el-input>
          </el-form-item>
          <el-form-item>
            <zt-dict v-model="dataForm.libraryType" dict="library_type" clearable></zt-dict>
          </el-form-item>
          <el-form-item>
            <zt-button type="query" @click="table.query()"/>
            <zt-button type="primary" class="el-icon-edit"  @click="add()">新增</zt-button>
            <zt-button type="delete"  @click="table.deleteHandle()"/>
          </el-form-item>
        </el-form>
        <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
          <el-table-column :selectable="isCheckbox" align="center" type="selection" width="40"/>
            <el-table-column prop="code" label="配置项入库编号"/>
                <el-table-column prop="projectCode" label="项目编号"/>
                <el-table-column prop="softwareName" label="项目名称"/>
                <zt-table-column-dict prop="libraryType" label="库类型" dict="library_type"/>
              <zt-table-column-handle :table="table" delete-perm="configItemOutbound::delete"/>
        </el-table>
        <!-- 弹窗, 新增 / 修改 -->
        <add-or-update ref="addOrUpdate" @refreshDataList="table.query"/>
        <ProjectSelect ref="projectSelect"
                       @refreshDataList="table.query"
                       @setProjectInfo="openAddWin">
        </ProjectSelect>
      </zt-table-wraper>
  </div>
</template>
<script>
  import AddOrUpdate from './ConfigItemOutbound-AddOrUpdate'
  import ProjectSelect from "../project/Project-select";
  export default {
    data() {
      return {
        dataForm: {
          code: '',
          projectCode: '',
          softwareName: '',
          libraryType: ''
        }
      }
    },
    components: {
      AddOrUpdate,
      ProjectSelect
    },
    methods:{
      add() {
        this.$refs.projectSelect.$refs.dialog.init("config_item_outbound")
      },
      isCheckbox(row,index){
        return !(row.flowInfo && row.flowInfo.bizId);
      },
      openAddWin(row) {
        console.log(row.id, 'row.id')
        // this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id})
        this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id})
      },
    }
  }
</script>
web/src/views/modules/configItemOutbound/configItemList.vue
New file
@@ -0,0 +1,86 @@
<template>
  <zt-dialog ref="dialog" column="2" title="选择配置项" :hasConfirm="true" @confirm="formSubmit" :append-to-body="true">
    <el-card shadow="never" class="aui-card--fill">
      <div class="mod-project-project}">
        <zt-table-wraper :dataForm="dataForm" ref="tableObj" v-slot="{ table }" query-url="/configItemOutbound/ConfigItemOutbound/getItemList"
        @dataLoaded="dataLoaded"
        >
          <el-table
                    :data="table.dataList"
                    height="100px"
                    @selection-change="changeRow"
                    v-adaptive="{bottomOffset:150}"
                    border>
            <el-table-column align="center" type="selection" width="40"/>
            <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="配置项名称">
            </el-table-column>
            <el-table-column prop="itemIdentify" align="center" min-width="290" label="配置项标识">
            </el-table-column>
            <el-table-column prop="version" align="center" width="120" label="版本">
            </el-table-column>
            <el-table-column prop="retrospectVersion" label="上溯版" width="120" align="center">
            </el-table-column>
            <el-table-column prop="secretClass" label="密级" width="100" align="center">
              <template v-slot="{ row }">
                <zt-dict  :disabled="true" v-model="row.secretClass" placeholder="密级" dict="secret_class"
                          clearable></zt-dict>
              </template>
            </el-table-column>
          </el-table>
        </zt-table-wraper>
      </div>
    </el-card>
  </zt-dialog>
</template>
<script>
export default {
  name: 'configItem-list',
  data() {
    return {
      pageCode:'',
      dataForm: {
        ids:null,
        projectId:'',
        configOutboundList:[],
      }
    }
  },
  methods: {
    init(projectId,ids) {
      this.dataForm.projectId = projectId
       this.dataForm.ids = ids
      console.log(this.dataForm,'this.dataForm.id')
      this.$nextTick(()=>{
        this.$refs.tableObj.query()
      })
    },
    indexFormat(index) {
      return index += 1
    },
    dataLoaded(data){
      console.log(data,'data dataLoaded')
    },
    changeRow(selection){
      this.dataForm.configOutboundList = selection
      console.log(this.dataForm.configOutboundList,'this.dataForm.checkList 选中的列表数据')
    },
    async formSubmit(){
      console.log(this.dataForm,'this.dataForm')
      this.$emit('getChangeItemList',this.dataForm)
      await this.$tip.success()
      this.$refs.dialog.close()
    }
  },
}
</script>
<style>
.form-input-width-1 .el-form-item > .el-form-item__content .el-input {
  width: 150px;
}
</style>