From c93ff74fb5a47d38554d40b5ab00cfe07eac1f2a Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期四, 24 十月 2024 17:21:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue                                |   22 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue          |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java    |   47 +++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java          |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java                         |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java     |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java         |   25 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java |   59 ++-
 Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js                                                        |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java           |    5 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java |  104 ++++++-
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue               |  515 +++++++++++-------------------------
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java  |    9 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java   |    1 
 14 files changed, 385 insertions(+), 414 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java
index edca04d..c77b9c8 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java
@@ -2,7 +2,7 @@
 
 import java.util.List;
 
-public class PRMDTO implements   java.io.Serializable {
+public class PRMDTO implements java.io.Serializable {
 
     private static final long serialVersionUID = -9069714336905186990L;
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
index 961a448..5e088d1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
@@ -3,11 +3,15 @@
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.PvolumeInfo;
 import com.vci.dto.*;
+import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsActionServiceI;
 import com.vci.web.service.OsPvolumesServiceI;
+import com.vci.web.util.Func;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -15,6 +19,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -106,4 +111,46 @@
             return objectBaseResult;
         }
     }
+
+    /**
+     * 涓烘枃浠舵煖鍒嗛厤鎴愬憳
+     * @param pvolumId
+     * @param userIds
+     * @return
+     */
+    @PostMapping("/savePvolumeUser")
+    public BaseResult savePvolumeUser(String pvolumId ,String userIds){
+        try {
+            return osPvolumesServiceI.savePvolumeUser(pvolumId,Func.toStrList(userIds)) ? BaseResult.success("鏂囦欢鏌滃垎閰嶆垚鍛樻垚鍔燂紒"):BaseResult.fail("鏂囦欢鏌滃垎閰嶆垚鍛樺け璐ワ紒");
+        } catch (PLException e) {
+            BaseResult objectBaseResult = new BaseResult<>();
+            objectBaseResult.setCode(Integer.parseInt(e.code));
+            objectBaseResult.setMsg(Arrays.toString(e.messages));
+            return objectBaseResult;
+        }
+    }
+
+    /**
+     * 瀵煎嚭閫変腑鐨勬枃浠舵煖淇℃伅
+     * @param exportFileName 瀵煎嚭鐨勬枃浠跺悕
+     * @param pvolumeIds 闇�瑕佸鍑虹殑灞炴�ц嫳鏂囧悕绉�
+     * @param response
+     */
+    @GetMapping( "/exportPvolumes")
+    @VciBusinessLog(operateName = "瀵煎嚭閫変腑鐨勬枃浠舵煖淇℃伅")
+    public void exportPvolumes(String exportFileName, String pvolumeIds, HttpServletResponse response){
+        try {
+            String excelPath = osPvolumesServiceI.exportPvolumes(exportFileName,pvolumeIds);
+            ControllerUtil.writeFileToResponse(response,excelPath);
+        } catch (Exception e) {
+            String msg = "瀵煎嚭鏂囦欢鏌滄椂鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e);
+            try {
+                e.printStackTrace();
+                ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null);
+            } catch (IOException ioException) {
+                ioException.printStackTrace();
+            }
+        }
+    }
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
index 45b0f76..052bdbb 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
@@ -535,7 +535,7 @@
      * @param  tabButtonVO
      * @return 淇敼缁撴灉
      */
-    @PutMapping("/updateTabbutton")
+    @PutMapping("/updateTabButton")
     public BaseResult updateTabButton(@RequestBody PLTabButtonVO tabButtonVO){
         try {
             return uiManagerService.updateTabButton(tabButtonVO);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java
index e29f5fe..b7d4522 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java
@@ -44,6 +44,11 @@
      */
     BaseResult getOperatingUsers() throws PLException;
 
+    /**
+     * 瀵煎嚭鏃ュ織
+     * @param dto 瀵煎嚭鐨勬枃浠跺悕
+     * @return
+     */
     String exportLogs(LogQueryCriteriaDTO dto) throws PLException;
 
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
index 8459c9c..dcd27a9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
@@ -1,12 +1,10 @@
 package com.vci.web.service;
 
 import com.vci.corba.common.PLException;
+import com.vci.corba.framework.data.PvolumeInfo;
 import com.vci.dto.*;
 import com.vci.starter.web.pagemodel.BaseResult;
-import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.List;
 
 /**
@@ -40,4 +38,25 @@
      * @return 鍒犻櫎缁撴灉
      */
     BaseResult deletePvolume(String ids) throws PLException;
+    /**
+     * 鏂囦欢鏌滃鍑�
+     * @param exportFileName 瀵煎嚭鐨勬枃浠跺悕
+     * @param pvolumeIds 瀵煎嚭閫変腑鐨勫嵎id
+     * @return
+     * @throws PLException
+     */
+    String exportPvolumes(String exportFileName,String pvolumeIds) throws PLException;
+    /**
+     * 鏍规嵁鍗穒d鏌ヨ鍗�
+     * @param ids
+     * @return
+     */
+    List<PvolumeInfo> getPvolumeInfoByIds(List<String> ids) throws PLException;
+    /**
+     * 涓烘枃浠舵煖鍒嗛厤鎴愬憳
+     * @param pvolumId
+     * @param userIds
+     * @return
+     */
+    boolean savePvolumeUser(String pvolumId ,List<String> userIds) throws PLException;
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
index 114058c..2b9dda6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
@@ -175,7 +175,7 @@
      * @param tabButtonVO
      * @return
      */
-    boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd);
+    boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd);
 
     /**
      * 鍒犻櫎鍗曚釜鎸夐挳閰嶇疆
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
index 96b9519..3dd6390 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
@@ -239,7 +239,6 @@
         if(Func.isEmpty(logList)){
             excelDataList.add(new WriteExcelData(1,1, "瀵煎嚭鐨勬棩蹇楀垪琛ㄤ负绌猴紒"));
         }else{
-            //鍏堟寜鐓у睘鎬х被鍨嬫帓搴忥紝涓嶅悓灞炴�х被鍨嬪鍑虹殑鏁版嵁涔辩殑鏁堟灉
             AtomicInteger i = new AtomicInteger();
             Arrays.stream(logList).forEach(log->{
                 excelDataList.add(new WriteExcelData(i.get() +1,0, log.username));
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
index 0cb6b97..b1486a2 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -573,6 +573,7 @@
         }
         return BaseResult.success("瀵煎叆鎴愬姛");
     }
+
     private String readLines(String filePath){
         StringBuffer sb=new StringBuffer();
         FileInputStream prmFile=null;
@@ -590,6 +591,7 @@
         }
         return sb.toString();
     }
+
     /**
      * 鎷疯礉鏁版嵁鍒皐ord妯℃澘涓�
      * @param fileName 瑕佸啓鍏ョ殑鏁版嵁
@@ -620,6 +622,7 @@
         }
         return filePath;
     }
+
     public List<PortalVIDTO> listByIds(Collection idList){
         List<PortalVIDTO> portalVIVOList=new ArrayList<>();
         if(CollectionUtils.isEmpty(idList)){
@@ -637,13 +640,15 @@
         portalVIVOList=  portalVIO2DTOS(portalVIList);
         return portalVIVOList;
     }
-    private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit)  {
 
+    private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit)  {
         boolean _isBtm=false;
         boolean flag = false;
         String labelName=PortalVIType.Form.getName();
         try {
-            VciBaseUtil.alertNotNull(portalVIDTO.getViName(),"鍚嶇О");
+            VciBaseUtil.alertNotNull(
+                    portalVIDTO.getViName(),"鍚嶇О"
+                    ,portalVIDTO.getPrm().getFormQtName(),"缁戝畾琛ㄥ崟");
             if(portalVIDTO.getPrm()==null||portalVIDTO.getPrm().getPrmItemList()==null||portalVIDTO.getPrm().getPrmItemList().size()==0){
                 throw  new Throwable(labelName+"锛屾湭璁剧疆");
             }
@@ -706,6 +711,7 @@
         }
         return  BaseResult.success("淇濆瓨"+labelName+"鎴愬姛!");
     }
+
     @Override
     public Map<String, PortalVIVO> selectAllPortalVIMap() throws VciBaseException {
         return null;
@@ -757,7 +763,6 @@
         return "";
     }
 
-
     /**
      * 鏋氫妇鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
      *
@@ -773,6 +778,7 @@
         });
         return portalVIVOS;
     }
+
     /**
      * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
      * @param portalVIDTOS 琛ㄥ崟鐨勫璞�
@@ -787,6 +793,7 @@
         });
         return portalVIS;
     }
+
     /**
      * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
      * @param PortalVIS 琛ㄥ崟鐨勫璞�
@@ -811,13 +818,13 @@
      */
     @Override
     public  PortalVI portalVIDTOO2VI(PortalVIDTO portalVIDTO) {
-        PortalVI portalVI=new PortalVI();
-        portalVI.id=portalVIDTO.getId();
-        portalVI.typeFlag= portalVIDTO.getTypeFlag();
-        portalVI.typeName=portalVIDTO.getTypeName();
-        portalVI.viName=portalVIDTO.getViName();
-        portalVI.viType=portalVIDTO.getViType();
-        short viType =portalVIDTO.getViType();
+        PortalVI portalVI = new PortalVI();
+        portalVI.id = portalVIDTO.getId();
+        portalVI.typeFlag = portalVIDTO.getTypeFlag();
+        portalVI.typeName = portalVIDTO.getTypeName();
+        portalVI.viName = portalVIDTO.getViName();
+        portalVI.viType = portalVIDTO.getViType();
+        short viType = portalVIDTO.getViType();
         PRMDO prmdo = prmDOO2VIS(portalVIDTO.getPrm(),viType);
         try {
             portalVI.prm=UITools.getPRMText(prmdo);
@@ -826,6 +833,7 @@
         }
         return portalVI;
     }
+
     /**
      * 琛ㄥ崟鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
      * @param portalVI
@@ -844,6 +852,7 @@
         portalVIDTO.setPrm(prmDOO2DTOS(prmdo,viType));
         return portalVIDTO;
     }
+
     /**
      * 琛ㄥ崟鏁版嵁瀵硅薄杞崲
      * @param prmdto
@@ -1210,25 +1219,25 @@
 
         prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{})));//闇�瑕佷娇鐢ㄧ殑瀛楁
         prmItemDO.setItemKeyFields(CollectionUtils.isEmpty(prmItemDTO.getItemKeyFieldList())?"":VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//闇�瑕佹悳绱㈢殑瀛楁
-       List<String> newItemFieldWidthList=prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList());
+       List<String> newItemFieldWidthList = prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList());
        prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),":"));//瀛楁瀹藉害
-       List<ItemSeniorQueryBO> itemSeniorQueryBOS=  prmItemDTO.getItemSeniorQueryBOS();
-       List<String> itemSeniorQueryColsList=new ArrayList<>();
+       List<ItemSeniorQueryBO> itemSeniorQueryBOS = prmItemDTO.getItemSeniorQueryBOS();
+       List<String> itemSeniorQueryColsList = new ArrayList<>();
        List<String> itemSeniorQueryColsCountsList=new ArrayList<>();
-       List<String> itemQuerySqlList=new ArrayList<>();
+       List<String> itemQuerySqlList = new ArrayList<>();
        itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> {
-           String itemSeniorQueryCols= itemSeniorQueryBO.getItemSeniorQueryCols();
-           String itemSeniorQueryColsCounts=itemSeniorQueryBO.getItemSeniorQueryColsCounts();
-           String itemQuerySql=itemSeniorQueryBO.getItemQuerySql();
+           String itemSeniorQueryCols = itemSeniorQueryBO.getItemSeniorQueryCols();
+           String itemSeniorQueryColsCounts = itemSeniorQueryBO.getItemSeniorQueryColsCounts();
+           String itemQuerySql = itemSeniorQueryBO.getItemQuerySql();
            if(StringUtils.isNotBlank(itemSeniorQueryCols)) {
                itemSeniorQueryColsList.add(itemSeniorQueryCols);
            }
-            if(StringUtils.isNotBlank(itemSeniorQueryColsCounts)) {
-                itemSeniorQueryColsCountsList.add(itemSeniorQueryColsCounts);
-            }
-            if(StringUtils.isNotBlank(itemQuerySql)){
-                itemQuerySqlList.add(itemQuerySql);
-            }
+           if(StringUtils.isNotBlank(itemSeniorQueryColsCounts)) {
+               itemSeniorQueryColsCountsList.add(itemSeniorQueryColsCounts);
+           }
+           if(StringUtils.isNotBlank(itemQuerySql)){
+               itemQuerySqlList.add(itemQuerySql);
+           }
         });
         prmItemDO.setItemSeniorQueryCols(VciBaseUtil.array2String(itemSeniorQueryColsList.toArray(new String[]{})));
         prmItemDO.setItemSeniorQueryColsCounts(VciBaseUtil.array2String(itemSeniorQueryColsCountsList.toArray(new String[]{})));
@@ -1241,8 +1250,8 @@
      */
     private List<KeyValue>  initItemFieldWidthList(String itemOutFields,String itemFieldWidth){
         List<KeyValue> keyValueList=new ArrayList<>();
-        List<String>itemOutFieldList=   VciBaseUtil.str2List(itemOutFields);
-        List<String>itemFieldWidthList=  VciBaseUtil.str2List(itemFieldWidth,",");
+        List<String>itemOutFieldList = VciBaseUtil.str2List(itemOutFields);
+        List<String>itemFieldWidthList =VciBaseUtil.str2List(itemFieldWidth,",");
         if(itemOutFieldList.size()>0) {
             for (int i = 0; i < itemOutFieldList.size(); i++) {
                 KeyValue keyValue = new KeyValue();
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
index e171a7d..8baf55b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
@@ -1,39 +1,26 @@
 package com.vci.web.service.impl;
 
-import cn.hutool.core.io.FileUtil;
-import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.PvolumeInfo;
-import com.vci.corba.portal.data.Constraint;
-import com.vci.corba.portal.data.PLAction;
-import com.vci.corba.portal.data.PLActionCls;
-import com.vci.corba.portal.data.PLActionParam;
 import com.vci.dto.*;
 import com.vci.starter.poi.bo.WriteExcelData;
 import com.vci.starter.poi.bo.WriteExcelOption;
 import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
-import com.vci.web.enumpck.ActionEnum;
-import com.vci.web.enumpck.PlTypetypeEnum;
-import com.vci.web.other.ExportActionLogBean;
-import com.vci.web.other.ExportBeans;
-import com.vci.web.service.OsActionServiceI;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.WebThreadLocalUtil;
 import com.vci.web.service.OsPvolumesServiceI;
 import com.vci.web.util.Func;
-import com.vci.web.util.PinyinCommon;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -133,6 +120,7 @@
         }
         return BaseResult.success("淇敼鎴愬姛锛�");
     }
+
     /**
      * 鍒犻櫎鍗�
      * @param ids 涓婚敭闆嗗悎
@@ -160,6 +148,92 @@
     }
 
     /**
+     * 鏂囦欢鏌滃鍑�
+     * @param exportFileName 瀵煎嚭鐨勬枃浠跺悕
+     * @param pvolumeIds 瀵煎嚭閫変腑鐨勫嵎id
+     * @return
+     * @throws PLException
+     */
+    @Override
+    public String exportPvolumes(String exportFileName, String pvolumeIds) throws PLException {
+        if(Func.isBlank(pvolumeIds)){
+            throw new PLException("500",new String[]{"璇峰嬀閫夎瀵煎嚭鐨勬暟鎹�!"});
+        }
+        //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ鍑哄悕绉�
+        exportFileName = Func.isBlank(exportFileName) ?  "鏂囦欢鏌滃鍑篲" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"):exportFileName;
+        //璁剧疆鍒楀悕
+        List<String> columns = new ArrayList<>(Arrays.asList("鍗峰悕","鏈哄櫒绫诲瀷","璺緞鍚嶇О","棣栭�夎矾寰�","鏈嶅姟鍣�","鍗锋湇鍔�"));
+
+        //鍐檈xcel
+        String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName +  ".xls";
+        try {
+            new File(excelPath).createNewFile();
+        } catch (Throwable e) {
+            throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e);
+        }
+        //璁剧疆鍒�
+        List<WriteExcelData> excelDataList = new ArrayList<>();
+        //璁剧疆鍒楀ご
+        for (int index = 0; index < columns.size(); index++) {
+            excelDataList.add(new WriteExcelData(0,index, columns.get(index)));
+        }
+        //鎸夌収鏂囦欢鏌淚D鏌ヨ鏂囦欢鏌�
+        List<String> pvolumeIdList = Func.toStrList(pvolumeIds);
+        List<PvolumeInfo> pvolumeInfoList = this.getPvolumeInfoByIds(pvolumeIdList);
+
+        if(Func.isEmpty(pvolumeInfoList)){
+            excelDataList.add(new WriteExcelData(1,1, "鏈幏鍙栧埌瑕佸鍑虹殑鏂囦欢鏌滀俊鎭紝璇峰埛鏂板悗灏濊瘯閲嶆柊瀵煎嚭锛�"));
+        }else{
+            for (int i = 0; i < pvolumeInfoList.size(); i++) {
+                PvolumeInfo pvolumeInfo = pvolumeInfoList.get(i);
+                excelDataList.add(new WriteExcelData(i+1,0, pvolumeInfo.name));
+                excelDataList.add(new WriteExcelData(i+1,1, pvolumeInfo.type));
+                excelDataList.add(new WriteExcelData(i+1,2, pvolumeInfo.path));
+                excelDataList.add(new WriteExcelData(i+1,3, pvolumeInfo.isvalid));
+                excelDataList.add(new WriteExcelData(i+1,4, pvolumeInfo.host));
+                excelDataList.add(new WriteExcelData(i+1,5, pvolumeInfo.service));
+            }
+        }
+        WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
+        ExcelUtil.writeDataToFile(excelPath, excelOption);
+        return excelPath;
+    }
+
+    /**
+     * 鏍规嵁鍗穒d鏌ヨ鍗�
+     * @param ids
+     * @return
+     */
+    @Override
+    public List<PvolumeInfo> getPvolumeInfoByIds(List<String> ids) throws PLException {
+        List<PvolumeInfo> pvolumeInfos = new ArrayList<>();
+        if(Func.isEmpty(ids)){
+            return pvolumeInfos;
+        }
+        PvolumeInfo[] allPvolumes = platformClientUtil.getFrameworkService().getAllPvolumes();
+        if (Func.isEmpty(allPvolumes)){
+            return pvolumeInfos;
+        }
+        pvolumeInfos = Arrays.stream(allPvolumes).filter(pvolumeInfo -> ids.contains(pvolumeInfo.id)).collect(Collectors.toList());
+        return pvolumeInfos;
+    }
+
+    /**
+     * 涓烘枃浠舵煖鍒嗛厤鎴愬憳----杩欎釜鍔熻兘鐜板湪娌$敤涓婏紝骞冲彴鐨勪繚瀛樻柟娉曟槸娉ㄩ噴鎺夌殑
+     * @param pvolumId
+     * @param userIds
+     * @return
+     */
+    @Override
+    public boolean savePvolumeUser(String pvolumId ,List<String> userIds) throws PLException {
+        VciBaseUtil.alertNotNull(pvolumId,"鏂囦欢鏌滀富閿�",userIds,"鐢ㄦ埛涓婚敭闆嗗悎");
+        UserEntityInfo userEntityInfo = new UserEntityInfo();
+        userEntityInfo.setUserName(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId());
+        boolean resBoolean = platformClientUtil.getFrameworkService().savePvolumeUser(pvolumId, userIds.toArray(new String[userIds.size()]), userEntityInfo);
+        return resBoolean;
+    }
+
+    /**
      * 鍗� 浠嶤orba绔浆鍒癏ibernate瀵硅薄绔�
      * @param pvoInfo
      * @return
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
index 2dd03e2..37a13ae 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1368,7 +1368,7 @@
      */
     @Override
     public BaseResult addTabButton(PLTabButtonVO tabButtonVO) {
-        boolean res = this.saveOrUpdateTapButton(tabButtonVO, true);
+        boolean res = this.saveOrUpdateTabButton(tabButtonVO, true);
         return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�");
     }
 
@@ -1379,7 +1379,7 @@
      */
     @Override
     public BaseResult updateTabButton(PLTabButtonVO tabButtonVO) {
-        boolean res = this.saveOrUpdateTapButton(tabButtonVO, false);
+        boolean res = this.saveOrUpdateTabButton(tabButtonVO, false);
         return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�");
     }
 
@@ -1389,11 +1389,10 @@
      * @return
      */
     @Override
-    public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){
-        VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О");
+    public boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd){
+        VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О",tabButtonVO.getTableOId(),"椤甸潰瀹氫箟涓婚敭");
         //妫�鏌ュ綋鍓嶆坊鍔犵殑鍒楄〃鏄惁閲嶅锛屼絾鏄繖鍎垮彧鏀寔鍗曟潯鏁版嵁淇濆瓨锛屾墍鏈夊綋鍓嶅垪琛ㄥ垽閲嶅彲浠ュ墠绔潵鍋�
         //String btnParamValidate = this.geCheckRes();
-
         if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) {
             throw new VciBaseException("鎸夊簭鍙疯秴鍑鸿寖鍥达紝璇蜂慨鏀癸紝鎸夐挳銆愮紪鍙枫�戝彧鑳藉湪銆�1-63銆戣寖鍥村唴銆�");
         }
diff --git a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
index 8e90762..8a6bec0 100644
--- a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
+++ b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js
@@ -72,7 +72,7 @@
     method: 'post',
     responseType: 'blob',
     data: {
-      params
+      ...params
     }
   })
 }
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
index ef4e680..3e8a6f5 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/components/tableDialog.vue
@@ -9,10 +9,10 @@
     width="60%"
     @close="closeDialog"
   >
-    <el-form v-loading="formLoading" :model="form" :rules="rules" label-position="right" label-width="100px">
+    <el-form ref="form" v-loading="formLoading" :model="form" :rules="rules" label-position="right" label-width="100px">
       <el-row>
         <el-col :span="12">
-          <el-form-item label="鍚嶇О">
+          <el-form-item label="鍚嶇О" prop="viName">
             <el-input v-model="form.viName" placeholder="璇疯緭鍏ュ悕绉�" size="mini"></el-input>
           </el-form-item>
         </el-col>
@@ -30,14 +30,14 @@
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="缁戝畾琛ㄥ崟">
+          <el-form-item label="缁戝畾琛ㄥ崟" prop="itemInObj">
             <div style="display: flex;align-items: center;">
-              <el-select v-model="form.itemInObj" clearable placeholder="璇烽�夋嫨缁戝畾琛ㄥ崟" size="mini">
+              <el-select v-model="form.itemInObj" clearable placeholder="璇烽�夋嫨缁戝畾琛ㄥ崟" size="mini"
+                         @change="formSelectChange">
                 <el-option v-for="(item,index) in selectList" :key="index" :label="item.viName"
                            :value="item.id"></el-option>
               </el-select>
-              <el-button plain size="mini" style="margin-left: 3px" type="success" @click="formSelectClickHandler">閫夋嫨
-              </el-button>
+
             </div>
           </el-form-item>
         </el-col>
@@ -54,131 +54,42 @@
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
-          <el-form-item label="鏄剧ず瀛楁">
-            <div style="display: flex; align-items: center">
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="form.itemSelectOutFieldList"
-                  :highlight-current-row="true"
-                  style="width: 100%"
-                  @row-click="showLabelLeftRowClick">
-                  <el-table-column
-                    align="center"
-                    label="鍙娇鐢ㄥ瓧娈�"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-              <div style="margin-left: 10px; margin-right: 10px">
-                <el-button circle icon="el-icon-back" style="margin-right: 10px"
-                           @click="showLeftTransferClick"></el-button>
-                <el-button circle icon="el-icon-right" @click="showRightTransferClick"></el-button>
-              </div>
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="form.itemOutFieldList"
-                  :highlight-current-row="true"
-                  style="width: 100%"
-                  @row-click="showLabelRightRowClick">
-                  <el-table-column
-                    align="center"
-                    label="闇�瑕佷娇鐢ㄥ瓧娈�"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-            </div>
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="鎼滅储瀛楁">
-            <div style="display: flex; align-items: center">
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="form.itemSearchFieldList"
-                  :highlight-current-row="true"
-                  style="width: 100%"
-                  @row-click="searchLeftRowClick">
-                  <el-table-column
-                    align="center"
-                    label="鍙緵鎼滅储瀛楁"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-              <div style="margin-left: 10px; margin-right: 10px">
-                <el-button circle icon="el-icon-back" style="margin-right: 10px"
-                           @click="searchLeftTransferClick"></el-button>
-                <el-button circle icon="el-icon-right" @click="searchRightTransferClick"></el-button>
-              </div>
-              <div style="height: 260px; width: 160px; border: 1px solid #bdbbbb;overflow-y: auto">
-                <el-table
-                  :data="form.itemKeyFieldList"
-                  :highlight-current-row="true"
-                  style="width: 100%"
-                  @row-click="searchRightRowClick">
-                  <el-table-column
-                    align="center"
-                    label="闇�鎼滅储瀛楁"
-                    prop="id">
-                  </el-table-column>
-                </el-table>
-              </div>
-            </div>
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="鍒�">
-            <el-select v-model="form.itemFileWidthSelect" placeholder="璇烽�夋嫨鍒�" size="mini" @change="itemFileWidthChange">
-              <el-option v-for="(item,index) in form.itemFieldWidthList" :key="index" :label="item.key"
-                         :value="item.key"></el-option>
+        <el-col :span="24">
+          <el-form-item label="鏄剧ず瀛楁" prop="showLabel">
+            <el-select v-model="form.itemOutFieldList" multiple placeholder="璇烽�夋嫨" style="width: 100%"
+                       @change="outFileChange">
+              <el-option
+                v-for="(item,index) in form.itemSelectOutFieldList"
+                :key="index"
+                :label="item.id"
+                :value="item.id">
+              </el-option>
             </el-select>
           </el-form-item>
         </el-col>
 
-        <el-col :span="12">
-          <el-form-item label="瀹藉害">
-            <div style="display: flex;align-items: center;">
-              <el-input v-model="form.itemWidth" placeholder="璇疯緭鍏ュ搴�" size="mini" style="width: 193px"
-                        type="number"></el-input>
-              <el-button plain size="mini" style="margin-left: 3px" type="success" @click="widthSetUpClickHandler">璁剧疆
-              </el-button>
-            </div>
+        <el-col :span="24">
+          <el-form-item label="鎼滅储瀛楁">
+            <el-select v-model="form.itemKeyFieldList" multiple placeholder="璇烽�夋嫨" style="width: 100%">
+              <el-option
+                v-for="(item,index) in form.itemSearchFieldList"
+                :key="index"
+                :label="item.id"
+                :value="item.id">
+              </el-option>
+            </el-select>
           </el-form-item>
         </el-col>
+
       </el-row>
 
       <el-col :span="24">
         <el-form-item label="璁剧疆鍒楀">
-          <div style="height: 150px; width: 100%; border: 1px solid #bdbbbb;overflow-y: auto">
-            <el-table
-              :data="form.itemFieldWidthList"
-              :highlight-current-row="true"
-              border
-              stripe
-              style="width: 100%"
-              @row-click="itemFileWidthRowClick">
-              <el-table-column
-                align="center"
-                label="鍒楀悕"
-                prop="key">
-                <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.key }}</el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                label="鍒楀"
-                prop="value">
-                <template slot-scope="scope">
-                  <el-tag size="medium">{{ scope.row.value }}</el-tag>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
+          <avue-crud
+            :data="form.itemFieldWidthList"
+            :option="fileWidthOption">
+          </avue-crud>
+
         </el-form-item>
       </el-col>
 
@@ -295,29 +206,6 @@
          <el-button @click="closeDialog">鍙� 娑�</el-button>
          <el-button type="primary" @click="dialogSaveClickHandler">纭� 瀹�</el-button>
     </span>
-
-    <el-dialog
-      v-dialogDrag
-      v-loading="selectFormLoading"
-      :visible.sync="selectFormVisible"
-      append-to-body="true"
-      class="avue-dialog"
-      title="琛ㄥ崟閫夋嫨"
-      width="50%">
-      <avue-crud
-        ref="crud"
-        :data="selectFormData"
-        :option="selectFormOption"
-        @selection-change="selectionChange"
-        @row-click="rowClick">
-
-      </avue-crud>
-
-      <span slot="footer" class="dialog-footer">
-         <el-button @click="selectFormVisible = false">鍙� 娑�</el-button>
-         <el-button type="primary" @click="selectFormAddClickHandler">纭� 瀹�</el-button>
-    </span>
-    </el-dialog>
   </el-dialog>
 
 </template>
@@ -345,6 +233,35 @@
   },
   data() {
     return {
+      fileWidthOption: {
+        ...basicOption,
+        addBtn: false,
+        editBtn: false,
+        delBtn: false,
+        refreshBtn: false,
+        highlightCurrentRow: true,
+        height: 200,
+        menu: false,
+        selection: false,
+        column: [
+          {
+            label: '鍒楀悕',
+            prop: 'key',
+          },
+          {
+            label: '鍒楀',
+            prop: 'value',
+            cell: true,
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ュ垪瀹�',
+                trigger: 'blur'
+              }
+            ]
+          }
+        ]
+      },
       searchQtNameList: [],
       formLoading: false,
       itemImgHeight: '',
@@ -376,7 +293,23 @@
       selectFormData: [],
       selectFormLoading: false,
       selectFormVisible: false,
-      rules: {},
+      rules: {
+        viName: [{
+          required: true,
+          message: '璇疯緭鍏ュ悕绉�',
+          trigger: 'blur'
+        }],
+        itemInObj: [{
+          required: true,
+          message: '璇烽�夋嫨缁戝畾琛ㄥ崟',
+          trigger: 'change'
+        }],
+        showLabel: [{
+          required: true,
+          message: '璇烽�夋嫨鏄剧ず瀛楁',
+          trigger: 'submit'
+        }],
+      },
       form: {
         viName: '', // 鍚嶇О
         itemPageSize: '', // 姣忛〉鍙樉绀鸿鏁�
@@ -391,7 +324,6 @@
         itemKeyFieldList: [], // 闇�瑕佹悳绱㈠瓧娈�
         itemWidth: '250', // 瀹藉害
         itemFieldWidthList: [], // 璁剧疆鍒楀鏁扮粍 涓� itemOutFieldList 鐩稿尮閰�
-        itemFileWidthSelect: '', // 鍒椾笅鎷夋
         searchLabel: '', // 鏌ヨ瀛楁
         searchNumber: '1', // 鏌ヨ娆℃暟
         searchSql: '', // 鏌ヨsql
@@ -416,7 +348,6 @@
         itemKeyFieldList: [], // 闇�瑕佹悳绱㈠瓧娈�
         itemWidth: '250', // 瀹藉害
         itemFieldWidthList: [], // 璁剧疆鍒楀鏁扮粍 涓� itemOutFieldList 鐩稿尮閰�
-        itemFileWidthSelect: '', // 鍒椾笅鎷夋
         searchLabel: '', // 鏌ヨ瀛楁
         searchNumber: '1', // 鏌ヨ娆℃暟
         searchSql: '', // 鏌ヨsql
@@ -440,33 +371,6 @@
     }
   },
   methods: {
-    // 鍏抽棴瀵硅瘽妗�
-    closeDialog() {
-      this.visible = false;
-      this.form = {...this.defaultForm};
-    },
-
-    // 閫夋嫨琛ㄥ崟鍏抽棴瀵硅瘽妗�
-    closeSelectFormDialog() {
-
-    },
-
-    // 閫夋嫨缁戝畾琛ㄥ崟
-    formSelectClickHandler() {
-      this.selectFormVisible = true;
-      const params = {
-        'conditionMap[typeName]': this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name,
-        'conditionMap[viType]': 'Form',
-        'conditionMap[viTypeFlag]': this.treeRadio === '0' ? 'BtmType' : this.treeRadio === '1' ? 'LinkType' : '',
-      }
-      gridPortalVIDatas(1, -1, params).then(res => {
-        if (res.data.code === 200) {
-          const data = res.data.data;
-          this.selectFormData = data;
-        }
-      });
-    },
-
     // 鑾峰彇鍒濆鍖栬〃鏍奸噷闇�瑕佺殑榛樿鏁版嵁
     getFormSelectList() {
       this.formLoading = true;
@@ -502,53 +406,45 @@
           const list = data.filter(item =>
             !this.form.itemOutFieldList.some(outItem => outItem.id === item.id)
           );
-          this.getSearchSelectList();
+          this.getSearchSelectList(); // 閫夋嫨琛ㄥ崟涓嬫媺鎺ュ彛
+          this.getFormSelect(); // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛
+          this.getDbList(); // 鍙屽嚮鎿嶄綔涓嬫媺鎺ュ彛
           this.$set(this.form, 'itemSelectOutFieldList', list);
           this.formLoading = false;
         }
       })
     },
-
-    // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛鏌ヨ
-    getSearchSelectList() {
-      getObjTypeQTs({btName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name}).then(res => {
-        this.searchQtNameList = res.data.data;
-      })
+    // 鍏抽棴瀵硅瘽妗�
+    closeDialog() {
+      this.visible = false;
+      this.$refs.form.clearValidate();
+      this.form = {...this.defaultForm};
     },
 
-    // 琛ㄦ牸澶氶��
-    selectionChange(list) {
-      this.selectList = list;
-    },
-
-    // 琛岀偣鍑�
-    rowClick(row) {
-      func.rowClickHandler(
-        row,
-        this.$refs.crud,
-        this.lastIndex,
-        (newIndex) => {
-          this.lastIndex = newIndex;
-        },
-        () => {
-          this.selectList = [];
-        }
-      );
-    },
-
-    // 琛ㄥ崟閫夋嫨纭畾
-    selectFormAddClickHandler() {
-      if (this.selectList.length <= 0) {
-        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-
-      if (this.selectList.length > 1) {
-        this.$message.error('鍙兘閫夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
+    // 鑾峰彇閫夋嫨琛ㄥ崟鏁版嵁
+    getFormSelect() {
       const params = {
-        id: this.selectList[0].id,
+        'conditionMap[typeName]': this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name,
+        'conditionMap[viType]': 'Form',
+        'conditionMap[viTypeFlag]': this.treeRadio === '0' ? 'BtmType' : this.treeRadio === '1' ? 'LinkType' : '',
+      }
+      gridPortalVIDatas(1, -1, params).then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.data;
+          this.selectList = data;
+        }
+      });
+    },
+
+    // 琛ㄥ崟閫夋嫨change浜嬩欢
+    formSelectChange(val) {
+      // console.log(val);
+      this.form.itemOutFieldList = [];
+      this.form.itemKeyFieldList = [];
+      this.form.itemFieldWidthList = [];
+
+      const params = {
+        id: val,
         viType: '1'
       }
       getPortalVIById(params).then(res => {
@@ -559,120 +455,32 @@
             }
           });
           this.form.itemSelectOutFieldList = data;
-          this.selectFormVisible = false;
         }
       })
-      this.form.itemInObj = this.selectList[0].id;
     },
 
-    // 鏄剧ず瀛楁宸︿晶琛ㄦ牸琛岀偣鍑�
-    showLabelLeftRowClick(row) {
-      this.showLabelLeftRow = row;
+    // 鏄剧ず瀛楁change
+    outFileChange(val) {
+      this.form.itemSearchFieldList = this.form.itemOutFieldList.map(item => {
+        return {
+          id: item
+        }
+      })
+      this.form.itemFieldWidthList = this.form.itemOutFieldList.map(item => {
+        return {
+          $cellEdit: true,
+          key: item,
+          value: '250',
+
+        }
+      })
     },
 
-    // 鏄剧ず瀛楁鍙充晶琛ㄦ牸琛岀偣鍑�
-    showLabelRightRowClick(row) {
-      this.showLabelRightRow = row;
-    },
-
-    // 鎼滅储瀛楁宸︿晶琛ㄦ牸琛岀偣鍑�
-    searchLeftRowClick(row) {
-      this.searchLeftRow = row;
-    },
-
-    // 鎼滅储瀛楁鍙充晶琛ㄦ牸琛岀偣鍑�
-    searchRightRowClick(row) {
-      this.searchRightRow = row;
-    },
-
-    // 鏄剧ず瀛楁绌挎妗嗗乏绉�
-    showLeftTransferClick() {
-      if (func.isEmptyObject(this.showLabelRightRow)) {
-        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-      this.form.itemSelectOutFieldList.unshift(this.showLabelRightRow);
-      this.form.itemOutFieldList = this.form.itemOutFieldList.filter(item => item.id !== this.showLabelRightRow.id);
-      this.form.itemSearchFieldList = this.form.itemOutFieldList;
-      this.form.itemFieldWidthList = this.form.itemFieldWidthList.filter(item => item.key !== this.showLabelRightRow.id);
-      this.form.itemFileWidthSelect = this.form.itemFieldWidthList.length >= 1 ? this.form.itemFieldWidthList[0].key : '';
-      this.showLabelRightRow = {};
-    },
-
-    // 鏄剧ず瀛楁绌挎妗嗗彸绉�
-    showRightTransferClick() {
-      if (func.isEmptyObject(this.showLabelLeftRow)) {
-        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-
-
-      const onlyFlag = this.form.itemOutFieldList.some(item => item.id === this.showLabelLeftRow.id);
-
-      if (onlyFlag) {
-        this.$message.error('璇锋鏌ユ槸鍚︽湁閲嶅椤�');
-        this.form.itemSelectOutFieldList = this.form.itemSelectOutFieldList.filter(selectItem =>
-          !this.form.itemOutFieldList.some(outItem => outItem.id === selectItem.id)
-      )
-        return;
-      }
-
-      this.form.itemOutFieldList.push(this.showLabelLeftRow);
-      this.form.itemSearchFieldList = this.form.itemOutFieldList;
-
-      // 杩囨护 itemSelectOutFieldList锛岀Щ闄� id 涓� showLabelLeftRow.id 鐩稿悓鐨勫璞�
-      this.form.itemSelectOutFieldList = this.form.itemSelectOutFieldList.filter(item => item.id !== this.showLabelLeftRow.id);
-      this.form.itemFieldWidthList.push({
-        key: this.showLabelLeftRow.id,
-        value: this.form.itemWidth
-      });
-      this.form.itemFileWidthSelect = this.form.itemFieldWidthList[0].key;
-      this.showLabelLeftRow = {};
-
-    },
-
-    // 鎼滅储瀛楁绌挎妗嗗乏绉�
-    searchLeftTransferClick() {
-      if (func.isEmptyObject(this.searchRightRow)) {
-        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-      this.form.itemSearchFieldList.unshift(this.searchRightRow);
-      this.form.itemKeyFieldList = this.form.itemKeyFieldList.filter(item => item.id !== this.searchRightRow.id)
-      this.searchRightRow = {};
-    },
-
-    // 鎼滅储鑷姩绌挎妗嗗彸绉�
-    searchRightTransferClick() {
-      if (func.isEmptyObject(this.searchLeftRow)) {
-        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
-        return;
-      }
-
-      this.form.itemKeyFieldList.push(this.searchLeftRow);
-
-      this.form.itemSearchFieldList = this.form.itemSearchFieldList.filter(item => item.id !== this.searchLeftRow.id);
-      this.searchLeftRow = {};
-    },
-
-    // 璁剧疆鍒楀琛岀偣鍑�
-    itemFileWidthRowClick(row) {
-      this.itemFileWidthRow = row;
-      this.form.itemFileWidthSelect = row.key;
-      this.form.itemWidth = row.value;
-    },
-
-    // 鍒椾笅鎷塩hange
-    itemFileWidthChange(val) {
-      this.itemFileWidthChangeVal = val;
-    },
-
-    // 璁剧疆瀹藉害
-    widthSetUpClickHandler() {
-      if (this.form.itemFileWidthSelect) {
-        const item = this.form.itemFieldWidthList.find(item => item.key === this.form.itemFileWidthSelect);
-        item.value = this.form.itemWidth;
-      }
+    // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛鏌ヨ
+    getSearchSelectList() {
+      getObjTypeQTs({btName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name}).then(res => {
+        this.searchQtNameList = res.data.data;
+      })
     },
 
     // 鑾峰彇鍙屽嚮鎿嶄綔鏁版嵁
@@ -715,36 +523,43 @@
 
     // 琛ㄦ牸瀵硅瘽妗嗕繚瀛�
     dialogSaveClickHandler() {
-      const paramsForm = {...this.form};
-      paramsForm.itemSelectOutFieldList = this.form.itemSelectOutFieldList.map(item => item.id); // 鍙娇鐢ㄥ瓧娈�
-      paramsForm.itemOutFieldList = this.form.itemOutFieldList.map(item => item.id); // 闇�瑕佷娇鐢ㄥ瓧娈�
-      paramsForm.itemSearchFieldList = this.form.itemSearchFieldList.map(item => item.id); // 鍙緵鎼滅储瀛楁
-      paramsForm.itemKeyFieldList = this.form.itemKeyFieldList.map(item => item.id); // 闇�瑕佷娇鐢ㄥ瓧娈�
-      paramsForm.itemImgWH = `${this.itemImgWidth},${this.itemImgHeight}`;
-      const params = {
-        id: this.form.editNodeId,
-        prm: {
-          formQtName: '',
-          prmItemList: [
-            paramsForm
-          ],
-        },
-        typeFlag: this.treeRadio,
-        typeFlagText: this.treeRadio === '0' ? "涓氬姟绫诲瀷鐨勮〃鍗�" : '閾炬帴绫诲瀷鐨勮〃鍗�',
-        typeName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name, // 涓氬姟绫诲瀷鍚� or 閾炬帴绫诲瀷鍚�
-        viName: this.form.viName,
-        viType: 0,
-        viTypeText: "琛ㄦ牸"
-      }
-      savePortalVI(params).then(res => {
-        // console.log(params);
-        if (res.data.code === 200) {
-          this.$message.success(res.data.obj);
-          // this.closeDialog();
-          this.$emit('updataTable');
-          this.visible = false;
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          const paramsForm = {...this.form};
+          paramsForm.itemSelectOutFieldList = this.form.itemSelectOutFieldList.map(item => item.id); // 鍙娇鐢ㄥ瓧娈�
+          paramsForm.itemOutFieldList = this.form.itemOutFieldList; // 闇�瑕佷娇鐢ㄥ瓧娈�
+          paramsForm.itemSearchFieldList = this.form.itemSearchFieldList.map(item => item.id); // 鍙緵鎼滅储瀛楁
+          paramsForm.itemKeyFieldList = this.form.itemKeyFieldList; // 闇�瑕佷娇鐢ㄥ瓧娈�
+          paramsForm.itemImgWH = `${this.itemImgWidth},${this.itemImgHeight}`;
+          const params = {
+            id: this.form.editNodeId,
+            prm: {
+              formQtName: '',
+              prmItemList: [
+                paramsForm
+              ],
+            },
+            typeFlag: this.treeRadio,
+            typeFlagText: this.treeRadio === '0' ? "涓氬姟绫诲瀷鐨勮〃鍗�" : '閾炬帴绫诲瀷鐨勮〃鍗�',
+            typeName: this.treeRadio === '0' ? this.TreeNodeRow.id : this.TreeNodeRow.name, // 涓氬姟绫诲瀷鍚� or 閾炬帴绫诲瀷鍚�
+            viName: this.form.viName,
+            viType: 0,
+            viTypeText: "琛ㄦ牸"
+          }
+          savePortalVI(params).then(res => {
+            // console.log(params);
+            if (res.data.code === 200) {
+              this.$message.success(res.data.obj);
+              // this.closeDialog();
+              this.$emit('updataTable');
+              // this.$refs.form.clearValidate();
+              this.visible = false;
+            }
+          })
+        } else {
+          return false;
         }
-      })
+      });
     }
   }
 }
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
index e1b47da..9165813 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue
@@ -204,8 +204,9 @@
         this.$refs.formDialog.getTreeList();
       } else {
         this.$refs.tableDialog.visible = true;
-        this.$refs.tableDialog.getDbList();
-        this.$refs.tableDialog.getSearchSelectList();
+        this.$refs.tableDialog.getDbList(); // 鍙屽嚮鎿嶄綔涓嬫媺鎺ュ彛
+        this.$refs.tableDialog.getSearchSelectList(); // 閫夋嫨琛ㄥ崟涓嬫媺鎺ュ彛
+        this.$refs.tableDialog.getFormSelect(); // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛
       }
     },
 
@@ -329,14 +330,18 @@
             // 鏇存柊琛ㄥ崟
             this.$refs.tableDialog.form = {
               ...prmItem,
+              itemFieldWidthList:prmItem.itemFieldWidthList.map(item => {
+                return{
+                  ...item,
+                  $cellEdit: true,
+                }
+              }),
               viName: res.data.obj.viName,
               editNodeId: row.id,
-              itemOutFieldList: (prmItem.itemOutFieldList || []).map(item => ({id: item})),
+              itemOutFieldList: (prmItem.itemOutFieldList || []),
               itemSearchFieldList: (prmItem.itemSearchFieldList || []).map(item => ({id: item})),
-              itemKeyFieldList: (prmItem.itemKeyFieldList || []).map(item => ({id: item})),
-              searchLabel: prmItem.itemSeniorQueryCols || '',
-              searchNumber: prmItem.itemSeniorQueryColsCounts || '1',
-              searchSql: prmItem.itemQuerySql || '',
+              itemKeyFieldList: (prmItem.itemKeyFieldList || []),
+              searchNumber: '1',
               itemFileWidthSelect: (prmItem.itemFieldWidthList && prmItem.itemFieldWidthList.length > 0) ? prmItem.itemFieldWidthList[0].key : '',
               itemWidth: (prmItem.itemFieldWidthList && prmItem.itemFieldWidthList.length > 0) ? prmItem.itemFieldWidthList[0].value : '250'
             };
@@ -345,9 +350,6 @@
             const [width = '0', height = '0'] = (prmItem.itemImgWH || '0,0').split(',');
             this.$refs.tableDialog.itemImgWidth = width;
             this.$refs.tableDialog.itemImgHeight = height;
-
-            // 鍙屽嚮鎿嶄綔鑾峰彇鏁版嵁鏂规硶
-            this.$refs.tableDialog.getDbList();
 
             // 鏄剧ず瀵硅瘽妗�
             this.$refs.tableDialog.visible = true;
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
index 00148aa..f4af7ad 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
@@ -996,6 +996,7 @@
         this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�');
         return;
       }
+      console.log(this.selectList);
       this.btnDesignVisible = true;
       this.formBtnOid = this.selectList[0].id;
       this.getTabBtnTree();
@@ -1121,7 +1122,8 @@
       const params = this.saveType === 'add' ? {
         ...this.basicForm,
         parentId: this.nodeTreeRow.oId === 'parentNode' ? '' : this.nodeTreeRow.parentId,
-        buttonParams: bottomParams
+        buttonParams: bottomParams,
+        tableOId:this.selectList[0].id
       } : {
         ...this.basicForm,
         buttonParams: bottomParams

--
Gitblit v1.9.3