ludc
2025-01-15 c659560c7ee8d8f8278b938421de13bf65d1e1b1
Merge remote-tracking branch 'origin/master'
已修改27个文件
已添加4个文件
1385 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLIconDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconVO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PlatformClientUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebIconServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/processTemplate/define.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/processTemplate/type.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/store/modules/user.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/styles/ui.scss 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/formDialog.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/index.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/index.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/log/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/wel/adminIndex.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLIconDTO.java
@@ -2,6 +2,8 @@
import lombok.Data;
import java.util.Date;
/**
 * @Description å›¾æ ‡ä¼ è¾“对象
 * @Author dangsn
@@ -38,4 +40,21 @@
     * å›¾æ ‡åˆ†ç»„
     */
    private String groups;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private long plCreateTime ;
    /**
     * åˆ›å»ºäºº
     */
    private String plCreateUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    private long plModifyTime ;
    /**
     * ä¿®æ”¹äºº
     */
    private String plModifyUser;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLIconVO.java
@@ -43,4 +43,21 @@
     * å›¾æ ‡æ‰€å±žåº“
     */
    private String lable;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private long plCreateTime ;
    /**
     * åˆ›å»ºäºº
     */
    private String plCreateUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    private long plModifyTime ;
    /**
     * ä¿®æ”¹äºº
     */
    private String plModifyUser;
}
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java
@@ -290,6 +290,39 @@
    }
    /**
     * ä¿®æ”¹ç”¨æˆ·å¤´åƒ
     * @param file æ–‡ä»¶
     * @return
     */
    @RequestMapping(value = "/updateUserPhoto",method = RequestMethod.POST)
    public BaseResult updateUserPhoto(MultipartFile file){
        try {
            return userQueryService.updateUserPhoto(file) ? BaseResult.success("用户头像修改成功!"):BaseResult.fail("用户头像修改失败!");
        }catch (Exception e){
            e.printStackTrace();
            String exceptionMessage = "修改用户头像时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            return BaseResult.fail(exceptionMessage);
        }
    }
    /**
     * èŽ·å–ç”¨æˆ·å¤´åƒ
     * @param response
     * @return
     */
    @RequestMapping(value = "/getUserPhoto",method = RequestMethod.GET)
    public void getUserPhoto(HttpServletResponse response){
        try {
            ControllerUtil.writeFileToResponse(response,userQueryService.getUserPhoto());
        } catch (Exception e) {
            throw new VciBaseException(e.getMessage(),new String[0],e);
        }
    }
    /**
     * åˆ é™¤ç”¨æˆ·
     * @param ids
     * @return
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java
@@ -5,6 +5,7 @@
import com.vci.pagemodel.SmUserVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.Collection;
@@ -283,4 +284,12 @@
     * @return
     */
    String expUser() throws PLException;
    /**
     * ä¿®æ”¹ç”¨æˆ·å¤´åƒ
     * @param file æ–‡ä»¶
     * @return
     */
    boolean updateUserPhoto(MultipartFile file) throws PLException;
    String getUserPhoto() throws PLException;
}
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -2,21 +2,27 @@
import com.vci.common.util.ThreeDES;
import com.vci.common.utility.ObjectUtility;
import com.vci.constant.FrameWorkLangCodeConstant;
import com.vci.constant.WebLangCodeConstant;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.framework.data.*;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.corba.omd.etm.EnumItem;
import com.vci.corba.omd.etm.EnumType;
import com.vci.corba.volume.VolumeServicePrx;
import com.vci.dto.SmUserDTO;
import com.vci.dto.VciFileObjectDTO;
import com.vci.enumpck.UI.OrgTypeEnum;
import com.vci.enumpck.UI.VciFileTransProtocolEnum;
import com.vci.enumpck.UserTypeEnum;
import com.vci.lcstatuspck.FileLCStatus;
import com.vci.model.SmUserDO;
import com.vci.model.VciFileDocClassifyDO;
import com.vci.model.VciFileObjectDO;
import com.vci.model.VciFileVolumeDO;
import com.vci.omd.utils.ObjectTool;
import com.vci.pagemodel.OrgDepartmentVO;
import com.vci.pagemodel.SmPasswordStrategyVO;
import com.vci.pagemodel.SmRoleVO;
import com.vci.pagemodel.SmUserVO;
import com.vci.pagemodel.*;
import com.vci.po.SmUserPO;
import com.vci.properties.OsConfig;
import com.vci.starter.poi.bo.ReadExcelOption;
@@ -24,16 +30,21 @@
import com.vci.starter.poi.bo.WriteExcelOption;
import com.vci.starter.poi.constant.ExcelLangCodeConstant;
import com.vci.starter.poi.util.ExcelUtil;
import com.vci.starter.revision.service.RevisionModelUtil;
import com.vci.starter.web.enumpck.BooleanEnum;
import com.vci.starter.web.enumpck.DataSecretEnum;
import com.vci.starter.web.enumpck.UserSecretEnum;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.*;
import com.vci.starter.web.util.*;
import com.vci.starter.web.util.Lcm.Func;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.web.dao.VciFileObjectDaoI;
import com.vci.web.properties.WebProperties;
import com.vci.web.service.*;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
@@ -42,10 +53,14 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import javax.annotation.Resource;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.constant.FrameWorkLangCodeConstant.UPLOAD_FAIL;
/**
 * ç”¨æˆ·çš„æŸ¥è¯¢ç›¸å…³çš„æœåŠ¡ï¼Œå¯ä»¥å…¼å®¹è€å¹³å°å’Œè€çš„pdm
@@ -86,6 +101,24 @@
     */
    @Autowired
    private WebPwdStrategyQueryServiceI smPwdStrategyQueryService;
    /**
     * æ–‡ä»¶çš„卷服务
     */
    @Autowired
    private VciFileVolumeServiceI vciFileVolumeServiceI;
    /**
     * ç‰ˆæœ¬å’Œå¯¹è±¡æ“ä½œç±»
     */
    @Autowired(required = false)
    private RevisionModelUtil revisionModelUtil;
    /**
     * é…ç½®å¯¹è±¡
     */
    @Autowired
    private WebProperties webProperties;
    /**
     * ä½¿ç”¨è§’色的属性查询用户时
@@ -141,6 +174,18 @@
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * æ–‡ä»¶ä¸Šä¼ ä¸šåС层
     */
    @Autowired
    private VciFileUploadServiceI vciFileUploadServiceI;
    /**
     * æ–‡ä»¶ä¿¡æ¯æ•°æ®å±‚
     */
    @Resource
    private VciFileObjectDaoI vciFileObjectMapper;
    /**
     * å¹³å°é…ç½®
@@ -390,6 +435,7 @@
        smUserVO.setLastModifier(userInfo.updateUser);
        smUserVO.setLastLoginTime(VciDateUtil.long2Date(userInfo.updateTime));
        smUserVO.setLastModifyPasswordTime(VciDateUtil.long2Date(userInfo.pwdUpdateTime));
        smUserVO.setPhoto(userInfo.photo);
        return smUserVO;
    }
@@ -1457,6 +1503,7 @@
        userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
        userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getSecretGrade());
        userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader();
        userInfo.photo = user.getPhoto()  == null ? "" : user.getPhoto();
        return userInfo;
    }
@@ -1776,6 +1823,99 @@
        ExcelUtil.writeDataToFile(excelPath, excelOption);
        return excelPath;
    }
    /**
     * ä¿®æ”¹ç”¨æˆ·å¤´åƒ
     * @param file æ–‡ä»¶
     * @return
     */
    @Override
    public boolean updateUserPhoto(MultipartFile file) throws PLException {
        //获取文件仓位置
        VciFileVolumeDO vciFileVolumeDO = vciFileVolumeServiceI.getUploadVolume();
        String volumeName = vciFileVolumeDO.getName();
        VolumeServicePrx volumnCorbaService = platformClientUtil.getVolumeService(volumeName);
        if(volumnCorbaService == null){
            throw new VciBaseException("没有获取到卷服务");
        }
        InputStream in = null;
        String path = vciFileVolumeDO.getId() + ":/userphoto/" + WebUtil.getSessionInfo().getUserOid() + "." +
                FilenameUtils.getExtension(file.getOriginalFilename());
        UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(WebUtil.getSessionInfo().getUserOid());
        if(StringUtils.isNotBlank(userInfo.photo)){
            volumnCorbaService.deleteFile(userInfo.photo);
        }
        try{
            long currentTime = volumnCorbaService.getCurrrentTimeMillions();
            in = file.getInputStream();
            long fileSize = file.getSize();
            int blockSize = webProperties.getBlockLength()*1024;
            byte[] buffer = new byte[blockSize];
            long temp =0L;
            for(temp = 0L; temp < fileSize - (long)blockSize; temp += (long)blockSize) {
                in.read(buffer, 0, blockSize);
                volumnCorbaService.receiveFile(path, buffer, temp, currentTime, fileSize);
            }
            int remainSize = (int)(fileSize - temp);
            buffer = new byte[remainSize];
            in.read(buffer, 0, remainSize);
            volumnCorbaService.receiveFile(path, buffer, temp, currentTime, fileSize);
        }catch(IOException e){
            throw new VciBaseException("读取文件[" + file.getName() + "]出现了错误," + e.getMessage() ,new String[0],e);
        }catch(Exception e){
            throw new VciBaseException("处理上传文件[" + file.getName() + "]出现了错误," + e.getMessage() ,new String[0],e);
        }finally {
            if(in!=null){
                try {
                    in.close();
                } catch (IOException e) {
                }
            }
        }
        userInfo.photo = path;
        boolean b = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null));
        if(!b){
            return false;
        }
        return true;
    }
    @Override
    public String getUserPhoto() throws PLException {
        //获取文件仓位置
        VciFileVolumeDO vciFileVolumeDO = vciFileVolumeServiceI.getUploadVolume();
        String volumeName = vciFileVolumeDO.getName();
        VolumeServicePrx volumnCorbaService = platformClientUtil.getVolumeService(volumeName);
        if(volumnCorbaService == null){
            throw new VciBaseException("没有获取到卷服务");
        }
        UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(WebUtil.getSessionInfo().getUserOid());
        String serverPath = userInfo.photo;
        String tempFilePath = LocalFileUtil.getDefaultTempFolder() + File.separator+serverPath.substring(serverPath.lastIndexOf("/") + 1);
        try {
            FileOutputStream destFileOs = new FileOutputStream(tempFilePath);
            long blockSize = webProperties.getBlockLength()*1024;
            if(blockSize> Integer.MAX_VALUE){
                blockSize = Integer.MAX_VALUE;
            }
            long fileSize = volumnCorbaService.getFileSize(serverPath);
            long temp = 0;
            while (fileSize - temp > blockSize) {
                destFileOs.write(volumnCorbaService.sendFile(serverPath, temp));
                temp += blockSize;
            }
            destFileOs.write(volumnCorbaService.sendFile(serverPath, temp));
            destFileOs.flush();
            destFileOs.close();
        } catch (FileNotFoundException e) {
            throw new VciBaseException("要写入的文件没有找到",new String[]{tempFilePath},e);
        } catch (IOException e) {
            throw new VciBaseException("写入文件出错" + e.getMessage(),new String[]{tempFilePath},e);
        } catch (Exception e){
            throw new VciBaseException("卷服务传输文件时出现了错误" + e.getMessage(),new String[0],e);
        }
        return tempFilePath;
    }
    //根据子部门查询所属的父类部门,并拼接成字符串形式,返回
    public String getDeptObjectAllByDeptId(DeptInfo obj) throws PLException {
        String fetchDepName = "";
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PlatformClientUtil.java
@@ -12,6 +12,7 @@
import com.vci.corba.omd.ltm.LinkTypeServicePrx;
import com.vci.corba.omd.qtm.QTDServicePrx;
import com.vci.corba.omd.stm.StatePoolServicePrx;
import com.vci.corba.omd.tim.TypeIndexServicePrx;
import com.vci.corba.omd.vrm.VersionRuleServicePrx;
import com.vci.corba.pllog.LogServicePrx;
import com.vci.corba.portal.PortalServicePrx;
@@ -115,6 +116,14 @@
   }
    /**
     * èŽ·å–ç±»åž‹ç´¢å¼•ç®¡ç†æœåŠ¡
     * @return æœåŠ¡çš„å¯¹è±¡
     */
    public TypeIndexServicePrx getTypeIndexService() throws PLException {
        return WebServiceProvider.getOMDService().getTypeIndexService();
    }
    /**
     * èŽ·å–ç”Ÿå‘½å‘¨æœŸçš„æœåŠ¡
     * @return ç”Ÿå‘½å‘¨æœŸçš„æœåŠ¡å¯¹è±¡
     */
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -19,6 +19,7 @@
import com.vci.corba.omd.lcm.LifeCycle;
import com.vci.corba.omd.ltm.LinkType;
import com.vci.corba.omd.stm.StatePool;
import com.vci.corba.omd.tim.TypeIndexDef;
import com.vci.corba.omd.vrm.VersionRule;
import com.vci.dto.OsBtmTypeDTO;
import com.vci.model.IndexObject;
@@ -1285,29 +1286,18 @@
        if (Func.isEmpty(conditionMap)) {
            return new ArrayList<>();
        }
        List<String> indexNameList = new ArrayList<String>();
        QueryTemplate qtl = new QueryTemplate();
        List<String> list = new ArrayList<String>();
        list.add("*");
        qtl.setBtmType("indexobject");
        qtl.setClauseList(list);
        qtl.setId("p");
        qtl.setType("btm");
        qtl.setRightFlag(false);
        Condition condition = OQTool.getCondition(conditionMap);
        qtl.setCondition(condition);
        //HashMap<String, String> indexmap = new HashMap<String, String>();
        BusinessObject findBTMObjects[] = platformClientUtil.getQueryService().findBTMObjects(qtl.getId(), OQTool.qtTOXMl(qtl).asXML());
        List<IndexObject> indexObjects = new ArrayList<>();
        for (int i = 0; i < findBTMObjects.length; i++) {
            BusinessObject findBTMObject = findBTMObjects[i];
        TypeIndexDef[] typenames = ClientServiceProvider.getOMDService().getTypeIndexService().getBTIndexDefs(conditionMap.get("typename"));
        for (int i = 0; i < typenames.length; i++) {
            TypeIndexDef typename = typenames[i];
            IndexObject indexObject = new IndexObject();
            indexObject.setOid(findBTMObject.oid);
            indexObject.setDescription(findBTMObject.description);
            indexObject.setCreateTime(Func.format(new Date(findBTMObject.createTime), DateUtil.PATTERN_DATE));
            indexObject.setIndexName(ObjectTool.getBOAttributeValue(findBTMObject, "indexname"));
            indexObject.setTypeName(ObjectTool.getBOAttributeValue(findBTMObject, "typename"));
            indexObject.setAttrNames(ObjectTool.getBOAttributeValue(findBTMObject, "attrname"));
            indexObject.setOid(typename.oid);
            indexObject.setDescription(typename.description);
            indexObject.setCreateTime(Func.format(new Date(typename.createTime), DateUtil.PATTERN_DATE));
            indexObject.setIndexName(typename.name);
            indexObject.setTypeName(typename.typeName);
            indexObject.setAttrNames(typename.attributes);
            indexObjects.add(indexObject);
        }
        return indexObjects;
@@ -1323,11 +1313,8 @@
    @Override
    public boolean delIndex(String btmName, String indexName) throws PLException {
        VciBaseUtil.alertNotNull(btmName, "业务类型名", indexName, "索引名");
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("typename", btmName);
        conditionMap.put("indexname", indexName);
        List<IndexObject> bo2 = getIndexByCondition(conditionMap);
        if (bo2 != null && bo2.size() > 0) {
        TypeIndexDef[] typeIndexDef= ClientServiceProvider.getOMDService().getTypeIndexService().getBTIndexDefs(btmName);
        if( typeIndexDef != null && typeIndexDef.length > 0 ){
            String[] indexAttr = {indexName};
            boolean alterFlag = platformClientUtil.getBtmService().dropIndex(btmName, indexAttr);
@@ -1335,10 +1322,12 @@
            if (!alterFlag) {
                return false;
            }
            for (int i = 0; i < bo2.size(); i++) {
                String oid = bo2.get(i).getOid();
                BusinessObject bo = platformClientUtil.getBOFactoryService().readBusinessObject(oid, "indexobject");
                platformClientUtil.getBOFactoryService().deleteBusinessObject(bo, 1);
            for (int i = 0; i < typeIndexDef.length; i++) {
                if(!typeIndexDef[i].name.equals(indexName)) {
                    continue;
                }
                String oid = typeIndexDef[i].oid;
                ClientServiceProvider.getOMDService().getTypeIndexService().delIndexDef(oid);
            }
        }
        return true;
@@ -1356,49 +1345,50 @@
        String btmName = indexObjectList.get(0).getTypeName();
        String indexNames = indexObjectList.stream().map(IndexObject::getIndexName).collect(Collectors.joining(","));
        String[] oldindexAttr = {indexNames};
        BusinessObject bo;
        List<BusinessObject> boList = new ArrayList<>();
        //先查询当前添加索引是否已经存在,如果存在就先删除再新增实现替换操作
        Map<String, String> conditionMap = new HashMap<>();
        conditionMap.put("typename", btmName);
        //先这样处理,前端现在只做了单次保存,所以不用in
        conditionMap.put("indexname", indexNames);
        List<IndexObject> indexObjects = getIndexByCondition(conditionMap);
        if (indexObjects != null && indexObjects.size() > 0) {
            //索引不存在时删除就会报错索引不存在,所以这里有索引才去删除
            boolean b = platformClientUtil.getBtmService().dropIndex(btmName, oldindexAttr);
            if (b) {
                for (int i = 0; i < indexObjects.size(); i++) {
                    String oid = (String) indexObjects.get(i).getOid();
                    bo = platformClientUtil.getBOFactoryService().readBusinessObject(oid, "indexobject");
                    platformClientUtil.getBOFactoryService().deleteBusinessObject(bo, 1);
                }
            }
        }
//        BusinessObject bo;
//        List<BusinessObject> boList = new ArrayList<>();
//        //先查询当前添加索引是否已经存在,如果存在就先删除再新增实现替换操作
//        Map<String, String> conditionMap = new HashMap<>();
//        conditionMap.put("typename", btmName);
//        //先这样处理,前端现在只做了单次保存,所以不用in
//        conditionMap.put("indexname", indexNames);
        TypeIndexDef[] typeIndexDefs = platformClientUtil.getTypeIndexService().getBTIndexDefs(btmName);
        if(typeIndexDefs!=null && typeIndexDefs.length>0){
            boolean hasIndex = false;
            for(int i = 0; i < typeIndexDefs.length; i ++){
                if(!typeIndexDefs[i].name.equals(indexNames)) {
                    continue;
                }
                String oid = typeIndexDefs[i].oid;
                platformClientUtil.getTypeIndexService().delIndexDef(oid);
                hasIndex = true;
            }
            //索引不存在时删除就会报错索引不存在,所以这里有索引才去删除
            if(hasIndex) {
                platformClientUtil.getBtmService().dropIndex(btmName, oldindexAttr);
            }
        }
        StringBuilder sb = new StringBuilder();
        List<TypeIndexDef> saveDefs = new ArrayList<>();
        for (int i = 0; i < indexObjectList.size(); i++) {
            IndexObject indexObject = indexObjectList.get(i);
            //bo = platformClientUtil.getBOFService().initBusinessObject("indexobject");
            bo = boService.createCBOByBtmName("indexobject");
            List<AttributeValue> attributeValues = new ArrayList<>();
            attributeValues.add(new AttributeValue("typename", btmName));
            attributeValues.add(new AttributeValue("indexname", indexObject.getIndexName()));
            attributeValues.add(new AttributeValue("attrname", indexObject.getAttrNames()));
            bo.newAttrValList = attributeValues.toArray(new AttributeValue[attributeValues.size()]);
            bo.description = indexObject.getDescription();
            String[] indexAttr = {indexObject.getIndexName(), indexObject.getAttrNames()};
            //给指定业务类型的指定属性创建索引
            TypeIndexDef saveDef = new TypeIndexDef();
            saveDef.typeName = indexObjectList.get(i).getTypeName();
            saveDef.name = indexObjectList.get(i).getIndexName();
            saveDef.description = indexObjectList.get(i).getDescription();
            saveDef.attributes = indexObjectList.get(i).getAttrNames();
            sb.append(indexObjectList.get(i).getAttrNames());
            if(i<indexObjectList.size()-1){
                sb.append(",");
            }
            saveDefs.add(saveDef);
        }
        String[] indexAttr = {indexObjectList.get(0).getIndexName(),sb.toString()};
            boolean alterFlag = platformClientUtil.getBtmService().addIndex(btmName, indexAttr);
            //索引创建成功之后,需要存储成功索引到索引表中
            if (!alterFlag) {
                return false;
            }
            boList.add(bo);
            //添加索引信息到索引的业务表中
            //platformClientUtil.getBOFactoryService().createBusinessObject(bo,false,false);
        }
        //添加索引信息到索引的业务表中
        platformClientUtil.getBOFactoryService().batchCreateBusinessObject(boList.toArray(new BusinessObject[boList.size()]), false, false);
        ClientServiceProvider.getOMDService().getTypeIndexService().saveIndexDefs(saveDefs.toArray(new TypeIndexDef[saveDefs.size()]));
        return true;
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebIconServiceImpl.java
@@ -81,6 +81,7 @@
                    icon.content = iconContent;
                    icon.type = type;
                    icon.groups = groups;
                    icon.plModifyUser = WebUtil.getCurrentUserId();
                    updateList.add(icon);
                }else{
                    PLIcon icon = new PLIcon();
@@ -89,6 +90,7 @@
                    icon.content = iconContent;
                    icon.type = type;
                    icon.groups = groups;
                    icon.plCreateUser = WebUtil.getCurrentUserId();
                    addList.add(icon);
                }
            }
@@ -121,7 +123,8 @@
        plIcon.content = iconContent;
        plIcon.type = iconDTO.getType();
        plIcon.groups = iconDTO.getGroups();
        plIcon.plCreateUser = WebUtil.getCurrentUserId();
        plIcon.plModifyUser = WebUtil.getCurrentUserId();
        try {
            PortalServicePrx portalServicePrx = platformClientUtil.getPortalService();
            portalServicePrx.savePLIcon(plIcon);
@@ -154,6 +157,9 @@
            plIcon.content = iconContent;
            plIcon.type = iconDTO.getType();
            plIcon.groups = iconDTO.getGroups();
            plIcon.plCreateUser = iconDTO.getPlCreateUser();
            plIcon.plCreateTime = iconDTO.getPlCreateTime();
            plIcon.plModifyUser = WebUtil.getCurrentUserId();
            portalServicePrx.updatePLIcon(plIcon);
        } catch (Exception e) {
            throw new RuntimeException(e);
@@ -244,6 +250,10 @@
        vo.setContent(icon.content);
        vo.setType(icon.type);
        vo.setGroups(icon.groups);
        vo.setPlCreateTime(icon.plCreateTime);
        vo.setPlCreateUser(icon.plCreateUser);
        vo.setPlModifyTime(icon.plModifyTime);
        vo.setPlModifyUser(icon.plModifyUser);
        String[] nameArr = icon.name.split(":");
        if(nameArr.length > 1){
            vo.setLable(nameArr[0]);
Source/plt-web/plt-web-ui/src/api/processTemplate/define.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
import request from '@/router/axios';
// åˆ—表查询
export function getProcessTempList(params) {
  return request({
    url: "/api/pvolumesController/getPvolumesPage",
    method: "get",
    params
  });
}
export function saveProcessTemp(params) {
  return request({
    url: "/api/pvolumesController/savePvolume",
    method: "post",
    data: params
  });
}
export function updateProcessTemp(params) {
  return request({
    url: "/api/pvolumesController/updatePvolume",
    method: "post",
    data: params
  });
}
export function deleteProcessTemp(params) {
  return request({
    url: "/api/pvolumesController/deletePvolume",
    method: "delete",
    params
  })
}
// å¯¼å‡º
export function download  (params) {
  return request({
    url: '/api/webEnumController/exportEnumTypes',
    method: 'get',
    headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},
    responseType: 'blob',
    params
  })
}
// ä¸‹è½½å¯¼å…¥æ¨¡æ¿
export function downloadTemplate  (params) {
  return request({
    url: '/api/webEnumController/downloadEnumTemplate',
    method: 'get',
    headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},
    responseType: 'blob',
    params
  })
}
// åœç”¨å¯ç”¨
export function stopProcessTemp(params) {
  return request({
    url: "/api/userQueryController/stopUsers",
    method: "post",
    params
  });
}
Source/plt-web/plt-web-ui/src/api/processTemplate/type.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
import request from '@/router/axios';
// åˆ—表查询
export function getTypeList(params) {
  return request({
    url: "/api/pvolumesController/getPvolumesPage",
    method: "get",
    params
  });
}
export function saveType(params) {
  return request({
    url: "/api/pvolumesController/savePvolume",
    method: "post",
    data: params
  });
}
export function updateType(params) {
  return request({
    url: "/api/pvolumesController/updatePvolume",
    method: "post",
    data: params
  });
}
export function deleteType(params) {
  return request({
    url: "/api/pvolumesController/deletePvolume",
    method: "delete",
    params
  })
}
Source/plt-web/plt-web-ui/src/components/PLT-basic-component/basicForm.vue
@@ -1,6 +1,6 @@
<template>
  <!--动态模板-->
  <avue-form ref="form" :option="option" v-model="form" v-loading="loading">
  <avue-form ref="basicform" :option="option" v-model="form" v-loading="loading">
    <template v-for="item in allColumn" :slot="item.prop+ ''">
      <vciWebRefer
        v-if="item.type === 'refer'"
@@ -326,7 +326,7 @@
    // è¡¨å•校验
    validate(done) {
      return new Promise((resolve) => {
        this.$refs.form.validate((valid,fields) => {
        this.$refs.basicform.validate((valid,fields) => {
          done(valid,fields);
          if (valid) {
            resolve(true);
@@ -339,13 +339,19 @@
      });
    },
    resetFields(){
      this.$refs.form.resetFields()
      this.$refs.basicform.resetFields()
    },
    clearValidate(props){
      this.$refs.form.clearValidate(props)
      this.$refs.basicform.clearValidate(props)
    },
    updateDic(prop,data){
      this.$refs.form.updateDic(prop,data)
      this.$refs.basicform.updateDic(prop,data)
    },
    dicInit(){
      this.$refs.basicform.dicInit()
    },
    getPropRef(){
      this.$refs.basicform.getPropRef()
    }
  },
};
Source/plt-web/plt-web-ui/src/store/modules/user.js
@@ -244,7 +244,6 @@
      return new Promise((resolve) => {
        getButtons().then(res => {
          const data = res.data.data;
          console.log('getButton', data)
          commit('SET_PERMISSION', data);
          resolve();
        })
Source/plt-web/plt-web-ui/src/styles/ui.scss
@@ -413,17 +413,22 @@
  display: flex;
  align-items: center;
}
/**右侧侧操作栏**/
.avue-crud__right{
  display: flex;
  align-items: center;
}
/**表内操作栏**/
.avue-crud .avue-crud__menu{
  min-height: 18px;
  display: flex;
  justify-content: space-around;
  justify-content: flex-start;
}
.avue-crud .avue-crud__menu .el-button{
}
.avue-crud .avue-crud__menu .el-button--text{
  padding: 2px 6px;
  padding: 2px 3px;
  display: flex;
}
.avue-crud .avue-crud__menu .el-button--text > span {
@@ -594,7 +599,7 @@
  font-size: 12px !important;
  width: 12px !important;
  height: 12px !important;
  margin-right: 6px;
  margin-right: 2px;
}
.el-table td.el-table__cell div.iconShow{
@@ -602,7 +607,7 @@
  width: 14px !important;
  height: 14px !important;
  margin-top: -1px;
  margin-right: 3px;
  margin-right: 1px;
}
/*
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
@@ -516,8 +516,8 @@
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="addSaveHandler">ç¡® å®š</el-button>
        <el-button @click="addEscHandler">取 æ¶ˆ</el-button>
        <el-button size="small" type="primary" @click="addSaveHandler">ç¡® å®š</el-button>
        <el-button size="small" @click="addEscHandler">取 æ¶ˆ</el-button>
      </span>
    </el-dialog>
    <!--导入    -->
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -319,8 +319,8 @@
        </avue-crud>
      </div>
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="addDialogSavaHandler">ç¡® å®š</el-button>
         <el-button @click="addDialogClose">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="addDialogSavaHandler">ç¡® å®š</el-button>
         <el-button size="small" @click="addDialogClose">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
@@ -350,8 +350,8 @@
      >
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="dialogAttrAddClickHandler">ç¡® å®š</el-button>
         <el-button @click="dialogAttrClose">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="dialogAttrAddClickHandler">ç¡® å®š</el-button>
         <el-button size="small" @click="dialogAttrClose">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
@@ -394,8 +394,8 @@
        :table-loading="conCheckLoading">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="repairClickHandler">ä¿® å¤</el-button>
         <el-button @click="conCheckVisible = false">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="repairClickHandler">ä¿® å¤</el-button>
         <el-button size="small" @click="conCheckVisible = false">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
@@ -459,8 +459,8 @@
        </span>
      </el-dialog>
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="indexClickAddHandler">保 å­˜</el-button>
         <el-button @click="indexDialogClose">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="indexClickAddHandler">保 å­˜</el-button>
         <el-button size="small" @click="indexDialogClose">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
@@ -114,8 +114,8 @@
            </el-row>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button type="primary" @click="rowSaveHandler">ç¡® å®š</el-button>
            <el-button @click="dialogVisible = false">取 æ¶ˆ</el-button>
            <el-button size="small" type="primary" @click="rowSaveHandler">ç¡® å®š</el-button>
            <el-button size="small" @click="dialogVisible = false">取 æ¶ˆ</el-button>
          </span>
        </el-dialog>
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
@@ -210,7 +210,6 @@
                    prop="name">
                  </el-table-column>
                  <el-table-column
                    fixed="right"
                    label="操作"
                    width="60">
                    <template slot-scope="scope">
@@ -251,7 +250,6 @@
                    prop="name">
                  </el-table-column>
                  <el-table-column
                    fixed="right"
                    label="操作"
                    width="60">
                    <template slot-scope="scope">
@@ -296,8 +294,8 @@
        </avue-crud>
      </div>
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="addDialogSavaHandler">ç¡® å®š</el-button>
         <el-button @click="addDialogClose">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="addDialogSavaHandler">ç¡® å®š</el-button>
         <el-button size="small" @click="addDialogClose">取 æ¶ˆ</el-button>
      </span>
      <!-- å±žæ€§æ± åˆ—表 -->
@@ -326,8 +324,8 @@
        >
        </avue-crud>
        <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="dialogAttrAddClickHandler">ç¡® å®š</el-button>
         <el-button @click="dialogAttrClose">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="dialogAttrAddClickHandler">ç¡® å®š</el-button>
         <el-button size="small" @click="dialogAttrClose">取 æ¶ˆ</el-button>
        </span>
      </el-dialog>
    </el-dialog>
@@ -347,8 +345,8 @@
        :table-loading="conCheckLoading">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="conCheckVisible = false">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="repairClickHandler">ä¿® å¤</el-button>
         <el-button size="small" @click="conCheckVisible = false">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="repairClickHandler">ä¿® å¤</el-button>
        </span>
    </el-dialog>
@@ -374,8 +372,8 @@
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="bizTypeVisible = false">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="bizTypeAddHandler">ç¡® å®š</el-button>
         <el-button size="small" type="primary" @click="bizTypeAddHandler">ç¡® å®š</el-button>
         <el-button size="small" @click="bizTypeVisible = false">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue
@@ -97,8 +97,8 @@
        </el-row>
      </el-form>
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="addSaveHandler">ç¡® å®š</el-button>
         <el-button @click="visibleCloseHandler">取 æ¶ˆ</el-button>
         <el-button size="small" type="primary" @click="addSaveHandler">ç¡® å®š</el-button>
         <el-button size="small" @click="visibleCloseHandler">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/formDialog.vue
@@ -9,7 +9,7 @@
             width="1620px"
             @close="cancelDialog">
    <div style="min-height: 665px;max-height: 85vh;padding-bottom: 50px;">
      <basic-form key="linkQueryForm" ref="form"
      <basic-form key="businessQueryForm" ref="form"
                  :formData="form"
                  :formItems="formItems"
                  :span="4"
@@ -226,11 +226,7 @@
          return false;
        },
        allowDrag: (dropNode) => {
          if (dropNode.data.attrs && dropNode.data.attrs.length > 0) {
            return false;
          } else {
            return true;
          }
        },
        props: {
          label: 'name',
@@ -299,7 +295,6 @@
      this.$refs.form.validate((valid) => {
        if (valid) {
          const formData = this.initFormData();
          console.log(formData)
          btmSave(formData).then(res => {
            if (res.data.success) {
              this.$message.success("保存成功");
@@ -369,7 +364,7 @@
      this.orderFieldList.unshift({
        id: data.row.orderField
      });
      this.tableFormOption.column[0].dicData = this.orderFieldList
      this.$refs.tableForm.updateDic('orderField',this.orderFieldList);
    },
    //获取排序设置中所有排序字段
    getAllAttr() {
@@ -426,10 +421,7 @@
    },
    businessQueryDefineChange(data) {
      if (data.value) {
        this.businessTreeData = [{
          name: data.value,
          attrs: data.item.attrs
        }]
        this.businessTreeData = [data.item]
      }
    },
    // å¼€å§‹æ‹–拽树节点事件
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/index.vue
@@ -48,11 +48,6 @@
                    @row-click="rowClick"
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px">
        </avue-crud>
        <form-dialog ref="formRef" @refresh="getTemp"></form-dialog>
        <!--导入    -->
        <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入"
                     @updata="uploadCallBack"></upload-file>
        <div>
          <fieldset>
            <legend>&nbsp;查询条件&nbsp;</legend>
@@ -65,6 +60,11 @@
            ></form-query-dialog>
          </fieldset>
        </div>
        <!--添加 ä¿®æ”¹å¼¹çª—-->
        <form-dialog ref="formRef" @refresh="getTemp"></form-dialog>
        <!--导入    -->
        <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入"
                     @updata="uploadCallBack"></upload-file>
      </basic-container>
    </el-main>
@@ -125,7 +125,7 @@
        selection: true,
        menu: false,
        height: "auto",
        calcHeight: 300,
        calcHeight: 305,
        tip: false,
        header:false,
        column: [{
@@ -197,9 +197,17 @@
    },
    // æ ‘点击
    nodeClick(row) {
      if(row.oid=="topNode"){
        this.nodeRow = null;
        this.crudData=[];
        this.queryCondition=[];
        this.queryTree={};
        this.levelFlag=0;
      }else{
      this.nodeRow = row;
      this.tableLoading = true;
      this.getTemp();
      }
    },
    //模板列表数据
    getTemp() {
@@ -319,6 +327,9 @@
  .el-scrollbar__wrap {
    overflow: auto !important;
  }
  .el-main .avue-crud .avue-crud__body .el-card__body .el-form .el-table--small{
    min-height: 300px;
  }
}
fieldset {
  padding: 10px 6px;
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue
@@ -2,7 +2,7 @@
  <el-dialog v-dialogDrag
             :title="dialog.title"
             :visible.sync="dialog.showDialog"
             width="1620px"
             width="1650px"
             :append-to-body="true"
             class="avue-dialog"
             :destroy-on-close="true"
@@ -124,7 +124,7 @@
        prop: 'qtName',
        type: 'input',
        span:4.5,
        labelWidth: 100,
        labelWidth: 110,
        rules: [{
          required: true,
          message: "请输入查询模板名称",
@@ -143,13 +143,35 @@
        }, {
          label: '反向',
          value: 'opposite'
        }]
        }],
        control: (val, form) => {
          const dicData=this.getDicData(val);
          this.form.btmType=dicData[0].value
          return {
            btmType: {
              dicData: dicData
            }
          };
        }
      },{
        label: '业务类型',
        prop: 'btmType',
        type: 'select',
        labelWidth:110,
        dicData: []
        clearable:false,
        rules: [{
          required: true,
          message: "请选择业务类型",
          trigger: "blur"
        }],
        dicData: [],
        change: ({ value, column, item, dic }) => {
          this.form.btmType=value;
          if(value){
            this.getAllAttr();
            this.getTemp(value,false);
          }
        },
      }, {
        label: '版本版次',
        prop: 'version',
@@ -286,11 +308,7 @@
          return false;
        },
        allowDrag: (dropNode) => {
          if (dropNode.data.attrs && dropNode.data.attrs.length>0) {
            return false;
          } else {
            return true;
          }
        },
        props:{
          label:'name',
@@ -313,54 +331,7 @@
    };
  },
  watch: {
    //方向
    'form.direction': {
      handler(val) {
        if(val=='positive'){
          //正向
          const dicData=this.treeData.btmItemsTo.map(item=>{
            return {
              label: item,
              value: item
            }
          })
          dicData.push({
            label: '所有类型',
            value: '*'
          })
          this.$refs.form.updateDic('btmType', dicData);
          this.form.btmType=dicData[0].value
          this.getAllAttr();
        }else if(val=='opposite'){
          //反向
          const dicData=this.treeData.btmItemsFrom.map(item=>{
            return {
              label: item,
              value: item
            }
          })
          dicData.push({
            label: '所有类型',
            value: '*'
          })
          this.$refs.form.updateDic('btmType', dicData);
          this.form.btmType=dicData[0].value
          this.getAllAttr();
        }
      },
      immediate: true,
    },
    //业务类型
    'form.btmType': {
      handler(val) {
        if(val && val!='*'){
          this.getTemp(val,false);
        }
      },
      immediate: true,
    }
  },
  watch: {},
  methods: {
    openDialog(btmName, title, mode, data) {
      this.dialog.title = title;
@@ -382,7 +353,11 @@
        this.queryCondition=this.selectData.queryTemplate.condition;
        this.queryTree=this.selectData.tree;
        this.form.levelFlag=this.selectData.levelFlag;
        const dicData=this.getDicData(this.form.direction);
        this.formItems[2].dicData=dicData;
      } else {
        this.form.direction='positive';
        this.selectData = {};
        this.orderInfoList = [];
        this.queryCondition=[];
@@ -390,11 +365,39 @@
          connector:'并且',
          child:[]
        };
        const dicData=this.getDicData(this.form.direction);
        this.formItems[2].dicData=dicData;
        this.form.btmType=dicData[0].value;
      }
      this.dialog.showDialog = true;
      this.treeOption.defaultExpandedKeys=[data.treeData.label]
      this.getTemp(data.treeData.label, true)
    },
    //获取业务类型下拉数据
    getDicData(directionVal){
      let dicData=[];
      if(directionVal=='positive'){
        //正向
        dicData=this.treeData.btmItemsTo.map(item=>{
          return {
            label: item,
            value: item
          }
        })
      }else if(directionVal=='opposite'){
        //反向
        dicData=this.treeData.btmItemsFrom.map(item=>{
          return {
            label: item,
            value: item
          }
        })
      }
      dicData.push({
        label: '所有类型',
        value: '*'
      })
      return dicData;
    },
    cancelDialog() {
      this.dialog.loading = false;
@@ -495,7 +498,7 @@
      this.orderFieldList.unshift({
        id: data.row.orderField
      });
      this.tableFormOption.column[0].dicData= this.orderFieldList
      this.$refs.tableForm.updateDic('orderField',this.orderFieldList);
    },
    //获取排序设置中所有排序字段
    getAllAttr() {
@@ -559,18 +562,12 @@
    },
    linkQueryDefineChange(data) {
      if (data.value) {
        this.linkTreeData = [{
          name: data.value,
          attrs: data.item.attrs
        }]
        this.linkTreeData = [ data.item]
      }
    },
    businessQueryDefineChange(data) {
      if (data.value) {
        this.businessTreeData = [{
          name: data.value,
          attrs: data.item.attrs
        }]
        this.businessTreeData = [ data.item]
      }
    },
    // å¼€å§‹æ‹–拽树节点事件
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue
@@ -13,18 +13,18 @@
              style="width: 32%;display: inline-block;text-align: right;word-break: break-all">{{ condition.clause }}</span>
        <avue-select v-model="condition.operator" :clearable="false" :dic="condition.operatorDic" :disabled="readOnly"
                     style="width: 80px;margin: 0 5px;" type="tree"></avue-select>
        <!--<el-date-picker v-if="condition.type=='VTDate'" v-model="condition.ordinaryValue" :disabled="readOnly"
                        style="width:300px;margin-right: 5px;display: inline-block;" type="date"
        <el-date-picker v-if="condition.type=='VTDate'" v-model="condition.ordinaryValue" :disabled="readOnly"
                        style="width:36%;margin-right: 5px;display: inline-block;" type="date"
                        value-format="YYYY-MM-DD">
        </el-date-picker>
        <el-date-picker v-else-if="condition.type=='VTDateTime'" v-model="condition.ordinaryValue" :disabled="readOnly"
                        style="width:300px;margin-right: 5px;display: inline-block;"
                        style="width:36%;margin-right: 5px;display: inline-block;"
                        type="datetime">
        </el-date-picker>
        <el-time-select v-else-if="condition.type=='VTTime'" v-model="condition.ordinaryValue" :disabled="readOnly"
                        style="width:300px;margin-right: 5px;display: inline-block;" value-format="HH:mm:ss">
                        style="width:36%;margin-right: 5px;display: inline-block;" value-format="HH:mm:ss">
        </el-time-select>
        <avue-input-number v-else-if="condition.type=='VTInteger'" v-model="condition.ordinaryValue"
        <!--<avue-input-number v-else-if="condition.type=='VTInteger'" v-model="condition.ordinaryValue"
                           :disabled="readOnly"
                           precision="0"
                           style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number>
@@ -34,7 +34,7 @@
                           style="width:300px;margin-right: 5px;display: inline-block;"></avue-input-number>
        <avue-input v-else v-model="condition.ordinaryValue" :disabled="readOnly" placeholder=""
                    style="width: 300px;margin-right: 5px;"></avue-input>-->
        <avue-input v-model="condition.ordinaryValue" :disabled="readOnly" placeholder=""
        <avue-input v-else v-model="condition.ordinaryValue" :disabled="readOnly" placeholder=""
                    style="width: 36%;margin-right: 5px;"></avue-input>
        <el-button v-if="!readOnly" plain size="mini" type="primary" @click="checkTemp(index)">选择查询模板</el-button>
        <el-button v-if="!readOnly" icon="el-icon-delete" size="mini" style="padding: 7px 8px" type="danger"
@@ -49,11 +49,11 @@
                 @node-click="nodeClick"></avue-tree>
    </div>
    <div v-if="!readOnly" style="text-align: right;margin-top: 10px;">
      <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="addHandler">增加逻辑</el-button>
      <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="editHandler">修改条件</el-button>
      <el-button v-if="radioForm==1" plain size="mini" type="primary" @click="delHandler">删除</el-button>
      <el-button v-show="radioForm==1" plain size="mini" type="primary" @click="addHandler">增加逻辑</el-button>
      <el-button v-show="radioForm==1" plain size="mini" type="primary" @click="editHandler">修改条件</el-button>
      <el-button v-show="radioForm==1" plain size="mini" type="primary" @click="delHandler">删除</el-button>
      <el-button plain size="mini" type="primary" @click="queryHandler">查询</el-button>
      <el-button plain size="mini" type="primary" @click="">取消</el-button>
      <!--<el-button plain size="mini" type="primary" @click="">取消</el-button>-->
    </div>
    <!--修改条件-->
@@ -155,7 +155,6 @@
<script>
import basicOption from "@/util/basic-option";
import {getAllQTs} from "@/api/queryTemplate/queryDefine";
import {getCriteria} from "@/api/queryTemplate/linkTypeQuery";
import {dateFormat} from "@/util/date"
export default {
@@ -506,7 +505,9 @@
    }
  },
  created() {
    if (!this.readOnly) {
    this.getTemp();
    }
  },
  methods: {
    // æ‹–拽到时
@@ -681,7 +682,8 @@
    //选择查询模板
    checkTemp(index) {
      if (index >= 0) {
        if (['VTInteger', 'VTDouble', 'VTLong', 'VTDateTime', 'VTDate', 'VTTime'].includes(this.conditionList[index].type)) {
        if (['VTDateTime', 'VTDate', 'VTTime'].includes(this.conditionList[index].type)) {
          this.$message.warning("该属性类型不能选择查询模板");
          return false;
        }
      }
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/index.vue
@@ -45,12 +45,8 @@
        <avue-crud  ref="crud"
                    @selection-change="selectionChange"
                    @row-click="rowClick"
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px">
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px;">
        </avue-crud>
        <form-dialog ref="formRef" @refresh="getTemp"></form-dialog>
        <!--导入    -->
        <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入"
                     @updata="uploadCallBack"></upload-file>
        <div>
          <fieldset>
            <legend>&nbsp;查询条件&nbsp;</legend>
@@ -63,6 +59,11 @@
            ></form-query-dialog>
          </fieldset>
        </div>
        <!--添加 ä¿®æ”¹å¼¹çª—-->
        <form-dialog ref="formRef" @refresh="getTemp"></form-dialog>
        <!--导入    -->
        <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入"
                     @updata="uploadCallBack"></upload-file>
      </basic-container>
    </el-main>
  </el-container>
@@ -112,7 +113,7 @@
        selection: true,
        menu: false,
        height: "auto",
        calcHeight: 300,
        calcHeight: 305,
        tip: false,
        header:false,
        column: [{
@@ -140,7 +141,11 @@
          prop: 'btmType',
          width: 130,
          formatter:function (row, value) {
            if (row.queryTemplate.btmType == '*') {
              return '所有类型'
            } else {
            return row.queryTemplate.btmType;
            }
          }
        }, {
          label: '版本版次',
@@ -163,7 +168,11 @@
          prop: 'queryISLeaf',
          width: 120,
          formatter:function (row, value) {
            return row.queryTemplate.queryISLeaf
            if(row.queryTemplate.queryISLeaf=='false' || row.queryTemplate.queryISLeaf==false){
              return '否'
            }else{
              return '是'
            }
          }
        }, {
          label: '子节点层次数',
@@ -220,9 +229,17 @@
    // æ ‘点击
    nodeClick(row) {
      if(row.oid=="topNode"){
        this.nodeRow = null;
        this.crudData=[];
        this.queryCondition=[];
        this.queryTree={};
        this.levelFlag=0;
      }else{
      this.nodeRow = row;
      this.tableLoading = true;
      this.getTemp();
      }
    },
    //获取查询模板列表
    getTemp() {
@@ -344,6 +361,9 @@
  .el-scrollbar__wrap {
    overflow: auto !important;
  }
  .el-main .avue-crud .avue-crud__body .el-card__body .el-form .el-table--small{
    min-height: 300px;
  }
}
fieldset {
Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue
@@ -13,7 +13,8 @@
      @selection-change="selectChangeHandler"
      @row-click="rowClickHandler">
      <template slot="menuLeft" slot-scope="scope">
        <el-button v-if="permissionChildrenList.UiPageLayoutAddBtn" class="button-custom-icon" plain size="small" type="primary"
        <el-button v-if="permissionChildrenList.UiPageLayoutAddBtn" class="button-custom-icon" plain size="small"
                   type="primary"
                   @click="addClickHandler">
          <icon-show :name="permissionChildrenList.UiPageLayoutAddBtn.source"></icon-show>
          å¢žåŠ 
@@ -26,15 +27,18 @@
          <icon-show :name="permissionChildrenList.UiPageLayoutDesignBtn.source"></icon-show>
          æŒ‰é’®è®¾è®¡
        </el-button>
        <el-button v-if="permissionChildrenList.UiPageLayoutEditBtn" size="small" type="text" @click="editBtnClick(scope.row)">
        <el-button v-if="permissionChildrenList.UiPageLayoutEditBtn" size="small" type="text"
                   @click="editBtnClick(scope.row)">
          <icon-show :name="permissionChildrenList.UiPageLayoutEditBtn.source"></icon-show>
          ç¼–辑
        </el-button>
        <el-button v-if="permissionChildrenList.UiPageLayoutDelBtn" size="small" type="text" @click="rowDeleteHandler(scope.row)">
        <el-button v-if="permissionChildrenList.UiPageLayoutDelBtn" size="small" type="text"
                   @click="rowDeleteHandler(scope.row)">
          <icon-show :name="permissionChildrenList.UiPageLayoutDelBtn.source"></icon-show>
          åˆ é™¤
        </el-button>
        <el-button v-if="permissionChildrenList.UiPageLayoutCloneBtn" size="small" type="text" @click="rowCloneHandler(scope.row)">
        <el-button v-if="permissionChildrenList.UiPageLayoutCloneBtn" size="small" type="text"
                   @click="rowCloneHandler(scope.row)">
          <icon-show :name="permissionChildrenList.UiPageLayoutCloneBtn.source"></icon-show>
          å…‹éš†
        </el-button>
@@ -124,19 +128,27 @@
      <el-container v-loading="dialogLoading">
        <el-header style="height: 40px !important;padding-left: 5px;">
          <div style="display: flex">
            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary" @click="addClickBtnHandler">添加
            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary"
                       @click="addClickBtnHandler">添加
            </el-button>
            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary" @click="editClickBtnHandler">修改
            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="primary"
                       @click="editClickBtnHandler">修改
            </el-button>
            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="danger" @click="delClickBtnHandler">删除
            <el-button v-show="disabledBtn" :disabled="!disabledBtn" plain size="mini" type="danger"
                       @click="delClickBtnHandler">删除
            </el-button>
            <el-button v-show="!disabledBtn" :disabled="disabledBtn" plain size="mini" icon="el-icon-check" type="success" @click="saveClickBtnHandler">保存
            <el-button v-show="!disabledBtn" :disabled="disabledBtn" icon="el-icon-check" plain size="mini"
                       type="success" @click="saveClickBtnHandler">保存
            </el-button>
            <el-button v-show="!disabledBtn" :disabled="disabledBtn" plain size="mini" icon="el-icon-close" type="danger" @click="escClickBtnHandler">取消
            <el-button v-show="!disabledBtn" :disabled="disabledBtn" icon="el-icon-close" plain size="mini"
                       type="danger" @click="escClickBtnHandler">取消
            </el-button>
            <el-button v-show="disabledBtn"  plain size="mini" type="primary" @click="changeBottomBtnHandler">调整为下级按钮</el-button>
            <el-button v-show="disabledBtn"  plain size="mini" type="primary" @click="changeTopBtnHandler">调整为上级按钮</el-button>
            <el-button v-show="disabledBtn"  plain size="mini" type="primary" @click="cloneClickBtnHandler">复制到其他组件</el-button>
            <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="changeBottomBtnHandler">调整为下级按钮
            </el-button>
            <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="changeTopBtnHandler">调整为上级按钮
            </el-button>
            <el-button v-show="disabledBtn" plain size="mini" type="primary" @click="cloneClickBtnHandler">复制到其他组件
            </el-button>
          </div>
        </el-header>
        <el-container>
@@ -183,8 +195,10 @@
                  <el-col :span="12">
                    <el-form-item label="Action:" prop="actionName">
                      <el-input v-model="basicForm.actionName" :disabled="disabledBtn" :clearable="true" @focus="actionFoucus" @clear="clearActionValue">
                        <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer" @click="actionFoucus"></i>
                      <el-input v-model="basicForm.actionName" :clearable="true" :disabled="disabledBtn"
                                @clear="clearActionValue" @focus="actionFoucus">
                        <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer"
                           @click="actionFoucus"></i>
                      </el-input>
                    </el-form-item>
                  </el-col>
@@ -204,15 +218,16 @@
                    </el-form-item>
                  </el-col>
                  <el-col :span="12" v-show="basicForm.show=='0'">
                  <el-col v-show="basicForm.show=='0'" :span="12">
                    <el-form-item label="显示方式:" prop="showType">
                      <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="text">文字</el-radio>
                      <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="image">图标</el-radio>
                      <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="textandimage">文字和图标</el-radio>
                      <el-radio v-model="basicForm.displayMode" :disabled="disabledBtn" label="textandimage">文字和图标
                      </el-radio>
                    </el-form-item>
                  </el-col>
                  <el-col :span="24" v-show="basicForm.show=='0' && (basicForm.displayMode=='image'||basicForm.displayMode=='textandimage')">
                    <el-form-item label="图标:" prop="iconPath">
                    <el-form-item :class="basicForm.displayMode==='image'?'is-required':''" label="图标:" prop="iconPath">
                      <input-icon v-model="basicForm.iconPath" :disabled="disabledBtn"></input-icon>
                    </el-form-item>
                  </el-col>
@@ -256,7 +271,8 @@
        </el-container>
      </el-container>
    </el-dialog>
    <action-dialog ref="actionDialog" @cancelAction="actionCancelHandler" @updataAction="actionSaveHandler"></action-dialog>
    <action-dialog ref="actionDialog" @cancelAction="actionCancelHandler"
                   @updataAction="actionSaveHandler"></action-dialog>
    <clone-dialog ref="cloneDialog" :fromOid="fromOid" :sourceOId="sourceOId" paramsType="tab"
                  type="pageDef"></clone-dialog>
    <clone-dialog ref="cloneBtnDialog" :fromOid="formBtnOid" :sourceOId="sourceBtnOid" paramsType="pageDef"
@@ -1269,7 +1285,7 @@
    // æŒ‰é’®è®¾è®¡ä¿å­˜
    saveClickBtnHandler() {
      if (this.basicForm.show == '0' && (this.basicForm.displayMode == 'image' || this.basicForm.displayMode == 'textandimage') && this.basicForm.iconPath == '') {
      if (this.basicForm.show == '0' && this.basicForm.displayMode == 'image' && this.basicForm.iconPath == '') {
        this.$message.error('请选择图标');
        return;
      }
Source/plt-web/plt-web-ui/src/views/processTemplate/customDefine/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,336 @@
<template>
  <!--流程模板定义-->
  <basic-container style="height: calc(100vh - 123px)">
    <div style="margin-bottom: 5px;">
      æµç¨‹åˆ†ç±»ï¼š
      <el-select v-model="tempType" :clearable="true" placeholder="请选择" size="small"
                 style="width: 300px;margin-right: 20px;"
                 @change="tempTypeChange">
        <el-option
          v-for="item in tempTypeData"
          :key="item.id"
          :label="item.name"
          :value="item.id">
        </el-option>
      </el-select>
      æµç¨‹æ¨¡æ¿åç§°ï¼š
      <el-input size="small" v-model="tempName" style="width: 300px;margin-right: 10px;"></el-input>
      <el-button icon="el-icon-search" plain size="small" style="margin-right: 40px;" type="primary"
                 @click="searchData">
        æŸ¥è¯¢
      </el-button>
    </div>
    <el-container style="height: calc(100% - 100px)">
      <el-aside style="width: 40%;min-width: 500px;margin-right: 5px;">
        <avue-crud
          ref="crud"
          :data="tableData"
          :option="option"
          :table-loading="tableLoading"
          @on-load="getTableList"
          @refresh-change="getTableList"
          @selection-change="selectionChange"
          @row-click="rowClickHandler"
        >
          <template slot="menuLeft" slot-scope="scope">
            <el-button v-if="permissionList.addBtn" class="button-custom-icon" plain size="small" type="primary"
                       @click="handlerAdd">
              <icon-show :name="permissionList.addBtn.source"></icon-show>
              å¢žåŠ 
            </el-button>
            <el-button v-if="permissionList.downloadImportTemplateBtn" class="button-custom-icon" plain size="small"
                       type="primary" @click="downloadTemplateHandler">
              <icon-show :name="permissionList.downloadImportTemplateBtn.source"></icon-show>
              ä¸‹è½½å¯¼å…¥æ¨¡æ¿
            </el-button>
            <el-button v-if="permissionList.importBtn" class="button-custom-icon" plain size="small" type="primary"
                       @click="uploadHandler">
              <icon-show :name="permissionList.importBtn.source"></icon-show>
              å¯¼å…¥
            </el-button>
            <el-button v-if="permissionList.exportBtn" class="button-custom-icon" plain size="small" type="primary"
                       @click="downloadHandler">
              <icon-show :name="permissionList.exportBtn.source"></icon-show>
              å¯¼å‡º
            </el-button>
          </template>
          <template slot="menu" slot-scope="scope">
            <el-button v-if="permissionList.editBtn" size="small" type="text"
                       @click="handleEdit(scope.row)">
              <icon-show :name="permissionList.editBtn.source"></icon-show>
              ç¼–辑
            </el-button>
            <el-button v-if="permissionList.delBtn" size="small" type="text"
                       @click="handleDel(scope.row)">
              <icon-show :name="permissionList.delBtn.source"></icon-show>
              åˆ é™¤
            </el-button>
            <el-button size="small" type="text" @click.stop="stopHandler(scope.row)">
                <span v-if="scope.row.status === 0 && permissionList.stopBtn" style="color: #fa3434;display: flex">
                  <icon-show :name="permissionList.stopBtn.source"></icon-show>
                  åœç”¨
                </span>
              <span v-if="scope.row.status === 1 && permissionList.actionBtn" style="color: #55b61d;display: flex">
                  <icon-show :name="permissionList.actionBtn.source"></icon-show>
                  å¯ç”¨
                </span>
            </el-button>
          </template>
        </avue-crud>
        <!-- åˆ›å»ºç¼–辑自定义对话框    -->
        <el-dialog
          v-dialogDrag
          v-loading="dialogLoading"
          :title="dialogType === 'add' ? ' åˆ›å»º' : '编辑'"
          :visible.sync="dialogVisible"
          append-to-body="true"
          class="avue-dialog"
          width="1000px"
          @close="dialogClose"
        >
            <span slot="footer" class="dialog-footer">
              <el-button size="small" type="primary" @click="saveHandler">ç¡® å®š</el-button>
              <el-button size="small" @click="dialogClose">取 æ¶ˆ</el-button>
            </span>
        </el-dialog>
        <!-- å¯¼å…¥   -->
        <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入流程模板"
                     @updata="getTableList"></upload-file>
      </el-aside>
      <el-main width="60%">
        <div style="height: 100%;background-color: #eeeeea">设计器</div>
      </el-main>
    </el-container>
  </basic-container>
</template>
<script>
import {mapGetters} from "vuex";
import basicOption from "@/util/basic-option";
import {getTypeList} from "@/api/processTemplate/type";
import {getProcessTempList,saveProcessTemp,updateProcessTemp,deleteProcessTemp,downloadTemplate,download,stopProcessTemp} from "@/api/processTemplate/define";
import func from "@/util/func";
export default {
  name: "index",
  data(){
    return {
      tempType:'',
      tempName:'',
      tempTypeData:[],
      form:{},
      tableLoading: false,
      tableData: [],
      currentRow:null,
      selectionList: [],
      upFileType: ['xls', 'xlsx'],
      fileUrl: 'api/userQueryController/importUser',
      tipList:[],
      dialogLoading:false,
      dialogVisible:false,
      dialogType:'add'
    }
  },
  computed: {
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
        ids.push(ele.id);
      });
      return ids.join(",");
    },
    ...mapGetters(["permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
        exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false),
        importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false),
        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOADFILE, false),
        stopBtn: this.vaildData(this.permission[this.$route.query.id].FREEZE, false),
        actionBtn: this.vaildData(this.permission[this.$route.query.id].UNFREZE, false),
      };
    },
    option(){
      return  {
        ...basicOption,
        addBtn:false,
        editBtn:false,
        delBtn:false,
        columnBtn:false,
        gridBtn:false,
        width:500,
        calcHeight: -50,
        align:'left',
        headerAlign:'center',
        menuWidth:190,
        dialogMenuPosition: 'right',
        dialogWidth:600,
        column: [
          {
            label: '流程模板名称',
            prop: 'name'
          },{
            label: '版本',
            prop: 'desc',
            width:50
          },{
            label: '状态',
            prop: 'status',
            width:65
          }]
      }
    }
  },
  created() {
    getTypeList().then(res => {
      this.tempTypeData = res.data.data;
    })
  },
  methods:{
    getTableList(){
      this.tableLoading = true;
      getProcessTempList({tempType:this.tempType,tempName:this.tempName}).then(res => {
        this.tableData = res.data.data;
        this.tableLoading = false;
      })
    },
    //流程分类选择
    tempTypeChange(val){
      this.getTableList();
    },
    searchData(){
      this.getTableList();
    },
    handlerAdd(){
      this.form={};
      this.dialogVisible=true;
      this.dialogType='add'
    },
    handleEdit(row,index) {
      this.form={
        ...row
      }
      this.dialogVisible = true;
      this.dialogType = 'edit'
    },
    // ç¼–辑保存
    saveHandler() {
      if(this.dialogType=='add'){
        saveProcessTemp(this.form).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTableList();
          }
        });
      }else{
        updateProcessTemp(this.form).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTableList();
          }
        })
      }
    },
    dialogClose(){
      this.form={};
      this.dialogLoading=false;
      this.dialogVisible=false;
    },
    // åˆ é™¤
    handleDel(row,index) {
      let params = {
        ids: row.id
      }
      this.$confirm('您确定要删除当前数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteProcessTemp(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTableList();
          }
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    //选择的行
    selectionChange(list) {
      this.selectionList = list;
    },
    // è¡Œå•选
    rowClickHandler(row) {
      func.rowClickHandler(
        row,
        this.$refs.crud,
        this.lastIndex,
        (newIndex) => {
          this.lastIndex = newIndex;
        },
        () => {
          this.selectionList = [row];
        }
      );
    },
    // å¯¼å‡º
    downloadHandler() {
      if (this.selectionList.length <= 0) {
        this.$message.warning('请至少选择一条数据进行导出');
        return;
      }
      download({enumNames: this.ids}).then(res => {
        func.downloadFileByBlobHandler(res);
        this.$message.success('导出成功');
      }).catch(err => {
      })
    },
    // ä¸‹è½½å¯¼å…¥æ¨¡æ¿
    downloadTemplateHandler() {
      downloadTemplate().then(res => {
        func.downloadFileByBlobHandler(res);
        this.$message.success('下载成功');
      }).catch(err => {
      })
    },
    //导入
    uploadHandler() {
      this.$refs.upload.visible = true;
    },
    // åœç”¨å¯ç”¨
    stopHandler(row) {
      let params = {};
      params = {
        ids: row.oid,
        flag: row.status === 0 ? true : false
      }
      stopProcessTemp(params).then(res => {
        this.$message.success(res.data.obj);
        this.getTableList();
      });
    },
  }
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/processTemplate/customType/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,202 @@
<template>
  <!--流程模板分类-->
  <basic-container>
    <avue-crud
      ref="crud"
      v-model="form"
      :data="tableData"
      :option="option"
      :table-loading="tableLoading"
      @on-load="getTableList"
      @refresh-change="getTableList"
      @row-save="rowSaveHandler"
      @row-update="rowUpdateHandler"
      @row-click="rowClickHandler"
      @selection-change="selectionChange"
    >
      <template slot="menuLeft" slot-scope="scope">
        <el-button v-if="permissionList.addBtn" class="button-custom-icon" size="small" type="primary"
                   @click="$refs.crud.rowAdd()">
          <icon-show :name="permissionList.addBtn.source"></icon-show>
          æ–° å¢ž
        </el-button>
        <el-button v-if="permissionList.exportBtn" class="button-custom-icon" plain size="small" type="primary" @click="exportClickHandler">
          <icon-show :name="permissionList.exportBtn.source"></icon-show>
          å¯¼å‡º
        </el-button>
      </template>
      <template slot="menu" slot-scope="{ row, index }">
        <el-button
          v-if="permissionList.editBtn"
          size="small"
          type="text"
          @click="handleEdit(row, index)"
        >
          <icon-show :name="permissionList.editBtn.source"></icon-show>
          ç¼–辑
        </el-button>
        <el-button
          v-if="permissionList.delBtn"
          size="small"
          type="text"
          @click="handleDel(row, index)"
        >
          <icon-show :name="permissionList.delBtn.source"></icon-show>
          åˆ é™¤
        </el-button>
      </template>
    </avue-crud>
  </basic-container>
</template>
<script>
import {mapGetters} from "vuex";
import basicOption from "@/util/basic-option";
import {getTypeList, saveType, updateType, deleteType} from "@/api/processTemplate/type";
import func from "@/util/func";
export default {
  name: "index",
  data: function () {
    return {
      form:{},
      tableLoading: false,
      tableData: [],
      currentRow:null,
      selectionList: [],
    }
  },
  computed: {
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
        ids.push(ele.id);
      });
      return ids.join(",");
    },
    ...mapGetters(["permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
      };
    },
    option(){
      return  {
        ...basicOption,
        addBtn:false,
        editBtn:false,
        delBtn:false,
        calcHeight: -60,
        align:'left',
        headerAlign:'center',
        menuWidth:160,
        dialogMenuPosition: 'right',
        dialogWidth:600,
        column: [
          {
            label: '分类名称',
            prop: 'name',
            span: 24,
            rules: [{ required: true, message: '请输入分类名称', trigger: 'blur' }]
          },{
            label: '描述',
            prop: 'desc',
            span: 24,
            type:'textarea'
          }]
      }
    }
  },
  methods: {
    // è¡¨æ ¼è¯·æ±‚
    getTableList() {
      this.tableLoading = true;
      getTypeList().then(res => {
        this.tableData = res.data.data;
        this.tableLoading = false;
      })
    },
    // æ–°å¢ž
    rowSaveHandler(row, done, loading) {
      saveType(row).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
          done();
        }
      }).catch(err => {
        loading()
      });
    },
    handleEdit(row,index){
      this.$refs.crud.rowEdit(row, index);
    },
    // ç¼–辑
    rowUpdateHandler(row, index, done, loading) {
      updateType(row).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
          done()
        }
      }).catch(err => {
        loading()
      });
    },
    // åˆ é™¤
    handleDel(row,index) {
      let params = {
        ids: row.id
      }
      this.$confirm('您确定要删除当前的分类吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteType(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTableList();
          }
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    //选择的行
    selectionChange(list) {
      this.selectionList = list;
    },
    // è¡Œå•选
    rowClickHandler(row) {
      func.rowClickHandler(
        row,
        this.$refs.crud,
        this.lastIndex,
        (newIndex) => {
          this.lastIndex = newIndex;
        },
        () => {
          this.selectionList = [row];
        }
      );
    },
  }
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/system/log/index.vue
Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue
@@ -95,11 +95,11 @@
    // æ‰“开弹出层结束时的回调
    modalOpened() {
      this.visible = true;
      if (!this.resizeHandler) {
        this.resizeHandler = debounce(() => {
          this.refresh()
        }, 100)
      }
      // if (!this.resizeHandler) {
      //   this.resizeHandler = debounce(() => {
      //     this.refresh()
      //   }, 100)
      // }
      window.addEventListener("resize", this.resizeHandler)
    },
    // åˆ·æ–°ç»„ä»¶
@@ -138,6 +138,7 @@
    // ä¸Šä¼ å›¾ç‰‡
    uploadImg() {
      this.$refs.cropper.getCropBlob(data => {
        console.log(data);
        let formData = new FormData();
        formData.append("avatarfile", data, this.options.filename);
        uploadAvatar(formData).then(response => {
Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue
@@ -564,7 +564,9 @@
          let node = this.currentClickNode.parent;
          node.loaded = false;
          node.expand();
          this.$refs.tree.setCurrentNode(this.currentClickNode);
          this.$nextTick(()=>{
            this.$refs.tree.setCurrentKey(this.currentClickNode.data.id);
          });
        } else {
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
        }
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue
@@ -294,7 +294,6 @@
  methods: {
    // æ ‘行点击
    nodeClick(row, node) {
      console.log(row.childType);
      this.form = {...row};
      this.nodeRow = {...row};
      this.currentClickNode = node;
@@ -553,7 +552,9 @@
          let node = this.currentClickNode.parent;
          node.loaded = false;
          node.expand();
          this.$refs.tree.setCurrentNode(this.currentClickNode);
          this.$nextTick(()=>{
            this.$refs.tree.setCurrentKey(this.currentClickNode.data.id);
          });
        } else {
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
        }
Source/plt-web/plt-web-ui/src/views/wel/adminIndex.vue
@@ -163,21 +163,21 @@
          logName: "登录日志统计",
          text: "当前登录日志总记录数",
          color: 'rgb(230, 71, 88)',
          router: '/LogInfoMain?logType=1&roleType=2'
          router: '/C41AF7C4-1D19-00DF-1974-2542CDD49FFB?logType=1&roleType=1&id=C41AF7C4-1D19-00DF-1974-2542CDD49FFB&name=登录日志查询(管理员)'
        },
        {
          logType: "3",
          logName: "授权日志统计",
          text: "当前授权日志总记录数",
          color: 'rgb(178, 159, 255)',
          router: '/LogAuthorizeMain?logType=3&roleType=2'
          router: '/EBA630BC-71DF-AF03-F9CB-2F4DF14459AF?logType=3&roleType=1&id=EBA630BC-71DF-AF03-F9CB-2F4DF14459AF&name=授权日志查询(管理员)'
        },
        {
          logType: "4",
          logName: "操作日志统计",
          text: "当前操作日志总记录数",
          color: 'rgb(27, 201, 142)',
          router: '/LogOperateMain?logType=4&roleType=2'
          router: '/674C5E77-501F-AE85-2B61-191711BDA57A?logType=4&roleType=1&id=674C5E77-501F-AE85-2B61-191711BDA57A&name=操作日志查询(管理员)'
        },
      ];