Merge branch 'dev_20230516_LCCZ'

# Conflicts:
#	jero-web/src/common/lang/en-us.js
#	jero-web/src/common/lang/zh-cn.js
This commit is contained in:
高嵩
2023-05-23 11:16:34 +08:00
18 changed files with 767 additions and 50 deletions
@@ -643,4 +643,7 @@ ALTER TABLE `project_task_planning`
ADD COLUMN `five` datetime(0) NULL COMMENT '预生产阶段' AFTER `four`,
ADD COLUMN `six` datetime(0) NULL COMMENT '试产阶段' AFTER `five`,
ADD COLUMN `seven` datetime(0) NULL COMMENT '小批量生产阶段' AFTER `six`,
ADD COLUMN `eight` datetime(0) NULL COMMENT '大规模生产阶段' AFTER `seven`;
ADD COLUMN `eight` datetime(0) NULL COMMENT '大规模生产阶段' AFTER `seven`;
-- 工作流数据库-增加固定数据 2023-05-17 未同步生产环境
INSERT INTO `t_form`(`OBJECT_ID`, `CODE`, `CREATE_TIME`, `WIDGET_JSON`, `JSON`, `NAME`, `SHOW_KEY`, `IS_DELETED`, `MODEL_ID`, `JSON_EVAL`, `HTML`, `RUN_TYPE`, `CATEGORY_ID`, `HTML_READONLY`) VALUES ('xgjfwlc', '0007', '2023-05-17 13:52:26', NULL, NULL, '修改交付物流程', NULL, 0, '15007', NULL, NULL, 'json', '4bdf0b396b4aa6ea10dd5e19956a1e22', NULL);
@@ -90,6 +90,9 @@ public enum OperatorTypeEnum {
LAWS_INVENTORY_VERIFY_CITE_DELIVERABLE("法规清单-验证-引用交付物","lawsInventoryVerifyCiteDeliverable"),
LAWS_INVENTORY_STUDIO_COPY("法规清单-studio复制","lawsInventoryStudioCopy"),
LAWS_INVENTORY_REGULATION_OWNER_COPY("法规清单-法规工程师复制","lawsInventoryRegulationOwnerCopy"),
LAWS_INVENTORY_ALL_RESET_FLOW("法规清单-设计和验证-重置流程","lawsInventoryAllResetFlow"),
LAWS_INVENTORY_DESIGN_RESET_FLOW("法规清单-设计-重置流程","lawsInventoryDesignResetFlow"),
LAWS_INVENTORY_VERIFY_RESET_FLOW("法规清单-验证-重置流程","lawsInventoryVerifyResetFlow"),
/**
* 待办中心-将法规工程师的法规清单确认待办任务转为已办
@@ -6704,8 +6704,11 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
public Result<?> change(JSONObject parmas) {
String ids = parmas.getString("ids");
String projectLibraryId = parmas.getString("projectLibraryId");
String operateType = parmas.getString("operateType");
if (StringUtils.isNotEmpty(ids)) {
List<String> piFlowTypeList = new ArrayList<>();
QueryWrapper<ProjectLawsInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectLawsInventoryEO::getId, Arrays.asList(ids.split(",")));
queryWrapper.lambda().eq(ProjectLawsInventoryEO::getProjectLibraryId, projectLibraryId);
@@ -6730,20 +6733,32 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//updateWrapper.set(ProjectLawsInventoryEO::getVerifyDueDate,null);
updateWrapper.set(ProjectLawsInventoryEO::getInventoryAffirmDueDate, null);
updateWrapper.set(ProjectLawsInventoryEO::getTaskAffirmDueDate, null);
updateWrapper.set(ProjectLawsInventoryEO::getDesignFlowStatus, ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
updateWrapper.set(ProjectLawsInventoryEO::getVerifyFlowStatus, ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
// 区分重置设计验证全部流程
if(StringUtils.equals(operateType,OperatorTypeEnum.LAWS_INVENTORY_ALL_RESET_FLOW.getValue())){
updateWrapper.set(ProjectLawsInventoryEO::getDesignFlowStatus, ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
updateWrapper.set(ProjectLawsInventoryEO::getVerifyFlowStatus, ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
piFlowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
piFlowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
piFlowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
piFlowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
}else if(StringUtils.equals(operateType,OperatorTypeEnum.LAWS_INVENTORY_DESIGN_RESET_FLOW.getValue())){
updateWrapper.set(ProjectLawsInventoryEO::getDesignFlowStatus, ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
piFlowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
piFlowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
}else if(StringUtils.equals(operateType,OperatorTypeEnum.LAWS_INVENTORY_VERIFY_RESET_FLOW.getValue())){
updateWrapper.set(ProjectLawsInventoryEO::getVerifyFlowStatus, ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
piFlowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
piFlowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
}
super.update(projectLawsInventoryEO, updateWrapper);
QueryWrapper<ProcessInfoEO> processInfoQueryWrap = new QueryWrapper<>();
processInfoQueryWrap.lambda().in(ProcessInfoEO::getProjectLawsInventoryId, idList);
processInfoQueryWrap.lambda().in(ProcessInfoEO::getFlowType,piFlowTypeList);
List<ProcessInfoEO> processInfoEOList = this.processInfoEOService.list(processInfoQueryWrap);
List<String> actiProcInstIdList = processInfoEOList.stream().filter(processInfo -> {
boolean flag = false;
if (StringUtils.equals(processInfo.getFlowType(), FlowTypeEnum.SJFHXSHLC.getValue()) || StringUtils.equals(processInfo.getFlowType(), FlowTypeEnum.YZFHXSCLC.getValue())) {
flag = true;
}
return flag;
}).map(ProcessInfoEO::getActiProcInstId).distinct().collect(Collectors.toList());
List<String> actiProcInstIdList = processInfoEOList.stream().map(ProcessInfoEO::getActiProcInstId).distinct().collect(Collectors.toList());
pIds = actiProcInstIdList.stream().map(String::valueOf).collect(Collectors.joining(","));
@@ -6835,6 +6850,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//清除流程中心对应的数据
params.put("ids", ids);
params.put("operateType", operateType);
this.processInfoEOService.change(params);
// 删除流程历史数据
@@ -13,6 +13,11 @@ public enum DesignComplianceFlowNodeKeyEnum {
ZRRTJJFW("符合性确认","Compliance confirmation","zrrtjjfw"),// "责任人提交交付物"
DEZRRTJJFW("符合性确认","Compliance confirmation","dezrrtjjfw"),// 第二责任人提交交付物
FGGCSSH("符合性审查","Compliance review","fggcssh"), // 法规工程师审核
// 修改交付物流程
BCTJ_ZRRBCTJFQ("补充提交","Supplementary submission","zrrbctjfq"), // 责任人补充提交发起
BCTJ_ZRRBCTJXG("补充提交","Supplementary submission","zrrbctjxg"), // 责任人补充提交修改
BCTJ_FGGCSBCSH("补充审查","Supplemental Examination","fggcsbcsh"), // 法规工程师补充审核
;
String cnName;
@@ -13,6 +13,11 @@ public enum VerifyComplianceFlowNodeKeyEnum {
ZRRTJJFW("符合性确认","Compliance confirmation","zrrtjjfw"),// "责任人提交交付物"
DEZRRTJJFW("符合性确认","Compliance confirmation","dezrrtjjfw"),// 第二责任人提交交付物
FGGCSSH("符合性审查","Compliance review","fggcssh"), // 法规工程师审核
// 修改交付物流程
BCTJ_ZRRBCTJFQ("补充提交","Supplementary submission","zrrbctjfq"), // 责任人补充提交发起
BCTJ_ZRRBCTJXG("补充提交","Supplementary submission","zrrbctjxg"), // 责任人补充提交修改
BCTJ_FGGCSBCSH("补充审查","Supplemental Examination","fggcsbcsh"), // 法规工程师补充审核
;
String cnName;
@@ -80,7 +80,7 @@
<if test="params.cut == 'en'">
concat(pli.serial_number,' ',bdl.title_en) as standard_info,
</if>
pi.flow_type,
(case pi.flow_type when '32' THEN '2' when '34' THEN '4' else pi.flow_type END) as flow_type,
pi.create_by,
pi.end_time,
pi.status,
@@ -173,7 +173,7 @@
<if test="params.cut == 'en'">
concat(pli.serial_number,' ',bdl.title_en) as standard_info,
</if>
pi.flow_type,
(case pi.flow_type when '32' THEN '2' when '34' THEN '4' else pi.flow_type END) as flow_type,
pi.create_by,
pi.end_time,
pi.STATUS,
@@ -224,6 +224,8 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
flowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
flowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
// 2023-03-08 去掉原来的Pre-Homo
// flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
params.put("flowTypeList",flowTypeList);
@@ -359,6 +361,7 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
public void change(Map<String, Object> params) {
//需要清除数据的法规清单ids
String ids = (String)params.get("ids");
String operateType = (String)params.get("operateType");
List<String> projectLawsInventoryIdList = Arrays.asList(ids.split(","));
if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){
//清除清单确认相关数据
@@ -404,17 +407,31 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
* 4.清除验证符合性流程相关数据
*/
List<String> flowTypeList = new ArrayList<>();
flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
// flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
// 区分重置设计、验证、全部流程
if (StringUtils.equals(operateType, OperatorTypeEnum.LAWS_INVENTORY_ALL_RESET_FLOW.getValue())) {
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
flowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
flowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
} else if (StringUtils.equals(operateType, OperatorTypeEnum.LAWS_INVENTORY_DESIGN_RESET_FLOW.getValue())) {
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
} else if (StringUtils.equals(operateType, OperatorTypeEnum.LAWS_INVENTORY_VERIFY_RESET_FLOW.getValue())) {
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
flowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
}
// flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
// flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
// // flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
// flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
//根据法规清单id,查询待办中心数据
QueryWrapper<ProcessInfoEO> processInfoQueryWrap = new QueryWrapper<>();
processInfoQueryWrap.lambda().in(ProcessInfoEO::getProjectLawsInventoryId,projectLawsInventoryIdList);
processInfoQueryWrap.lambda().in(ProcessInfoEO::getFlowType,flowTypeList);
processInfoQueryWrap.lambda().in(ProcessInfoEO::getProjectLawsInventoryId, projectLawsInventoryIdList);
processInfoQueryWrap.lambda().in(ProcessInfoEO::getFlowType, flowTypeList);
List<ProcessInfoEO> processInfoEOList = this.list(processInfoQueryWrap);
if(CollectionUtils.isNotEmpty(processInfoEOList)){
if (CollectionUtils.isNotEmpty(processInfoEOList)) {
List<String> processInfoIdList = processInfoEOList.stream().map(ProcessInfoEO::getId).distinct().collect(Collectors.toList());
/*QueryWrapper<ProcessInfoDetailEO> detailRemoveWrap = new QueryWrapper<>();
detailRemoveWrap.lambda().in(ProcessInfoDetailEO::getProcessInfoId,processInfoIdList);
@@ -501,6 +518,8 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl<ProcessInfoEOMapper, P
flowTypeList.add(FlowTypeEnum.RWQRLC.getValue());
flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue());
flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue());
flowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
flowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
// flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue());
}
@@ -182,4 +182,17 @@ public class ProcessHistoryEOController extends JeroController<ProcessHistoryEO,
return this.processHistoryEOService.processCall(jsonObject);
}
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "流程历史表-符合性流程-列表查询")
@ApiOperation(value="流程历史表-符合性流程-列表查询", notes="流程历史表-符合性流程-列表查询")
@GetMapping(value = "/queryComplianceProcessHistoryList")
public Result<List<ProcessHistoryEO>> queryComplianceProcessHistoryList(@RequestParam Map<String,Object> params) {
List<ProcessHistoryEO> list = processHistoryEOService.queryComplianceProcessHistoryList(params);
return Result.OK(list);
}
}
@@ -76,6 +76,9 @@ public class workFlowController {
}else if(StringUtils.equals(type,FlowTypeEnum.FGJSPG.getValue())){
jsonObject.put("processDefinitionKey", FlowTypeEnum.FGJSPG.getProcessDefinitionKey());
return this.startLawsTechnologyEvaluationProcess(jsonObject);
}else if(StringUtils.equals(type,FlowTypeEnum.XGJFWLC.getValue())){
jsonObject.put("id", FlowTypeEnum.XGJFWLC.getProcessDefinitionKey());
return this.activiti_define_start(jsonObject);
}else{
return null;
}
@@ -17,6 +17,9 @@ public enum FlowTypeEnum {
FGJSPG("6","法规技术评估流程","FGJSPG","法规技术评估流程","fgjspglc","法规技术评估","Regulatory and technical assessment"),
QDQR("10","清单确认","QDQR","清单确认流程","qdqr","法规清单发布","Release of regulatory list"),
CERTIFICATION_LC("21","认证流程","CERTIFICATION_LC","认证流程","certification_lc","Pre-Homo流程","Pre-Homo flow"),
XGJFWLC("31","修改交付物流程","XGJFWLC","修改交付物流程","xgjfwlc","修改交付物流程","Update Deliverable"),
SJ_XGJFWLC("32","设计-修改交付物流程","SJ_XGJFWLC","设计-修改交付物流程","sj_xgjfwlc","设计-修改交付物流程","Design Update Deliverable"),
YZ_XGJFWLC("34","验证-修改交付物流程","YZ_XGJFWLC","验证-修改交付物流程","yz_xgjfwlc","验证-修改交付物流程","Verify Update Deliverable"),
;
private String value;
@@ -70,4 +70,11 @@ public interface IProcessHistoryEOService extends IService<ProcessHistoryEO> {
Result<?> processCall(JSONObject jsonObject);
void deleteBiActiProcInstIdList(List<String> actiProcInstIdList);
/**
* 查询符合性流程历史
* @param params
* @return
*/
List<ProcessHistoryEO> queryComplianceProcessHistoryList(Map<String, Object> params);
}
@@ -180,17 +180,17 @@ public class ProcessHistoryEOServiceImpl extends ServiceImpl<ProcessHistoryEOMap
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(processInfoListTemp)){
if (CollectionUtils.isNotEmpty(processInfoListTemp)) {
String flowType = processInfoListTemp.get(0).getFlowType();
if(StringUtils.equals(flowType, FlowTypeEnum.SJFHXSHLC.getValue())){
data.setName(DesignComplianceFlowNodeKeyEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
}else if(StringUtils.equals(flowType, FlowTypeEnum.YZFHXSCLC.getValue())){
data.setName(VerifyComplianceFlowNodeKeyEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
}else if(StringUtils.isNotEmpty(data.getTaskDefinitionKey())){
data.setName(DesignComplianceNodeEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
if (StringUtils.equals(flowType, FlowTypeEnum.SJFHXSHLC.getValue()) || StringUtils.equals(flowType, FlowTypeEnum.SJ_XGJFWLC.getValue())) {
data.setName(DesignComplianceFlowNodeKeyEnum.getTextByValue(data.getTaskDefinitionKey(), cut));
} else if (StringUtils.equals(flowType, FlowTypeEnum.YZFHXSCLC.getValue()) || StringUtils.equals(flowType, FlowTypeEnum.YZ_XGJFWLC.getValue())) {
data.setName(VerifyComplianceFlowNodeKeyEnum.getTextByValue(data.getTaskDefinitionKey(), cut));
} else if (StringUtils.isNotEmpty(data.getTaskDefinitionKey())) {
data.setName(DesignComplianceNodeEnum.getTextByValue(data.getTaskDefinitionKey(), cut));
}
}else if(StringUtils.isNotEmpty(data.getTaskDefinitionKey())){
data.setName(DesignComplianceNodeEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
} else if (StringUtils.isNotEmpty(data.getTaskDefinitionKey())) {
data.setName(DesignComplianceNodeEnum.getTextByValue(data.getTaskDefinitionKey(), cut));
}
if(StringUtils.isNotEmpty(data.getApprovalFile())){
@@ -246,4 +246,36 @@ public class ProcessHistoryEOServiceImpl extends ServiceImpl<ProcessHistoryEOMap
}
}
@Override
public List<ProcessHistoryEO> queryComplianceProcessHistoryList(Map<String, Object> params) {
String cut = (String) params.get("cut");
String projectLawsInventoryId = (String) params.get("projectLawsInventoryId");
if (StringUtils.isEmpty(projectLawsInventoryId)) {
throw new JeroBootException("法规清单id不能为空!");
}
String flowType = (String) params.get("flowType");
List<String> flowTypeList = new ArrayList<>();
flowTypeList.add(flowType);
if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue())){
flowTypeList.add(FlowTypeEnum.SJ_XGJFWLC.getValue());
}else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){
flowTypeList.add(FlowTypeEnum.YZ_XGJFWLC.getValue());
}
QueryWrapper<ProcessInfoEO> piQueryWrap = new QueryWrapper<>();
piQueryWrap.lambda().eq(ProcessInfoEO::getProjectLawsInventoryId, projectLawsInventoryId);
piQueryWrap.lambda().in(ProcessInfoEO::getFlowType, flowTypeList);
List<ProcessInfoEO> piInfoList = this.processInfoEOService.list(piQueryWrap);
List<String> actiProcInstIdList = piInfoList.stream().map(ProcessInfoEO::getActiProcInstId).distinct().collect(Collectors.toList());
List<ProcessHistoryEO> processHistoryEOList = null;
if(CollectionUtils.isNotEmpty(actiProcInstIdList)){
QueryWrapper<ProcessHistoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("create_time");
queryWrapper.lambda().in(ProcessHistoryEO::getActiProcInstId, actiProcInstIdList);
processHistoryEOList = this.baseMapper.selectList(queryWrapper);
this.disposeData(processHistoryEOList, cut);
}
return processHistoryEOList;
}
}
+4
View File
@@ -1835,4 +1835,8 @@ module.exports = {
expectedDeliveryTime:'Expected Delivery Time',
changeAuthor:'Change Author',
requireddataisnull:'Required data is null',
theProcessThatNeedsToBeReset:'The process that needs to be reset',
toResubmit:'To Resubmit',
selectDesignConformanceAsConformance:'Select Design Conformance verification process state as Conformance or Verify conformance verification process state as conformance obtained data',
submissionProcess:'Submission Process',
}
+4
View File
@@ -1936,4 +1936,8 @@ module.exports = {
expectedDeliveryTime:'预计交付时间',
changeAuthor:'更改作者',
requireddataisnull:'必填数据为空',
theProcessThatNeedsToBeReset:'需要重置的流程',
toResubmit:'重新提交',
selectDesignConformanceAsConformance:'请选择设计符合性确认流程状态为符合或验证符合性确认流程状态为符合的数据',
submissionProcess:'提交流程',
}
@@ -199,6 +199,12 @@
{{ $t('customize') }}
</div>
</a-popconfirm>
<!-- 复制-->
<div @click="toResubmitClick()" v-if="this.roleSwitchingCode == '31'"
class="operator-text">
<a-icon type="copy"/>
{{ $t('toResubmit') }}
</div>
<!-- 更多-->
<a-popconfirm overlayClassName="popconfirm" placement="bottomRight" v-if="this.roleSwitchingCode == '0'">
<template slot="title" id="popconfirm">
@@ -616,6 +622,43 @@
</a-row>
</a-form-model>
</a-modal>
<a-modal
:title="$t('processReset')"
:width="500"
:visible="visibleReset"
:confirm-loading="confirmLoadingReset"
:maskClosable="false"
@ok="handleOkReset"
@cancel="handleCancelReset"
>
<div class="noteConfirm">
{{$t('NoteConfirmTheChange')}}
</div>
<a-form-model :model="formInlineReset" class="formAdd" :rules="rulesRoleReset"
ref="ruleFormReset">
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text-index">
<div class="title-text-Comment">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('processReset')">{{ $t('processReset') }}</span>
</div>
<a-form-model-item class="itemModelComment" :prop="'operateType'">
<a-select :placeholder="$t('pleaseSelect')+$t('theProcessThatNeedsToBeReset')"
allowClear
v-model="formInlineReset.operateType">
<a-select-option :value="item.value" v-for="item in processResetList">
<span class="itemOption-index" :title="item.name">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
<a-modal
:title="fileTitle"
:width="600"
@@ -657,6 +700,7 @@
<viewFileModel ref="viewFileModelRef"/>
<designCompliance ref="designComplianceRef"/>
<modifyOperator ref="modifyOperatorRef" @modifyOperatorForm="modifyOperatorForm"/>
<toResubmitForm ref="toResubmitFormRef" @toResubmitFormForm="toResubmitFormForm"/>
</a-card>
</template>
@@ -675,6 +719,7 @@
import viewFileModel from '@/components/viewFileModel/index'
import globalAdvancedQuery from '@/components/globalAdvancedQuery/index'
import modifyOperator from './modifyOperator'
import toResubmitForm from './toResubmitForm'
import batchSettingPersonnel from './batchSettingPersonnel'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
@@ -700,13 +745,16 @@
listOfRegulationsView,
viewFileModel,
designCompliance,
modifyOperator
modifyOperator,
toResubmitForm
},
mixins: [ResizeColumnProvide, ResizeHeader],
data() {
return {
toggleSearchStatus: false,
visibleQuestion: false,
visibleReset: false,
confirmLoadingReset: false,
confirmLoadingQuestion: false,
isDesignCompliance: false,
isVerifyingCompliance: false,
@@ -716,6 +764,16 @@
total: 0,
roleSwitchingList: [],
formInlineQuestion: {},
formInlineReset: {},
rulesRoleReset: {
operateType: [
{
required: true,
message: this.$t('processReset') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
},
rulesRoleQuestion: {
expeditingType: [
{
@@ -735,6 +793,20 @@
name: this.$t('validationComplianceProcess')
}
],
processResetList: [
{
value: 'lawsInventoryAllResetFlow',
name: this.$t('whole')
},
{
value: 'lawsInventoryDesignResetFlow',
name: this.$t('designComplianceProcess')
},
{
value: 'lawsInventoryVerifyResetFlow',
name: this.$t('validationComplianceProcess')
}
],
listTitle: '',
orderBy: '1',
orderByField: '',
@@ -2168,13 +2240,46 @@
// }
// }
if (isTrue) {
this.changeInterface(selectedRowKeys)
this.formInlineReset = {}
this.$nextTick(() => {
this.$refs.ruleFormReset.clearValidate()
})
// this.changeInterface(selectedRowKeys)
this.visibleReset = true
}
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
handleOkReset() {
this.$refs.ruleFormReset.validate(valid => {
if (valid) {
let _this = this
_this.confirmLoadingReset = true
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
postAction('/project/projectLawsInventoryEO/change', {
ids: idList.join(','),
projectLibraryId: _this.$route.query.id,
operateType: _this.formInlineReset.operateType
}).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.confirmLoadingReset = false
_this.visibleReset = false
_this.selectedRowKeys = []
_this.pageNo = 1
_this.getList()
} else {
_this.$message.warning(_this.$t('operationFailed'))
_this.confirmLoadingReset = false
}
})
}
})
},
handleCancelReset() {
this.visibleReset = false
},
//流程重置接口
changeInterface() {
let _this = this
@@ -2858,9 +2963,9 @@
}
if (dataList[i].designFlowStatus == 'List to be checked' || dataList[i].designFlowStatus == 'Duty Person Rejected') {
if (dataList[i].designDeliverableType && dataList[i].designDutyId && dataList[i].designDueDate) {
if (dataList[i].designDeliverableType == '1645667531513237506'){
if (dataList[i].designDeliverableType == '1645667531513237506') {
}else{
} else {
this.requestsNum++
this.startProcessList.push({
dataList: dataList[i],
@@ -2876,9 +2981,9 @@
}
if (dataList[i].verifyFlowStatus == 'List to be checked' || dataList[i].verifyFlowStatus == 'Duty Person Rejected') {
if (dataList[i].verifyDeliverableType && dataList[i].verifyDutyId && dataList[i].verifyDueDate) {
if (dataList[i].verifyDeliverableType == '1645667531513237506'){
if (dataList[i].verifyDeliverableType == '1645667531513237506') {
}else{
} else {
this.requestsNum++
this.startProcessList.push({
dataList: dataList[i],
@@ -3121,6 +3226,39 @@
},
download(item) {
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id, userName: this.userInfo().username })
},
toResubmitClick() {
let _this = this
if (this.selectedRowKeys.length == 0) {
this.$message.warning(this.$t('selectLeastOne'))
} else if (this.selectedRowKeys.length > 1) {
this.$message.warning(this.$t('OnlyOneSelected'))
} else if (this.selectedRowKeys.length == 1) {
let dataSource = []
for (let i = 0; i < this.dataSource.length; i++) {
for (let j = 0; j < this.selectedRowKeys.length; j++) {
if (this.dataSource[i].id == this.selectedRowKeys[j]) {
dataSource.push(this.dataSource[i])
}
}
}
let isDesign = false
let isVerify = false
if (dataSource[0].designFlowStatus == 'Compliance') {
isDesign = true
}
if (dataSource[0].verifyFlowStatus == 'Compliance') {
isVerify = true
}
if (isDesign || isVerify) {
this.$refs.toResubmitFormRef.getData(dataSource[0], isDesign, isVerify)
} else {
this.$message.warning(this.$t('selectDesignConformanceAsConformance'))
}
}
},
toResubmitFormForm() {
this.getList()
}
// profileClick() {
// let _this = this
@@ -3457,6 +3595,11 @@
.operator-text-title:last-child {
margin-bottom: 0;
}
.noteConfirm {
font-size: 14px;
margin-bottom: 10px;
}
</style>
<style lang="less">
.box-input .ant-select-selection {
@@ -0,0 +1,452 @@
<template>
<a-drawer
:title="$t('toResubmit')"
:maskClosable="false"
:width="700"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;margin-bottom: 436px;">
<a-spin :spinning="confirmLoading">
<div class="box">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('submissionProcess')">{{$t('submissionProcess')}}</span>
</div>
</div>
<a-form-model-item class="itemModel" :prop="'submissionProcess'">
<a-select :placeholder="$t('PleaseSelect')+$t('submissionProcess')"
v-model="formInline.submissionProcess">
<a-select-option v-for="(item, key) in submissionProcessList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('resultofhandling')">{{$t('resultofhandling')}}</span>
</div>
</div>
<a-form-model-item class="itemModel" :prop="'disposeResult'">
<a-radio-group @change="reviewResultChange"
class="box-input"
v-model="formInline.disposeResult">
<a-radio value="Compliance">
{{$t('accord')}}
</a-radio>
<a-radio value="Non-Compliance">
{{$t('nonConformity')}}
</a-radio>
<a-radio value="To be tracked">
{{$t('Tracked')}}
</a-radio>
<a-radio value="NA">
{{$t('notInvolved')}}
</a-radio>
<!-- <a-radio value="Returned">-->
<!-- {{$t('sendBack')}}-->
<!-- </a-radio>-->
</a-radio-group>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24" v-if="isDeliveryTime">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('expectedDeliveryTime')">{{$t('expectedDeliveryTime')}}</span>
</div>
</div>
<a-form-model-item class="itemModel" :prop="'deliveryTime'">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('expectedDeliveryTime')"
@change="dateChange({db_field_name:'deliveryTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.deliveryTime"
style="width: 100%"/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('feedbackMessage')">{{$t('feedbackMessage')}}</span>
</div>
</div>
<a-form-model-item class="itemModel" prop="approvalOpinion">
<a-textarea :placeholder="$t('pleaseEnter')+$t('feedbackMessage')"
v-model="formInline.approvalOpinion"
:rows="2"
style="min-height: 68px"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('enclosure')">{{$t('enclosure')}}</span>
</div>
</div>
<a-form-model-item class="itemModel">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('approvalFile')">
{{ (formInline.approvalFile === 'null' || formInline.approvalFile === '' ||
formInline.approvalFile == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
<uploadFile ref="uploadFile"
@uploadSuccess="uploadSuccess"/>
</div>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
</template>
<script>
import { getAction, postAction, putAction, deleteAction } from '@/api/manage'
import uploadFile from '@/components/uploadFile/file'
import moment from 'moment'
import { mapGetters } from 'vuex'
export default {
name: 'toResubmitForm',
components: {
uploadFile
},
data() {
return {
visible: false,
confirmLoading: false,
isDeliveryTime: false,
formInline: {},
submissionProcessList: [],
rules: {
disposeResult: [
{
required: true,
message: this.$t('resultofhandling') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
submissionProcess: [
{
required: true,
message: this.$t('submissionProcess') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
deliveryTime: [
{
required: true,
message: this.$t('expectedDeliveryTime') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
approvalOpinion: [
{
required: true,
message: this.$t('feedbackMessage') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 300,
message: this.$t('feedbackMessage') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
engineerFeedbackContent: [
{
required: true,
message: this.$t('feedbackFromTheEngineer') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 300,
message: this.$t('feedbackFromTheEngineer') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
fileId: [
{
required: true,
message: this.$t('Deliverables') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
},
listOfData: {}
}
},
mounted() {
},
methods: {
...mapGetters(['userInfo']),
handleCancel() {
this.visible = false
},
handleSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
this.confirmLoading = true
if (this.formInline.disposeResult == 'To be tracked') {
this.formInline.approvalOpinion = this.formInline.approvalOpinion + ';' + this.$t('expectedDeliveryTime') + ':' + this.formInline.deliveryTime
}
if (this.formInline.submissionProcess == '1') {
this.formInline.flowType = '32'
} else if (this.formInline.submissionProcess == '2') {
this.formInline.flowType = '34'
}
let query = Object.assign(this.listOfData, this.formInline)
this.startProcess(query)
}
})
},
startProcess(value) {
let query = {
type: 31,
projectLawsInvnetoryList: value,
projectNameId: this.$route.query.projectNameId,
projectName: this.$route.query.projectName,
projectLawsInventoryId: value.id
}
postAction('/workFlow/startProcess', query).then((res) => {
if (res.success) {
this.completeTask(value, res.result)
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
},
completeTask(value, taskId) {
value.handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
Object.keys(value).forEach(res => {
if (value[res] && typeof value[res] == 'string') {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = {
userid: this.userInfo().id,
taskId: taskId,
json: JSON.stringify(value).replace(/\"/g, '\'')
}
postAction('/workFlow/completeTask', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('toResubmitFormForm')
} else {
this.confirmLoading = false
this.$message.warning(res.message)
}
})
},
getData(val, isDesign, isVerify) {
this.submissionProcessList = []
this.visible = true
this.listOfData = val
this.formInline = {}
if (isDesign) {
this.submissionProcessList.push({
name: this.$t('designComplianceProcess'),
value: '1'
})
} else {
this.formInline.submissionProcess = '2'
}
if (isVerify) {
this.submissionProcessList.push({
name: this.$t('validationComplianceProcess'),
value: '2'
})
} else {
this.formInline.submissionProcess = '1'
}
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
})
},
reviewResultChange(value) {
if (value.target.value == 'To be tracked') {
this.isDeliveryTime = true
} else {
this.isDeliveryTime = false
this.formInline.deliveryTime = ''
}
this.formInline = { ...this.formInline }
},
clickButtonToUpload(item) {
this.$refs.uploadFile.perentHandleFunc()
this.$refs.uploadFile.visible = true
this.uploadName = item
getAction('sys/common/getFileInfos', { id: this.formInline[item] }).then((res) => {
if (res.success) {
this.$refs.uploadFile.perentHandleFunc(res.result)
} else {
this.$refs.uploadFile.perentHandleFunc()
}
})
},
/** 上传文件的回调 */
uploadSuccess(data) {
let attIdList = []
if (data && data.length > 0) {
data.map(item => {
attIdList.push(item.id || data.name)
})
}
/** 赋值给当前对应的表单文件 */
this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline }
this.$nextTick(() => {
this.$refs.ruleForm.validateField([this.uploadName])
})
},
dateChange(item) {
this.formInline[item.db_field_name] = this.formInline[item.db_field_name] ? moment(this.formInline[item.db_field_name]).format('YYYY-MM-DD') : ''
this.formInline = { ...this.formInline }
}
}
}
</script>
<style scoped lang="less">
.box {
padding: 0 0 24px 0;
box-sizing: border-box;
}
.box-text {
display: flex;
justify-content: space-between;
height: 40px;
line-height: 24px;
.header-text {
font-size: 16px;
font-weight: bold;
color: #000;
}
}
.box-title-text {
/*line-height: 1.4;*/
display: flex;
/*align-items: center;*/
}
.title-text {
/*width: 88px;*/
text-align: left;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 32px;
line-height: 36px;
color: #000F16;
}
.title-text-fq {
/*width: 130px;*/
text-align: left;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
color: #000F16;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: 100%;
display: inline-block;
margin-top: 2px;
margin-bottom: 0px;
}
.Required {
color: red;
margin-right: 4px;
}
.title-text-text {
margin-top: 9px;
}
/*.formAdd {*/
/* margin-bottom: 40px;*/
/*}*/
.text-header {
font-size: 16px;
color: #040B29;
font-weight: 400;
}
.button-text {
height: 38px;
width: calc(50% - 100px);
line-height: 38px;
background: #fff;
border: 1px #00B3BE solid;
color: #00B3BE;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
z-index: 100;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>
@@ -42,14 +42,14 @@
</span>
<span slot="approvalOpinion" slot-scope="text,result">
<a-tooltip placement="topLeft">
<template slot="title" >
<template slot="title">
<span>{{text}}</span>
</template>
{{text}}
</a-tooltip>
<!-- <span :title="text">-->
<!-- {{text}}-->
<!-- </span>-->
<!-- <span :title="text">-->
<!-- {{text}}-->
<!-- </span>-->
</span>
<span slot="resultofhandling" slot-scope="text,result">
<span :class="statusClass[result.operatorResult]" :title="result.operatorResultName">
@@ -210,10 +210,13 @@
methods: {
getList() {
let query = {
actiProcInstId: this.queryProject.actiProcInstId || this.queryProject.prcId
actiProcInstId: this.queryProject.actiProcInstId || this.queryProject.prcId,
flowType: this.queryProject.flowType,
projectLawsInventoryId: this.queryProject.projectTaskInventoryId
}
this.loading = true
getAction('/wkflow/processHistoryEO/list', query).then((res) => {
// /wkflow/processHistoryEO/list
getAction('/wkflow/processHistoryEO/queryComplianceProcessHistoryList', query).then((res) => {
if (res.success) {
this.dataSource = res.result || []
if (this.dataSource.length > 0) {
@@ -245,7 +248,8 @@
}
})
}
if (this.queryProject.TaskKey == 'zrrtjjfw' || this.queryProject.TaskKey == 'dezrrtjjfw') {
if (this.queryProject.TaskKey == 'zrrtjjfw' || this.queryProject.TaskKey == 'dezrrtjjfw' ||
this.queryProject.TaskKey == 'zrrbctjxg') {
this.regulatoryCertificationTaskPlanList.forEach(val => {
if (val.name == this.$t('initiatingProcess')) {
val.status = '1'
@@ -260,7 +264,7 @@
}
})
}
if (this.queryProject.TaskKey == 'fggcssh') {
if (this.queryProject.TaskKey == 'fggcssh' || this.queryProject.TaskKey == 'fggcsbcsh') {
if (taskData.operatorResult == 'Adopt') {
this.regulatoryCertificationTaskPlanList.forEach(val => {
if (val.name == this.$t('initiatingProcess')) {
@@ -27,23 +27,23 @@
<a-radio value="Rejected" v-if="query.TaskKey == 'zrrqr'">
{{$t('refuse')}}
</a-radio>
<a-radio value="Adopt" :disabled="isAdopt" v-if="query.TaskKey == 'fggcssh'">
<a-radio value="Adopt" :disabled="isAdopt" v-if="query.TaskKey == 'fggcssh' || query.TaskKey == 'fggcsbcsh'">
{{$t('adopt')}}
</a-radio>
<a-radio value="Compliance" v-if="query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrtjjfw'">
<a-radio value="Compliance" v-if="query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'zrrbctjxg'">
{{$t('accord')}}
</a-radio>
<a-radio value="Non-Compliance" v-if="query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrtjjfw'">
<a-radio value="Non-Compliance" v-if="query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'zrrbctjxg'">
{{$t('nonConformity')}}
</a-radio>
<a-radio value="To be tracked" v-if="query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'dezrrtjjfw'">
<a-radio value="To be tracked" v-if="query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrbctjxg'">
{{$t('Tracked')}}
</a-radio>
<a-radio value="NA" v-if="query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'dezrrtjjfw'">
<a-radio value="NA" v-if="query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrbctjxg'">
{{$t('notInvolved')}}
</a-radio>
<a-radio value="Returned" v-if="query.TaskKey == 'dezrrqr' || query.TaskKey == 'dezrrtjjfw' ||
query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'fggcssh'">
query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'fggcssh' || query.TaskKey == 'fggcsbcsh'">
{{$t('sendBack')}}
</a-radio>
<a-radio value="Transfer" v-if="query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'zrrqr'">
@@ -97,7 +97,8 @@
</a-col>
</a-row>
<a-row :gutter="24"
v-if="query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'fggcssh'">
v-if="query.TaskKey == 'dezrrtjjfw' || query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'fggcssh'
|| query.TaskKey == 'zrrbctjxg' || query.TaskKey == 'fggcsbcsh'">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">