From 46fb684ba924ada80ed9c0a57ef7151efe432149 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期三, 13 十二月 2023 15:44:33 +0800
Subject: [PATCH] 修改

---
 modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java     |    5 
 web/src/views/modules/configItemOutbound/ConfigItemOutbound.vue                                                    |   73 ++++++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java     |    4 
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java |    6 
 web/src/App.vue                                                                                                    |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java             |    3 
 web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue                                        |  440 ++++++++++++++++++++++++++++++++++++++++
 web/src/views/modules/configItemOutbound/configItemList.vue                                                        |   86 +++++++
 modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java                |    2 
 modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml                          |   28 ++
 10 files changed, 636 insertions(+), 13 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
index 6ae463a..8da6116 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
+++ b/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);
     }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
index ad58eb2..7b898d6 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
+++ b/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);
     }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java
index 01b8671..15644b9 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java
+++ b/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;
 
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
index d98e6f3..5def6c1 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dao/WarehouseConfigItemDao.java
+++ b/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);
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java b/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
index 88e1272..10fee2e 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
+++ b/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);
     }
 }
diff --git a/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml b/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
index bdb55b1..1819532 100644
--- a/modules/mainPart/src/main/resources/mapper/configItemWarehouse/WarehouseConfigItemDao.xml
+++ b/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>
diff --git a/web/src/App.vue b/web/src/App.vue
index fbfbbe6..c8ceda9 100644
--- a/web/src/App.vue
+++ b/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 = '鍗曚綅浠g爜'
       messages[val].company.shortName = '鍗曚綅绠�绉�'
diff --git a/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue b/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue
new file mode 100644
index 0000000..0151556
--- /dev/null
+++ b/web/src/views/modules/configItemOutbound/ConfigItemOutbound-AddOrUpdate.vue
@@ -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>
diff --git a/web/src/views/modules/configItemOutbound/ConfigItemOutbound.vue b/web/src/views/modules/configItemOutbound/ConfigItemOutbound.vue
new file mode 100644
index 0000000..1bc9ae5
--- /dev/null
+++ b/web/src/views/modules/configItemOutbound/ConfigItemOutbound.vue
@@ -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>
diff --git a/web/src/views/modules/configItemOutbound/configItemList.vue b/web/src/views/modules/configItemOutbound/configItemList.vue
new file mode 100644
index 0000000..ec741f8
--- /dev/null
+++ b/web/src/views/modules/configItemOutbound/configItemList.vue
@@ -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>

--
Gitblit v1.9.1