Merge branch 'main' of https://dd3skj.picp.vip/zhaoxinyu/v4
This commit is contained in:
@@ -17,6 +17,7 @@ import com.budwk.app.flow.entity.ProcessDefine;
|
|||||||
import com.budwk.app.flow.entity.ProcessInstance;
|
import com.budwk.app.flow.entity.ProcessInstance;
|
||||||
import com.budwk.app.flow.entity.ProcessTask;
|
import com.budwk.app.flow.entity.ProcessTask;
|
||||||
import com.budwk.app.flow.enums.ProcessEventTypeEnum;
|
import com.budwk.app.flow.enums.ProcessEventTypeEnum;
|
||||||
|
import com.budwk.app.flow.enums.ProcessInstanceStateEnum;
|
||||||
import com.budwk.app.flow.enums.ProcessTaskPerformTypeEnum;
|
import com.budwk.app.flow.enums.ProcessTaskPerformTypeEnum;
|
||||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
import com.budwk.app.flow.service.FlowCommonService;
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
@@ -27,6 +28,7 @@ import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
|
import org.nutz.dao.Chain;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
@@ -269,6 +271,9 @@ public class FlowCommonController {
|
|||||||
// 激活
|
// 激活
|
||||||
dao.update(selfTask);
|
dao.update(selfTask);
|
||||||
|
|
||||||
|
// 流程激活
|
||||||
|
dao.update(ProcessInstance.class, Chain.make("state", ProcessInstanceStateEnum.DOING.getCode()),Cnd.where(ProcessInstance::getId, "=", selfTask.getProcessInstanceId()));
|
||||||
|
|
||||||
// 发送任务撤回事件 确保上面执行成功
|
// 发送任务撤回事件 确保上面执行成功
|
||||||
for (ProcessTask task : taskList) {
|
for (ProcessTask task : taskList) {
|
||||||
ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build());
|
ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build());
|
||||||
|
|||||||
+8
-4
@@ -27,6 +27,7 @@ import org.nutz.dao.Dao;
|
|||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.entity.Record;
|
import org.nutz.dao.entity.Record;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
import org.nutz.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
@@ -78,7 +79,7 @@ public class CadreTrainingCollectController {
|
|||||||
String activityId,
|
String activityId,
|
||||||
String unionId,
|
String unionId,
|
||||||
String unitId,
|
String unitId,
|
||||||
String userName,
|
String searchKeyword,
|
||||||
String sex) {
|
String sex) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -125,9 +126,12 @@ public class CadreTrainingCollectController {
|
|||||||
// 性别查询条件
|
// 性别查询条件
|
||||||
cnd.andEX("info.sex", "=", sex);
|
cnd.andEX("info.sex", "=", sex);
|
||||||
|
|
||||||
// 姓名查询条件
|
// 姓名和工号查询条件
|
||||||
if (StrUtil.isNotBlank(userName)) {
|
if (StrUtil.isNotBlank(searchKeyword)) {
|
||||||
cnd.and("info.userName", "like", "%" + userName + "%");
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("info.userName", "%" + searchKeyword + "%");
|
||||||
|
seg.orLike("info.loginName", "%" + searchKeyword + "%");
|
||||||
|
cnd.and(seg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 只查询流程实例状态为20的数据(已完成状态)
|
// 只查询流程实例状态为20的数据(已完成状态)
|
||||||
|
|||||||
+8
-4
@@ -18,6 +18,7 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
@@ -64,7 +65,7 @@ public class CadreTrainingSchoolAuditController {
|
|||||||
String activityId,
|
String activityId,
|
||||||
String unionId,
|
String unionId,
|
||||||
String unitId,
|
String unitId,
|
||||||
String userName,
|
String searchKeyword,
|
||||||
String sex) {
|
String sex) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -121,9 +122,12 @@ public class CadreTrainingSchoolAuditController {
|
|||||||
// 性别查询条件
|
// 性别查询条件
|
||||||
cnd.andEX("info.sex", "=", sex);
|
cnd.andEX("info.sex", "=", sex);
|
||||||
|
|
||||||
// 姓名查询条件
|
// 姓名和工号查询条件
|
||||||
if (StrUtil.isNotBlank(userName)) {
|
if (StrUtil.isNotBlank(searchKeyword)) {
|
||||||
cnd.and("info.userName", "like", "%" + userName + "%");
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("info.userName", "%" + searchKeyword + "%");
|
||||||
|
seg.orLike("info.loginName", "%" + searchKeyword + "%");
|
||||||
|
cnd.and(seg);
|
||||||
}
|
}
|
||||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||||
cnd.desc("info.applyTime");
|
cnd.desc("info.applyTime");
|
||||||
|
|||||||
+9
-1
@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
@@ -61,7 +62,7 @@ public class EnrollmentRegistrationSchoolAuditController {
|
|||||||
String unionId,
|
String unionId,
|
||||||
String unitId,
|
String unitId,
|
||||||
String registrationType,
|
String registrationType,
|
||||||
Boolean approval) {
|
Boolean approval,String searchKeyword) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
@@ -97,6 +98,13 @@ public class EnrollmentRegistrationSchoolAuditController {
|
|||||||
cnd.andEX("info.unionId", "=", unionId);
|
cnd.andEX("info.unionId", "=", unionId);
|
||||||
cnd.andEX("info.unitId", "=", unitId);
|
cnd.andEX("info.unitId", "=", unitId);
|
||||||
cnd.andEX("info.registrationType", "=", registrationType);
|
cnd.andEX("info.registrationType", "=", registrationType);
|
||||||
|
// 姓名和工号查询条件
|
||||||
|
if (StrUtil.isNotBlank(searchKeyword)) {
|
||||||
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("info.userName", "%" + searchKeyword + "%");
|
||||||
|
seg.orLike("info.loginName", "%" + searchKeyword + "%");
|
||||||
|
cnd.and(seg);
|
||||||
|
}
|
||||||
|
|
||||||
if (approval) {
|
if (approval) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
|||||||
+4
-4
@@ -76,8 +76,8 @@ public class EnrollmentRegistrationSummaryController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("分页查询")
|
@ApiOperation("分页查询")
|
||||||
@SaCheckPermission("enrollmentRegistration.summary")
|
@SaCheckPermission("enrollmentRegistration.summary")
|
||||||
public Result pageData(EnrollmentRegistrationPageForm pageForm) {
|
public Result pageData(EnrollmentRegistrationPageForm pageForm ,String searchKeyword) {
|
||||||
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm);
|
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm, searchKeyword);
|
||||||
Pagination pagination = enrollmentRegistrationSummaryService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
Pagination pagination = enrollmentRegistrationSummaryService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
return Result.success(pagination);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
@@ -100,7 +100,7 @@ public class EnrollmentRegistrationSummaryController {
|
|||||||
@SaCheckPermission("enrollmentRegistration.summary")
|
@SaCheckPermission("enrollmentRegistration.summary")
|
||||||
public void doExportExcel(@Param("data") EnrollmentRegistrationPageForm pageForm, HttpServletResponse response) {
|
public void doExportExcel(@Param("data") EnrollmentRegistrationPageForm pageForm, HttpServletResponse response) {
|
||||||
try {
|
try {
|
||||||
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm);
|
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm, null);
|
||||||
List<NutMap> map = enrollmentRegistrationSummaryService.listMap(sql);
|
List<NutMap> map = enrollmentRegistrationSummaryService.listMap(sql);
|
||||||
|
|
||||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ENROLLMENT_REGISTRATION_TYPE");
|
List<Sys_dict> dictList = sysDictService.getSubListByCode("ENROLLMENT_REGISTRATION_TYPE");
|
||||||
@@ -146,7 +146,7 @@ public class EnrollmentRegistrationSummaryController {
|
|||||||
try {
|
try {
|
||||||
response.setContentType("application/octet-stream");
|
response.setContentType("application/octet-stream");
|
||||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLUtil.encode("子女入学.zip"));
|
response.setHeader("Content-Disposition", "attachment;filename=" + URLUtil.encode("子女入学.zip"));
|
||||||
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm);
|
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm, null);
|
||||||
List<NutMap> map = enrollmentRegistrationSummaryService.listMap(sql);
|
List<NutMap> map = enrollmentRegistrationSummaryService.listMap(sql);
|
||||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ENROLLMENT_REGISTRATION_TYPE");
|
List<Sys_dict> dictList = sysDictService.getSubListByCode("ENROLLMENT_REGISTRATION_TYPE");
|
||||||
|
|
||||||
|
|||||||
+10
-1
@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
@@ -59,7 +60,7 @@ public class EnrollmentRegistrationUnionAuditController {
|
|||||||
public Result pageData(PageForm pageForm,
|
public Result pageData(PageForm pageForm,
|
||||||
Integer year,
|
Integer year,
|
||||||
String registrationType,
|
String registrationType,
|
||||||
Boolean approval) {
|
Boolean approval,String searchKeyword) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
@@ -94,6 +95,14 @@ public class EnrollmentRegistrationUnionAuditController {
|
|||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
cnd.andEX("info.registrationType","=",registrationType);
|
cnd.andEX("info.registrationType","=",registrationType);
|
||||||
|
|
||||||
|
// 姓名和工号查询条件
|
||||||
|
if (StrUtil.isNotBlank(searchKeyword)) {
|
||||||
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("info.userName", "%" + searchKeyword + "%");
|
||||||
|
seg.orLike("info.loginName", "%" + searchKeyword + "%");
|
||||||
|
cnd.and(seg);
|
||||||
|
}
|
||||||
|
|
||||||
if (approval) {
|
if (approval) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+1
-1
@@ -8,5 +8,5 @@ public interface EnrollmentRegistrationSummaryService extends BaseService {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Sql getSql(EnrollmentRegistrationPageForm pageForm);
|
Sql getSql(EnrollmentRegistrationPageForm pageForm,String searchKeyword);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-1
@@ -1,5 +1,6 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.enrollmentRegistration.service.impl;
|
package com.budwk.app.zhgh.dayofficework.enrollmentRegistration.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
import com.budwk.app.zhgh.dayofficework.enrollmentRegistration.service.EnrollmentRegistrationSummaryService;
|
import com.budwk.app.zhgh.dayofficework.enrollmentRegistration.service.EnrollmentRegistrationSummaryService;
|
||||||
@@ -8,6 +9,7 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,7 +24,7 @@ public class EnrollmentRegistrationSummaryServiceImpl extends BaseServiceImpl im
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Sql getSql(EnrollmentRegistrationPageForm pageForm) {
|
public Sql getSql(EnrollmentRegistrationPageForm pageForm ,String searchKeyword) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
@@ -51,6 +53,13 @@ public class EnrollmentRegistrationSummaryServiceImpl extends BaseServiceImpl im
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
|
// 姓名和工号查询条件
|
||||||
|
if (StrUtil.isNotBlank(searchKeyword)) {
|
||||||
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("info.userName", "%" + searchKeyword + "%");
|
||||||
|
seg.orLike("info.loginName", "%" + searchKeyword + "%");
|
||||||
|
cnd.and(seg);
|
||||||
|
}
|
||||||
cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear());
|
cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear());
|
||||||
cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode());
|
cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode());
|
||||||
cnd.andEX("info.unionId","=",pageForm.getUnionId());
|
cnd.andEX("info.unionId","=",pageForm.getUnionId());
|
||||||
|
|||||||
-3
@@ -101,9 +101,6 @@ public class ExerciseCardServiceImpl extends BaseServiceImpl<ExerciseCard> imple
|
|||||||
errorInfos.add(v);
|
errorInfos.add(v);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotBlank(v.getUsername())) {
|
|
||||||
user.setUsername(v.getUsername());
|
|
||||||
}
|
|
||||||
|
|
||||||
insertOrUpdateUserList.add(user);
|
insertOrUpdateUserList.add(user);
|
||||||
|
|
||||||
|
|||||||
+4
@@ -1,6 +1,7 @@
|
|||||||
package com.budwk.app.zhgh.democratic.proposal.controller.export;
|
package com.budwk.app.zhgh.democratic.proposal.controller.export;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.ExportTableColumns;
|
import com.budwk.app.base.param.ExportTableColumns;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
@@ -67,6 +68,9 @@ public class ProposalExportComprehensiveController {
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
|
if(StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())){
|
||||||
|
cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId());
|
||||||
|
}
|
||||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
|
|||||||
+10
-8
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil;
|
|||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.flow.entity.ProcessTask;
|
import com.budwk.app.flow.entity.ProcessTask;
|
||||||
|
import com.budwk.app.flow.enums.ProcessInstanceStateEnum;
|
||||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||||
@@ -99,6 +100,7 @@ public class ProposalQueryCollectProgressController {
|
|||||||
if (ArrayUtil.contains(pageForm.getCollectIds(), 40)) {
|
if (ArrayUtil.contains(pageForm.getCollectIds(), 40)) {
|
||||||
seg.or("t.taskName", "not in", List.of("startTask", "second", "delegation"));
|
seg.or("t.taskName", "not in", List.of("startTask", "second", "delegation"));
|
||||||
seg.and("t.taskName", "is not", null);
|
seg.and("t.taskName", "is not", null);
|
||||||
|
seg.or("ins.state","=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||||
}
|
}
|
||||||
if (!seg.isEmpty()) {
|
if (!seg.isEmpty()) {
|
||||||
cnd.and(seg);
|
cnd.and(seg);
|
||||||
@@ -107,14 +109,14 @@ public class ProposalQueryCollectProgressController {
|
|||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
List<NutMap> list = (List<NutMap>) pagination.getList();
|
List<NutMap> list = (List<NutMap>) pagination.getList();
|
||||||
for (NutMap row : list) {
|
// for (NutMap row : list) {
|
||||||
int count = dao.count(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", row.getString("instanceId"))
|
// int count = dao.count(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", row.getString("instanceId"))
|
||||||
.and(ProcessTask::getTaskName, "=", "second")
|
// .and(ProcessTask::getTaskName, "=", "second")
|
||||||
.and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())
|
// .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())
|
||||||
);
|
// );
|
||||||
|
//
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
return Result.success(pagination);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -114,8 +114,8 @@ public class ProposalQueryComprehensiveController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StrUtil.isNotBlank(pageForm.getUndertakeUnitId())){
|
if(StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())){
|
||||||
|
cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId());
|
||||||
}
|
}
|
||||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
|
|||||||
+2
-2
@@ -45,7 +45,7 @@ public class ProposalQueryYearReportController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
IF(mer.proposalId IS NOT NULL, 1, 0) AS merge,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
tcd.`name` AS delegationName,
|
tcd.`name` AS delegationName,
|
||||||
@@ -59,8 +59,8 @@ public class ProposalQueryYearReportController {
|
|||||||
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
|
||||||
FROM
|
FROM
|
||||||
proposal_info info
|
proposal_info info
|
||||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
|
||||||
LEFT JOIN proposal_type type on type.id = info.typeId
|
LEFT JOIN proposal_type type on type.id = info.typeId
|
||||||
|
LEFT JOIN proposal_merge mer ON mer.proposalId = info.id
|
||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
|
|||||||
+8
-9
@@ -21,6 +21,7 @@ import org.nutz.ioc.loader.annotation.Inject;
|
|||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
@@ -48,7 +49,7 @@ public class ProposalSeniorBasicController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
IF(mer.proposalId IS NOT NULL, 1, 0) AS merge,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
tcd.`name` AS delegationName,
|
tcd.`name` AS delegationName,
|
||||||
@@ -58,15 +59,16 @@ public class ProposalSeniorBasicController {
|
|||||||
ins.variable instanceVariable,
|
ins.variable instanceVariable,
|
||||||
ins.processDefineId instanceProcessDefineId,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
t.displayName curTaskName,
|
t.displayName curTaskName,
|
||||||
JSON_UNQUOTE(JSON_EXTRACT(caseTasks.variable, '$.tf_hostUnitName')) AS masterUnitName,
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName,
|
||||||
JSON_EXTRACT(caseTasks.variable, '$.tf_helpUnitNames') AS slaveUnitNames
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
|
||||||
FROM
|
FROM
|
||||||
proposal_info info
|
proposal_info info
|
||||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
LEFT JOIN proposal_merge mer ON mer.proposalId = info.id
|
||||||
LEFT JOIN proposal_type type on type.id = info.typeId
|
LEFT JOIN proposal_type type on type.id = info.typeId
|
||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
|
LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id
|
||||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
||||||
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
||||||
@@ -74,9 +76,6 @@ public class ProposalSeniorBasicController {
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
|
||||||
|
|
||||||
}
|
|
||||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
@@ -89,8 +88,8 @@ public class ProposalSeniorBasicController {
|
|||||||
@SaCheckPermission("proposal.senior.basic")
|
@SaCheckPermission("proposal.senior.basic")
|
||||||
@ApiOperation(value = "提案内容修改")
|
@ApiOperation(value = "提案内容修改")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public Result update(@Valid ProposalInfo proposalInfo) {
|
public Result update(@Valid @Param("info") ProposalInfo proposalInfo) {
|
||||||
dao.update(proposalInfo,"^name|typeId|brief|measures|excerpt$$");
|
dao.update(proposalInfo,"^name|typeId|brief|measures|excerpt|suggestUnits$");
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -50,7 +50,7 @@ public class ProposalSeniorDeleteController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
IF(mer.proposalId IS NOT NULL, 1, 0) AS merge,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
tcd.`name` AS delegationName,
|
tcd.`name` AS delegationName,
|
||||||
@@ -62,18 +62,19 @@ public class ProposalSeniorDeleteController {
|
|||||||
t.displayName curTaskName
|
t.displayName curTaskName
|
||||||
FROM
|
FROM
|
||||||
proposal_info info
|
proposal_info info
|
||||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
LEFT JOIN proposal_merge mer ON mer.proposalId = info.id
|
||||||
LEFT JOIN proposal_type type on type.id = info.typeId
|
LEFT JOIN proposal_type type on type.id = info.typeId
|
||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||||
|
LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
if (StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())) {
|
||||||
|
cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId());
|
||||||
}
|
}
|
||||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
|
|||||||
+16
-10
@@ -56,7 +56,7 @@ public class ProposalSeniorFeedBackController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
IF(mer.proposalId IS NOT NULL, 1, 0) AS merge,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
tcd.`name` AS delegationName,
|
tcd.`name` AS delegationName,
|
||||||
@@ -66,26 +66,32 @@ public class ProposalSeniorFeedBackController {
|
|||||||
ins.variable instanceVariable,
|
ins.variable instanceVariable,
|
||||||
ins.processDefineId instanceProcessDefineId,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
t.displayName curTaskName,
|
t.displayName curTaskName,
|
||||||
JSON_UNQUOTE(JSON_EXTRACT(caseTasks.variable, '$.tf_hostUnitName')) AS masterUnitName,
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName,
|
||||||
JSON_EXTRACT(caseTasks.variable, '$.tf_helpUnitNames') AS slaveUnitNames
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames,
|
||||||
|
JSON_UNQUOTE(JSON_EXTRACT(latestFeedBack.variable, '$.tf_feedback')) AS tf_feedback
|
||||||
FROM
|
FROM
|
||||||
proposal_info info
|
proposal_info info
|
||||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
LEFT JOIN proposal_merge mer ON mer.proposalId = info.id
|
||||||
LEFT JOIN proposal_type type on type.id = info.typeId
|
LEFT JOIN proposal_type type on type.id = info.typeId
|
||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
|
LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id
|
||||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
|
||||||
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
|
||||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
processInstanceId,
|
||||||
|
variable,
|
||||||
|
ROW_NUMBER() OVER (PARTITION BY processInstanceId ORDER BY finishTime DESC) as rn
|
||||||
|
FROM wf_process_task
|
||||||
|
WHERE taskName = 'feedback'
|
||||||
|
) latestFeedBack ON latestFeedBack.processInstanceId = ins.id AND latestFeedBack.rn = 1
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
|
||||||
|
|
||||||
}
|
|
||||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||||
|
// cnd.and("latestFeedBack.id","is not",null);
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
@@ -97,7 +103,7 @@ public class ProposalSeniorFeedBackController {
|
|||||||
@ApiOperation(value = "反馈信息")
|
@ApiOperation(value = "反馈信息")
|
||||||
public Result info(@Param("instanceId") String instanceId) {
|
public Result info(@Param("instanceId") String instanceId) {
|
||||||
List<ProcessTask> taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instanceId)
|
List<ProcessTask> taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instanceId)
|
||||||
.and(ProcessTask::getTaskName, "=", "013a7cf9-20dd-4188-a196-53fd595448e5")
|
.and(ProcessTask::getTaskName, "=", "feedback")
|
||||||
.and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())
|
.and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+7
-6
@@ -50,7 +50,7 @@ public class ProposalSeniorTypeController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
IF(mer.proposalId IS NOT NULL, 1, 0) AS merge,
|
||||||
type.name AS typeName,
|
type.name AS typeName,
|
||||||
tcs.fullName AS sessionName,
|
tcs.fullName AS sessionName,
|
||||||
tcd.`name` AS delegationName,
|
tcd.`name` AS delegationName,
|
||||||
@@ -60,15 +60,16 @@ public class ProposalSeniorTypeController {
|
|||||||
ins.variable instanceVariable,
|
ins.variable instanceVariable,
|
||||||
ins.processDefineId instanceProcessDefineId,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
t.displayName curTaskName,
|
t.displayName curTaskName,
|
||||||
JSON_UNQUOTE(JSON_EXTRACT(caseTasks.variable, '$.tf_hostUnitName')) AS masterUnitName,
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName,
|
||||||
JSON_EXTRACT(caseTasks.variable, '$.tf_helpUnitNames') AS slaveUnitNames
|
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
|
||||||
FROM
|
FROM
|
||||||
proposal_info info
|
proposal_info info
|
||||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
LEFT JOIN proposal_merge mer ON mer.proposalId = info.id
|
||||||
LEFT JOIN proposal_type type on type.id = info.typeId
|
LEFT JOIN proposal_type type on type.id = info.typeId
|
||||||
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
|
||||||
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId
|
||||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||||
|
LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id
|
||||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
||||||
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
||||||
@@ -76,8 +77,8 @@ public class ProposalSeniorTypeController {
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
if (StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())) {
|
||||||
|
cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId());
|
||||||
}
|
}
|
||||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
|
|||||||
+1
-1
@@ -80,7 +80,7 @@ public class ProposalCommitteeFilingController {
|
|||||||
t.taskParentId,
|
t.taskParentId,
|
||||||
t.variable taskVariable,
|
t.variable taskVariable,
|
||||||
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
|
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
|
||||||
IF(rt.id IS NOT NULL, 1, 0) AS canRevoke
|
IF(rt.id IS NOT NULL OR (ins.state = 20 AND info.caseFilingResult = 'NOT'), 1, 0) AS canRevoke
|
||||||
FROM
|
FROM
|
||||||
wf_process_task t
|
wf_process_task t
|
||||||
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
|
|||||||
+9
-15
@@ -47,7 +47,7 @@ public class ProposalQueryComprehensiveParam extends PageForm {
|
|||||||
@ApiModelProperty(name = "承办单位编码")
|
@ApiModelProperty(name = "承办单位编码")
|
||||||
private String replyUnitCode;
|
private String replyUnitCode;
|
||||||
@ApiModelProperty(name = "承办单位ID")
|
@ApiModelProperty(name = "承办单位ID")
|
||||||
private String undertakeUnitId;
|
private String underTakeUnitId;
|
||||||
|
|
||||||
@ApiModelProperty(name = "征集进度状态")
|
@ApiModelProperty(name = "征集进度状态")
|
||||||
private Integer[] collectIds;
|
private Integer[] collectIds;
|
||||||
@@ -93,25 +93,19 @@ public class ProposalQueryComprehensiveParam extends PageForm {
|
|||||||
if (StrUtil.isNotBlank(searchParam.getCreateUserName())) {
|
if (StrUtil.isNotBlank(searchParam.getCreateUserName())) {
|
||||||
cnd.where().andLike("info.createUserName", searchParam.getCreateUserName());
|
cnd.where().andLike("info.createUserName", searchParam.getCreateUserName());
|
||||||
}
|
}
|
||||||
//提案人分工会
|
// 提案人分工会
|
||||||
cnd.andEX("tcde.unionId", "=", searchParam.getUnionId());
|
cnd.andEX("tcde.unionId", "=", searchParam.getUnionId());
|
||||||
//提案人单位
|
// 提案人单位
|
||||||
cnd.andEX("tcde.unitId", "=", searchParam.getUnitId());
|
cnd.andEX("tcde.unitId", "=", searchParam.getUnitId());
|
||||||
//提案类型
|
// 提案类型
|
||||||
cnd.andEX("info.typeId", "=", searchParam.getType());
|
cnd.andEX("info.typeId", "=", searchParam.getType());
|
||||||
cnd.andEX("info.typeId", "in", searchParam.getTypeIds());
|
cnd.andEX("info.typeId", "in", searchParam.getTypeIds());
|
||||||
//提案立案结果
|
// 提案立案结果
|
||||||
cnd.andEX("info.caseFilingResult", "in", searchParam.getCaseFilingResults());
|
cnd.andEX("info.caseFilingResult", "in", searchParam.getCaseFilingResults());
|
||||||
//承办单位编码
|
// 提案立案类型
|
||||||
cnd.andEX("pru.code", "=", searchParam.getReplyUnitCode());
|
cnd.andEX("info.caseFilingType", "in", searchParam.getCaseFilingTypes());
|
||||||
|
// 承办单位编码
|
||||||
//承办单位Id
|
cnd.andEX("pru.unitId", "=", searchParam.getUnderTakeUnitId());
|
||||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
|
||||||
if(StrUtil.isNotBlank(searchParam.getUndertakeUnitId())){
|
|
||||||
seg.orLike("JSON_EXTRACT(caseUnitTasks.extVariable, '$.hostUnitId')",searchParam.getUndertakeUnitId());
|
|
||||||
seg.orLike("JSON_EXTRACT(caseUnitTasks.extVariable, '$.helpUnitIds')",searchParam.getUndertakeUnitId());
|
|
||||||
cnd.and(seg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+154
-8
@@ -3,10 +3,16 @@ package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
|
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
|
import com.deepoove.poi.config.Configure;
|
||||||
|
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
@@ -15,6 +21,11 @@ import org.nutz.lang.util.NutMap;
|
|||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -26,6 +37,9 @@ public class TeacherCongressDelegateTransitionController {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Dao dao;
|
private Dao dao;
|
||||||
|
@Inject
|
||||||
|
private SysOfficeTemplateUtil sysOfficeTemplateUtil;
|
||||||
|
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/transition/index.html")
|
@Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/transition/index.html")
|
||||||
@@ -47,8 +61,11 @@ public class TeacherCongressDelegateTransitionController {
|
|||||||
List<Teacher_congress_delegate> delegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId));
|
List<Teacher_congress_delegate> delegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId));
|
||||||
dao.fetchLinks(delegates, "delegation");
|
dao.fetchLinks(delegates, "delegation");
|
||||||
// 上一届次代表
|
// 上一届次代表
|
||||||
List<Teacher_congress_delegate> lastDelegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId()));
|
List<Teacher_congress_delegate> lastDelegates = new ArrayList<>();
|
||||||
dao.fetchLinks(lastDelegates, "delegation");
|
if (lastSession != null) {
|
||||||
|
dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId()));
|
||||||
|
dao.fetchLinks(lastDelegates, "delegation");
|
||||||
|
}
|
||||||
|
|
||||||
// 代表数据
|
// 代表数据
|
||||||
List<NutMap> delegateFull = delegates.stream().map(delegate -> {
|
List<NutMap> delegateFull = delegates.stream().map(delegate -> {
|
||||||
@@ -76,20 +93,21 @@ public class TeacherCongressDelegateTransitionController {
|
|||||||
}).toList();
|
}).toList();
|
||||||
|
|
||||||
|
|
||||||
List<HashMap<String, Object>> list = delegations.stream().map(delegation -> {
|
List<NutMap> list = delegations.stream().map(delegation -> {
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
NutMap map = NutMap.NEW();
|
||||||
|
map.put("id", delegation.getId());
|
||||||
map.put("name", delegation.getName());
|
map.put("name", delegation.getName());
|
||||||
map.put("code", delegation.getCode());
|
map.put("code", delegation.getCode());
|
||||||
// 上一届次人数
|
// 上一届次人数
|
||||||
map.put("lastCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode())).count());
|
map.put("lastCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode())).count());
|
||||||
// 增补代表数 (上一届次不是代表 但是本届次是代表)
|
// 增补代表数 (上一届次不是代表 但是本届次是代表)
|
||||||
map.put("addCount", delegateFull.stream().filter(delegate -> StrUtil.isBlank(delegate.getString("lastDelegationCode")) && delegate.getString("delegationCode").equals(delegation.getCode())));
|
map.put("addCount", delegateFull.stream().filter(delegate -> StrUtil.isBlank(delegate.getString("lastDelegationCode")) && delegate.getString("delegationCode").equals(delegation.getCode())).count());
|
||||||
// 转入代表数 (上一届次是代表 但是在别的代表团)
|
// 转入代表数 (上一届次是代表 但是在别的代表团)
|
||||||
map.put("transferCount", delegateFull.stream().filter(delegate -> !delegate.getString("lastDelegationCode").equals(delegation.getCode()) && delegate.getString("delegationCode").equals(delegation.getCode())));
|
map.put("transferCount", delegateFull.stream().filter(delegate -> StrUtil.isNotBlank(delegate.getString("lastDelegationCode")) && !delegate.getString("lastDelegationCode").equals(delegation.getCode()) && delegate.getString("delegationCode").equals(delegation.getCode())).count());
|
||||||
// 转出代表数 (上一届次在本团 本届次转出去了)
|
// 转出代表数 (上一届次在本团 本届次转出去了)
|
||||||
map.put("transferOutCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isNotBlank(delegate.getString("delegationCode")) && !delegate.getString("delegationCode").equals(delegation.getCode())));
|
map.put("transferOutCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isNotBlank(delegate.getString("delegationCode")) && !delegate.getString("delegationCode").equals(delegation.getCode())).count());
|
||||||
// 减少代表数 (上一届次是代表 本届次不是代表)
|
// 减少代表数 (上一届次是代表 本届次不是代表)
|
||||||
map.put("reduceCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isBlank(delegate.getString("delegationCode"))));
|
map.put("reduceCount", delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isBlank(delegate.getString("delegationCode"))).count());
|
||||||
// 当前代表数
|
// 当前代表数
|
||||||
map.put("currentCount", delegateFull.stream().filter(delegate -> delegate.getString("delegationCode").equals(delegation.getCode())).count());
|
map.put("currentCount", delegateFull.stream().filter(delegate -> delegate.getString("delegationCode").equals(delegation.getCode())).count());
|
||||||
return map;
|
return map;
|
||||||
@@ -98,4 +116,132 @@ public class TeacherCongressDelegateTransitionController {
|
|||||||
return Result.success(list);
|
return Result.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("tc.delegate.transition")
|
||||||
|
@ApiOperation("代表换届详情")
|
||||||
|
public Result detail(String sessionId, String delegationId) {
|
||||||
|
HashMap<String, Object> data = innerData(sessionId, delegationId);
|
||||||
|
return Result.success(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Ok("void")
|
||||||
|
@SaCheckPermission("tc.delegate.transition")
|
||||||
|
public void exportDocx(String sessionId, String delegationId, HttpServletResponse response) {
|
||||||
|
HashMap<String, Object> data = innerData(sessionId, delegationId);
|
||||||
|
|
||||||
|
List<NutMap> addUser = (List<NutMap>) data.get("addUser");
|
||||||
|
for (int i = 0; i < addUser.size(); i++) {
|
||||||
|
addUser.get(i).put("index", i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<NutMap> transferUser = (List<NutMap>) data.get("transferUser");
|
||||||
|
for (int i = 0; i < transferUser.size(); i++) {
|
||||||
|
transferUser.get(i).put("index", i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<NutMap> transferOutUser = (List<NutMap>) data.get("transferOutUser");
|
||||||
|
for (int i = 0; i < transferOutUser.size(); i++) {
|
||||||
|
transferOutUser.get(i).put("index", i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<NutMap> transferInOutUser = new ArrayList<>();
|
||||||
|
transferInOutUser.addAll(transferUser);
|
||||||
|
transferInOutUser.addAll(transferOutUser);
|
||||||
|
|
||||||
|
data.put("transferInOutUser", transferInOutUser);
|
||||||
|
data.put("addUserCount", ((List<NutMap>) data.get("addUser")).size());
|
||||||
|
|
||||||
|
LoopRowTableRenderPolicy hackLoopTableRenderPolicy = new LoopRowTableRenderPolicy();
|
||||||
|
Configure config = Configure.builder()
|
||||||
|
.bind("transferInOutUser", hackLoopTableRenderPolicy)
|
||||||
|
.bind("addUser", hackLoopTableRenderPolicy)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ByteArrayOutputStream byteOs = new ByteArrayOutputStream();
|
||||||
|
try {
|
||||||
|
InputStream inputStream = sysOfficeTemplateUtil.getTemplate("tcDelegateTransition");
|
||||||
|
XWPFTemplate.compile(inputStream, config)
|
||||||
|
.render(data)
|
||||||
|
.writeAndClose(byteOs);
|
||||||
|
CommonDownloadUtil.download(data.get("delegationName")+"代表换届变动信息.docx", byteOs.toByteArray(), response);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public HashMap<String, Object> innerData(String sessionId, String delegationId) {
|
||||||
|
// 当前届次
|
||||||
|
Teacher_congress_session session = dao.fetch(Teacher_congress_session.class, sessionId);
|
||||||
|
// 上一届次
|
||||||
|
Teacher_congress_session lastSession = dao.fetch(Teacher_congress_session.class, Cnd.where(Teacher_congress_session::getStartDate, "<", session.getStartDate()).desc(Teacher_congress_session::getStartDate));
|
||||||
|
// 当前代表团
|
||||||
|
Teacher_congress_delegation delegation = dao.fetch(Teacher_congress_delegation.class, delegationId);
|
||||||
|
|
||||||
|
// 当前届次代表团代表
|
||||||
|
List<Teacher_congress_delegate> delegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId).and(Teacher_congress_delegate::getDelegationId, "=", delegation.getId()));
|
||||||
|
dao.fetchLinks(delegates, "delegation");
|
||||||
|
|
||||||
|
// 上一届次代表
|
||||||
|
List<Teacher_congress_delegate> lastDelegates = new ArrayList<>();
|
||||||
|
if (lastSession != null) {
|
||||||
|
dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId()));
|
||||||
|
dao.fetchLinks(lastDelegates, "delegation");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 代表数据
|
||||||
|
List<NutMap> delegateFull = delegates.stream().map(delegate -> {
|
||||||
|
NutMap delegateMap = NutMap.NEW();
|
||||||
|
delegateMap.put("userId", delegate.getUserId());
|
||||||
|
delegateMap.put("userName", delegate.getUserName());
|
||||||
|
|
||||||
|
// 本届次代表团信息
|
||||||
|
delegateMap.put("delegationId", delegate.getDelegationId());
|
||||||
|
delegateMap.put("delegationName", delegate.getDelegation().getName());
|
||||||
|
delegateMap.put("delegationCode", delegate.getDelegation().getCode());
|
||||||
|
|
||||||
|
// 上一届次代表团信息
|
||||||
|
lastDelegates.stream().filter(lastDelegate -> lastDelegate.getUserId().equals(delegate.getUserId())).findFirst().ifPresentOrElse(lastDelegate -> {
|
||||||
|
delegateMap.put("lastDelegationId", lastDelegate.getDelegationId());
|
||||||
|
delegateMap.put("lastDelegationName", lastDelegate.getDelegation().getName());
|
||||||
|
delegateMap.put("lastDelegationCode", lastDelegate.getDelegation().getCode());
|
||||||
|
}, () -> {
|
||||||
|
delegateMap.put("lastDelegationId", "");
|
||||||
|
delegateMap.put("lastDelegationName", "");
|
||||||
|
delegateMap.put("lastDelegationCode", "");
|
||||||
|
});
|
||||||
|
|
||||||
|
return delegateMap;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
// 增补代表数据 (上一届次不是代表 但是本届次是代表)
|
||||||
|
List<NutMap> addUser = delegateFull.stream().filter(delegate -> StrUtil.isBlank(delegate.getString("lastDelegationCode")) && delegate.getString("delegationCode").equals(delegation.getCode())).toList();
|
||||||
|
|
||||||
|
// 转入代表数据 (上一届次是代表 但是在别的代表团)
|
||||||
|
List<NutMap> transferUser = delegateFull.stream().filter(delegate -> StrUtil.isNotBlank(delegate.getString("lastDelegationCode")) && !delegate.getString("lastDelegationCode").equals(delegation.getCode()) && delegate.getString("delegationCode").equals(delegation.getCode())).toList();
|
||||||
|
|
||||||
|
// 转出代表数据 (上一届次在本团 本届次转出去了)
|
||||||
|
List<NutMap> transferOutUser = delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isNotBlank(delegate.getString("delegationCode")) && !delegate.getString("delegationCode").equals(delegation.getCode())).toList();
|
||||||
|
|
||||||
|
// 减少代表数据 (上一届次是代表 本届次不是代表)
|
||||||
|
List<NutMap> reduceUser = delegateFull.stream().filter(delegate -> delegate.getString("lastDelegationCode").equals(delegation.getCode()) && StrUtil.isBlank(delegate.getString("delegationCode"))).toList();
|
||||||
|
|
||||||
|
// 当前代表人数
|
||||||
|
int currentCount = delegates.size();
|
||||||
|
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
map.put("addUser", addUser);
|
||||||
|
map.put("transferUser", transferUser);
|
||||||
|
map.put("transferOutUser", transferOutUser);
|
||||||
|
map.put("reduceUser", reduceUser);
|
||||||
|
map.put("currentCount", currentCount);
|
||||||
|
map.put("sessionName", session.getFullName());
|
||||||
|
map.put("delegationName", delegation.getName());
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -26,7 +26,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="姓名/工号">
|
<search-item label="姓名/工号">
|
||||||
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.userName" @keyup.enter.native="doSearch"></el-input>
|
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword" @keyup.enter.native="doSearch"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="性别">
|
<search-item label="性别">
|
||||||
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
|
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
|
||||||
@@ -62,6 +62,7 @@ layout("/layouts/platform.html"){
|
|||||||
</table-tool>
|
</table-tool>
|
||||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||||
|
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||||
<el-table-column prop="sex" label="性别"></el-table-column>
|
<el-table-column prop="sex" label="性别"></el-table-column>
|
||||||
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ layout("/layouts/platform.html"){
|
|||||||
<table-tool></table-tool>
|
<table-tool></table-tool>
|
||||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||||
|
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||||
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
||||||
<el-table-column prop="unitName" label="所属单位"></el-table-column>
|
<el-table-column prop="unitName" label="所属单位"></el-table-column>
|
||||||
@@ -32,7 +33,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="操作" fixed="right" width="300px">
|
<el-table-column label="操作" fixed="right" width="300px">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
|
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
|
||||||
<el-button @click="onCancelSignUp(row)" size="mini" type="danger">取消报名
|
<el-button v-if="row.instanceState != 20" @click="onCancelSignUp(row)" size="mini" type="danger">取消报名</el-button>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
+2
-1
@@ -25,7 +25,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="姓名/工号">
|
<search-item label="姓名/工号">
|
||||||
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.userName" @keyup.enter.native="doSearch"></el-input>
|
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword" @keyup.enter.native="doSearch"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="性别">
|
<search-item label="性别">
|
||||||
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
|
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
|
||||||
@@ -64,6 +64,7 @@ layout("/layouts/platform.html"){
|
|||||||
</table-tool>
|
</table-tool>
|
||||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||||
|
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||||
<el-table-column prop="userName" label="姓名"></el-table-column>
|
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||||
<el-table-column prop="sex" label="性别"></el-table-column>
|
<el-table-column prop="sex" label="性别"></el-table-column>
|
||||||
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
<el-table-column prop="unionName" label="所属工会"></el-table-column>
|
||||||
|
|||||||
+2
-11
@@ -17,17 +17,8 @@ layout("/layouts/platform.html"){
|
|||||||
value-format="yyyy">
|
value-format="yyyy">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="填报人">
|
<search-item label="姓名/工号">
|
||||||
<el-input @keyup.enter.native="doSearch" clearable
|
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="pageForm.searchKeyword">
|
|
||||||
<el-select placeholder="查询类型" slot="prepend"
|
|
||||||
style="width: 100px;"
|
|
||||||
v-model="pageForm.searchName">
|
|
||||||
<el-option label="姓名" value="info.userName"></el-option>
|
|
||||||
<el-option label="工号" value="info.loginName"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-input>
|
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="登记类型">
|
<search-item label="登记类型">
|
||||||
<el-select clearable placeholder="登记类型"
|
<el-select clearable placeholder="登记类型"
|
||||||
|
|||||||
+3
-12
@@ -10,24 +10,15 @@ layout("/layouts/platform.html"){
|
|||||||
<search-item label="年度">
|
<search-item label="年度">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@change="doSearch"
|
@change="doSearch"
|
||||||
placeholder="选择年"
|
placeholder="请选择年度"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
type="year"
|
type="year"
|
||||||
v-model="pageForm.year"
|
v-model="pageForm.year"
|
||||||
value-format="yyyy">
|
value-format="yyyy">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="填报人">
|
<search-item label="姓名/工号">
|
||||||
<el-input @keyup.enter.native="doSearch" clearable
|
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="pageForm.searchKeyword">
|
|
||||||
<el-select placeholder="查询类型" slot="prepend"
|
|
||||||
style="width: 100px;"
|
|
||||||
v-model="pageForm.searchName">
|
|
||||||
<el-option label="姓名" value="info.userName"></el-option>
|
|
||||||
<el-option label="工号" value="info.loginName"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-input>
|
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="登记类型">
|
<search-item label="登记类型">
|
||||||
<el-select clearable placeholder="登记类型"
|
<el-select clearable placeholder="登记类型"
|
||||||
|
|||||||
+2
-11
@@ -17,17 +17,8 @@ layout("/layouts/platform.html"){
|
|||||||
value-format="yyyy">
|
value-format="yyyy">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="填报人">
|
<search-item label="姓名/工号">
|
||||||
<el-input @keyup.enter.native="doSearch" clearable
|
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model="pageForm.searchKeyword">
|
|
||||||
<el-select placeholder="查询类型" slot="prepend"
|
|
||||||
style="width: 100px;"
|
|
||||||
v-model="pageForm.searchName">
|
|
||||||
<el-option label="姓名" value="info.userName"></el-option>
|
|
||||||
<el-option label="工号" value="info.loginName"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-input>
|
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="登记类型">
|
<search-item label="登记类型">
|
||||||
<el-select clearable placeholder="登记类型"
|
<el-select clearable placeholder="登记类型"
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="承办单位">
|
<search-item label="承办单位">
|
||||||
<el-select clearable filterable placeholder="承办单位" v-model="pageForm.undertakeUnitId">
|
<el-select clearable filterable placeholder="承办单位" v-model="pageForm.underTakeUnitId">
|
||||||
<el-option :key="item.code" :label="item.name" :value="item.id"
|
<el-option :key="item.code" :label="item.name" :value="item.id"
|
||||||
v-for="item in underTakeOptions"></el-option>
|
v-for="item in underTakeOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|||||||
+1
@@ -216,6 +216,7 @@ layout("/layouts/platform.html"){
|
|||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
||||||
<el-tag v-if="row.merge" size="small">是</el-tag>
|
<el-tag v-if="row.merge" size="small">是</el-tag>
|
||||||
|
<el-tag v-else type="warning" size="small">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'instanceState'" scope="{row}">
|
<template v-else-if="column.prop === 'instanceState'" scope="{row}">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="是否并案" prop="merge">
|
<el-table-column label="是否并案" prop="merge">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-tag v-if="row.merge" size="small">是</el-tag>
|
<el-tag v-if="row.merge" size="small">是</el-tag>
|
||||||
|
<el-tag v-else type="warning" size="small">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="主办单位" prop="masterUnitName" show-overflow-tooltip></el-table-column>
|
<el-table-column label="主办单位" prop="masterUnitName" show-overflow-tooltip></el-table-column>
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="承办单位">
|
<search-item label="承办单位">
|
||||||
<el-select clearable filterable placeholder="承办单位" v-model="pageForm.undertakeUnitId">
|
<el-select clearable filterable placeholder="承办单位" v-model="pageForm.underTakeUnitId">
|
||||||
<el-option :key="item.code" :label="item.name" :value="item.code" v-for="item in underTakeOptions"></el-option>
|
<el-option :key="item.code" :label="item.name" :value="item.code" v-for="item in underTakeOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|||||||
+111
-52
@@ -9,59 +9,65 @@ layout("/layouts/platform.html"){
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="教代会">
|
<search-item label="教代会">
|
||||||
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" v-model="pageForm.sessionId">
|
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会"
|
||||||
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
|
v-model="pageForm.sessionId">
|
||||||
|
<el-option :key="item.id" :label="item.fullName" :value="item.id"
|
||||||
|
v-for="item in sessionOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="提案名称">
|
<search-item label="提案名称">
|
||||||
<el-input
|
<el-input
|
||||||
@keyup.enter.native="doSearch"
|
@keyup.enter.native="doSearch"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入提案名称"
|
placeholder="请输入提案名称"
|
||||||
v-model="pageForm.name"
|
v-model="pageForm.name"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></el-input>
|
></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="提案编码">
|
<search-item label="提案编码">
|
||||||
<el-input
|
<el-input
|
||||||
@keyup.enter.native="doSearch"
|
@keyup.enter.native="doSearch"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入提案编码"
|
placeholder="请输入提案编码"
|
||||||
v-model="pageForm.code"
|
v-model="pageForm.code"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></el-input>
|
></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="提案人姓名">
|
<search-item label="提案人姓名">
|
||||||
<el-input
|
<el-input
|
||||||
@keyup.enter.native="doSearch"
|
@keyup.enter.native="doSearch"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入提案人姓名"
|
placeholder="请输入提案人姓名"
|
||||||
v-model="pageForm.createUserName"
|
v-model="pageForm.createUserName"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></el-input>
|
></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="提案人工号">
|
<search-item label="提案人工号">
|
||||||
<el-input
|
<el-input
|
||||||
@keyup.enter.native="doSearch"
|
@keyup.enter.native="doSearch"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入提案人工号"
|
placeholder="请输入提案人工号"
|
||||||
v-model="pageForm.createUserLoginName"
|
v-model="pageForm.createUserLoginName"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
></el-input>
|
></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="代表团">
|
<search-item label="代表团">
|
||||||
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in delegationOptions"></el-option>
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in delegationOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="提案分工会">
|
<search-item label="提案分工会">
|
||||||
<el-select clearable filterable placeholder="分工会" v-model="pageForm.unionId" @change="pageForm.unitId=null;listUnit();">
|
<el-select clearable filterable placeholder="分工会" v-model="pageForm.unionId"
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unionOptions"></el-option>
|
@change="pageForm.unitId=null;listUnit();">
|
||||||
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in unionOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="提案单位">
|
<search-item label="提案单位">
|
||||||
<el-select clearable filterable placeholder="提案单位" v-model="pageForm.unitId">
|
<el-select clearable filterable placeholder="提案单位" v-model="pageForm.unitId">
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unitOptions"></el-option>
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in unitOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
@@ -77,13 +83,14 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||||
<el-table-column label="立案结果" prop="caseFilingResult">
|
<el-table-column label="立案结果" prop="caseFilingResult">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="row.caseFilingResult"></dict-tag>
|
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||||
|
:value="row.caseFilingResult"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="是否并案" prop="isConsolidation" width="100">
|
<el-table-column label="是否并案" prop="isConsolidation" width="100">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
<el-tag size="mini" v-else type="warning">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||||
@@ -122,36 +129,63 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<el-row :gutter="20" type="flex">
|
<el-row :gutter="20" type="flex">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="提案名称" prop="name">
|
<el-form-item label="提案名称" prop="name"
|
||||||
|
:rules="[{required:true,message:'请输入提案名称',trigger:'blur'}]">
|
||||||
<el-input maxlength="100" placeholder="提案名称" v-model="formData.name"></el-input>
|
<el-input maxlength="100" placeholder="提案名称" v-model="formData.name"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="提案方式" prop="source">
|
<el-form-item label="提案方式" prop="source">
|
||||||
<el-input :value="dict.type.PROPOSAL_SOURCE.find(v=>v.code === formData.source)?.name" disabled></el-input>
|
<el-input :value="dict.type.PROPOSAL_SOURCE.find(v=>v.code === formData.source)?.name"
|
||||||
|
disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-form-item prop="typeId" label="提案类别" :rules="[{required:true,message:'请选择类型',trigger:'blur'}]">
|
|
||||||
<el-select v-model="formData.typeId">
|
<el-row :gutter="20" type="flex">
|
||||||
<el-option :key="item.code" :label="item.name" :value="item.id" v-for="item in typeOptions"></el-option>
|
<el-col :span="12">
|
||||||
|
<el-form-item label="提案类别" prop="typeId">
|
||||||
|
<el-select v-model="formData.typeId" style="width: 100%">
|
||||||
|
<el-option :key="item.code" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in typeOptions"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<!-- <el-form-item label="提案摘要" prop="excerpt">-->
|
||||||
|
<!-- <el-input-->
|
||||||
|
<!-- v-model="formData.excerpt"-->
|
||||||
|
<!-- type="textarea"-->
|
||||||
|
<!-- autosize-->
|
||||||
|
<!-- :autosize="{ minRows: 4, maxRows: 4}"-->
|
||||||
|
<!-- placeholder="提案摘要"-->
|
||||||
|
<!-- ></el-input>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
|
||||||
|
<el-form-item label="建议承办单位" prop="suggestUnits">
|
||||||
|
<el-select v-model="formData.suggestUnits" multiple filterable style="width: 100%"
|
||||||
|
placeholder="请选择建议承办单位">
|
||||||
|
<el-option :key="item.id" :label="item.name" :value="item.name"
|
||||||
|
v-for="item in suggestUnitOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="提案摘要" prop="excerpt">
|
<el-form-item label="案由" prop="brief">
|
||||||
<el-input
|
<text-editor v-model="formData.brief" key="brief" placeholder="案由"></text-editor>
|
||||||
v-model="formData.excerpt"
|
|
||||||
type="textarea"
|
|
||||||
autosize
|
|
||||||
:autosize="{ minRows: 4, maxRows: 4}"
|
|
||||||
placeholder="提案摘要"
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="提案内容和依据" prop="brief">
|
<el-form-item label="建议措施" prop="measures">
|
||||||
<text-editor v-model="formData.brief" key="brief" placeholder="提案内容和依据"></text-editor>
|
<text-editor v-model="formData.measures" key="measures"
|
||||||
</el-form-item>
|
placeholder="建议措施"></text-editor>
|
||||||
<el-form-item label="改进建议和措施" prop="measures">
|
|
||||||
<text-editor v-model="formData.measures" key="measures" placeholder="改进建议和措施"></text-editor>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="附件上传" prop="files">-->
|
||||||
|
<!-- <file-upload-->
|
||||||
|
<!-- :value.sync="formData.files"-->
|
||||||
|
<!-- :upload_number="5"-->
|
||||||
|
<!-- upload_result_category="array"-->
|
||||||
|
<!-- upload_mode="drag"-->
|
||||||
|
<!-- complete_result-->
|
||||||
|
<!-- ></file-upload>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row type="flex" justify="end">
|
<el-row type="flex" justify="end">
|
||||||
<el-button @click="$refs.guava.index()">取 消</el-button>
|
<el-button @click="$refs.guava.index()">取 消</el-button>
|
||||||
@@ -178,13 +212,17 @@ layout("/layouts/platform.html"){
|
|||||||
delegationOptions: [],
|
delegationOptions: [],
|
||||||
unionOptions: [],
|
unionOptions: [],
|
||||||
unitOptions: [],
|
unitOptions: [],
|
||||||
|
suggestUnitOptions: [],
|
||||||
pageForm: {
|
pageForm: {
|
||||||
types: [],
|
types: [],
|
||||||
caseFilingResults: [],
|
caseFilingResults: [],
|
||||||
unionId: null,
|
unionId: null,
|
||||||
unitId: null
|
unitId: null
|
||||||
},
|
},
|
||||||
typeDialog: false
|
typeDialog: false,
|
||||||
|
formData: {
|
||||||
|
suggestUnits: []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -194,8 +232,18 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
onOpenEdit(row) {
|
onOpenEdit(row) {
|
||||||
this.$refs.guava.edit(()=>{
|
this.$refs.guava.edit(() => {
|
||||||
this.formData = { ...row }
|
let suggestUnits = []
|
||||||
|
try {
|
||||||
|
suggestUnits = JSON.parse(row.suggestUnits)
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.formData = {
|
||||||
|
...row,
|
||||||
|
suggestUnits: suggestUnits
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
doUpdateBasic() {
|
doUpdateBasic() {
|
||||||
@@ -206,7 +254,9 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post("/platform/senior/basic/update", this.formData).then((res) => {
|
this.$axios.post("/platform/senior/basic/update", {
|
||||||
|
info: JSON.stringify(this.formData)
|
||||||
|
}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.$refs.guava.index()
|
this.$refs.guava.index()
|
||||||
@@ -231,7 +281,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.listDelegation()
|
this.listDelegation()
|
||||||
},
|
},
|
||||||
listDelegation() {
|
listDelegation() {
|
||||||
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => {
|
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.delegationOptions = res.data
|
this.delegationOptions = res.data
|
||||||
}
|
}
|
||||||
@@ -255,9 +305,18 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
listUnit() {
|
listUnit() {
|
||||||
this.$businessTool.listUnit(this.pageForm.unionId).then((res) => (this.unitOptions = res))
|
this.$businessTool.listUnit(this.pageForm.unionId).then((res) => (this.unitOptions = res))
|
||||||
}
|
},
|
||||||
|
// 建议承办单位
|
||||||
|
listSuggestUnit() {
|
||||||
|
this.$axios.post("/platform/proposal/common/listUnderTake").then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.suggestUnitOptions = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
this.listSuggestUnit()
|
||||||
this.listSession()
|
this.listSession()
|
||||||
this.listUnion()
|
this.listUnion()
|
||||||
this.listUnit()
|
this.listUnit()
|
||||||
|
|||||||
+25
-4
@@ -90,7 +90,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="是否并案" prop="isConsolidation" width="100">
|
<el-table-column label="是否并案" prop="isConsolidation" width="100">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
<el-tag size="mini" v-else type="warning">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||||
@@ -100,6 +100,11 @@ layout("/layouts/platform.html"){
|
|||||||
size="small"></enum-tag>
|
size="small"></enum-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="反馈评价" prop="tf_feedback" width="150px">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<dict-tag :options="dict.type.PROPOSAL_FEEDBACK" :value="row.tf_feedback"></dict-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="操作" fixed="right" width="200px">
|
<el-table-column label="操作" fixed="right" width="200px">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||||
@@ -136,6 +141,18 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="请输入您的办理意见"
|
placeholder="请输入您的办理意见"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="通讯地址" :span="2">
|
||||||
|
<el-input v-model="task.taskFormData.tf_address" placeholder="请输入通讯地址"
|
||||||
|
clearable></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="联系电话" :span="2">
|
||||||
|
<el-input v-model="task.taskFormData.tf_phone" placeholder="请输入联系电话"
|
||||||
|
clearable></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="邮政编码" :span="2">
|
||||||
|
<el-input v-model="task.taskFormData.tf_postcode" placeholder="请输入邮政编码"
|
||||||
|
clearable></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</template>
|
</template>
|
||||||
<el-row type="flex" justify="end" slot="footer">
|
<el-row type="flex" justify="end" slot="footer">
|
||||||
@@ -180,10 +197,14 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
onOpenEdit(instanceId) {
|
onOpenEdit(instanceId) {
|
||||||
this.editDialogVisible = true
|
|
||||||
this.$axios.post('/platform/senior/feedback/info', {instanceId}).then(res => {
|
this.$axios.post('/platform/senior/feedback/info', {instanceId}).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.tasks = res.data
|
this.tasks = res.data
|
||||||
|
if (this.tasks && this.tasks.length > 0) {
|
||||||
|
this.editDialogVisible = true
|
||||||
|
} else {
|
||||||
|
this.$message.warning("当前无法修改反馈评价")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -195,8 +216,8 @@ layout("/layouts/platform.html"){
|
|||||||
feedback: v?.taskFormData?.tf_feedback
|
feedback: v?.taskFormData?.tf_feedback
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.$axios.post('/platform/senior/feedback/update', {data:JSON.stringify(params)}).then(res=>{
|
this.$axios.post('/platform/senior/feedback/update', {data: JSON.stringify(params)}).then(res => {
|
||||||
if(res.code===0){
|
if (res.code === 0) {
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.editDialogVisible = false
|
this.editDialogVisible = false
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
|
|||||||
+4
-1
@@ -54,6 +54,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</table-tool>
|
</table-tool>
|
||||||
<el-table :data="tableData" @sort-change="pageOrder" ref="tableRef" row-key="id" style="width: 100%">
|
<el-table :data="tableData" @sort-change="pageOrder" ref="tableRef" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column type="selection" width="50" fixed="left" v-if="!pageForm.approval"></el-table-column>
|
||||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod" fixed="left"></el-table-column>
|
<el-table-column label="序号" width="50" type="index" :index="indexMethod" fixed="left"></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:label="column.label"
|
:label="column.label"
|
||||||
@@ -66,7 +67,8 @@ layout("/layouts/platform.html"){
|
|||||||
v-if="column.visible !== false"
|
v-if="column.visible !== false"
|
||||||
>
|
>
|
||||||
<template v-if="column.prop === 'caseFilingResult'" scope="{row}">
|
<template v-if="column.prop === 'caseFilingResult'" scope="{row}">
|
||||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
<dict-tag v-if="row.taskState!==10"
|
||||||
|
:options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||||
:value="row.caseFilingResult"></dict-tag>
|
:value="row.caseFilingResult"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
||||||
@@ -185,6 +187,7 @@ layout("/layouts/platform.html"){
|
|||||||
{label: "提案名称", prop: "name", width: "200px"},
|
{label: "提案名称", prop: "name", width: "200px"},
|
||||||
{label: "提案类别", prop: "typeName"},
|
{label: "提案类别", prop: "typeName"},
|
||||||
{label: "届次", prop: "sessionName"},
|
{label: "届次", prop: "sessionName"},
|
||||||
|
{label: "立案结果", prop: "caseFilingResult"},
|
||||||
{label: "代表团", prop: "delegationName"},
|
{label: "代表团", prop: "delegationName"},
|
||||||
{label: "当前节点", prop: "curTaskName"},
|
{label: "当前节点", prop: "curTaskName"},
|
||||||
{label: "流程状态", prop: "instanceState"}
|
{label: "流程状态", prop: "instanceState"}
|
||||||
|
|||||||
+1
@@ -49,6 +49,7 @@ layout("/layouts/platform.html"){
|
|||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
||||||
<el-tag v-if="row.merge" size="small">是</el-tag>
|
<el-tag v-if="row.merge" size="small">是</el-tag>
|
||||||
|
<el-tag v-else type="warning" size="small">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'underTakeIsMaster'" scope="{row}">
|
<template v-else-if="column.prop === 'underTakeIsMaster'" scope="{row}">
|
||||||
<el-tag v-if="row.underTakeIsMaster" size="small">主办</el-tag>
|
<el-tag v-if="row.underTakeIsMaster" size="small">主办</el-tag>
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ layout("/layouts/platform.html"){
|
|||||||
邀请附议人
|
邀请附议人
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="openRevoke(row)">
|
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="openRevoke(row)">
|
||||||
撤销
|
撤回
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- v-if="row.taskKey === 'startTask' || !row.instanceId"-->
|
<!-- v-if="row.taskKey === 'startTask' || !row.instanceId"-->
|
||||||
<el-button size="mini" type="danger" @click="del(row.id)">
|
<el-button size="mini" type="danger" @click="del(row.id)">
|
||||||
|
|||||||
+1
@@ -70,6 +70,7 @@ layout("/layouts/platform.html"){
|
|||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
||||||
<el-tag v-if="row.merge" size="small">是</el-tag>
|
<el-tag v-if="row.merge" size="small">是</el-tag>
|
||||||
|
<el-tag v-else type="warning" size="small">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'underTakeIsMaster'" scope="{row}">
|
<template v-else-if="column.prop === 'underTakeIsMaster'" scope="{row}">
|
||||||
<el-tag v-if="row.underTakeIsMaster" size="small">主办</el-tag>
|
<el-tag v-if="row.underTakeIsMaster" size="small">主办</el-tag>
|
||||||
|
|||||||
+1
@@ -120,6 +120,7 @@ layout("/layouts/platform.html"){
|
|||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
<template v-else-if="column.prop === 'merge'" scope="{row}">
|
||||||
<el-tag v-if="row.merge" size="small">是</el-tag>
|
<el-tag v-if="row.merge" size="small">是</el-tag>
|
||||||
|
<el-tag v-else type="warning" size="small">否</el-tag>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="column.prop === 'underTakeIsMaster'" scope="{row}">
|
<template v-else-if="column.prop === 'underTakeIsMaster'" scope="{row}">
|
||||||
<el-tag v-if="row.underTakeIsMaster" size="small">主办</el-tag>
|
<el-tag v-if="row.underTakeIsMaster" size="small">主办</el-tag>
|
||||||
|
|||||||
+10
-11
@@ -115,23 +115,22 @@ layout("/layouts/platform.html"){
|
|||||||
<!-- ></el-input>-->
|
<!-- ></el-input>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
|
|
||||||
<el-form-item label="调研情况" prop="researchFindings">
|
<!-- <el-form-item label="调研情况" prop="researchFindings">-->
|
||||||
<el-input
|
<!-- <el-input-->
|
||||||
v-model="formData.researchFindings"
|
<!-- v-model="formData.researchFindings"-->
|
||||||
type="textarea"
|
<!-- type="textarea"-->
|
||||||
autosize
|
<!-- autosize-->
|
||||||
:autosize="{ minRows: 4, maxRows: 4}"
|
<!-- :autosize="{ minRows: 4, maxRows: 4}"-->
|
||||||
placeholder="调研情况"
|
<!-- placeholder="调研情况"-->
|
||||||
></el-input>
|
<!-- ></el-input>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
|
|
||||||
<el-form-item label="建议承办单位" prop="suggestUnits">
|
<el-form-item label="建议承办单位" prop="suggestUnits">
|
||||||
<el-select v-model="formData.suggestUnits" multiple style="width: 100%">
|
<el-select v-model="formData.suggestUnits" multiple filterable style="width: 100%" placeholder="请选择建议承办单位">
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.name"
|
<el-option :key="item.id" :label="item.name" :value="item.name"
|
||||||
v-for="item in suggestUnitOptions"></el-option>
|
v-for="item in suggestUnitOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="案由" prop="brief">
|
<el-form-item label="案由" prop="brief">
|
||||||
<text-editor v-model="formData.brief" key="brief" placeholder="案由"></text-editor>
|
<text-editor v-model="formData.brief" key="brief" placeholder="案由"></text-editor>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|||||||
+66
-3
@@ -3,16 +3,79 @@ layout("/layouts/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="教代会">
|
||||||
|
<el-select v-model="pageForm.sessionId" @change="doSearch">
|
||||||
|
<el-option v-for="item in sessionOptions" :label="item.fullName" :value="item.id"
|
||||||
|
:key="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card shadow="never">
|
||||||
|
<el-table :data="tableData" @sort-change="pageOrder" header-align="center" row-key="id" ref="tableRef"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column type="index" width="55" label="序号" :index="indexMethod" fixed="left"></el-table-column>
|
||||||
|
<el-table-column label="代表团名称" prop="name" fixed="left"></el-table-column>
|
||||||
|
<el-table-column label="上届次代表数" prop="lastCount"></el-table-column>
|
||||||
|
<el-table-column label="增补代表数" prop="addCount"></el-table-column>
|
||||||
|
<el-table-column label="转入代表数" prop="transferCount"></el-table-column>
|
||||||
|
<el-table-column label="转出代表数" prop="transferOutCount"></el-table-column>
|
||||||
|
<el-table-column label="减少代表数" prop="reduceCount"></el-table-column>
|
||||||
|
<el-table-column label="本届代表数" prop="currentCount"></el-table-column>
|
||||||
|
<el-table-column label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="primary" size="mini" @click="onView(scope.row)">查看</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<transition-docx ref="transitionDocxRef"></transition-docx>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
<!--#include('transitionDocx.js'){}#-->
|
||||||
|
|
||||||
const app = new Vue({
|
const app = new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
data(){
|
mixins: [initTableMixins],
|
||||||
return{
|
components: {
|
||||||
|
'transition-docx': transitionDocx
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sessionOptions: [],
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
listSession() {
|
||||||
|
this.$axios.post("/platform/teacherCongress/common/listSession").then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.sessionOptions = res.data
|
||||||
|
if (this.sessionOptions && this.sessionOptions.length > 0) {
|
||||||
|
this.pageForm.sessionId = this.sessionOptions[0].id
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
pageData() {
|
||||||
|
this.$axios.post("/platform/zhgh/democratic/teacherCongress/delegate/transition/pageData", this.pageForm).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.tableData = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onView(row) {
|
||||||
|
this.$refs.transitionDocxRef.onOpen(this.pageForm.sessionId, row.id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.listSession()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+426
@@ -0,0 +1,426 @@
|
|||||||
|
const transitionDocx = {
|
||||||
|
template: /*language=HTML*/ `
|
||||||
|
<el-dialog title="调动情况" :visible.sync="visible" width="210mm">
|
||||||
|
<div class="document-container">
|
||||||
|
<!-- 文档标题 -->
|
||||||
|
<div class="document-header">
|
||||||
|
<h2 class="document-title">{{ transition.sessionName }}</h2>
|
||||||
|
<h3 class="document-subtitle">增补、更换代表与代表调动情况统计表</h3>
|
||||||
|
<div class="document-info">
|
||||||
|
<span class="info-item">代表团名称:{{ transition.delegationName }}</span>
|
||||||
|
<span class="info-item">填表人:{{ fillPerson }}</span>
|
||||||
|
<span class="info-item">填表日期:{{ currentDate }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 主表格 -->
|
||||||
|
<div class="main-table-container">
|
||||||
|
<table class="document-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="sequence-col">序号</th>
|
||||||
|
<th class="name-col">代表姓名</th>
|
||||||
|
<th class="original-col">原代表团名称</th>
|
||||||
|
<th class="current-col">现代表团名称</th>
|
||||||
|
<th class="reason-col">变动类型</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- 增补代表块 -->
|
||||||
|
<template v-if="transition.addUser && transition.addUser.length > 0">
|
||||||
|
<tr class="section-header">
|
||||||
|
<td colspan="5" class="section-title">增补代表 ({{ transition.addUser.length }}人)</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="(user, index) in transition.addUser" :key="'add-' + index" class="data-row add-row">
|
||||||
|
<td class="sequence-col">{{ index + 1 }}</td>
|
||||||
|
<td class="name-col">{{ user.userName }}</td>
|
||||||
|
<td class="original-col">{{ user.lastDelegationName || '-' }}</td>
|
||||||
|
<td class="current-col">{{ user.delegationName }}</td>
|
||||||
|
<td class="reason-col">新增代表</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 调出代表块 -->
|
||||||
|
<template v-if="transition.transferOutUser && transition.transferOutUser.length > 0">
|
||||||
|
<tr class="section-header">
|
||||||
|
<td colspan="5" class="section-title">调出代表 ({{ transition.transferOutUser.length }}人)</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="(user, index) in transition.transferOutUser" :key="'out-' + index" class="data-row out-row">
|
||||||
|
<td class="sequence-col">{{ index + 1 }}</td>
|
||||||
|
<td class="name-col">{{ user.userName }}</td>
|
||||||
|
<td class="original-col">{{ user.lastDelegationName }}</td>
|
||||||
|
<td class="current-col">{{ user.delegationName || '-' }}</td>
|
||||||
|
<td class="reason-col">调出代表</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 调入代表块 -->
|
||||||
|
<template v-if="transition.transferUser && transition.transferUser.length > 0">
|
||||||
|
<tr class="section-header">
|
||||||
|
<td colspan="5" class="section-title">调入代表 ({{ transition.transferUser.length }}人)</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="(user, index) in transition.transferUser" :key="'transfer-' + index" class="data-row transfer-row">
|
||||||
|
<td class="sequence-col">{{ index + 1 }}</td>
|
||||||
|
<td class="name-col">{{ user.userName }}</td>
|
||||||
|
<td class="original-col">{{ user.lastDelegationName || '-' }}</td>
|
||||||
|
<td class="current-col">{{ user.delegationName }}</td>
|
||||||
|
<td class="reason-col">调入代表</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 减少代表块 -->
|
||||||
|
<template v-if="transition.reduceUser && transition.reduceUser.length > 0">
|
||||||
|
<tr class="section-header">
|
||||||
|
<td colspan="5" class="section-title">减少代表 ({{ transition.reduceUser.length }}人)</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="(user, index) in transition.reduceUser" :key="'reduce-' + index" class="data-row reduce-row">
|
||||||
|
<td class="sequence-col">{{ index + 1 }}</td>
|
||||||
|
<td class="name-col">{{ user.userName }}</td>
|
||||||
|
<td class="original-col">{{ user.lastDelegationName }}</td>
|
||||||
|
<td class="current-col">-</td>
|
||||||
|
<td class="reason-col">减少代表</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 空数据提示 -->
|
||||||
|
<template v-if="!hasAnyData">
|
||||||
|
<tr class="empty-data-row">
|
||||||
|
<td colspan="5" class="empty-message">暂无代表变动数据</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 统计信息 -->
|
||||||
|
<div class="statistics-text">
|
||||||
|
本代表团按照民主程序,增补调整以上 <span class="number-blank">{{ totalChangeCount }}</span>
|
||||||
|
名代表,实际本代表团代表
|
||||||
|
<span class="number-blank">{{ transition.currentCount || 0 }}</span> 人。
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 签名区域 -->
|
||||||
|
<div class="signature-area">
|
||||||
|
<div class="signature-left">
|
||||||
|
<span>院党委组织负责人签字:</span>
|
||||||
|
<span class="signature-line"></span>
|
||||||
|
</div>
|
||||||
|
<div class="signature-right">
|
||||||
|
<span>(院党委组织盖章)</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 日期 -->
|
||||||
|
<div class="date-area">
|
||||||
|
<span class="date-text">{{ currentYear }} 年 {{ currentMonth }} 月 {{ currentDay }} 日</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">关闭</el-button>
|
||||||
|
<el-button type="primary" @click="printDocument">打印</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
sessionId: '',
|
||||||
|
delegationId: '',
|
||||||
|
transition: {},
|
||||||
|
fillPerson: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
totalRows() {
|
||||||
|
let count = 0;
|
||||||
|
if (this.transition.addUser) count += this.transition.addUser.length;
|
||||||
|
if (this.transition.transferOutUser) count += this.transition.transferOutUser.length;
|
||||||
|
if (this.transition.transferUser) count += this.transition.transferUser.length;
|
||||||
|
if (this.transition.reduceUser) count += this.transition.reduceUser.length;
|
||||||
|
return count;
|
||||||
|
},
|
||||||
|
totalChangeCount() {
|
||||||
|
let count = 0;
|
||||||
|
if (this.transition.addUser) count += this.transition.addUser.length;
|
||||||
|
if (this.transition.transferOutUser) count += this.transition.transferOutUser.length;
|
||||||
|
if (this.transition.reduceUser) count += this.transition.reduceUser.length;
|
||||||
|
return count;
|
||||||
|
},
|
||||||
|
hasAnyData() {
|
||||||
|
return (this.transition.addUser && this.transition.addUser.length > 0) ||
|
||||||
|
(this.transition.transferOutUser && this.transition.transferOutUser.length > 0) ||
|
||||||
|
(this.transition.transferUser && this.transition.transferUser.length > 0) ||
|
||||||
|
(this.transition.reduceUser && this.transition.reduceUser.length > 0);
|
||||||
|
},
|
||||||
|
currentDate() {
|
||||||
|
const now = new Date();
|
||||||
|
return this.$moment().format('YYYY年MM月DD日');
|
||||||
|
},
|
||||||
|
currentYear() {
|
||||||
|
return new Date().getFullYear();
|
||||||
|
},
|
||||||
|
currentMonth() {
|
||||||
|
return new Date().getMonth() + 1;
|
||||||
|
},
|
||||||
|
currentDay() {
|
||||||
|
return new Date().getDate();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onOpen(sessionId, delegationId) {
|
||||||
|
this.sessionId = sessionId;
|
||||||
|
this.delegationId = delegationId;
|
||||||
|
this.visible = true;
|
||||||
|
this.getDetail();
|
||||||
|
},
|
||||||
|
getDetail() {
|
||||||
|
this.$axios.post('/platform/zhgh/democratic/teacherCongress/delegate/transition/detail', {
|
||||||
|
sessionId: this.sessionId,
|
||||||
|
delegationId: this.delegationId
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.transition = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getAddReason(user) {
|
||||||
|
if (user.lastDelegationName) {
|
||||||
|
return `从` + user.lastDelegationName + '调入';
|
||||||
|
}
|
||||||
|
return '新增代表';
|
||||||
|
},
|
||||||
|
printDocument() {
|
||||||
|
this.$downLoad('/platform/zhgh/democratic/teacherCongress/delegate/transition/exportDocx',{
|
||||||
|
sessionId: this.sessionId,
|
||||||
|
delegationId: this.delegationId
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
style: /*language=CSS*/ `
|
||||||
|
/* 对话框样式 */
|
||||||
|
/deep/ .el-dialog__body {
|
||||||
|
max-height: 70vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 文档容器 */
|
||||||
|
/deep/ .document-container {
|
||||||
|
width: 210mm;
|
||||||
|
min-height: 297mm;
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20mm;
|
||||||
|
background: white;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||||
|
font-family: 'SimSun', '宋体', serif;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #000;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 文档标题样式 */
|
||||||
|
/deep/ .document-header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0 0 20px 0;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-info {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .info-item {
|
||||||
|
flex: 1;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 主表格样式 */
|
||||||
|
/deep/ .main-table-container {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-table th,
|
||||||
|
/deep/ .document-table td {
|
||||||
|
border: 1px solid #000;
|
||||||
|
padding: 8px 4px;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-table th {
|
||||||
|
font-weight: bold;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .document-table td {
|
||||||
|
height: 35px;
|
||||||
|
min-height: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 列宽设置 */
|
||||||
|
/deep/ .sequence-col {
|
||||||
|
width: 8%;
|
||||||
|
min-width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .name-col {
|
||||||
|
width: 20%;
|
||||||
|
min-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .original-col {
|
||||||
|
width: 25%;
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .reason-col {
|
||||||
|
width: 25%;
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .transfer-name-col {
|
||||||
|
width: 20%;
|
||||||
|
min-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .original-delegation-col {
|
||||||
|
width: 25%;
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .current-delegation-col {
|
||||||
|
width: 25%;
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分组标题样式 */
|
||||||
|
/deep/ .section-header {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .section-title {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #333;
|
||||||
|
padding: 8px 0;
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 数据行样式 */
|
||||||
|
/deep/ .data-row:nth-child(even) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .data-row:nth-child(odd) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 空数据样式 */
|
||||||
|
/deep/ .empty-data-row {
|
||||||
|
height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .empty-message {
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
font-style: italic;
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 子表头样式 */
|
||||||
|
/deep/ .sub-header th {
|
||||||
|
background-color: #e8f4f8;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 统计信息样式 */
|
||||||
|
/deep/ .statistics-text {
|
||||||
|
margin: 30px 0 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .number-blank {
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 30px;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0 5px;
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 签名区域样式 */
|
||||||
|
/deep/ .signature-area {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: 40px 0 20px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .signature-left {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .signature-line {
|
||||||
|
display: inline-block;
|
||||||
|
width: 150px;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
margin-left: 10px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .signature-right {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 日期区域样式 */
|
||||||
|
/deep/ .date-area {
|
||||||
|
text-align: right;
|
||||||
|
margin: 20px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .date-text {
|
||||||
|
margin-right: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 对话框样式调整 */
|
||||||
|
/deep/ .dialog-footer {
|
||||||
|
text-align: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
`
|
||||||
|
}
|
||||||
@@ -47,6 +47,48 @@ const PROPOSAL_INFO = {
|
|||||||
<!-- </van-cell>-->
|
<!-- </van-cell>-->
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
|
|
||||||
|
<!--并案信息-->
|
||||||
|
<van-cell-group title="并案信息" v-if="viewData.merges && viewData.merges.length">
|
||||||
|
<van-cell v-for="(merge, index) in viewData.merges" :key="merge.id"
|
||||||
|
:title="(index + 1) + '. ' + merge.name"
|
||||||
|
:label="'提案编号:' + merge.code + ' | 提案人:' + merge.createUserName + ' | 类别:' + merge.typeName + ' | 代表团:' + merge.delegationName"
|
||||||
|
is-link
|
||||||
|
@click="openView(merge)">
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<!--委员会成员意见-->
|
||||||
|
<template v-if="viewData.commissionerOpinions && viewData.commissionerOpinions.length">
|
||||||
|
<div class="process-title" style="margin-bottom: 0!important;">
|
||||||
|
委员会成员意见
|
||||||
|
</div>
|
||||||
|
<div v-for="(opinion, index) in viewData.commissionerOpinions" :key="index"
|
||||||
|
style="margin-bottom: 16px;">
|
||||||
|
<van-cell :title="opinion.commissionerName + '(' + opinion.commissionerLoginName + ')'"
|
||||||
|
class="direction-column-cell">
|
||||||
|
</van-cell>
|
||||||
|
<van-cell title="立案结果">
|
||||||
|
<div style="display: flex;justify-content: end;">
|
||||||
|
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||||
|
:value="opinion.caseFilingResult"></dict-tag>
|
||||||
|
<template v-if="opinion.caseFilingType">
|
||||||
|
(
|
||||||
|
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_TYPE"
|
||||||
|
:value="opinion.caseFilingType"></dict-tag>
|
||||||
|
)
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell title="意见" v-if="opinion.opinionText">
|
||||||
|
<div>{{ opinion.opinionText }}</div>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell title="时间" v-if="opinion.opinionTime">
|
||||||
|
{{ opinion.opinionTime }}
|
||||||
|
</van-cell>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<template v-for="task in doneTasks">
|
<template v-for="task in doneTasks">
|
||||||
<van-cell-group :title="task.displayName" v-if="task.ext.isFirstTaskNode">
|
<van-cell-group :title="task.displayName" v-if="task.ext.isFirstTaskNode">
|
||||||
<van-cell title="申请用户">{{ task.ext.initiatorName }}({{task.ext.initiatorAccount}})
|
<van-cell title="申请用户">{{ task.ext.initiatorName }}({{task.ext.initiatorAccount}})
|
||||||
@@ -76,28 +118,6 @@ const PROPOSAL_INFO = {
|
|||||||
<el-table-column label="代表团" prop="delegationName"
|
<el-table-column label="代表团" prop="delegationName"
|
||||||
show-overflow-tooltip></el-table-column>
|
show-overflow-tooltip></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- <table>-->
|
|
||||||
<!-- <thead>-->
|
|
||||||
<!-- <tr>-->
|
|
||||||
<!-- <th>姓名</th>-->
|
|
||||||
<!-- <th>工号</th>-->
|
|
||||||
<!-- <th>性别</th>-->
|
|
||||||
<!-- <th>单位</th>-->
|
|
||||||
<!-- <th>分工会</th>-->
|
|
||||||
<!-- <th>代表团</th>-->
|
|
||||||
<!-- </tr>-->
|
|
||||||
<!-- </thead>-->
|
|
||||||
<!-- <tbody>-->
|
|
||||||
<!-- <tr v-for="item in task?.taskFormData?.seconder">-->
|
|
||||||
<!-- <td>{{item.userName}}</td>-->
|
|
||||||
<!-- <td>{{item.loginName}}</td>-->
|
|
||||||
<!-- <td>{{item.sex}}</td>-->
|
|
||||||
<!-- <td>{{item.unitName}}</td>-->
|
|
||||||
<!-- <td>{{item.unionName}}</td>-->
|
|
||||||
<!-- <td>{{item.delegationName}}</td>-->
|
|
||||||
<!-- </tr>-->
|
|
||||||
<!-- </tbody>-->
|
|
||||||
<!-- </table>-->
|
|
||||||
</van-cell>
|
</van-cell>
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
|
|
||||||
@@ -108,11 +128,20 @@ const PROPOSAL_INFO = {
|
|||||||
</van-cell>
|
</van-cell>
|
||||||
<van-cell title="办理时间">{{ task.finishTime }}</van-cell>
|
<van-cell title="办理时间">{{ task.finishTime }}</van-cell>
|
||||||
<van-cell title="立案结果">
|
<van-cell title="立案结果">
|
||||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
<div style="display: flex;justify-content: center">
|
||||||
:value="task.ext.caseFilingResult"></dict-tag>
|
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||||
|
:value="task.ext.tf_caseFilingResult"></dict-tag>
|
||||||
|
|
||||||
|
<template v-if="task.ext.tf_caseFilingType">
|
||||||
|
(
|
||||||
|
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_TYPE"
|
||||||
|
:value="task.ext.tf_caseFilingType"></dict-tag>
|
||||||
|
)
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
</van-cell>
|
</van-cell>
|
||||||
<van-cell title="主办单位">{{ task.ext.tf_hostUnitName }}</van-cell>
|
<van-cell title="主办单位">{{ task.ext.tf_masterUnitName }}</van-cell>
|
||||||
<van-cell title="协办单位">{{ task?.ext?.tf_helpUnitNames?.join('、') }}</van-cell>
|
<van-cell title="协办单位">{{ task?.ext?.tf_slaveUnitNameStr }}</van-cell>
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
|
|
||||||
<van-cell-group :title="task.displayName" v-else>
|
<van-cell-group :title="task.displayName" v-else>
|
||||||
@@ -129,8 +158,8 @@ const PROPOSAL_INFO = {
|
|||||||
:value="task.ext.tf_feedback"></dict-tag>
|
:value="task.ext.tf_feedback"></dict-tag>
|
||||||
</van-cell>
|
</van-cell>
|
||||||
<van-cell title="办理结果" v-else>
|
<van-cell title="办理结果" v-else>
|
||||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||||
:value="task.ext.caseFilingResult"></dict-tag>
|
:value="task.ext.submitType"></dict-tag>
|
||||||
</van-cell>
|
</van-cell>
|
||||||
<van-cell title="办理意见" v-if="!task.ext.isFirstTaskNode" class="direction-column-cell">
|
<van-cell title="办理意见" v-if="!task.ext.isFirstTaskNode" class="direction-column-cell">
|
||||||
<div v-html="task.taskFormData.tf_opinion"></div>
|
<div v-html="task.taskFormData.tf_opinion"></div>
|
||||||
@@ -149,6 +178,7 @@ const PROPOSAL_INFO = {
|
|||||||
viewData: {},
|
viewData: {},
|
||||||
doneTasks: [],
|
doneTasks: [],
|
||||||
row: null,
|
row: null,
|
||||||
|
originalRow: null, // 用于保存原始数据,支持返回功能
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -175,10 +205,27 @@ const PROPOSAL_INFO = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// 查看提案
|
// 查看提案
|
||||||
openView(id) {
|
openView(row) {
|
||||||
this.$nextTick(() => {
|
// 如果传入的是并案对象,则打开新的详情页面
|
||||||
this.$refs.infoDialogRef.onOpen(id)
|
if (row && typeof row === 'object' && row.id) {
|
||||||
})
|
// 创建一个新的提案详情组件实例来显示并案详情
|
||||||
|
this.$nextTick(() => {
|
||||||
|
// 可以通过事件总线或者其他方式来打开新的详情页面
|
||||||
|
// 这里暂时使用简单的方式,直接在当前组件中显示
|
||||||
|
const currentRow = this.row;
|
||||||
|
this.row = row;
|
||||||
|
this.getInfo();
|
||||||
|
// 保存原来的数据,以便返回时恢复
|
||||||
|
this.originalRow = currentRow;
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 原有的逻辑,通过ID查看
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.infoDialogRef) {
|
||||||
|
this.$refs.infoDialogRef.onOpen(row)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取已办任务审批记录
|
// 获取已办任务审批记录
|
||||||
|
|||||||
+32
@@ -82,6 +82,38 @@ layout("/layouts/platform_h5.html"){
|
|||||||
maxlength="100"
|
maxlength="100"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
></van-field>
|
></van-field>
|
||||||
|
|
||||||
|
<template v-if="['SATISFIED','FAIRLY_SATISFIED'].includes(formData.tf_feedback)">
|
||||||
|
<van-field
|
||||||
|
v-model="formData.tf_address"
|
||||||
|
name="tf_address"
|
||||||
|
label="通讯地址"
|
||||||
|
placeholder="请输入通讯地址"
|
||||||
|
:rules="[{ required: true, message: '请输入通讯地址' }]"
|
||||||
|
required
|
||||||
|
show-word-limit
|
||||||
|
></van-field>
|
||||||
|
<!--联系电话-->
|
||||||
|
<van-field
|
||||||
|
v-model="formData.tf_phone"
|
||||||
|
name="tf_phone"
|
||||||
|
label="联系电话"
|
||||||
|
placeholder="请输入联系电话"
|
||||||
|
:rules="[{ required: true, message: '请输入联系电话' }]"
|
||||||
|
required
|
||||||
|
show-word-limit
|
||||||
|
></van-field>
|
||||||
|
<!--邮政编码-->
|
||||||
|
<van-field
|
||||||
|
v-model="formData.tf_postcode"
|
||||||
|
name="tf_postcode"
|
||||||
|
label="邮政编码"
|
||||||
|
placeholder="请输入邮政编码"
|
||||||
|
:rules="[{ required: true, message: '请输入邮政编码' }]"
|
||||||
|
required
|
||||||
|
show-word-limit
|
||||||
|
></van-field>
|
||||||
|
</template>
|
||||||
</van-form>
|
</van-form>
|
||||||
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
||||||
<van-button type="danger" block @click="$refs.proposalInfoRef.onClose()">取消</van-button>
|
<van-button type="danger" block @click="$refs.proposalInfoRef.onClose()">取消</van-button>
|
||||||
|
|||||||
+6
-4
@@ -25,7 +25,7 @@ layout("/layouts/platform_h5.html"){
|
|||||||
<table-column label="提案类别">{{row.typeName}}</table-column>
|
<table-column label="提案类别">{{row.typeName}}</table-column>
|
||||||
<table-column label="提案人">{{row.createUserName}}</table-column>
|
<table-column label="提案人">{{row.createUserName}}</table-column>
|
||||||
<table-column label="代表团">{{row.delegationName}}</table-column>
|
<table-column label="代表团">{{row.delegationName}}</table-column>
|
||||||
<table-column label="当前节点">{{row.curTaskName}}</table-column>
|
<table-column label="当前节点">{{row.taskName}}</table-column>
|
||||||
</template>
|
</template>
|
||||||
<template #actions="{index,row}">
|
<template #actions="{index,row}">
|
||||||
<div class="action-btn" @click="onView(row)">
|
<div class="action-btn" @click="onView(row)">
|
||||||
@@ -43,7 +43,7 @@ layout("/layouts/platform_h5.html"){
|
|||||||
<i class="fa fa-user-plus"></i>
|
<i class="fa fa-user-plus"></i>
|
||||||
<span>邀请附议人</span>
|
<span>邀请附议人</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(item)">
|
<div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(row)">
|
||||||
<i class="fa fa-undo"></i>
|
<i class="fa fa-undo"></i>
|
||||||
<span>撤回</span>
|
<span>撤回</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -128,8 +128,10 @@ layout("/layouts/platform_h5.html"){
|
|||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
|
||||||
this.$toast.success(resp.msg)
|
if(res.code===0){
|
||||||
this.doSearch()
|
this.$toast.success(res.msg)
|
||||||
|
this.doSearch()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
+15
-7
@@ -65,8 +65,8 @@ layout("/layouts/platform_h5.html"){
|
|||||||
></van-field>
|
></van-field>
|
||||||
</van-form>
|
</van-form>
|
||||||
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
||||||
<van-button type="danger" block @click="handleTaskAction(4)">退回答复</van-button>
|
<van-button type="danger" block @click="handleTaskAction('back')">退回答复</van-button>
|
||||||
<van-button type="primary" block @click="handleTaskAction(1)">同意答复</van-button>
|
<van-button type="primary" block @click="handleTaskAction('agree')">同意答复</van-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</proposal-info>
|
</proposal-info>
|
||||||
@@ -129,7 +129,9 @@ layout("/layouts/platform_h5.html"){
|
|||||||
this.$refs.proposalInfoRef.onOpen(row)
|
this.$refs.proposalInfoRef.onOpen(row)
|
||||||
this.formData = {
|
this.formData = {
|
||||||
processTaskId: row.taskId,
|
processTaskId: row.taskId,
|
||||||
taskName: row.curTaskName
|
taskKey: row.taskKey,
|
||||||
|
taskName: row.taskName,
|
||||||
|
proposalId: row.id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -140,11 +142,17 @@ layout("/layouts/platform_h5.html"){
|
|||||||
title: "提示",
|
title: "提示",
|
||||||
message: "您确定要提交吗?"
|
message: "您确定要提交吗?"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
||||||
|
const formData = {
|
||||||
|
...this.formData,
|
||||||
|
tf_approval: val
|
||||||
|
}
|
||||||
|
delete formData.taskKey
|
||||||
|
delete formData.taskName
|
||||||
|
|
||||||
|
|
||||||
this.$axios.post("/flow/common/executeTask", {
|
this.$axios.post("/flow/common/executeTask", {
|
||||||
data: JSON.stringify({
|
data: JSON.stringify(formData)
|
||||||
...this.formData,
|
|
||||||
submitType: val
|
|
||||||
})
|
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$refs.proposalInfoRef.onClose()
|
this.$refs.proposalInfoRef.onClose()
|
||||||
|
|||||||
+204
-2
@@ -3,7 +3,75 @@ layout("/layouts/platform_h5.html"){
|
|||||||
#-->
|
#-->
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.suggestion-unit-picker {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.picker-toolbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 16px;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.picker-cancel, .picker-confirm {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1989fa;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.picker-cancel {
|
||||||
|
color: #969799;
|
||||||
|
}
|
||||||
|
|
||||||
|
.picker-title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #323233;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container {
|
||||||
|
padding: 12px 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.options-container {
|
||||||
|
flex: 1;
|
||||||
|
overflow-y: auto;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.option-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.option-text {
|
||||||
|
margin-left: 12px;
|
||||||
|
flex: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #323233;
|
||||||
|
}
|
||||||
|
|
||||||
|
.van-checkbox {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.van-cell {
|
||||||
|
padding: 12px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.van-cell:active {
|
||||||
|
background-color: #f2f3f5;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
@@ -113,6 +181,7 @@ layout("/layouts/platform_h5.html"){
|
|||||||
placeholder="请选择提案方式"
|
placeholder="请选择提案方式"
|
||||||
@click="showSourcePicker = true"
|
@click="showSourcePicker = true"
|
||||||
:rules="[{ required: true, message: '请选择提案方式' }]"
|
:rules="[{ required: true, message: '请选择提案方式' }]"
|
||||||
|
required
|
||||||
></van-field>
|
></van-field>
|
||||||
<van-popup v-model="showSourcePicker" position="bottom">
|
<van-popup v-model="showSourcePicker" position="bottom">
|
||||||
<van-picker
|
<van-picker
|
||||||
@@ -132,6 +201,7 @@ layout("/layouts/platform_h5.html"){
|
|||||||
placeholder="请选择提案类别"
|
placeholder="请选择提案类别"
|
||||||
@click="showTypePicker = true"
|
@click="showTypePicker = true"
|
||||||
:rules="[{ required: true, message: '请选择提案类别' }]"
|
:rules="[{ required: true, message: '请选择提案类别' }]"
|
||||||
|
required
|
||||||
></van-field>
|
></van-field>
|
||||||
<van-popup v-model="showTypePicker" position="bottom">
|
<van-popup v-model="showTypePicker" position="bottom">
|
||||||
<van-picker
|
<van-picker
|
||||||
@@ -142,6 +212,61 @@ layout("/layouts/platform_h5.html"){
|
|||||||
></van-picker>
|
></van-picker>
|
||||||
</van-popup>
|
</van-popup>
|
||||||
|
|
||||||
|
<van-field
|
||||||
|
:value="formData.suggestUnits.length > 0 ? formData.suggestUnits.join(', ') : ''"
|
||||||
|
is-link
|
||||||
|
readonly
|
||||||
|
name="suggestUnits"
|
||||||
|
label="建议承办单位"
|
||||||
|
placeholder="请选择建议承办单位"
|
||||||
|
@click="showSuggestionUnitPicker = true"
|
||||||
|
:rules="[{ required: true, message: '请选择建议承办单位' }]"
|
||||||
|
required
|
||||||
|
></van-field>
|
||||||
|
<van-popup v-model="showSuggestionUnitPicker" position="bottom" :style="{ height: '70%' }">
|
||||||
|
<div class="suggestion-unit-picker">
|
||||||
|
<!-- 头部工具栏 -->
|
||||||
|
<div class="picker-toolbar">
|
||||||
|
<button class="picker-cancel" @click="onSuggestionUnitCancel">取消</button>
|
||||||
|
<div class="picker-title">选择建议承办单位</div>
|
||||||
|
<button class="picker-confirm" @click="onSuggestionUnitConfirm">确认</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 搜索框 -->
|
||||||
|
<div class="search-container">
|
||||||
|
<van-search
|
||||||
|
v-model="suggestionUnitSearchText"
|
||||||
|
placeholder="搜索承办单位"
|
||||||
|
@input="onSuggestionUnitSearch"
|
||||||
|
></van-search>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 选项列表 -->
|
||||||
|
<div class="options-container">
|
||||||
|
<van-checkbox-group v-model="selectedSuggestionUnits">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell
|
||||||
|
v-for="item in filteredSuggestionUnits"
|
||||||
|
:key="item.id"
|
||||||
|
clickable
|
||||||
|
@click="toggleSuggestionUnit(item)"
|
||||||
|
>
|
||||||
|
<template #title>
|
||||||
|
<div class="option-item">
|
||||||
|
<van-checkbox
|
||||||
|
:name="item.name"
|
||||||
|
:checked="selectedSuggestionUnits.includes(item.name)"
|
||||||
|
@click.stop
|
||||||
|
/>
|
||||||
|
<span class="option-text">{{ item.name }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
</van-checkbox-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</van-popup>
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
|
|
||||||
<van-cell-group title="提案内容" class="form-group">
|
<van-cell-group title="提案内容" class="form-group">
|
||||||
@@ -226,7 +351,9 @@ layout("/layouts/platform_h5.html"){
|
|||||||
bizId: GetQueryString("bizId"),
|
bizId: GetQueryString("bizId"),
|
||||||
taskId: GetQueryString("taskId"),
|
taskId: GetQueryString("taskId"),
|
||||||
|
|
||||||
formData: {},
|
formData: {
|
||||||
|
suggestUnits: []
|
||||||
|
},
|
||||||
sessionOptions: [],
|
sessionOptions: [],
|
||||||
sourceOptions: [],
|
sourceOptions: [],
|
||||||
delegationOptions: [],
|
delegationOptions: [],
|
||||||
@@ -245,7 +372,14 @@ layout("/layouts/platform_h5.html"){
|
|||||||
proposalConfig: {},
|
proposalConfig: {},
|
||||||
noticeDialogVisible: false,
|
noticeDialogVisible: false,
|
||||||
|
|
||||||
isWriteTime: true
|
isWriteTime: true,
|
||||||
|
|
||||||
|
// 建议承办单位
|
||||||
|
suggestUnitOptions: [],
|
||||||
|
showSuggestionUnitPicker: false,
|
||||||
|
selectedSuggestionUnits: [], // 当前选中的承办单位
|
||||||
|
suggestionUnitSearchText: '', // 搜索文本
|
||||||
|
filteredSuggestionUnits: [] // 过滤后的承办单位列表
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -272,6 +406,46 @@ layout("/layouts/platform_h5.html"){
|
|||||||
this.showTypePicker = false;
|
this.showTypePicker = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onSuggestionUnitConfirm() {
|
||||||
|
// 将选中的承办单位保存到表单数据中
|
||||||
|
this.formData.suggestUnits = [...this.selectedSuggestionUnits];
|
||||||
|
this.showSuggestionUnitPicker = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
onSuggestionUnitCancel() {
|
||||||
|
// 取消时恢复到之前的选择状态
|
||||||
|
this.selectedSuggestionUnits = [...this.formData.suggestUnits];
|
||||||
|
this.suggestionUnitSearchText = '';
|
||||||
|
this.showSuggestionUnitPicker = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 切换承办单位选择状态
|
||||||
|
toggleSuggestionUnit(item) {
|
||||||
|
const index = this.selectedSuggestionUnits.indexOf(item.name);
|
||||||
|
if (index > -1) {
|
||||||
|
this.selectedSuggestionUnits.splice(index, 1);
|
||||||
|
} else {
|
||||||
|
this.selectedSuggestionUnits.push(item.name);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 搜索承办单位
|
||||||
|
onSuggestionUnitSearch(value) {
|
||||||
|
this.suggestionUnitSearchText = value;
|
||||||
|
this.filterSuggestionUnits();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 过滤承办单位列表
|
||||||
|
filterSuggestionUnits() {
|
||||||
|
if (!this.suggestionUnitSearchText) {
|
||||||
|
this.filteredSuggestionUnits = this.suggestUnitOptions;
|
||||||
|
} else {
|
||||||
|
this.filteredSuggestionUnits = this.suggestUnitOptions.filter(item =>
|
||||||
|
item.name.toLowerCase().includes(this.suggestionUnitSearchText.toLowerCase())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onCommitteeConfirm(value) {
|
onCommitteeConfirm(value) {
|
||||||
this.formData.committeeId = value.value;
|
this.formData.committeeId = value.value;
|
||||||
this.$set(this.formData, 'committeeName', value.text);
|
this.$set(this.formData, 'committeeName', value.text);
|
||||||
@@ -445,6 +619,15 @@ layout("/layouts/platform_h5.html"){
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 建议承办单位
|
||||||
|
listSuggestUnit() {
|
||||||
|
this.$axios.post("/platform/proposal/common/listUnderTake").then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.suggestUnitOptions = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 查询开启的教代会
|
// 查询开启的教代会
|
||||||
listOpenSession(isModify = false) {
|
listOpenSession(isModify = false) {
|
||||||
this.$axios.post("/platform/proposal/common/listOpenSession").then(async (res) => {
|
this.$axios.post("/platform/proposal/common/listOpenSession").then(async (res) => {
|
||||||
@@ -546,8 +729,27 @@ layout("/layouts/platform_h5.html"){
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.init();
|
this.init();
|
||||||
|
this.listSuggestUnit();
|
||||||
this.listProposalType();
|
this.listProposalType();
|
||||||
this.getProposalConfig();
|
this.getProposalConfig();
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// 监听suggestUnitOptions变化,初始化过滤列表
|
||||||
|
suggestUnitOptions: {
|
||||||
|
handler(newVal) {
|
||||||
|
this.filteredSuggestionUnits = newVal;
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
// 监听选择器显示状态,重置搜索和选择状态
|
||||||
|
showSuggestionUnitPicker(newVal) {
|
||||||
|
if (newVal) {
|
||||||
|
// 打开选择器时,初始化选择状态
|
||||||
|
this.selectedSuggestionUnits = [...this.formData.suggestUnits];
|
||||||
|
this.suggestionUnitSearchText = '';
|
||||||
|
this.filterSuggestionUnits();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user