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