From 328b0158c3d97f87efc7da22a1e3f5a7c258b127 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 04 七月 2024 19:17:17 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java | 19 Source/plt-web/plt-web-ui/src/api/base/file/index.js | 12 Source/plt-web/plt-web-ui/src/components/actions/handlers.js | 2 Source/plt-web/plt-web-ui/src/api/base/startWork/index.js | 22 Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js | 6 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java | 126 +++ Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java | 5 Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue | 264 ++++++-- Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js | 1 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java | 1 Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue | 92 +- Source/plt-web/plt-web-ui/README-AVUE.md | 90 +++ Source/plt-web/plt-web-ui/src/views/system/user/option.js | 78 + Source/plt-web/plt-web-ui/src/components/PLT-basic-component/transfer.vue | 79 +- Source/plt-web/plt-web-ui/src/components/actions/base/downLoadFile.vue | 13 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java | 27 Source/plt-web/plt-web-ui/src/api/system/user/api.js | 66 + Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js | 22 Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue | 146 ++++ Source/plt-web/plt-web-ui/src/main.js | 4 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java | 3 Source/plt-web/plt-web-ui/src/App.vue | 4 /dev/null | 158 ----- Source/plt-web/plt-web-ui/src/views/system/user/index.vue | 435 +++++++++++++ Source/plt-web/plt-web-ui/src/util/basic-option.js | 3 Source/plt-web/plt-web-ui/vue.config.js | 4 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java | 63 ++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java | 4 28 files changed, 1,341 insertions(+), 408 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java index 736f373..8f6f784 100644 --- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java +++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java @@ -395,16 +395,15 @@ */ public boolean checkDataSecret(BaseModel baseModel) throws VciBaseException{ VciBaseUtil.alertNotNull(baseModel,"瑕佹牎楠屽瘑绾х殑鏁版嵁瀵硅薄"); - //todo 鐧诲綍杩樻湭鍚敤锛屾墍浠ュ瘑绾ф棤娉曡幏鍙栭渶瑕佷慨鏀� -// if(isCheckSecret(baseModel) && VciBaseUtil.getCurrentUserSecret()>0) { -// if (baseModel.getSecretGrade() == null ) { -// baseModel.setSecretGrade(DataSecretEnum.NONE.getValue()); -// } -// Integer userSecret = VciBaseUtil.getCurrentUserSecret(); -// if (!checkUserSecret(baseModel.getSecretGrade())) { -// throw new VciBaseException("褰撳墠鐢ㄦ埛鐨勫瘑绾т綆浜庢暟鎹殑瀵嗙骇锛岀敤鎴峰瘑绾т负" + UserSecretEnum.getSecretText(userSecret) + ",鏁版嵁瀵嗙骇涓�" + DataSecretEnum.getSecretText(baseModel.getSecretGrade())); -// } -// } + if(isCheckSecret(baseModel) && VciBaseUtil.getCurrentUserSecret()>0) { + if (baseModel.getSecretGrade() == null ) { + baseModel.setSecretGrade(DataSecretEnum.NONE.getValue()); + } + Integer userSecret = VciBaseUtil.getCurrentUserSecret(); + if (!checkUserSecret(baseModel.getSecretGrade())) { + throw new VciBaseException("褰撳墠鐢ㄦ埛鐨勫瘑绾т綆浜庢暟鎹殑瀵嗙骇锛岀敤鎴峰瘑绾т负" + UserSecretEnum.getSecretText(userSecret) + ",鏁版嵁瀵嗙骇涓�" + DataSecretEnum.getSecretText(baseModel.getSecretGrade())); + } + } return true; } diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java index 6f6112f..9679f27 100644 --- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java +++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSecurityInterceptor.java @@ -99,6 +99,11 @@ //铏界劧涓嶆牎楠屾潈闄愶紝浣嗘槸濡傛灉token涓嶄负绌猴紝闇�瑕佹洿鏂板綋鍓嶇敤鎴� SessionInfo sessionInfo = getSessionInfo(userToken); + if(sessionInfo != null){ + //鍒濆鍖栧钩鍙扮殑token + vciSessionForLoginI.initInvocationInfo(sessionInfo); + } + return true; } //鑾峰彇閰嶇疆鏂囦欢涓紝涓嶆牎楠屾潈闄愮殑璺緞 diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java index 712ad4a..906cf78 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java @@ -48,7 +48,6 @@ * @return 鏂囦欢淇℃伅鏄剧ず瀵硅薄 */ @PostMapping("/uploadFile") - @VciUnCheckRight public BaseResult<VciFileObjectVO> uploadFile(MultipartFile file, VciFileObjectDTO fileObjectDTO){ try { if (file != null ) { diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java index f342ec9..6c19aeb 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java @@ -1,5 +1,7 @@ package com.vci.web.controller; +import com.vci.corba.common.PLException; +import com.vci.corba.omd.data.BusinessObject; import com.vci.starter.web.annotation.controller.VciUnCheckRight; import com.vci.starter.web.annotation.log.VciBusinessLog; import com.vci.starter.web.pagemodel.*; @@ -13,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -115,14 +119,33 @@ } /** - * 鏁版嵁鍗囩増锛屽墠绔娇鐢↗SON鎻愪氦 + * 鏁版嵁鍗囩増鏈�/娆★紝鍓嶇浣跨敤JSON鎻愪氦 * @param formDataDTO 琛ㄥ崟鏁版嵁 * @return 鎵ц鐨勭粨鏋� */ @PutMapping("/upRevision") @VciBusinessLog(operateName = "鏁版嵁鍗囩増",description = "${param.btmname}閲岀殑${param.copyFromVersion}") - public BaseResult<Map<String,Object>> upRevision(@RequestBody FormDataDTO formDataDTO){ + public BaseResult<Map<String, Object>> upRevision(@RequestBody FormDataDTO formDataDTO) throws PLException { return uiDataService.upRevision(formDataDTO); + } + + /** + * 鏁版嵁鍗囩増鏈�/娆★紝鍓嶇浣跨敤JSON鎻愪氦 + * @param btmname 涓氬姟绫诲瀷鐨勪俊鎭� + * @param oid 涓氬姟鏁版嵁鐨勪富閿� + * @param type 1:鐗堟瀵硅薄锛�2锛氱増鏈璞★紱3锛氫富瀵硅薄 + * @return 鎵ц鐨勭粨鏋� + */ + @DeleteMapping("/deleteBusinessObject") + public BaseResult deleteBusinessObject(String btmname , String oid, int type) { + try { + return uiDataService.deleteBusinessObject(btmname, oid, type); + }catch (PLException e){ + BaseResult<Object> objectBaseResult = new BaseResult<>(); + objectBaseResult.setCode(Integer.parseInt(e.code)); + objectBaseResult.setMsg(Arrays.toString(e.messages)); + return objectBaseResult; + } } /** @@ -187,4 +210,40 @@ re.setData(dataMapList); return re; } + /** + * 鍙樻洿鎵�鏈夎�� + * @param btmname 涓氬姟绫诲瀷 + * @param oid 涓婚敭 + * @return 鎵ц鐨勭粨鏋� + */ + @PutMapping("/changeBusinessObjectOwner") + public BaseResult changeBusinessObjectOwner(String btmname , String oid) { + try { + return uiDataService.changeBusinessObjectOwner(btmname, oid); + } catch (PLException e) { + BaseResult<Object> objectBaseResult = new BaseResult<>(); + objectBaseResult.setCode(Integer.parseInt(e.code)); + objectBaseResult.setMsg(Arrays.toString(e.messages)); + return objectBaseResult; + } + } + + /** + * 鐘舵�佽穬杩� + * @param btmname 涓氬姟绫诲瀷 + * @param oid 涓婚敭 + * @param releaseStatus 鍙戝竷鐘舵�� + * @return 鎵ц鐨勭粨鏋� + */ + @PutMapping("/transferBusinessObject") + public BaseResult transferBusinessObject(String btmname , String oid, String toStatus, String releaseStatus) { + try { + return uiDataService.transferBusinessObject(btmname, oid, toStatus, releaseStatus); + } catch (PLException e) { + BaseResult<Object> objectBaseResult = new BaseResult<>(); + objectBaseResult.setCode(Integer.parseInt(e.code)); + objectBaseResult.setMsg(Arrays.toString(e.messages)); + return objectBaseResult; + } + } } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java index 0cd9432..dc2df3b 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java @@ -1,5 +1,6 @@ package com.vci.web.service; +import com.vci.corba.common.PLException; import com.vci.corba.omd.data.BusinessObject; import com.vci.corba.omd.data.LinkObject; import com.vci.corba.omd.data.RevisionDataInfo; @@ -175,7 +176,7 @@ * @return 鎵ц缁撴灉鍜屾樉绀哄悗鐨勫�� * @throws VciBaseException 淇濆瓨鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 */ - BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException; + BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException, PLException; /** * 鎵归噺淇敼锛屾敞鎰忚〃鍗曞畾涔夌殑瀛楁鎵嶄細琚慨鏀癸紝ts杩欑榛樿瀛楁闄ゅ @@ -248,4 +249,28 @@ * @return 涓氬姟鏁版嵁鐨勫睘鎬т俊鎭� */ List<Map<String,String>> getDataAttr(String btmName, String oid); + + /** + * 鏁版嵁鍗囩増鏈�/娆★紝鍓嶇浣跨敤JSON鎻愪氦 + * @param btmname 涓氬姟绫诲瀷鐨勪俊鎭� + * @param oid 涓氬姟鏁版嵁鐨勪富閿� + * @param type 1:鐗堟瀵硅薄锛�2锛氱増鏈璞★紱3锛氫富瀵硅薄 + * @return 鎵ц鐨勭粨鏋� + */ + BaseResult deleteBusinessObject(String btmname, String oid, int type) throws PLException; + /** + * 鍙樻洿鎵�鏈夎�� + * @param btmname 涓氬姟绫诲瀷 + * @param oid 涓婚敭 + * @return 鎵ц鐨勭粨鏋� + */ + BaseResult changeBusinessObjectOwner(String btmname, String oid) throws PLException; + /** + * 鐘舵�佽穬杩� + * @param btmname 涓氬姟绫诲瀷 + * @param oid 涓婚敭 + * @param releaseStatus 鍙戝竷鐘舵�� + * @return 鎵ц鐨勭粨鏋� + */ + BaseResult transferBusinessObject(String btmname, String oid, String toStatus, String releaseStatus) throws PLException; } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java index 93c7710..8f0443d 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java @@ -2,10 +2,8 @@ import com.vci.client.common.providers.ClientServiceProvider; import com.vci.corba.common.PLException; -import com.vci.corba.omd.data.BusinessObject; -import com.vci.corba.omd.data.LinkObject; -import com.vci.corba.omd.data.RevisionDataInfo; -import com.vci.corba.omd.data.VersionDataInfo; +import com.vci.corba.framework.data.UserInfo; +import com.vci.corba.omd.data.*; import com.vci.corba.omd.lcm.LifeCycle; import com.vci.file.pagemodel.VciFileObjectVO; import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus; @@ -37,6 +35,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.lang.reflect.Method; @@ -1243,7 +1242,7 @@ if(baseModel.getRevisionValue() == null){ baseModel.setRevisionValue(""); } - return changeRevisionValueInfoToObject(platformClientUtil.getBOFactoryService().getNextRevisionValueObject(WebUtil.getTableName(btmTypeVO.getId()),baseModel.getNameOid(),btmTypeVO.getRevisionRuleId(),btmTypeVO.isInputRevisionFlag(),baseModel.getRevisionValue())); + return changeRevisionValueInfoToObject(platformClientUtil.getBOFactoryService().getNextRevisionValueObject(btmTypeVO.getId(),baseModel.getNameOid(),btmTypeVO.getRevisionRuleId(),btmTypeVO.isInputRevisionFlag(),baseModel.getRevisionValue())); } catch (PLException vciError) { throw WebUtil.getVciBaseException(vciError); } @@ -1429,7 +1428,7 @@ * @throws VciBaseException 淇濆瓨鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 */ @Override - public BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException { + public BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException, PLException { //棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖ VciBaseUtil.alertNotNull(formDataDTO,"淇敼鐨勬暟鎹璞�",formDataDTO.getBtmname(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�",formDataDTO.getCopyFromVersion(),"鑰佺増鏈殑涓婚敭"); UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmname(), formDataDTO.getFormDefineId()); @@ -1440,28 +1439,40 @@ //璇存槑鍓嶇疆浜嬩欢娌℃湁鎵ц鎴愬姛 return beforeResult; } - //灏佽鏁版嵁 - BaseResult<BusinessObject> resultCbo = wrapperCbo(formDataDTO,formDefineVO,false,formDataDTO.isUpVersion()?false:true,formDataDTO.isUpVersion()); - if(!resultCbo.isSuccess()){ - return BaseResult.fail(resultCbo.getMsg(),resultCbo.getMsgObjs()); + List<BusinessObject> businessObjects = null; + Date ts = formDataDTO.getTs(); + Map<String,String> conditionMap = WebUtil.getOidQuery(formDataDTO.getCopyFromVersion()); + conditionMap.put("ts", VciDateUtil.date2Str(ts,VciDateUtil.DateTimeMillFormat)); + conditionMap.put("oid",formDataDTO.getCopyFromVersion()); + businessObjects = boService.queryCBO(formDataDTO.getBtmname(), conditionMap); + if(businessObjects.size() ==0){ + throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽缓璁偍鍒锋柊鍚庨噸鏂版搷浣�"); } + //鎵╁睍灞炴�х殑鍊� + Map<String, String> data = formDataDTO.getData(); + Map<String,String> dataLow = new HashMap<>(); + data.forEach((key,value)->{ + dataLow.put(key.toLowerCase(),value); + }); + + Map<String,String> baseDataMap = formDataDTO2MapLow(formDataDTO); + Map<String,String> allDataMapLow = new HashMap<>(); + allDataMapLow.putAll(dataLow); + allDataMapLow.putAll(baseDataMap); + //鍒ゆ柇鍞竴椤� + BaseResult baseResult = checkUnique(formDefineVO, null, allDataMapLow, true); + if(!baseResult.isSuccess()){ + return baseResult; + } + BusinessObject businessObject = platformClientUtil.getBOFService() + .revisionBusinessObject(businessObjects.get(0), null, !formDataDTO.isUpVersion(),true, false, false); //鎵ц淇濆瓨 - BaseResult<Map<String,Object>> result = BaseResult.success(); - try { - BusinessObject bo = platformClientUtil.getBOFService().createBusinessObject(resultCbo.getObj(),formDataDTO.isUpVersion()?false:true,formDataDTO.isUpVersion()); - BusinessObject afterCbo = new BusinessObject(); - afterCbo = bo; - result.setObj(boService.cbo2Map(afterCbo)); - } catch (PLException vciError) { - throw WebUtil.getVciBaseException(vciError); - } - if(!CollectionUtils.isEmpty(formDataDTO.getReleaseFileOids())){ - fileObjectService.releasedFile(resultCbo.getObj().btName,resultCbo.getObj().oid,formDataDTO.getReleaseFileOids()); - } + BaseResult<Map<String, Object>> result = BaseResult.success(); + result.setObj(boService.cbo2Map(businessObject)); //鍚庣疆浜嬩欢 String afterEvent = formDataDTO.getPostEvent(); try { - callPostEvent(Arrays.stream(new BusinessObject[]{resultCbo.getObj()}).collect(Collectors.toList()), null,afterEvent, VciChangeDocumentTypeEnum.EDIT); + callPostEvent(Arrays.stream(new BusinessObject[]{businessObject}).collect(Collectors.toList()), null,afterEvent, VciChangeDocumentTypeEnum.EDIT); }catch (Throwable e){ throw new VciBaseException(LangBaseUtil.getErrorMsg(e),new String[]{},e); } @@ -2454,4 +2465,73 @@ } return dataMap; } + + /** + * 鏁版嵁鍗囩増鏈�/娆★紝鍓嶇浣跨敤JSON鎻愪氦 + * @param btmname 涓氬姟绫诲瀷鐨勪俊鎭� + * @param oid 涓氬姟鏁版嵁鐨勪富閿� + * @param type 1:鐗堟瀵硅薄锛�2锛氱増鏈璞★紱3锛氫富瀵硅薄 + * @return 鎵ц鐨勭粨鏋� + */ + @Override + public BaseResult deleteBusinessObject(String btmname, String oid, int type) throws PLException { + List<BusinessObject> cbos = boService.queryCBO(btmname,WebUtil.getOidQuery(oid)); + BaseResult<Object> objectBaseResult = new BaseResult<>(); + if(cbos.size() == 0){ + objectBaseResult.setSuccess(false); + throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"}); + } + for (BusinessObject cbo : cbos) { + if(StringUtils.isBlank(cbo.revisionid)){ + String revisionoid = Arrays.stream(cbo.hisAttrValList).filter(e -> e.attrName.equals("REVISIONOID")).findFirst().map(e -> e.attrVal).orElse(""); + cbo.revisionid = revisionoid; + } + boolean b = platformClientUtil.getBOFService().deleteBusinessObject(cbo,type); + if(!b){ + throw new PLException("500", new String[]{"鏁版嵁鍒犻櫎澶辫触锛侊紒"}); + } + } + return BaseResult.success(); + } + /** + * 鍙樻洿鎵�鏈夎�� + * @param btmname 涓氬姟绫诲瀷 + * @param oid 涓婚敭 + * @return 鎵ц鐨勭粨鏋� + */ + @Override + public BaseResult changeBusinessObjectOwner(String btmname, String oid) throws PLException { + List<BusinessObject> cbos = boService.queryCBO(btmname,WebUtil.getOidQuery(oid)); + BaseResult<Object> objectBaseResult = new BaseResult<>(); + if(cbos.size() == 0){ + objectBaseResult.setSuccess(false); + throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"}); + } + UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(WebUtil.getCurrentUserId()); + for (BusinessObject cbo : cbos) { + platformClientUtil.getBOFService().changeBusinessObjectOwner(cbo,userInfo); + } + return BaseResult.success(); + } + /** + * 鍙樻洿鎵�鏈夎�� + * @param btmname 涓氬姟绫诲瀷 + * @param oid 涓婚敭 + * @param releaseStatus 鍙戝竷鐘舵�� + * @return 鎵ц鐨勭粨鏋� + */ + @Override + @Transactional + public BaseResult transferBusinessObject(String btmname, String oid, String toStatus,String releaseStatus) throws PLException { + List<BusinessObject> cbos = boService.queryCBO(btmname,WebUtil.getOidQuery(oid)); + BaseResult<Object> objectBaseResult = new BaseResult<>(); + if(cbos.size() == 0){ + objectBaseResult.setSuccess(false); + throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"}); + } + for (BusinessObject cbo : cbos) { + platformClientUtil.getBOFService().transferBusinessObjectAndRelease(cbo, toStatus, releaseStatus); + } + return BaseResult.success(); + } } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java index 09addb7..55ac98a 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java @@ -205,9 +205,6 @@ if(vciFileObjectDO.getSecretGrade() == null) { vciFileObjectDO.setSecretGrade(DataSecretEnum.NONE.getValue()); } - //todo 鐧诲綍杩樻湭寮勫ソ闇�瑕佷慨鏀� - vciFileObjectDO.setCreator("1"); - vciFileObjectDO.setLastModifier("1"); revisionModelUtil.wrapperForAdd(vciFileObjectDO); //闅忔満璺緞 String randomPath = VciBaseUtil.getPk(); diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java index f53eb5b..9938b92 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java @@ -154,9 +154,7 @@ if(btmName!=null){ btmName = btmName.trim().toLowerCase(); } - //todo 鐢变簬鐧诲綍闂鍚庣画闇�瑕佷慨鏀� -// String userid = WebUtil.getCurrentUserId(); - String userid = "1"; + String userid = WebUtil.getCurrentUserId(); if(!hasCreatedCbos.containsKey(btmName)){ if(StringUtils.isEmpty(userid)){ throw new VciBaseException(msgCodePrefix +"noHasUserid"); diff --git a/Source/plt-web/plt-web-ui/README-AVUE.md b/Source/plt-web/plt-web-ui/README-AVUE.md new file mode 100644 index 0000000..44a3145 --- /dev/null +++ b/Source/plt-web/plt-web-ui/README-AVUE.md @@ -0,0 +1,90 @@ +## AVUE-CRUD 琛ㄦ牸閰嶇疆 + +```javascript +<avue-crud :option="option" //琛ㄦ牸閰嶇疆灞炴�� + :table-loading="loading" //琛ㄦ牸绛夊緟妗嗙殑鎺у埗锛屽姞杞界殑鏃跺�欒浆鍦堝湀锛岃缃畉rue/false + :search.sync="search" //鎼滅储鐨勫彉閲�(闇�瑕乻ync淇グ绗�) + :visible.sync="changeInfo" //鏄惁鏄剧ず锛岃缃畉rue/false + :data="data" //琛ㄦ牸鏄剧ず鐨勬暟鎹� + :page.sync="page" //琛ㄦ牸鍒嗛〉閰嶇疆閫夐」(闇�瑕乻ync淇グ绗�) + :permission="permissionList" //鏉冮檺鎺у埗 + :before-open="beforeOpen" //鎵撳紑鍓嶇殑鍥炶皟function(file,column) + v-model="form" //鏁版嵁妯″瀷 鐢ㄦ潵瀛樺彇椤甸潰鍊肩殑 + ref="crud" //鍦ㄦ櫘閫氱殑 DOM 鍏冪礌涓婁娇鐢紝寮曠敤鎸囧悜鐨勫氨鏄� DOM 鍏冪礌锛� + @cell-click="pageto" //琛ㄦ牸鐐瑰嚮杩愯鏂规硶 onclick鏂规硶瀹氫箟 + @row-update="rowUpdate" //淇敼鏁版嵁鍚庣偣鍑荤‘瀹氳Е鍙戣浜嬩欢 + @row-save="rowSave" //鏂板鏁版嵁鍚庣偣鍑荤‘瀹氳Е鍙戣浜嬩欢 + @row-del="rowDel" //琛屾暟鎹垹闄ゆ椂瑙﹀彂璇ヤ簨浠� + @row-click="handleRowClick" //鍗曞嚮琛岃繍琛岀殑鏂规硶 + @search-change="searchChange" //鎼滅储鏍忓彉鍖栦簨浠� + @search-reset="searchReset" //娓呯┖鎼滅储鏍忓彉鍖栦簨浠� + @selection-change="selectionChange"//閫夋嫨妗嗗彉鍖栧彉鍖栦簨浠� + @current-change="currentChange" //鐐瑰嚮椤电爜浼氳皟鐢╟urrent-change鏂规硶鍥炶皟褰撳墠椤垫暟锛岃繑鍥炲綋鍓嶇鍑犻〉 + @size-change="sizeChange" //鐐瑰嚮姣忛〉澶氬皯鏉′細璋僺ize-change鏂规硶鍥炶皟 + @refresh-change="refreshChange" //鐐瑰嚮鍒锋柊鎸夐挳瑙﹀彂璇ヤ簨浠� + @on-load="onLoad"> //鎵撳紑琛ㄦ牸椤甸潰鐨勬柟娉曪紝涓�鑸敤鏉ュ垵濮嬪寲锛岃繑鍥為〉闈㈡暟鎹� + </avue-crud> + +option: { + height:'auto', //琛ㄦ牸楂樺害 + emptyText: "鏆傛棤鏁版嵁鍝", //鏁版嵁涓虹┖鐨勬彁绀� + calcHeight: 30, //琛ㄦ牸楂樺害宸紙涓昏鐢ㄤ簬鍑忓幓鍏朵粬閮ㄥ垎璁╄〃鏍奸珮搴﹁嚜閫傚簲锛� + tip: false, //鎻愮ず淇℃伅 + searchShow: true, //棣栨鍔犺浇鏄惁鏄剧ず鎼滅储 + searchMenuSpan: 4, //鎼滅储鎸夐挳闀垮害 + searchSpan:6, //鎼滅储妗嗛暱搴� 鏈�澶ч暱搴�24 + border: true, //琛ㄦ牸杈规鏄惁鏄剧ず + index: true, //鏄惁鏄剧ず搴忓彿 + viewBtn: true, //鏄惁鏄剧ず鏌ョ湅鎸夐挳 + selection: true, //鎼滅储妗嗘樉绀� + addBtn:false, //鏄惁鏄剧ず娣诲姞鎸夐挳 + editBtn:false, //鏄惁鏄剧ず缂栬緫鎸夐挳 + delBtn:false, //鏄惁鏄剧ず鍒犻櫎鎸夐挳 + excelBtn:false, //琛ㄦ牸瀵煎嚭鎸夐挳鏄惁鏄剧ず + labelWidth:120, //琛ㄥ崟鍓嶉潰鐨勬爣棰橀暱搴� + refreshBtn: false, //琛ㄦ牸涓婇潰灏忕殑 鍒锋柊鎸夐挳 + columnBtn: false, //琛ㄦ牸涓婇潰灏忕殑 鍒楄〃鎸夐挳 + searchBtn: false, //琛ㄦ牸涓婇潰灏忕殑 鎼滅储鎸夐挳 + menu: true, //鏄惁鏄剧ず鎿嶄綔鏍� + defaultExpandAll:true, //鏍戦粯璁ゅ睍寮� + column:[ + { + label: "", //琛ㄥ崟灞炴�у悕绉� + prop: "", //灞炴�у搴斿疄浣撶被瀛楁 + type: "", //杈撳叆妗嗙被鍨� + addDisplay: false, //鏂板鏃舵槸鍚︽樉绀� + editDisplay: false, //缂栬緫鏃舵槸鍚︽樉绀� + viewDisplay: true, //璇︽儏鏃舵槸鍚︽樉绀� + hide: true, //琛ㄥ崟鏌ヨ鏃舵槸鍚︽樉绀� + display: true, //鍦ㄦ煡鐪嬶紝鏂板锛岀紪杈戦〉闈㈡槸鍚︽樉绀� + labelWidth:'100', //鏍囬鍚嶇О瀹藉害 + span: 24, //24涓�鏉℃暟鎹崰涓�琛岋紝8涓�琛�3鏉℃暟鎹� + gutter:20, //椤归棿璺� + addDisabled: true, //娣诲姞鐨勬椂鍊欎笉鑳戒慨鏀� + editDisabled: true, //缂栬緫鐨勬椂鍊欎笉鑳戒慨鏀� + sortable:true, //鎺掑簭鏂瑰紡鍒囨崲锛屽�掑簭銆佹搴忓垏鎹� + maxlength: 30, //瀛楁暟闄愬埗 + showWordLimit:true, //鏄剧ず瀛楁暟闄愬埗 + defaultExpandAll:true, //鏍戦粯璁ゅ睍寮� + search锛歵rue, //鏌ヨ鏄惁鏄剧ず + searchFilterable:true, //select閫夋嫨妗嗗尮閰� + showColumn:false, //鍒楁樉闅愪腑鏄惁鏈� + addDisplay: false, // 娣诲姞寮圭獥涓嶆樉绀� + editDisplay: false, // 缂栬緫寮圭獥涓嶆樉绀� + viewDisplay: false // 鏌ョ湅寮圭獥涓嶆樉绀� + disabled:true, //琛ㄥ崟item绂佺敤 + row:'false/true', //鏄惁鍗曠嫭鎴愯 + rules:Obj, //楠岃瘉瑙勫垯 + dicData:[], //瀛楀吀 + dicUrl:'', //杩滅▼瀛楀吀鍦板潃 + dicMethod:'get/post' //瀛楀吀璇锋眰鏂瑰紡 + dicQuery:obj, //瀛楀吀璇锋眰鏂瑰紡 + props:{ + lable:'瀛楀吀鐨勫悕绉板睘鎬у��', + value:'瀛楀吀鐨勫�煎睘鎬у��', + children:'瀛楀吀鐨勫瓙灞炴�у��' + }, + + } +``` + diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue index acf45e6..32b2829 100644 --- a/Source/plt-web/plt-web-ui/src/App.vue +++ b/Source/plt-web/plt-web-ui/src/App.vue @@ -40,6 +40,7 @@ } .avue-dialog .el-dialog__body{ padding: 20px; + margin-bottom: 20px !important; } .avue--detail .el-col{ margin-bottom: 0; @@ -92,4 +93,7 @@ .tree-buttons .el-button{ margin: 0 5px 5px 0; } +.el-dialog__footer{ + border-top: 1px solid #e9e7e7; +} </style> diff --git a/Source/plt-web/plt-web-ui/src/api/base/file/index.js b/Source/plt-web/plt-web-ui/src/api/base/file/index.js new file mode 100644 index 0000000..a36c7c2 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/api/base/file/index.js @@ -0,0 +1,12 @@ +import request from '@/router/axios'; + +// 涓嬭浇鏂囦欢 +export const download = (data) => { + return request({ + url: '/api/vciFileDownloadController/downloadByFileOidPost', + method: 'post', + headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, + responseType: 'blob', + data: data + }) +} diff --git a/Source/plt-web/plt-web-ui/src/api/base/startWork/index.js b/Source/plt-web/plt-web-ui/src/api/base/startWork/index.js index 102dc35..265f67a 100644 --- a/Source/plt-web/plt-web-ui/src/api/base/startWork/index.js +++ b/Source/plt-web/plt-web-ui/src/api/base/startWork/index.js @@ -18,3 +18,25 @@ params: params, }); } + +//鍚姩娴佺▼ +export const startProcess = (params) => { + let formData = new FormData() + for (let key in params) { + // 濡傛灉鏄� nodeUsers 瀵硅薄锛屽垯鐗规畩澶勭悊 + if (key === 'nodeUsers' && typeof params[key] === 'object' && params[key] !== null) { + for (let innerKey in params[key]) { + formData.append(`${key}[${innerKey}]`, params[key][innerKey]); + } + } else { + // 闈瀗odeUsers灞炴�э紝鐩存帴娣诲姞鍒� formData 涓� + formData.append(key.replaceAll('"', ''), params[key]); + } + } + return request({ + url: '/api/processDefineController/startProcess', + method: 'post', + data:formData + }); +} + diff --git a/Source/plt-web/plt-web-ui/src/api/system/user/api.js b/Source/plt-web/plt-web-ui/src/api/system/user/api.js index 3e042a6..ce644b2 100644 --- a/Source/plt-web/plt-web-ui/src/api/system/user/api.js +++ b/Source/plt-web/plt-web-ui/src/api/system/user/api.js @@ -25,7 +25,7 @@ // 瑙掕壊鍏ㄦ煡璇� export function gridRoles(page,limit) { return request({ - url: "/api/roleQueryController/gridRoles", + url: "/api/roleQueryController/refDataGrid", method: "get", params:{ page,limit @@ -54,19 +54,19 @@ } // 鏂板鎴愬憳 -export function addUser(data) { +export function addUser(row) { return request({ - url: "/api/roleQueryController/addUser", + url: "/api/userQueryController/addUser", method: "post", - data:data + data:row }); } // 淇敼鎴愬憳 export function updateUser(data) { return request({ - url: "/api/roleQueryController/updateUser", - method: "post", + url: "/api/userQueryController/updateUser", + method: "put", data:data }); } @@ -74,8 +74,60 @@ // 鍒犻櫎鎴愬憳 export function deleteUser(params) { return request({ - url: "/api/roleQueryController/deleteUser", + url: "/api/userQueryController/deleteUser", method: "delete", params }); } + +//鑾峰彇瀵嗙爜绛栫暐 +export function selectPwdStrategyMap(params) { + return request({ + url: "/api/passwordStrategyQueryController/selectPwdStrategyMap", + method: "get", + params + }); +} + +//淇濆瓨瀵嗙爜绛栫暐 +export function saveUserPasswordStrateg(params) { + let formData = new FormData() + for (let key in params){ + formData.append(key,params[key]) + } + return request({ + url: "/api/passwordStrategyQueryController/saveUserPasswordStrateg", + method: "post", + data:formData + }); +} + +// 涓嬭浇妯℃澘鎺ュ彛 +export const download = (params) => { + return request({ + url: '/api/userQueryController/downloadImportTemplate', + method: 'get', + headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, + responseType: 'blob', + params + }) +} + +//鑾峰彇瀵嗙爜绛栫暐 +export function departmentQueryController(params) { + return request({ + url: "/api/departmentQueryController/refTree", + method: "get", + params + }); +} + +//鑾峰彇瀵嗙爜绛栫暐 +export function saveUsersDepts(params) { + return request({ + url: "/api/departmentQueryController/saveUsersDepts", + method: "post", + params + }); +} + diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/Upload-files.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/Upload-files.vue deleted file mode 100644 index 35b1b6d..0000000 --- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/Upload-files.vue +++ /dev/null @@ -1,158 +0,0 @@ -<template> - <el-dialog - :visible.sync="dialogVisible" - append-to-body - title="涓婁紶鏂囦欢" - > - <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider> - <ul> - <li> - 1.绾㈣壊瀛椾綋琛ㄧず蹇呰緭椤� - </li> - <li> - 2.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹� - </li> - </ul> - <Divider left="30px" text="excel鏂囦欢锛岄�夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider> - <el-upload - :before-upload="beforeUpload" - :headers="uploadHeaders" - :on-change="uploadChange" - :on-error="onError" - :on-success="onSuccess" - :show-file-list="false" - accept=".xlsx, .xls" - action="/api/ubcs-code/codeClassify/importClassify" - class="upload-demo"> - <el-button size="small" style="margin: 15px 35px" type="primary">娴忚鏂囦欢</el-button> - </el-upload> - <template #footer> - <el-button - :loading="downloadLoading" - size="small" - type="primary" - @click="downloadTemplateFun" - >涓嬭浇瀵煎叆妯℃澘 - </el-button - > - <el-button size="small" @click="dialogVisible = false">鍏抽棴</el-button> - </template> - </el-dialog> -</template> - -<script> -// import {downloadErrorFile,downloadBatchImportApplyTemplate} from '@/api/template/templateAttr' -import {getToken} from "@/util/auth"; -import func from "@/util/func"; - -export default { - name: "Upload-files", - props: { - visible: { - type: Boolean, - default: false, - }, - codeClassifyOid: { - type: String, - default: "", - }, - }, - data() { - return { - flga: true, - pageLoading: null, - downloadLoading: false, - } - }, - watch: { - visible: { - handler(newval, oldval) { - // console.log('newval',newval) - } - } - }, - computed: { - uploadHeaders() { - return { - "Blade-Auth": "bearer " + getToken(), - }; - }, - dialogVisible: { - get() { - return this.visible; - }, - set(val) { - this.$emit("update:visible", val); - }, - }, - }, - methods: { - //鏂囦欢涓婁紶鍓� - async beforeUpload(file) { - const fileType = file.name.split(".").pop(); - if (fileType !== "xlsx" && fileType !== "xls") { - // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� - this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�"); - return Promise.reject(false); - } - this.pageLoading = this.$loading({ - lock: true, - text: "鏂囦欢涓婁紶涓�", - spinner: "el-icon-loading", - background: "rgba(0, 0, 0, 0.7)", - }); - return true; - }, - // 鏂囦欢涓婁紶鎴愬姛 - onSuccess(resbonse) { - if (Object.keys(resbonse.data).length === 0) { - this.$message.success("涓婁紶鎴愬姛锛�"); - this.dialogVisible = false; - return; - } - if (resbonse.data.fileOid) { - const fileName = resbonse.data.filePath.split("/").pop(); - this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒"); - downloadErrorFile({uuid: resbonse.data.fileOid}).then((res) => { - func.downloadFileByBlobHandler(res); - }); - } - }, - //鐐瑰嚮涓嬭浇妯℃澘 - downloadTemplateFun() { - this.downloadLoading = true; - downloadBatchImportApplyTemplate({codeClassifyOid: this.codeClassifyOid}).then(res => { - this.$utilFunc.downloadFileByBlob(res.data, "妯℃澘鏂囦欢.xls"); - this.downloadLoading = false; - }).catch((res) => { - this.$message.warning(res) - this.downloadLoading = false; - }) - }, - //鏂囦欢涓婁紶澶辫触 - onError(res) { - this.pageLoading.close(); - }, - //鏂囦欢鐘舵�佹敼鍙� - uploadChange(file) { - if (file.status === "success" || file.status === "error") { - this.pageLoading.close(); - } - } - } -} -</script> - -<style lang="scss" scoped> -ul { - color: rgb(188, 188, 188); - margin: 20px 0 20px 0; - padding: 0 0 0 30px; - list-style: none; - - li { - margin-bottom: 5px; - font-size: 13px; - } -} -</style> diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/transfer.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/transfer.vue index 8afee4f..68f7a40 100644 --- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/transfer.vue +++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/transfer.vue @@ -1,59 +1,59 @@ <template> - <el-dialog - v-dialogDrag - :close-on-click-modal="false" - :destroy-on-close="true" - :title="title" - :visible.sync="visible" - append-to-body="true" - class="avue-dialog" - style="text-align: center" - width="40%" - @close="dialogClose"> - <el-transfer - v-model="rightRoleData" - v-loading="loading" - :data="data" - :filter-method="filterMethod" - :render-content="renderFunc" - :titles="['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊']" - filter-placeholder="瑙掕壊鍚嶇О鎼滅储" - filterable - style="text-align: left; display: inline-block;"> - </el-transfer> - <span slot="footer" class="dialog-footer"> - <el-button @click="visible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="sendHandler">纭� 瀹�</el-button> - </span> - </el-dialog> + <el-dialog + v-dialogDrag + :close-on-click-modal="false" + :destroy-on-close="true" + :title="title" + :visible.sync="visible" + append-to-body="true" + class="avue-dialog" + style="text-align: center" + width="50%" + @close="dialogClose"> + <el-transfer + v-model="rightRoleData" + v-loading="loading" + :data="data" + :filter-method="filterMethod" + :render-content="renderFunc" + :titles="transferTitle" + filter-placeholder="鍏抽敭璇嶆悳绱�" + filterable + style="text-align: left; display: inline-block;"> + </el-transfer> + <div slot="footer" class="dialog-footer"> + <div class="valueInfo" v-if="bottomValue">宸茶缃殑鍊间负锛歔{{bottomValue}}]</div> + <el-button @click="visible = false" size="small">鍙� 娑�</el-button> + <el-button type="primary" @click="sendHandler" size="small">纭� 瀹�</el-button> + </div> + </el-dialog> </template> <script> export default { name: "transfer", - props: ['title', 'leftRoleData', 'rightRoleData'], + props: ['title', 'leftRoleData', 'rightRoleData', 'transferTitle' , 'bottomValue'], data() { return { visible: false, // 閫氳繃 this.$refs.transfer.visible = true; 寮�鍚瓙缁勪欢瀵硅瘽妗� data: [], - value: [], loading: false, filterMethod(query, item) { return item.label.indexOf(query) > -1; }, renderFunc(h, option) { - return <span><i class="el-icon-s-custom"></i> { option.label }</span>; + return <span><i class="el-icon-s-custom"></i> {option.label}</span>; } } }, watch: { //娓叉煋绌挎妗� leftRoleData: { - handler(newval, oldval) { + handler(newval) { if (newval) { // 娓呯┖data鏁扮粍 this.data = []; - newval.forEach((city, index) => { + newval.forEach((city) => { this.data.push({ label: city.name, key: city.oid, @@ -82,11 +82,20 @@ </script> <style lang="scss" scoped> -/deep/ .el-transfer-panel{ /* 宸﹀彸涓や釜绌挎妗嗙殑楂樺害鍜屽搴� */ - height: 450px; +/deep/ .el-transfer-panel { + height: 450px; /* 宸﹀彸涓や釜绌挎妗嗙殑楂樺害鍜屽搴� */ + width: 300px; } + /deep/ .el-transfer-panel__list.is-filterable { height: 323px; /* 绌挎妗嗗垪琛ㄩ珮搴� */ } - +.valueInfo{ + float: left; + border: 1px solid #E9E7E7; + display: inline-block; + vertical-align: middle; + padding: 6px 12px; + line-height: 1; +} </style> diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue new file mode 100644 index 0000000..d75110c --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue @@ -0,0 +1,146 @@ +<template> + <el-dialog + v-dialogDrag + :close-on-click-modal="false" + :destroy-on-close="true" + :title="title" + :visible.sync="visible" + width="40%" + append-to-body + class="avue-dialog" + style="margin-top: -20vh !important;" + > + <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider> + <ul> + <li> + 璇风偣鍑绘祻瑙堟枃浠惰繘琛屼笂浼� + </li> + </ul> + <Divider left="30px" text="閫夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider> + <el-upload + :action="fileUrl" + :before-upload="beforeUpload" + :data="fileData" + :headers="uploadHeaders" + :on-change="uploadChange" + :on-error="onError" + :on-success="onSuccess" + :show-file-list="false" + class="upload-demo"> + <el-button size="small" style="margin: 15px 35px" type="primary">娴忚鏂囦欢</el-button> + </el-upload> + <template #footer> + <el-button size="small" @click="visible = false">鍏抽棴</el-button> + </template> + </el-dialog> +</template> + +<script> +import {getToken} from "@/util/auth"; +import func from "@/util/func"; +import {validatenull} from "@/util/validate"; + +export default { + name: "upload-file", + props: { + fileType: { + type: Array, + default: () => [] + }, + title: { + type: String, + default: '涓婁紶鏂囦欢' + }, + fileUrl: { + type: String, + default: '' + }, + fileData: { + type: Array, + default: () => [] + } + }, + data() { + return { + flga: true, + pageLoading: null, + downloadLoading: false, + visible: false, + } + }, + created() { + }, + watch: { + visible: { + handler(newval, oldval) { + // console.log('newval',newval) + } + } + }, + computed: { + uploadHeaders() { + return { + "Authorizationtoken": getToken(), + }; + }, + }, + methods: { + //鏂囦欢涓婁紶鍓� + async beforeUpload(file) { + // 鑾峰彇鏂囦欢鎵╁睍鍚� + const fileExtension = file.name.split(".").pop().toLowerCase(); // 杞崲涓哄皬鍐欎互閬垮厤澶у皬鍐欎笉鍖归厤鐨勯棶棰� + if (this.fileType) { + if (!this.fileType.includes(fileExtension)) { + // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� + this.$message.error(`鍙厑璁镐笂浼�${this.fileType.toString()}鏍煎紡鐨勬枃浠禶); + return Promise.reject(false); + } + } + this.pageLoading = this.$loading({ + lock: true, + text: "鏂囦欢涓婁紶涓�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + + return true; + }, + // 鏂囦欢涓婁紶鎴愬姛 + onSuccess(resbonse) { + console.log(resbonse); + if (resbonse.code === 200) { + this.$message.success("瀵煎叆鎴愬姛锛�"); + this.visible = false; + } else { + this.$message.error(resbonse.msg); + } + }, + //鏂囦欢涓婁紶澶辫触 + onError(res) { + this.pageLoading.close(); + this.$message.error(res); + }, + //鏂囦欢鐘舵�佹敼鍙� + uploadChange(file) { + console.log( this.pageLoading); + if (file.status === "success" || file.status === "error") { + this.pageLoading.close(); + } + } + } +} +</script> + +<style lang="scss" scoped> +ul { + color: rgb(188, 188, 188); + margin: 20px 0 20px 0; + padding: 0 0 0 30px; + list-style: none; + + li { + margin-bottom: 5px; + font-size: 13px; + } +} +</style> diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js index ddb084d..e81ff9b 100644 --- a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js +++ b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js @@ -8,7 +8,6 @@ export const doAction = (options,callback) => { - //modelName 娴佺▼鍚嶇О 榛樿涓� 褰撳墠鐢ㄦ埛+'鍚姩娴佺▼'+褰撳墠鍒嗙被 //multi 鏄惁寮�鍚閫� //checknotprocess 鏄惁鍏佽鍙戣捣娴佺▼ diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/downLoadFile.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/downLoadFile.vue new file mode 100644 index 0000000..d9ba6e4 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/components/actions/base/downLoadFile.vue @@ -0,0 +1,13 @@ +<template> + +</template> + +<script> +export default { + name: "downLoadFile" +} +</script> + +<style scoped> + +</style> diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js index 4c6c358..85da8fe 100644 --- a/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js +++ b/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js @@ -5,8 +5,10 @@ import {validatenull} from "@/util/validate"; import Vue from "vue"; import func from "@/util/func"; +import {download} from "@/api/base/file"; export const doAction = (options,callback) => { + console.log(options) options.sourceData = options.sourceData || {}; options.dataStore = options.dataStore || []; if (!options.dataStore || options.dataStore.length < 1) { @@ -33,10 +35,22 @@ */ export const showStartWindow = (options,callback)=> { const paramVOS = options.paramVOS; - if (!paramVOS['form'] && !paramVOS['context']) { - Vue.prototype.$message.error("鎸夐挳閰嶇疆涓嶆纭�"); - return false; - } + const oids = options.dataStore.map(item => item.oid).join(','); + let data = new FormData(); + data.append('fileOid',oids); + download(data).then(res => { + console.log(res); + if (res) { + func.downloadFileByBlobHandler(res); + Vue.prototype.$message.success("涓嬭浇鎴愬姛"); + } + }).catch(err => { + console.log(err); + }); + // if (!paramVOS['form'] && !paramVOS['context']) { + // Vue.prototype.$message.error("鎸夐挳閰嶇疆涓嶆纭�"); + // return false; + // } // func.downloadFileByBlobHandler(); } diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue index ac10977..b374b46 100644 --- a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue +++ b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue @@ -6,14 +6,18 @@ :width="width" append-to-body="true" class="avue-dialog" - style="margin-top: -10% !important;" title="鍚姩娴佺▼" - top="0" @close="dialogClose"> - <el-form :model="saveParam" :rules="rules" class="demo-form-inline" label-position="left" label-width="auto"> + <el-divider content-position="left">娴佺▼淇℃伅</el-divider> + + <el-form ref="nodeForm" :model="saveParam" :rules="rules" class="demo-form-inline" label-position="left" + label-width="auto"> <el-form-item label="娴佺▼妯℃澘"> - <el-input v-model="saveParam.modelName" disabled placeholder="娴佺▼妯℃澘"></el-input> + <el-select v-model="saveParam.processTemplate" filterable style="width: 100%;" @change="proTemSelect($event)"> + <el-option v-for="(item, key) in processTemplateList" :key="key" :label="item.value" + :value="item.value"></el-option> + </el-select> </el-form-item> <el-form-item label="娴佺▼鍚嶇О" prop="processName"> <el-input v-model="saveParam.processName" placeholder="娴佺▼鍚嶇О"> @@ -25,30 +29,33 @@ </el-form-item> </el-form> - <el-divider></el-divider> - <!-- <div class="btns-icon">--> - <!-- <el-button circle icon="el-icon-star-off" @click="handleCollect"></el-button>--> - <!-- </div>--> - <el-form :model="collectParam" class="demo-form-inline" label-position="left" label-width="auto"> - <el-form-item v-for="(item, index) in initFrom" :key="index" :label="`鑺傜偣${index + 1}`"> - <el-select style="width: 100%;" filterable v-model="collectParam.flowTaskUsers[index]['userId']" - :placeholder="item.value" @change="handleSelect($event, index)"> - <el-option :label="key.name" :value="key.name" v-for="(key, keyi) in item.processNodes" - :key="keyi"></el-option> - </el-select> + <el-divider content-position="left">娴佺▼鑺傜偣</el-divider> + + + <el-form :key="formKey" v-loading="nodeLoading" :model="collectParam" :rules="nodeRules" class="demo-form-inline" + label-position="left" + label-width="auto"> + <el-form-item v-for="(item, index) in initFrom" :key="index" :label="item.name" prop="node"> + <div @click="nodeChange(item)"> + <el-input v-model="collectParam[item.name+'name']" readonly="true" suffix-icon="el-icon-zoom-in"></el-input> + </div> </el-form-item> </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="handleCancel">鍙� 娑�</el-button> - <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button> - </div> + <div slot="footer" class="dialog-footer"> + <el-button size="small" @click="handleCancel">鍙� 娑�</el-button> + <el-button size="small" type="primary" @click="handleConfirm">纭� 瀹�</el-button> + </div> + <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData" + :title="`涓恒��${this.nodeName}銆戦�夊彇鍊糮" :transferTitle="transferTitle" :bottomValue="bottomValue" + @transferSend="roleSendHandler"></transfer> </el-dialog> + </template> <script> import {validatenull} from "@/util/validate"; -import {getTemplateByType, getAllProcessNode} from "@/api/base/startWork/index" +import {getTemplateByType, getAllProcessNode, startProcess} from "@/api/base/startWork/index" export default { name: "startWorkFlow", @@ -71,34 +78,67 @@ data() { return { visible: false, - saveParam: {}, // 瀵硅薄鍖呭惈 {modelName娴佺▼妯℃澘(鐢辨帴鍙h繑鍥炲綋鍓嶆祦绋嬫ā鏉�) , processName娴佺▼鍚嶇О锛堜负褰撳墠鐢ㄦ埛+'鍚姩娴佺▼'+褰撳墠鍒嗙被锛� , processDesc娴佺▼鎻忚堪 } + saveParam: { + processName: '' + }, // 瀵硅薄鍖呭惈 {processTemplate娴佺▼妯℃澘(鐢辨帴鍙h繑鍥炲綋鍓嶆祦绋嬫ā鏉�) , processName娴佺▼鍚嶇О锛堜负褰撳墠鐢ㄦ埛+'鍚姩娴佺▼'+褰撳墠鍒嗙被锛� , processDesc娴佺▼鎻忚堪 } + processTemplateList: [], // 娴佺▼妯℃澘涓嬫媺鏁扮粍 initFrom: [], // 褰撳墠娴佺▼鑺傜偣寰幆鏁扮粍 collectParam: {}, // 娴佺▼鑺傜偣涓嬫媺妗嗗弻鍚戠粦瀹氬睘鎬� typeName: [], // 娴佺▼鑺傜偣option寰幆閫夐」 + nodeLoading: false, rules: { processName: [ {required: true, message: '娴佺▼鍚嶇О涓嶈兘涓虹┖', trigger: 'blur'}, {min: 3, max: 50, message: '闀垮害鍦� 3 鍒� 50 涓瓧绗�', trigger: 'blur'} ] - } + }, + nodeRules: { + node: [ + {required: true, message: '閫夋嫨鍐呭涓嶈兘涓虹┖', trigger: 'change'}, + ] + }, + bottomValue:'', + leftRoleData: [], + rightRoleData: [], + transferTitle: [], + nodeName: '', // 褰撳墠鑺傜偣鍚嶇О + userVo: [ + { + "children": [], + "id": "zkjs", + "leaf": true, + "name": "鎬讳細璁″笀", + "oid": "1241AC3B-26AF-9B86-7870-53DA8D78A742", + "secret": -1, + "secretText": "", + "type": "user" + }, + { + "children": [], + "id": "1", + "leaf": true, + "name": "娴嬭瘯", + "oid": "921D71F8-C2BB-3BCE-B744-AD0C3812F41A", + "secret": -1, + "secretText": "", + "type": "user" + }, + { + "children": [], + "id": "5", + "leaf": true, + "name": "鎬讳細璁″笀", + "oid": "34ddb5a8-ab95-4070-b72f-abaaa48cf8b1", + "secret": -1, + "secretText": "", + "type": "user" + } + ], + formKey: 0, + } }, - watch: { - users: { - handler(val) { - this.collectParam.flowTaskUsers = val - }, - deep: true, - immediate: true - }, - parameter: { - handler(newval, oldval) { - this.saveParam = Object.assign({processName: '', processDesc: '',}, newval); - }, - deep: true, - immediate: true - } - }, + watch: {}, computed: { fullscreen() { if (this.paramVOS.width || this.paramVOS.height) { @@ -121,7 +161,7 @@ }, }, created() { - this.modelNameChange(); + // this.modelNameChange(); this.getWorkByType(); }, mounted() { @@ -131,30 +171,43 @@ getWorkByType() { let params = { type: '鏂囨。瀹$娴佺▼', - filterTemplate: "" + filterTemplate: "鏂囨。瀹$娴佺▼" } getTemplateByType(params).then(res => { const data = res.data.data; - data.forEach(item => { - this.getProcessNode(item); - }) - this.initFrom = data; - }).catch(error => { - console.log(error); + const userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); + + this.processTemplateList = data; + this.saveParam.processTemplate = data[0].value; + this.saveParam.processName = this.paramVOS.processName || userInfo.content.userName + '-' + data[0].value; // 瀵规祦绋嬫ā鏉� 娴佺▼鍚嶇О璧嬮粯璁ゅ�� + + this.getProcessNode(data[0].attributes.oid); // 棣栨杩涘叆璋冪敤绗竴涓ā鏉跨殑鎵�鏈夎妭鐐� + }).catch(err => { + this.$message.error(err); }) }, // 璇锋眰娴佺▼鑺傜偣 - getProcessNode(item) { + getProcessNode(oid) { let params = { - processOid: item.attributes.oid, + processOid: oid, maxSecret: -1 } getAllProcessNode(params).then(res => { const nodes = res.data.data; - item.processNodes = nodes; - }).catch(error => { - console.log(error); + this.initFrom = nodes; + nodes.forEach(item => { + // let name = item.processUserVO[0].children.map(name => name.name).join(','); + // let ids = item.processUserVO[0].children.map(id => id.id).join(','); + let name = this.userVo.map(name => name.name).join(','); + let ids = this.userVo.map(id => id.id).join(','); + this.bottomValue = name; + this.collectParam[item.name + 'name'] = name; + this.collectParam[item.name] = ids; + }) + this.nodeLoading = false; + }).catch(err => { + this.$message.error(err); }) }, @@ -163,38 +216,109 @@ this.visible = false; }, - handleSelect() { - - }, - - handleCollect() { - - }, handleCancel() { this.dialogClose(); }, handleConfirm() { - console.log(this.initFrom); + const oids = this.dataStore.map(item => item.oid).join(','); + let params = { + deployid:this.processTemplateList[0].attributes.deploymentId, + title:this.saveParam.processName, + description:this.saveParam.processDesc, + btmType:this.processTemplateList[0].attributes.taskType, + uiType:this.processTemplateList[0].attributes.taskType, + oids:oids, // 褰撳墠鏁版嵁oid锛屽涓敤,鍒嗛殧 + detailInfoUrl:this.paramVOS.detailInfoUrl || '', // 鐢ㄦ埛閰嶇疆灞炴�� + resetStatus:'Editing', + nodeUsers:{ + ...this.collectParam + } + } + startProcess(params).then(res => { + if(res.data.obj.status === 200){ + this.dialogClose(); + this.$message.success('鍚姩娴佺▼鎴愬姛'); + }else { + this.$message.error(res.data.obj.error); + } + }).catch(err => { + this.$message.error(err); + }) }, - // 娴佺▼鍚嶇О鍒濆鍖栫粦瀹� - modelNameChange() { - var userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); + // 鍒囨崲娴佺▼妯℃澘 + proTemSelect(event) { + this.nodeLoading = true; + this.getProcessNode(event); + this.$refs.nodeForm.clearValidate(); + }, - if (this.paramVOS && this.paramVOS.modelName) { - this.saveParam.modelName = this.paramVOS.modelName; - } else if (userInfo.content && userInfo.content.userName) { - this.saveParam.modelName = userInfo.content.userName + '鍚姩娴佺▼'; - } else { - this.saveParam.modelName = ''; - } - } + // 鑺傜偣鐐瑰嚮浜嬩欢 + nodeChange(item) { + this.nodeName = item.name; + this.transferTitle = [`[${item.name}]鏈�夌敤鎴穈, `[${item.name}]宸查�夌敤鎴穈] + this.leftRoleData = [ + { + "children": [], + "id": "zkjs", + "leaf": true, + "name": "鎬讳細璁″笀", + "oid": "1241AC3B-26AF-9B86-7870-53DA8D78A742", + "secret": -1, + "secretText": "", + "type": "user" + }, + { + "children": [], + "id": "1", + "leaf": true, + "name": "娴嬭瘯", + "oid": "921D71F8-C2BB-3BCE-B744-AD0C3812F41A", + "secret": -1, + "secretText": "", + "type": "user" + }, + { + "children": [], + "id": "5", + "leaf": true, + "name": "鎬讳細璁″笀", + "oid": "34ddb5a8-ab95-4070-b72f-abaaa48cf8b1", + "secret": -1, + "secretText": "", + "type": "user" + } + ]; + this.rightRoleData = this.userVo.map(item => item.oid); + this.$refs.transfer.visible = true; + }, + + // 绌挎妗嗗洖濉� + roleSendHandler(data) { + let filterData; + filterData = this.userVo.filter(item => { + return data.includes(item.oid); + }); + const filterName = filterData.map(item => item.name).join(','); + this.$set(this.collectParam, this.nodeName + 'name', filterName); + this.formKey += 1; // 鍒锋柊琛ㄥ崟 鍥犱负鍙屽悜缁戝畾鐨則his.collectParam[this.nodeName + 'name']鏄姩鎬佸�� vue鏃犳硶妫�娴嬪埌鍊肩殑鏇存柊 + }, } } </script> <style lang="scss" scoped> +.el-form-item { + margin-bottom: 25px; +} +.el-divider--horizontal { + margin-bottom: 20px !important; +} + +.el-divider__text.is-left { + color: #8b8989 !important; +} </style> diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue index 433d92d..6b73c7c 100644 --- a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue +++ b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue @@ -1,45 +1,35 @@ <template> <el-dialog v-dialogDrag - :width="width" - :visible.sync="visible" - :destroy-on-close="true" :close-on-click-modal="false" + :destroy-on-close="true" + :visible.sync="visible" + :width="width" append-to-body - title="涓婁紶鏂囦欢" class="avue-dialog" + title="涓婁紶鏂囦欢" + style="margin-top: -20vh !important;" > <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider> <ul> <li> - 1.绾㈣壊瀛椾綋琛ㄧず蹇呰緭椤� - </li> - <li> - 2.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹� + 璇风偣鍑绘祻瑙堟枃浠惰繘琛屼笂浼� </li> </ul> - <Divider left="30px" text="excel鏂囦欢锛岄�夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider> + <Divider left="30px" text="閫夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider> <el-upload :before-upload="beforeUpload" + :data="fileData" :headers="uploadHeaders" :on-change="uploadChange" :on-error="onError" :on-success="onSuccess" :show-file-list="false" - accept=".xlsx, .xls" - action="/api/ubcs-code/codeClassify/importClassify" + action="/api/vciFileUploadController/uploadFile" class="upload-demo"> <el-button size="small" style="margin: 15px 35px" type="primary">娴忚鏂囦欢</el-button> </el-upload> <template #footer> - <el-button - :loading="downloadLoading" - size="small" - type="primary" - @click="downloadTemplateFun" - >涓嬭浇瀵煎叆妯℃澘 - </el-button - > <el-button size="small" @click="visible = false">鍏抽棴</el-button> </template> </el-dialog> @@ -74,8 +64,11 @@ flga: true, pageLoading: null, downloadLoading: false, - visible:false, + visible: false, } + }, + created() { + console.log(this.sourceData); }, watch: { visible: { @@ -87,8 +80,17 @@ computed: { uploadHeaders() { return { - "Blade-Auth": "bearer " + getToken(), + "Authorizationtoken": getToken(), }; + }, + fileData() { + return { + ownbizOid: this.sourceData.oid, + ownBtmName: this.sourceData.btmname, + secretGrade: -1, + fileDocClassify: '', + updateFileFlag: true, + } }, width() { if (!validatenull(this.paramVOS.width)) { @@ -98,14 +100,14 @@ return this.paramVOS.width + "px"; } } else { - return "60%"; + return "40%"; } }, - fullscreen(){ + fullscreen() { console.log(this.paramVOS) - if(this.paramVOS.width || this.paramVOS.height){ + if (this.paramVOS.width || this.paramVOS.height) { return false; - }else if(this.paramVOS.form){ + } else if (this.paramVOS.form) { return false; } return true; @@ -114,49 +116,39 @@ methods: { //鏂囦欢涓婁紶鍓� async beforeUpload(file) { - const fileType = file.name.split(".").pop(); - if (fileType !== "xlsx" && fileType !== "xls") { - // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� - this.$message.error("鍙厑璁镐笂浼爔lsx銆亁ls鏍煎紡鐨勬枃浠�"); - return Promise.reject(false); + // 鑾峰彇鏂囦欢鎵╁睍鍚� + const fileExtension = file.name.split(".").pop().toLowerCase(); // 杞崲涓哄皬鍐欎互閬垮厤澶у皬鍐欎笉鍖归厤鐨勯棶棰� + + if(this.paramVOS.fileType){ + if (!this.paramVOS.fileType.includes(fileExtension)) { + // 涓婁紶鏍煎紡涓嶇鍚堣姹傦紝鎻愮ず閿欒淇℃伅骞跺彇娑堜笂浼� + this.$message.error(`鍙厑璁镐笂浼�${this.paramVOS.fileType.toString()}鏍煎紡鐨勬枃浠禶); + return Promise.reject(false); + } } + this.pageLoading = this.$loading({ lock: true, text: "鏂囦欢涓婁紶涓�", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }); + return true; }, // 鏂囦欢涓婁紶鎴愬姛 onSuccess(resbonse) { - if (Object.keys(resbonse.data).length === 0) { + if (resbonse.code === 200) { this.$message.success("涓婁紶鎴愬姛锛�"); this.dialogVisible = false; - return; + }else { + this.$message.error(resbonse.msg); } - if (resbonse.data.fileOid) { - const fileName = resbonse.data.filePath.split("/").pop(); - this.$message.error("璇蜂笅杞介敊璇俊鎭枃浠惰繘琛屾煡鐪嬶紒"); - downloadErrorFile({uuid: resbonse.data.fileOid}).then((res) => { - func.downloadFileByBlobHandler(res); - }); - } - }, - //鐐瑰嚮涓嬭浇妯℃澘 - downloadTemplateFun() { - this.downloadLoading = true; - downloadBatchImportApplyTemplate({codeClassifyOid: this.codeClassifyOid}).then(res => { - this.$utilFunc.downloadFileByBlob(res.data, "妯℃澘鏂囦欢.xls"); - this.downloadLoading = false; - }).catch((res) => { - this.$message.warning(res) - this.downloadLoading = false; - }) }, //鏂囦欢涓婁紶澶辫触 onError(res) { this.pageLoading.close(); + this.$message.error(res); }, //鏂囦欢鐘舵�佹敼鍙� uploadChange(file) { diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js index b486c54..13c4f04 100644 --- a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js +++ b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js @@ -5,12 +5,16 @@ import {validatenull} from "@/util/validate"; import Vue from "vue"; import uploadFileDialog from "@/components/actions/base/uploadFile" +import func from "@/util/func"; export const doAction = (options,callback) => { options.sourceData = options.sourceData || {}; options.dataStore = options.dataStore || []; - + if (func.isEmptyObject(options.sourceData)) { + Vue.prototype.$message.error("璇烽�夋嫨瑕佷笂浼犵殑鍒嗙被锛�"); + return false; + } callPreEvent(options, doBefore, function (options) { showStartWindow(options, function () { callPostEvent(options, doAfter, callback,type); diff --git a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js index b3685d3..31752f6 100644 --- a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js +++ b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js @@ -35,7 +35,7 @@ uploadfile: () => {import("@/components/actions/base/uploadFileAction").then(module => { module.doAction(options,callback); })}, - //涓婁紶鏂囦欢 + //涓嬭浇鏂囦欢 downloadfile: () => {import("@/components/actions/base/downloadFileAction").then(module => { module.doAction(options,callback); })}, diff --git a/Source/plt-web/plt-web-ui/src/main.js b/Source/plt-web/plt-web-ui/src/main.js index 5471b03..05e9ed2 100644 --- a/Source/plt-web/plt-web-ui/src/main.js +++ b/Source/plt-web/plt-web-ui/src/main.js @@ -39,7 +39,7 @@ // 瀵屾枃鏈粍浠� import richText from '@/components/PLT-basic-component/richText' // 涓婁紶鏂囦欢缁勪欢 -import UploadFiles from '@/components/PLT-basic-component/Upload-files' +import uploadFile from '@/components/PLT-basic-component/upload-file' // 琛ㄥ崟涓婁紶鏂囦欢缁勪欢 import formUpload from "@/components/PLT-basic-component/formUpload"; // 绌挎妗嗙粍浠� @@ -56,7 +56,7 @@ Vue.component('dynamicTableForm', dynamicTableForm); Vue.component('dynamicForm', dynamicForm); Vue.component('richText', richText); -Vue.component('UploadFiles', UploadFiles); +Vue.component('uploadFile', uploadFile); Vue.component('formUpload', formUpload); Vue.component('Divider', Divider); Vue.component('transfer', transfer); diff --git a/Source/plt-web/plt-web-ui/src/util/basic-option.js b/Source/plt-web/plt-web-ui/src/util/basic-option.js index aa2feb4..1c2b03c 100644 --- a/Source/plt-web/plt-web-ui/src/util/basic-option.js +++ b/Source/plt-web/plt-web-ui/src/util/basic-option.js @@ -7,8 +7,11 @@ searchIcon:true, selection:true, stripe:true, + headerAlign: 'center', + align: 'center', // selection 鏄惁鏈夐�夋嫨妗� // indexFixed:true/left/right, 鍥哄畾鍒� // menu:false, 鏄惁鏈夋搷浣滄爮 // menuTitle:xxx, 鎿嶄綔鏍忔爣棰� + // stripe 鏉$汗 } diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue index 45970cc..1970aa3 100644 --- a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue @@ -2,6 +2,7 @@ <basic-container> <avue-crud ref="userCrud" + :before-open="beforeOpen" :data="tableData" :option="option" :page.sync="page" @@ -14,7 +15,29 @@ @current-change="currentChange" @selection-change="selectChange" @row-click="rowClickHandler" + @row-save="rowSaveHandler" + @row-update="rowUpdateHandler" > + <!-- 閮ㄩ棬澶撮儴鎼滅储鎻掓Ы --> + <template slot-scope="{disabled,size}" slot="pkDepartmentNameSearch"> + <div style="display: flex;gap: 5px"> + <el-select v-model="departSearchValue" clearable placeholder="璇烽�夋嫨閮ㄩ棬"> + <el-option :label="departSearchObj.name" :value="departSearchObj.oid"></el-option> + </el-select> + <el-button size="small" type="success" @click="dialogDepartSearchHandler">閫夋嫨閮ㄩ棬</el-button> + </div> + </template> + + <!-- 瀵硅瘽妗嗛儴闂ㄦ彃妲� --> + <template slot="pkDepartmentNameForm" slot-scope="scope"> + <div style="display: flex;gap: 5px"> + <el-select v-model="departValue" clearable placeholder="璇烽�夋嫨閮ㄩ棬"> + <el-option :label="departObj.name" :value="departObj.oid"></el-option> + </el-select> + <el-button size="small" type="success" @click="dialogDepartHandler">閫夋嫨閮ㄩ棬</el-button> + </div> + </template> + <template slot="status" slot-scope="{row}"> <el-tag v-if="row.status === 0" type="success">鍚敤</el-tag> <el-tag v-if="row.status === 1" type="danger">鍋滅敤</el-tag> @@ -26,40 +49,157 @@ </template> <template #menu="{row,index,size}"> - <el-button size="small" type="text" @click="stopUserHandler(row)"> + <el-button icon="el-icon-edit" size="small" type="text" @click.stop="rowEditHandler(row,index)">缂栬緫</el-button> + <el-button icon="el-icon-delete" size="small" type="text" @click.stop="rowDeleteHandler(row)">鍒犻櫎</el-button> + <el-button size="small" type="text" @click.stop="stopUserHandler(row)"> <span v-if="row.status === 0" style="color: #fa3434"><i class="el-icon-video-pause"></i> 鍋滅敤</span> <span v-if="row.status === 1" style="color: #55b61d"><i class="el-icon-video-pause"></i> 鍚敤</span> </el-button> </template> <template slot="menuLeft" slot-scope="scope"> - <el-button icon="el-icon-delete" plain size="small" type="danger">鍒犻櫎</el-button> + <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button> <el-button icon="el-icon-user" plain size="small" type="primary" @click="roleHandler">鍒嗛厤瑙掕壊</el-button> - <el-button icon="el-icon-school" plain size="small" type="primary">鍒嗛厤閮ㄩ棬</el-button> - <el-button icon="el-icon-key" plain size="small" type="success">璁剧疆瀵嗙爜绛栫暐</el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary">瀵煎叆浜哄憳</el-button> - <el-button icon="el-icon-download" plain size="small" type="primary">涓嬭浇瀵煎叆妯℃澘</el-button> + <el-button icon="el-icon-school" plain size="small" type="primary" @click="departmentHandler">鍒嗛厤閮ㄩ棬</el-button> + <el-button icon="el-icon-key" plain size="small" type="success" @click="setPwsHandler">璁剧疆瀵嗙爜绛栫暐</el-button> + <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadRole">瀵煎叆浜哄憳</el-button> + <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadHandler">涓嬭浇瀵煎叆妯℃澘</el-button> </template> </avue-crud> - <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData" title="鍒嗛厤瑙掕壊" - @transferSend="roleSendHandler"></transfer> + + <!-- 鍒嗛厤瑙掕壊绌挎妗� --> + <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData" + :transferTitle="transferTitle" title="鍒嗛厤瑙掕壊" + @transferSend="roleSendHandler"> + </transfer> + + <!-- 璁剧疆瀵嗙爜绛栫暐瀵硅瘽妗� --> + <el-dialog + v-dialogDrag + v-loading="pwdLoading" + :destroy-on-close="true" + :visible.sync="pwdVisible" + append-to-body="true" + class="avue-dialog" + style="margin-top: -15vh !important;" + title="璁剧疆瀵嗙爜绛栫暐" + width="30%" + > + + <div class="password-strategy-container"> + <div><i class="el-icon-setting"/>璁剧疆瀵嗙爜绛栫暐锛�</div> + <el-select v-model="pwdValue" placeholder="璇烽�夋嫨瀵嗙爜绛栫暐"> + <el-option v-for="(item,index) in pwdList" :key="index" :label="item.name" :value="item.id"></el-option> + </el-select> + </div> + + <div slot="footer" class="dialog-footer"> + <el-button size="small" @click="pwdVisible = false">鍙� 娑�</el-button> + <el-button size="small" type="primary" @click="savePwdHandler">纭� 瀹�</el-button> + </div> + </el-dialog> + + <!-- 瀵煎叆浜哄憳 --> + <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" title="瀵煎叆浜哄憳"></upload-file> + + <!-- 鍒嗛厤閮ㄩ棬瀵硅瘽妗� --> + <el-dialog + v-dialogDrag + v-loading="departLoading" + :destroy-on-close="true" + :visible.sync="departVisible" + append-to-body="true" + class="avue-dialog" + title="鍒嗛厤閮ㄩ棬" + width="50%" + > + <avue-crud + ref="departCrud" + :data="departData" + :option="departOption" + @current-row-change="handleCurrentRowChange" + > + </avue-crud> + <div slot="footer" class="dialog-footer"> + <el-button size="small" @click="departVisible = false">鍙� 娑�</el-button> + <el-button size="small" type="primary" @click="saveDepartHandler">纭� 瀹�</el-button> + </div> + </el-dialog> </basic-container> </template> <script> import basicOption from '@/util/basic-option' -import {getDataUsers, stopUser, gridRoles, listRoleByUserOid, saveRights, addUser, updateUser, deleteUser} from '@/api/system/user/api' +import { + getDataUsers, + stopUser, + gridRoles, + listRoleByUserOid, + saveRights, + addUser, + updateUser, + deleteUser, + selectPwdStrategyMap, + saveUserPasswordStrateg, + download, + departmentQueryController, + saveUsersDepts +} from '@/api/system/user/api' import {column} from "./option" import func from '@/util/func' export default { name: "userManage", - data() { + data: function () { return { + departSearchObj:{}, + departSearchValue:'', + loadKey: 0, + departStatus: '', // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗� + departValue: '', // 閮ㄩ棬瀵硅瘽妗嗕笅鎷夋缁戝畾鍊� + departObj: {}, // 閮ㄩ棬瀵硅瘽妗嗕笅鎷夋閫夐」缁戝畾鍊� + departCurrenRow: {}, + departOption: { + ...basicOption, + rowKey: 'oid', + rowParentKey: 'parentId', + selection: false, + highlightCurrentRow: true, + stripe: false, + menu: false, + refreshBtn: false, + gridBtn: false, + column: [ + { + label: '鍚嶇О', + prop: 'name', + }, + { + label: '缂栧彿', + prop: 'id', + }, + { + label: '鎻忚堪', + prop: 'description', + }, + ] + }, + departData: [], + departLoading: false, + departVisible: false, + upFileType: ['xls', 'xlsx'], + fileUrl: 'api/userQueryController/importUser', + pwdVisible: false, + pwdLoading: false, + pwdValue: '', + pwdList: [], tableLoading: false, tableData: [], option: { ...basicOption, + editBtn: false, + delBtn: false, + dialogWidth: '50%', calcHeight: -60, column: column }, @@ -71,13 +211,22 @@ }, searchParams: {}, selectList: [], - leftRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗乏渚ч粯璁ゆ暟鎹� - rightRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗彸渚ч粯璁ゆ暟鎹� + leftRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹� + rightRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹� + transferTitle: ['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊'] } }, created() { }, methods: { + // 鏂板鎴栦慨鏀瑰璇濇鎵撳紑鍓� + beforeOpen(done, type) { + if(type == 'add'){ + this.departObj = {}; + this.departValue = ""; + } + done(); + }, // 琛ㄦ牸璇锋眰 getTableList() { this.tableLoading = true; @@ -98,6 +247,11 @@ // 鎼滅储鏌ヨ handleSearch(params, done) { + this.searchParams = {}; + if(this.departSearchObj && this.departSearchValue){ + this.searchParams['conditionMap["pkDepartment"]'] = this.departSearchValue; + } + if (!func.isEmptyObject(params)) { for (let key in params) { if (params.hasOwnProperty(key)) { @@ -106,15 +260,20 @@ this.searchParams[`conditionMap["${newKey}"]`] = params[key]; } } - } else { + } + + if (func.isEmptyObject(params) && !this.departSearchValue) { this.searchParams = {}; } + this.getTableList(); done(); }, // 閲嶇疆鎼滅储鏉′欢 handleReset() { + this.departSearchObj = {}; + this.departSearchValue = ""; this.searchParams = {}; this.getTableList(); }, @@ -182,7 +341,7 @@ // 绌挎妗嗙粍浠跺洖濉� roleSendHandler(row) { let params = { - userOid: this.selectList[0].oid, + userOids: this.selectList[0].oid, roleIds: row.join(',') } saveRights(params).then(res => { @@ -191,12 +350,256 @@ }).catch(err => { this.$message.error(err) }) - } + }, + + // 璁剧疆瀵嗙爜绛栫暐 + setPwsHandler() { + if (this.selectList.length <= 0) { + this.$message.warning('娓呭厛閫夋嫨浜哄憳鍐嶈繘琛屾搷浣滐紒') + return; + } + this.pwdLoading = false; + selectPwdStrategyMap().then(res => { + if (res.data.code === 200) { + this.pwdList = res.data.data; + this.pwdValue = res.data.data[0].id; + console.log(res.data) + this.pwdVisible = true; + this.pwdLoading = false; + } else { + this.$message.error(res.data.msg); + } + }) + }, + + // 淇濆瓨瀵嗙爜绛栫暐 + savePwdHandler() { + let params = { + userIds: this.selectList.map(item => item.oid).join(','), + passwordStrategId: this.pwdValue + } + saveUserPasswordStrateg(params).then(res => { + this.pwdVisible = false; + this.$message.success(res.data.obj) + }).catch(err => { + this.$message.error(err) + }) + }, + + // 鏂板 + rowSaveHandler(row, done) { + if (row.password != row.confirmPassword) { + this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒') + return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false; + } + row.pkDepartment = this.departValue; // 灏嗗綋鍓嶈鐨勯儴闂ㄥ弬鏁皃kDepartment 璧嬪�间负涓嬫媺妗嗙粦瀹氱殑鍊� + addUser(row).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + } + }).catch(err => { + console.log(err); + }) + done() + }, + + // 鎿嶄綔鏍忕紪杈� + rowEditHandler(row, index) { + let obj = { name: row.pkDepartmentName, oid: row.pkDepartment, rowOid: row.oid }; + this.departValue = row.pkDepartment; + this.departObj = obj; + + if (this.departObj.rowOid) { + this.$refs.userCrud.rowEdit(row, index); + } + + }, + + // 缂栬緫 + rowUpdateHandler(row, index, done) { + if (row.password != row.confirmPassword) { + this.$message.error('璇锋鏌ヤ袱娆″瘑鐮佹槸鍚﹁緭鍏ヤ竴鑷达紒') + return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false; + } + row.pkDepartment = this.departValue; // 灏嗗綋鍓嶈鐨勯儴闂ㄥ弬鏁皃kDepartment 璧嬪�间负涓嬫媺妗嗙粦瀹氱殑鍊� + updateUser(row).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + } + }).catch(err => { + console.log(err); + }); + done() + }, + + // 鍒犻櫎 + rowDeleteHandler(row) { + let params = { + ids: row.oid + } + deleteUser(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + } + }).catch(err => { + console.log(err); + }) + }, + + // 澶氶�夊垹闄� + allDelHandler() { + let params = { + ids: this.selectList.map(item => item.oid).join(',') + } + if (this.selectList.length <= 0) { + this.$message.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹繘琛屽垹闄わ紒') + return; + } + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬垚鍛樺悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteUser(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + } + }); + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + // 涓嬭浇瀵煎叆妯℃澘 + downloadHandler() { + download().then(res => { + console.log(res); + func.downloadFileByBlobHandler(res); + this.$message.success('涓嬭浇鎴愬姛') + }).catch(err => { + this.$message.error(err); + }) + }, + + // 瀵煎叆浜哄憳 + uploadRole() { + this.$refs.upload.visible = true; + }, + + // 鍒嗛厤閮ㄩ棬 + departmentHandler() { + if (this.selectList.length <= 0) { + this.$message.warning('娓呭厛閫夋嫨浜哄憳鍐嶈繘琛屾搷浣滐紒') + return; + } + this.departStatus = 'default'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗� + this.departmentQueryOnLoad(); + }, + + // 鍒嗛厤閮ㄩ棬琛ㄦ牸鍒濆鍖栬姹� + departmentQueryOnLoad() { + departmentQueryController({queryAllLevel: true}).then(res => { + const data = res.data.treeData; + this.departData = this.departDtaFormAtter(data); + this.departVisible = true; + }).catch(err => { + this.$message.error(err); + }) + }, + + // 鍒嗛厤閮ㄩ棬鏁版嵁杞崲 + departDtaFormAtter(items) { + return items.map(item => { + // 杞崲褰撳墠鑺傜偣鐨勫睘鎬� + const formList = { + oid: item.oid, + id: item.attributes.id, + name: item.attributes.name, + description: item.attributes.description, + parentId: item.parentId, + parentName: item.parentName, + parentBtmName: item.parentBtmName, + // 濡傛灉children瀛樺湪涓斾笉涓虹┖锛屽垯閫掑綊杞崲children + children: item.children && item.children.length > 0 ? this.departDtaFormAtter(item.children) : undefined + }; + return formList; + }); + }, + + // 鍒嗛厤閮ㄩ棬 琛屽崟閫� + handleCurrentRowChange(row) { + this.departCurrenRow = row; + }, + + // 鍒嗛厤閮ㄩ棬 淇濆瓨 + saveDepartHandler() { + if (func.isEmptyObject(this.departCurrenRow)) { + this.$message.warning('璇烽�夋嫨閮ㄩ棬鑺傜偣锛�') + return; + } + + if (this.departStatus == 'default') { + let params = { + userOIds: this.selectList.map(item => item.oid).join(','), + deptId: this.departCurrenRow.oid, + }; + saveUsersDepts(params).then(res => { + if (res.data.code === 200) { + this.departVisible = false; + this.getTableList(); + this.$message.success('鍒嗛厤鎴愬姛锛�') + } + }).catch(err => { + console.log(err); + }) + return; + } + + if (this.departStatus == 'handle') { + this.departObj = this.departCurrenRow; + this.departValue = this.departCurrenRow.oid; + this.departVisible = false; + return;; + } + + if(this.departStatus == 'search'){ + this.departSearchObj = this.departCurrenRow; + this.departSearchValue = this.departCurrenRow.oid; + this.departVisible = false; + return; + } + }, + + // 瀵硅瘽妗嗗垎閰嶉儴闂ㄦ寜閽� + dialogDepartHandler() { + this.departmentQueryOnLoad(); + this.departStatus = 'handle'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗� + }, + + // 鎼滅储瀵硅瘽妗嗗垎閰嶉儴闂ㄦ寜閽� + dialogDepartSearchHandler(){ + this.departmentQueryOnLoad(); + this.departStatus = 'search'; // 鍖哄垎涓嶅悓鏂瑰紡鎵撳紑閮ㄩ棬瀵硅瘽妗� + }, } } </script> -<style scoped> +<style lang="scss" scoped> +.password-strategy-container { + padding-left: 20px; + display: flex; + //justify-content: center; + align-items: center; + gap: 10px; +} </style> diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/option.js b/Source/plt-web/plt-web-ui/src/views/system/user/option.js index 0602863..07f7c2b 100644 --- a/Source/plt-web/plt-web-ui/src/views/system/user/option.js +++ b/Source/plt-web/plt-web-ui/src/views/system/user/option.js @@ -1,21 +1,64 @@ -export const column = [ +export let column = [ + { + label: '璐﹀彿', + prop: 'id', + search:true, + sortable:true, + rules: [ + { + required: true, + message: '璇疯緭鍏ュ鍚�', + trigger: 'blur' + } + ] + }, { label: '濮撳悕', prop: 'name', - align:'center', search:true, - sortable:true - }, { - label: '璐﹀彿', - prop: 'id', - align:'center', - search:true, - sortable:true + sortable:true, + rules: [ + { + required: true, + message: '璇疯緭鍏ュ鍚�', + trigger: 'blur' + } + ] + }, + { + label: '瀵嗙爜', + prop: 'password', + hide:true, + type:'password', + change: (val)=>{ + const confirmPasswordColumn = column.find(item => item.prop === 'confirmPassword'); + confirmPasswordColumn.disabled = val.value === ""; + }, + rules: [ + { + required: true, + message: '璇疯緭鍏ュ瘑鐮�', + trigger: 'blur' + } + ] + }, + { + label: '纭瀵嗙爜', + prop: 'confirmPassword', + hide:true, + type:'password', + disabled:true, + rules: [ + { + required: true, + message: '璇峰啀娆$‘璁ゅ瘑鐮�', + trigger: 'blur' + } + ] }, { label: '鐘舵��', prop: 'status', - align: 'center', display:false, sortable:true, slot: true, @@ -29,7 +72,6 @@ { label: '閿佸畾鐘舵��', prop: 'lockFlag', - align:'center', sortable:true, display:false, }, @@ -40,19 +82,18 @@ search:true, sortable:true, searchslot:true, + formslot:true, }, { label: '涓撲笟', prop: 'specialties', - align:'center', sortable:true, }, { label: '瑙掕壊', prop: 'pkPersonName', - align:'center', type:'select', - dicUrl: 'api/roleQueryController/gridRoles', + dicUrl: 'api/roleQueryController/refDataGrid', props: { label: 'name', value: 'oid' @@ -65,28 +106,27 @@ { label: '鐢靛瓙閭欢', prop: 'email', - align:'center', sortable:true, + overHidden: true, + row:true }, { label: '鎻忚堪', type:'textarea', prop: 'description', - align:'center', sortable:true, + overHidden: true, }, { label: '閮ㄩ棬棰嗗', prop: 'isDeptLeader', - align:'center', sortable:true, display:false, }, { label: '鎵�灞炲瘑绾�', prop: 'secretGradeText', - align:'center', sortable:true, display:false, - } + }, ]; diff --git a/Source/plt-web/plt-web-ui/vue.config.js b/Source/plt-web/plt-web-ui/vue.config.js index 133f96c..4cf35ab 100644 --- a/Source/plt-web/plt-web-ui/vue.config.js +++ b/Source/plt-web/plt-web-ui/vue.config.js @@ -26,7 +26,9 @@ proxy: { '/api': { //鏈湴鏈嶅姟鎺ュ彛鍦板潃 - target: 'http://localhost:12000/web', + // target: 'http://localhost:12000/web', + target: 'http://192.168.0.105:12005/web', // yxc + // target: 'http://192.168.0.103:12005/web', // ldc // target: 'http://dev.vci-tech.com:37000', //杩滅▼婕旂ず鏈嶅姟鍦板潃,鍙敤浜庣洿鎺ュ惎鍔ㄩ」鐩� //target: 'https://saber.bladex.vip/api/', -- Gitblit v1.9.3