Compare commits
10
Commits
a88d6bdaf4
...
4f8f23e632
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f8f23e632 | ||
|
|
032507de66 | ||
|
|
facdb5f52a | ||
|
|
6088cbf4d2 | ||
|
|
6eb775da91 | ||
|
|
085c572a18 | ||
|
|
ac087e2f3f | ||
|
|
d1d3931c82 | ||
|
|
8132bb4f12 | ||
|
|
4892438b35 |
@@ -233,7 +233,7 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
userList.add(receiverBody);
|
||||
}
|
||||
|
||||
// 学校OA批量接口的公共流程字段在根节点,接收人差异字段仅放在userList中。
|
||||
// 学校OA批量接口的公共流程字段在根节点;服务端实际按文档示例中的 userlList(user 后多一个小写 l)读取接收人数组。
|
||||
JSONObject body = new JSONObject();
|
||||
body.set("flowTypeName", todoParam.getFlowTypeName());
|
||||
body.set("flowId", todoParam.getFlowId());
|
||||
@@ -244,7 +244,7 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService {
|
||||
body.set("creatorTime", todoParam.getCreatorTime());
|
||||
body.set("startPcPreviewUrl", todoParam.getStartPcPreviewUrl());
|
||||
body.set("startAppPreviewUrl", todoParam.getStartAppPreviewUrl());
|
||||
body.set("userList", userList);
|
||||
body.set("userlList", userList);
|
||||
|
||||
String batchInsertUrl = requireConfig("school-oa.todo.batch-insert-url");
|
||||
String responseBody = sendTodoRequest(batchInsertUrl, body, "学校OA批量待办创建失败", "学校OA批量待办创建异常");
|
||||
|
||||
+1
-1
@@ -153,7 +153,7 @@ public class DifficultHelpApplyController {
|
||||
cnd.and("member", "=", 1);
|
||||
cnd.and("id", "<>", SecurityUtil.getUserId());
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name())) {
|
||||
if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name(), RoleConstant.BRANCH_UNION_WY.name())) {
|
||||
cnd.and("unionid", "=", SecurityUtil.getUnionId());
|
||||
} else {
|
||||
cnd.and("id", "=", SecurityUtil.getUserId());
|
||||
|
||||
+2
@@ -102,6 +102,8 @@ public class DifficultHelpMineController {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageParam.buildSearch(cnd, "info.");
|
||||
cnd.and("info.createdBy", "=", SecurityUtil.getUserId());
|
||||
// 同一进行中任务存在多个参与人时,按困难补助申请主表 ID 去重,保证每条申请只展示一次。
|
||||
cnd.groupBy("info.id");
|
||||
if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) {
|
||||
cnd.desc("info.applyTime");
|
||||
} else {
|
||||
|
||||
+47
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.service.DifficultHelpCommonService;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.vo.DifficultHelpPageParam;
|
||||
@@ -21,6 +22,9 @@ import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
@@ -94,6 +98,49 @@ public class DifficultHelpReadingController {
|
||||
return Result.success().addData(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出当前阅览筛选范围内全部申请记录的受助人信息。
|
||||
*
|
||||
* @param pageParam 年度、受助人姓名或工号关键字、工会ID、单位ID及申请日期范围;分页参数不限制导出条数
|
||||
* @param response HTTP 下载响应,返回“困难补助人员信息.xlsx”的二进制内容,包含受助人、性别、申请模式、出生年月、所属工会、所属单位、手机号码和申请原因八列
|
||||
* @throws IOException Excel 生成失败时抛出
|
||||
*/
|
||||
@At
|
||||
@Ok("void")
|
||||
@ApiOperation("导出困难补助人员信息Excel")
|
||||
@SaCheckPermission("difficultHelp.reading")
|
||||
public void exportExcel(DifficultHelpPageParam pageParam, HttpServletResponse response) throws IOException {
|
||||
CommonDownloadUtil.download("困难补助人员信息.xlsx", difficultHelpCommonService.exportExcel(pageParam), response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出当前阅览条件下困难补助申请人上传的附件。
|
||||
*
|
||||
* @param pageParam 阅览页筛选条件,包含年度、受助人关键字、所属工会和所属单位
|
||||
* @param response HTTP 文件下载响应,返回名为“困难补助附件.zip”的 ZIP 二进制文件
|
||||
*/
|
||||
@At
|
||||
@Ok("void")
|
||||
@ApiOperation("导出困难补助附件压缩包")
|
||||
@SaCheckPermission("difficultHelp.reading")
|
||||
public void exportAttachmentZip(DifficultHelpPageParam pageParam, HttpServletResponse response) throws IOException {
|
||||
byte[] zipBytes = difficultHelpCommonService.exportAttachmentZip(pageParam);
|
||||
CommonDownloadUtil.download("困难补助附件.zip", zipBytes, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验当前筛选范围内是否存在可导出的困难补助附件。
|
||||
*
|
||||
* @param pageParam 阅览页筛选条件,包含年度、受助人关键字、所属工会和所属单位
|
||||
* @return 布尔值;true 表示存在分工会审核已同意且已上传附件的申请
|
||||
*/
|
||||
@At
|
||||
@ApiOperation("校验困难补助可导出附件")
|
||||
@SaCheckPermission("difficultHelp.reading")
|
||||
public Result hasExportableAttachment(DifficultHelpPageParam pageParam) {
|
||||
return Result.success(difficultHelpCommonService.hasExportableAttachment(pageParam));
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
|
||||
+29
@@ -2,6 +2,9 @@ package com.budwk.app.zhgh.staffbenefit.difficulthelp.service;
|
||||
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.models.DifficultHelpInfo;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.vo.DifficultHelpPageParam;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
@@ -11,4 +14,30 @@ import com.budwk.app.zhgh.staffbenefit.difficulthelp.models.DifficultHelpInfo;
|
||||
* @注释
|
||||
*/
|
||||
public interface DifficultHelpCommonService extends BaseService<DifficultHelpInfo> {
|
||||
|
||||
/**
|
||||
* 按阅览页筛选条件及当前用户数据权限导出全部申请记录的受助人信息。
|
||||
*
|
||||
* @param pageParam 年度、受助人姓名或工号关键字、工会ID、单位ID及申请日期范围,忽略分页参数
|
||||
* @return XLSX 二进制内容,依次包含受助人、性别、申请模式、出生年月、所属工会、所属单位、手机号码和申请原因
|
||||
* @throws IOException Excel 写入或资源关闭失败时抛出
|
||||
*/
|
||||
byte[] exportExcel(DifficultHelpPageParam pageParam) throws IOException;
|
||||
|
||||
/**
|
||||
* 按困难补助阅览页的查询条件生成分工会审核已同意申请的附件压缩包。
|
||||
*
|
||||
* @param pageParam 阅览页筛选参数,包含年度、工会、单位、受助人关键字及当前用户的数据范围
|
||||
* @return ZIP 二进制内容,内部按“姓名(工号)”目录归档该受助人的上传附件
|
||||
* @throws IOException 文件下载或 ZIP 写入失败时抛出
|
||||
*/
|
||||
byte[] exportAttachmentZip(DifficultHelpPageParam pageParam) throws IOException;
|
||||
|
||||
/**
|
||||
* 判断当前阅览筛选范围内是否存在可导出的困难补助附件。
|
||||
*
|
||||
* @param pageParam 阅览页筛选参数,包含年度、工会、单位、受助人关键字及当前用户的数据范围
|
||||
* @return 分工会审核已同意且已上传附件时返回 true,否则返回 false
|
||||
*/
|
||||
boolean hasExportableAttachment(DifficultHelpPageParam pageParam);
|
||||
}
|
||||
|
||||
+239
@@ -1,10 +1,37 @@
|
||||
package com.budwk.app.zhgh.staffbenefit.difficulthelp.service.impl;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.services.SysFileService;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.models.DifficultHelpInfo;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.service.DifficultHelpCommonService;
|
||||
import com.budwk.app.zhgh.staffbenefit.difficulthelp.vo.DifficultHelpPageParam;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
@@ -13,10 +40,222 @@ import org.nutz.ioc.loader.annotation.IocBean;
|
||||
* @Date 2025/7/31 9:16
|
||||
* @注释
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class DifficultHelpCommonServiceImpl extends BaseServiceImpl<DifficultHelpInfo> implements DifficultHelpCommonService {
|
||||
|
||||
/** 困难补助流程中“分工会审核”节点的实际 wf 节点编码。 */
|
||||
private static final String BRANCH_UNION_AUDIT_TASK_NAME = "9d11798e-a0e4-4ff5-939b-e6c5519e0eb6";
|
||||
|
||||
@Inject
|
||||
private SysFileService sysFileService;
|
||||
|
||||
public DifficultHelpCommonServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将阅览范围内每条申请的受助人信息转换为八列 Excel,保留申请时保存的人员信息。
|
||||
*
|
||||
* @param pageParam 阅览页筛选参数;年度、姓名或工号、工会、单位、日期范围及数据权限由 buildSearch 统一处理
|
||||
* @return XLSX 二进制内容;无记录时保留表头,缺失字段留空,出生年月显示为 yyyy-MM-dd
|
||||
* @throws IOException Excel 写入或资源关闭失败时抛出
|
||||
*/
|
||||
@Override
|
||||
public byte[] exportExcel(DifficultHelpPageParam pageParam) throws IOException {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageParam.buildSearch(cnd, "info.");
|
||||
cnd.desc("info.applyTime");
|
||||
// 列表按申请ID展示,直接查询业务表避免 wf 多任务关联产生重复行,不增加审核状态限制。
|
||||
Sql sql = Sqls.create("SELECT info.* FROM difficult_help_info info $condition");
|
||||
sql.setCondition(cnd);
|
||||
List<DifficultHelpInfo> helpInfoList = listEntity(sql);
|
||||
List<NutMap> rows = new ArrayList<>();
|
||||
for (DifficultHelpInfo helpInfo : helpInfoList) {
|
||||
NutMap row = new NutMap();
|
||||
String userName = StrUtil.nullToEmpty(helpInfo.getUserName());
|
||||
String loginName = StrUtil.nullToEmpty(helpInfo.getLoginName());
|
||||
row.put("recipient", StrUtil.isBlank(loginName) ? userName : userName + "(" + loginName + ")");
|
||||
row.put("sex", StrUtil.nullToEmpty(helpInfo.getSex()));
|
||||
// 申请模式1为本人申请、2为替他人申请;历史空值或未知值不误判为代申请。
|
||||
row.put("mode", "1".equals(helpInfo.getMode()) ? "本人申请" : "2".equals(helpInfo.getMode()) ? "替他人申请" : "");
|
||||
row.put("birthday", helpInfo.getBirthday() == null ? "" : DateUtil.format(helpInfo.getBirthday(), "yyyy-MM-dd"));
|
||||
row.put("unionName", StrUtil.nullToEmpty(helpInfo.getUnionName()));
|
||||
row.put("unitName", StrUtil.nullToEmpty(helpInfo.getUnitName()));
|
||||
// 手机号以文本写入,保留原始号码,避免 Excel 数值格式改变显示。
|
||||
row.put("mobile", StrUtil.nullToEmpty(helpInfo.getMobile()));
|
||||
row.put("reason", StrUtil.nullToEmpty(helpInfo.getReason()));
|
||||
rows.add(row);
|
||||
}
|
||||
|
||||
List<ExcelExportEntity> columns = new ArrayList<>();
|
||||
columns.add(new ExcelExportEntity("受助人(姓名工号)", "recipient", 25));
|
||||
columns.add(new ExcelExportEntity("性别", "sex", 10));
|
||||
columns.add(new ExcelExportEntity("申请模式", "mode", 18));
|
||||
columns.add(new ExcelExportEntity("出生年月", "birthday", 18));
|
||||
columns.add(new ExcelExportEntity("所属工会", "unionName", 30));
|
||||
columns.add(new ExcelExportEntity("所属单位", "unitName", 30));
|
||||
columns.add(new ExcelExportEntity("手机号码", "mobile", 20));
|
||||
ExcelExportEntity reasonColumn = new ExcelExportEntity("申请原因", "reason", 60);
|
||||
reasonColumn.setWrap(true);
|
||||
columns.add(reasonColumn);
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, columns, rows);
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||
workbook.write(outputStream);
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据阅览页筛选结果下载分工会审核已同意的附件,并以受助人姓名和工号作为 ZIP 内目录。
|
||||
* 无附件、文件记录不存在或文件下载失败的记录会跳过,避免单个异常附件影响其他附件导出。
|
||||
*
|
||||
* @param pageParam 阅览页筛选条件,数据权限由 {@link DifficultHelpPageParam#buildSearch(Cnd, String)} 统一处理
|
||||
* @return 困难补助附件 ZIP 的二进制内容
|
||||
* @throws IOException ZIP 输出流创建或关闭失败时抛出
|
||||
*/
|
||||
@Override
|
||||
public byte[] exportAttachmentZip(DifficultHelpPageParam pageParam) throws IOException {
|
||||
List<DifficultHelpInfo> helpInfoList = listBranchUnionApprovedHelpInfo(pageParam);
|
||||
|
||||
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
|
||||
Set<String> entryNames = new HashSet<>();
|
||||
for (DifficultHelpInfo helpInfo : helpInfoList) {
|
||||
if (helpInfo.getFiles() == null || helpInfo.getFiles().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
String folderName = buildFolderName(helpInfo);
|
||||
for (JSONObject file : helpInfo.getFiles()) {
|
||||
String fileId = getFileId(file);
|
||||
if (StrUtil.isBlank(fileId)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
byte[] fileBytes = sysFileService.download(fileId);
|
||||
String entryName = getUniqueEntryName(folderName, file.getStr("name"), entryNames);
|
||||
zipOutputStream.putNextEntry(new ZipEntry(entryName));
|
||||
zipOutputStream.write(fileBytes);
|
||||
zipOutputStream.closeEntry();
|
||||
} catch (IOException e) {
|
||||
// 单个附件异常时保留其余可用附件,便于管理员完成批量导出。
|
||||
log.warn("困难补助附件导出失败,申请记录ID:{},文件ID:{}", helpInfo.getId(), fileId, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
zipOutputStream.finish();
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前筛选范围内是否有分工会审核已同意且已上传的附件。
|
||||
*
|
||||
* @param pageParam 阅览页筛选条件,数据权限由 {@link DifficultHelpPageParam#buildSearch(Cnd, String)} 统一处理
|
||||
* @return 存在至少一条可导出附件时返回 true
|
||||
*/
|
||||
@Override
|
||||
public boolean hasExportableAttachment(DifficultHelpPageParam pageParam) {
|
||||
return listBranchUnionApprovedHelpInfo(pageParam).stream()
|
||||
.anyMatch(helpInfo -> helpInfo.getFiles() != null && !helpInfo.getFiles().isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前数据权限范围内,最新分工会审核任务已同意的困难补助申请。
|
||||
* 同一申请被退回后再次审核时,仅认可最新一次分工会审核结果,防止历史同意记录绕过当前流程状态。
|
||||
*
|
||||
* @param pageParam 阅览页筛选条件,包含年度、工会、单位和受助人关键字
|
||||
* @return 已通过分工会审核的困难补助申请列表
|
||||
*/
|
||||
private List<DifficultHelpInfo> listBranchUnionApprovedHelpInfo(DifficultHelpPageParam pageParam) {
|
||||
Sql approvedBusinessSql = Sqls.create("""
|
||||
SELECT ins.businessNo
|
||||
FROM wf_process_instance ins
|
||||
INNER JOIN wf_process_task branchTask ON branchTask.processInstanceId = ins.id
|
||||
WHERE branchTask.taskName = @branchUnionAuditTaskName
|
||||
AND branchTask.id = (
|
||||
SELECT MAX(latestBranchTask.id)
|
||||
FROM wf_process_task latestBranchTask
|
||||
WHERE latestBranchTask.processInstanceId = ins.id
|
||||
AND latestBranchTask.taskName = @branchUnionAuditTaskName
|
||||
)
|
||||
AND branchTask.taskState = @finishedTaskState
|
||||
AND JSON_UNQUOTE(JSON_EXTRACT(branchTask.variable, '$.submitType')) = @agreeSubmitType
|
||||
""");
|
||||
approvedBusinessSql.setParam("branchUnionAuditTaskName", BRANCH_UNION_AUDIT_TASK_NAME);
|
||||
approvedBusinessSql.setParam("finishedTaskState", ProcessTaskStateEnum.FINISHED.getCode());
|
||||
approvedBusinessSql.setParam("agreeSubmitType", String.valueOf(ProcessSubmitTypeEnum.AGREE.getCode()));
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageParam.buildSearch(cnd, "info.");
|
||||
cnd.and("info.id", "in", approvedBusinessSql);
|
||||
cnd.desc("info.applyTime");
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT info.*
|
||||
FROM difficult_help_info info
|
||||
$condition
|
||||
""");
|
||||
sql.setCondition(cnd);
|
||||
return listEntity(sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 file-upload 保存的响应数据中提取系统文件 ID。
|
||||
*
|
||||
* @param file 上传组件保存的附件信息,响应数据格式为 /platform/sys/file/download?id=文件ID
|
||||
* @return 系统文件 ID;附件信息不完整时返回空字符串
|
||||
*/
|
||||
private String getFileId(JSONObject file) {
|
||||
if (file == null || file.getJSONObject("response") == null) {
|
||||
return StrUtil.EMPTY;
|
||||
}
|
||||
String downloadUrl = file.getJSONObject("response").getStr("data");
|
||||
String fileId = StrUtil.subAfter(downloadUrl, "id=", true);
|
||||
return StrUtil.subBefore(fileId, "&", false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 为同一受助人的附件创建稳定且不含路径分隔符的目录名称。
|
||||
*
|
||||
* @param helpInfo 困难补助申请信息,包含受助人姓名和工号
|
||||
* @return ZIP 内的受助人目录名称
|
||||
*/
|
||||
private String buildFolderName(DifficultHelpInfo helpInfo) {
|
||||
String userName = sanitizeEntryName(StrUtil.blankToDefault(helpInfo.getUserName(), "未命名受助人"));
|
||||
String loginName = sanitizeEntryName(StrUtil.blankToDefault(helpInfo.getLoginName(), "无工号"));
|
||||
return userName + "(" + loginName + ")";
|
||||
}
|
||||
|
||||
/**
|
||||
* 为附件生成不重复的 ZIP 条目名称,防止同一受助人上传同名文件时被覆盖。
|
||||
*
|
||||
* @param folderName 受助人目录名称
|
||||
* @param fileName 原始附件名称
|
||||
* @param entryNames 已写入 ZIP 的条目名称集合
|
||||
* @return 可安全写入 ZIP 的唯一条目名称
|
||||
*/
|
||||
private String getUniqueEntryName(String folderName, String fileName, Set<String> entryNames) {
|
||||
String safeFileName = sanitizeEntryName(StrUtil.blankToDefault(fileName, "未命名附件"));
|
||||
String entryName = folderName + "/" + safeFileName;
|
||||
int duplicateIndex = 1;
|
||||
while (entryNames.contains(entryName)) {
|
||||
entryName = folderName + "/" + duplicateIndex + "_" + safeFileName;
|
||||
duplicateIndex++;
|
||||
}
|
||||
entryNames.add(entryName);
|
||||
return entryName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理 ZIP 条目中的路径和 Windows 非法字符,避免附件名称改变 ZIP 目录结构。
|
||||
*
|
||||
* @param entryName 用户姓名、工号或上传文件名
|
||||
* @return 可用于 ZIP 单级目录或文件名的安全字符串
|
||||
*/
|
||||
private String sanitizeEntryName(String entryName) {
|
||||
return entryName.replaceAll("[\\\\/:*?\"<>|\\r\\n]", "_");
|
||||
}
|
||||
}
|
||||
|
||||
+8
-2
@@ -106,6 +106,9 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询选择情况时,优先返回本次选择填写的手机号;未选择人员按福利手机号、系统手机号顺序回退。
|
||||
*/
|
||||
@Override
|
||||
public Pagination pageData(WelfareSelectionSituationPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
@@ -117,7 +120,7 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
|
||||
t1.welfareUnitName,
|
||||
t1.welfareUnitId,
|
||||
GROUP_CONCAT(DISTINCT t3.optionName ,'(',t2.selectNum,'份)') AS selectedOptions,
|
||||
GROUP_CONCAT(DISTINCT t2.mobile) AS mobile,
|
||||
COALESCE(NULLIF(GROUP_CONCAT(DISTINCT t2.mobile), ''), NULLIF(t4.welfareMobile, ''), t4.mobile) AS mobile,
|
||||
GROUP_CONCAT(DISTINCT t2.receiveAddress) AS receiveAddress,
|
||||
t4.username AS userName,
|
||||
t4.loginname AS loginName,
|
||||
@@ -859,6 +862,9 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
|
||||
.toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出选择情况时,联系电话取值规则与页面查询保持一致。
|
||||
*/
|
||||
@Override
|
||||
public void exportXlsx(WelfareSelectionSituationPageForm pageForm, HttpServletResponse response) {
|
||||
Sql sql = Sqls.create("""
|
||||
@@ -867,7 +873,7 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
|
||||
t1.welfareUnionName,
|
||||
t1.welfareUnitName,
|
||||
GROUP_CONCAT(DISTINCT t3.optionName,'(',t2.selectNum,'份)') AS selectedOptions,
|
||||
GROUP_CONCAT(DISTINCT t2.mobile) AS mobile,
|
||||
COALESCE(NULLIF(GROUP_CONCAT(DISTINCT t2.mobile), ''), NULLIF(t4.welfareMobile, ''), t4.mobile) AS mobile,
|
||||
GROUP_CONCAT(DISTINCT t2.userName) AS userName2,
|
||||
GROUP_CONCAT(DISTINCT t2.receiveAddress) AS receiveAddress,
|
||||
GROUP_CONCAT(DISTINCT CASE WHEN t2.createdBy IS NOT NULL AND t2.createdBy <> t2.selectUserId THEN CONCAT(t5.username, '代选') END) AS remark,
|
||||
|
||||
@@ -70,7 +70,7 @@ redis:
|
||||
#nodes=192.168.6.31:6377,192.168.6.31:6378,192.168.6.28:6377,192.168.6.28:6378,192.168.6.34:6377,192.168.6.34:6378
|
||||
|
||||
jdbc:
|
||||
url: jdbc:mysql://192.168.21.203/zhgh_ypi?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
url: jdbc:mysql://192.168.21.215/zhgh_ypi?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: root
|
||||
password: root
|
||||
validationQuery: select 1
|
||||
@@ -167,6 +167,7 @@ minio:
|
||||
school-oa:
|
||||
todo:
|
||||
insert-url: https://i.ypi.edu.cn/string_unified_handle_service/handle/insert
|
||||
batch-insert-url: https://i.ypi.edu.cn/string_unified_handle_service/handle/batch/insert
|
||||
update-url: https://i.ypi.edu.cn/string_unified_handle_service/handle/{uniqueId}/updateUniqueId
|
||||
update-handle-url: https://i.ypi.edu.cn/string_unified_handle_service/handle/{uniqueId}/updateHandle
|
||||
delete-url: https://i.ypi.edu.cn/string_unified_handle_service/handle/{uniqueId}/deleteUniqueId
|
||||
@@ -176,3 +177,13 @@ school-oa:
|
||||
domain-name: i.ypi.edu.cn
|
||||
intercept-domain-name:
|
||||
|
||||
school-message:
|
||||
token-url: https://i.ypi.edu.cn/string_unified_message_service/open/getToken
|
||||
send-url: https://i.ypi.edu.cn/string_unified_message_service/open/sendMessage
|
||||
result-url: https://i.ypi.edu.cn/string_unified_message_service/open/getMessageResult?messageId={messageId}
|
||||
domain-name: i.ypi.edu.cn
|
||||
app-id: MESSAGE173704180
|
||||
app-password: nLeWTN43sRLy5QHUg3+bgGLZoyoeegElFI5qhhE7sro=
|
||||
channel: app.qywx
|
||||
intercept-domain-name:
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
@change="modeChange"
|
||||
:disabled="formData.id" style="width: 100%">
|
||||
<el-option label="本人申请" value="1"></el-option>
|
||||
<el-option v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR')"
|
||||
<el-option v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR, BRANCH_UNION_WY')"
|
||||
label="替他人申请" value="2"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -89,12 +89,7 @@
|
||||
v-model="formData.mobile" maxlength="11"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号" :span="2">
|
||||
<el-form-item prop="idCard">
|
||||
<el-input maxlength="20" clearable placeholder="请填写身份证号"
|
||||
v-model="formData.idCard" maxlength="18"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<!-- 暂不采集身份证号及收款账户信息。 -->
|
||||
|
||||
|
||||
<el-descriptions-item label="本人月收入">
|
||||
@@ -108,12 +103,6 @@
|
||||
</el-input-number>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="收款账户" :span="2">
|
||||
<el-form-item prop="bankCardNum">
|
||||
<el-input maxlength="20" clearable placeholder="请填写华夏银行工资卡号"
|
||||
v-model="formData.bankCardNum"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="困难类型" :span="3">
|
||||
@@ -248,8 +237,6 @@
|
||||
unionName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
monthlyIncome: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
idCard: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
bankCardNum: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
officialCapacity: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
subsidyStandards: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
reason: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
@@ -276,17 +263,6 @@
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$message.warning(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$message.warning(bankRes.msg)
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.instanceId) {
|
||||
this.handleApply(val)
|
||||
} else {
|
||||
|
||||
@@ -3,7 +3,7 @@ layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<el-card shadow="never">
|
||||
<snaker-start slot="header" label="困难帮扶申请" define_key="KNBF"></snaker-start>
|
||||
<snaker-start slot="header" label="困难慰问申请" define_key="KNBF"></snaker-start>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-descriptions :column="3" border>
|
||||
<el-descriptions-item label="填写人姓名">
|
||||
@@ -20,7 +20,7 @@ layout("/layouts/platform.html"){
|
||||
<el-form-item prop="mode">
|
||||
<el-select v-model="formData.mode" placeholder="申请模式" @change="modeChange" style="width: 100%">
|
||||
<el-option label="本人申请" value="1"></el-option>
|
||||
<el-option v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR')"
|
||||
<el-option v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR, BRANCH_UNION_WY')"
|
||||
label="替他人申请" value="2"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -93,12 +93,7 @@ layout("/layouts/platform.html"){
|
||||
v-model="formData.mobile" maxlength="11"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号" :span="2">
|
||||
<el-form-item prop="idCard">
|
||||
<el-input maxlength="20" clearable placeholder="请填写身份证号"
|
||||
v-model="formData.idCard" maxlength="18"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<!-- 暂不采集身份证号、家庭住址及银行账户相关信息。 -->
|
||||
|
||||
<el-descriptions-item label="困难类型" >
|
||||
<el-form-item prop="subsidyStandards">
|
||||
@@ -109,36 +104,8 @@ layout("/layouts/platform.html"){
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址" :span="2">
|
||||
<el-form-item prop="homeAddress">
|
||||
<el-input clearable
|
||||
style="width: 100%"
|
||||
v-model="formData.homeAddress"
|
||||
placeholder="请填写家庭住址">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="收款账户" >
|
||||
<el-form-item prop="bankCardNum">
|
||||
<el-input maxlength="20" clearable placeholder="请填写收款卡号"
|
||||
v-model="formData.bankCardNum"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="户名" >
|
||||
<el-form-item prop="bankUserName">
|
||||
<el-input maxlength="20" clearable placeholder="请填写户名"
|
||||
v-model="formData.bankUserName"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="开户行" >
|
||||
<el-form-item prop="bankOfDeposit">
|
||||
<el-input maxlength="30" clearable placeholder="请填写开户行"
|
||||
v-model="formData.bankOfDeposit"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<!-- 占满当前行剩余列,确保申请原因从下一行开始。 -->
|
||||
<el-descriptions-item label=""></el-descriptions-item>
|
||||
|
||||
|
||||
|
||||
@@ -257,7 +224,6 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
subsidyStandards: [
|
||||
'患重大疾病',
|
||||
'低收入家庭',
|
||||
'因突发变故致困',
|
||||
'长期病休',
|
||||
'其他情况'
|
||||
@@ -269,12 +235,7 @@ layout("/layouts/platform.html"){
|
||||
userName: [{required: true, message: '请填写受补助人', trigger: ['blur', 'change']}],
|
||||
unitName: [{required: true, message: '请填写所属单位', trigger: ['blur', 'change']}],
|
||||
unionName: [{required: true, message: '请填写所属工会', trigger: ['blur', 'change']}],
|
||||
homeAddress: [{required: true, message: '请填写家庭住址', trigger: ['blur', 'change']}],
|
||||
mobile: [{required: true, message: '请填写手机号码', trigger: ['blur', 'change']}],
|
||||
idCard: [{required: true, message: '请填写身份证号', trigger: ['blur', 'change']}],
|
||||
bankCardNum: [{required: true, message: '请填写收款账户卡号', trigger: ['blur', 'change']}],
|
||||
bankUserName: [{required: true, message: '请填写户名', trigger: ['blur', 'change']}],
|
||||
bankOfDeposit: [{required: true, message: '请填写开户行', trigger: ['blur', 'change']}],
|
||||
officialCapacity: [{required: true, message: '请填写职务职称', trigger: ['blur', 'change']}],
|
||||
subsidyStandards: [{required: true, message: '请选择困难类型', trigger: ['blur', 'change']}],
|
||||
reason: [{required: true, message: '请填写申请原因', trigger: ['blur', 'change']}],
|
||||
@@ -311,17 +272,6 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$message.warning(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$message.warning(bankRes.msg)
|
||||
return;
|
||||
}
|
||||
|
||||
this.$axios.post('/platform/difficultHelp/apply/submit', {
|
||||
data: JSON.stringify(this.formData)
|
||||
}).then(res => {
|
||||
@@ -343,18 +293,6 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$message.warning(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$message.warning(bankRes.msg)
|
||||
return;
|
||||
}
|
||||
|
||||
this.$axios.post('/platform/difficultHelp/apply/submitAgain', {
|
||||
data: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
|
||||
@@ -19,16 +19,9 @@ const INFO = {
|
||||
<el-descriptions-item label="所属单位">{{ viewData.unitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="职务职称">{{ viewData.officialCapacity }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="手机号码">{{ viewData.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号" :span="2">{{ viewData.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="手机号码">{{ viewData.mobile }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="困难类型" >{{ viewData.subsidyStandards }}</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址" :span="2">{{ viewData.homeAddress }}</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="收款账户">{{ viewData.bankCardNum }}</el-descriptions-item>
|
||||
<el-descriptions-item label="户名">{{ viewData.bankUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="开户行">{{ viewData.bankOfDeposit }}</el-descriptions-item>
|
||||
<el-descriptions-item label="困难类型" >{{ viewData.subsidyStandards }}</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="申请原因" :span="3">{{ viewData.reason }}</el-descriptions-item>
|
||||
|
||||
@@ -42,7 +42,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="申请记录">
|
||||
<el-button size="small" type="primary" @click="onApply">帮扶申请</el-button>
|
||||
<el-button size="small" type="primary" @click="onApply">困难慰问申请</el-button>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
|
||||
@@ -42,6 +42,8 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="数据列表">
|
||||
<el-button type="primary" icon="el-icon-download" size="small" @click="exportExcel">导出Excel</el-button>
|
||||
<el-button type="primary" icon="el-icon-download" size="small" @click="exportAttachmentZip">导出附件Zip</el-button>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
@@ -113,6 +115,19 @@ layout("/layouts/platform.html"){
|
||||
'info': INFO
|
||||
},
|
||||
methods: {
|
||||
// 按当前筛选条件导出全部申请记录,下载及加载状态由公共下载方法统一处理。
|
||||
exportExcel() {
|
||||
this.$downLoad(loc() + "/exportExcel", this.pageForm)
|
||||
},
|
||||
exportAttachmentZip() {
|
||||
this.$axios.post(loc() + "/hasExportableAttachment", this.pageForm).then((res) => {
|
||||
if (res.code === 0 && res.data) {
|
||||
this.$downLoad(loc() + "/exportAttachmentZip", this.pageForm)
|
||||
} else {
|
||||
this.$message.warning("当前筛选范围内没有可导出的附件")
|
||||
}
|
||||
})
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.infoRef.onOpen(row)
|
||||
|
||||
@@ -13,10 +13,8 @@
|
||||
<el-descriptions-item label="职务职称">{{ viewData.officialCapacity }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="手机号码">{{ viewData.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号" :span="2">{{ viewData.idCard }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="月收入">{{ viewData.monthlyIncome }}</el-descriptions-item>
|
||||
<el-descriptions-item label="收款账户" :span="2">{{ viewData.bankCardNum }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="困难类型" :span="3">{{ viewData.subsidyStandards }}</el-descriptions-item>
|
||||
|
||||
|
||||
+2
-72
@@ -2,7 +2,7 @@
|
||||
layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<van-nav-bar title="帮扶申请" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-nav-bar title="困难慰问申请" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
|
||||
<div class="form-container">
|
||||
<van-form ref="formRef">
|
||||
@@ -129,26 +129,7 @@ layout("/layouts/platform_h5.html"){
|
||||
name="mobile"
|
||||
:rules="[{ required: true }]"
|
||||
></van-field>
|
||||
<van-field
|
||||
v-model="formData.idCard"
|
||||
label="身份证号"
|
||||
placeholder="请填写身份证号"
|
||||
maxlength="18"
|
||||
clearable
|
||||
required
|
||||
name="idCard"
|
||||
:rules="[{ required: true }]"
|
||||
></van-field>
|
||||
<van-field
|
||||
v-model="formData.homeAddress"
|
||||
label="家庭住址"
|
||||
type="textarea"
|
||||
placeholder="请填写家庭住址"
|
||||
maxlength="50"
|
||||
required
|
||||
name="homeAddress"
|
||||
:rules="[{ required: true }]"
|
||||
></van-field>
|
||||
<!-- 暂不采集身份证号、家庭住址及银行账户相关信息。 -->
|
||||
|
||||
|
||||
</van-cell-group>
|
||||
@@ -173,34 +154,6 @@ layout("/layouts/platform_h5.html"){
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
v-model="formData.bankCardNum"
|
||||
label="收款账户"
|
||||
maxlength="20"
|
||||
clearable
|
||||
name="bankCardNum"
|
||||
placeholder="请填写收款账户"
|
||||
:rules="[{ required: true }]"
|
||||
required
|
||||
></van-field>
|
||||
|
||||
<van-field
|
||||
v-model="formData.bankUserName"
|
||||
label="户名"
|
||||
placeholder="请填写户名"
|
||||
:rules="[{ required: true }]"
|
||||
required
|
||||
name="bankUserName"
|
||||
></van-field>
|
||||
<van-field
|
||||
v-model="formData.bankOfDeposit"
|
||||
label="开户行"
|
||||
placeholder="请填写开户行"
|
||||
:rules="[{ required: true }]"
|
||||
required
|
||||
name="bankOfDeposit"
|
||||
></van-field>
|
||||
|
||||
<van-field
|
||||
v-model="formData.reason"
|
||||
label="申请原因"
|
||||
@@ -295,7 +248,6 @@ layout("/layouts/platform_h5.html"){
|
||||
},
|
||||
subsidyStandards: [
|
||||
"患重大疾病",
|
||||
"低收入家庭",
|
||||
"因突发变故致困",
|
||||
"长期病休",
|
||||
"其他情况"
|
||||
@@ -357,17 +309,6 @@ layout("/layouts/platform_h5.html"){
|
||||
title: "提示",
|
||||
message: "您确定要提交吗?"
|
||||
}).then(() => {
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$toast(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$toast(bankRes.msg)
|
||||
return
|
||||
}
|
||||
|
||||
this.$axios.post("/platform/difficultHelp/apply/submit", {
|
||||
data: JSON.stringify(this.formData)
|
||||
}).then(res => {
|
||||
@@ -391,17 +332,6 @@ layout("/layouts/platform_h5.html"){
|
||||
title: "提示",
|
||||
message: "您确定要提交吗?"
|
||||
}).then(() => {
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$toast(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$toast(bankRes.msg)
|
||||
return
|
||||
}
|
||||
|
||||
this.$axios.post("/platform/difficultHelp/apply/submitAgain", {
|
||||
data: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<van-sticky>
|
||||
<van-nav-bar title="帮扶分工会审核" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-nav-bar title="困难慰问分工会审核" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-search
|
||||
v-model="pageForm.searchKeyword"
|
||||
placeholder="请输入工号或者姓名进行查询"
|
||||
|
||||
@@ -15,12 +15,7 @@ const INFO = {
|
||||
<van-cell title="所属单位">{{viewData.unitName}}</van-cell>
|
||||
<van-cell title="职务职称">{{viewData.officialCapacity}}</van-cell>
|
||||
|
||||
<van-cell title="手机号码">{{viewData.mobile}}</van-cell>
|
||||
<van-cell title="身份证号">{{viewData.idCard}}</van-cell>
|
||||
<van-cell title="家庭住址">{{viewData.homeAddress}}</van-cell>
|
||||
<van-cell title="收款账户">{{viewData.bankCardNum}}</van-cell>
|
||||
<van-cell title="户名">{{viewData.bankUserName}}</van-cell>
|
||||
<van-cell title="开户行">{{viewData.bankOfDeposit}}</van-cell>
|
||||
<van-cell title="手机号码">{{viewData.mobile}}</van-cell>
|
||||
|
||||
|
||||
<van-cell title="困难类型">{{viewData.subsidyStandards}}</van-cell>
|
||||
|
||||
@@ -3,7 +3,7 @@ layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<van-sticky>
|
||||
<van-nav-bar title="帮扶申请记录" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-nav-bar title="困难慰问申请记录" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-search
|
||||
v-model="pageForm.searchKeyword"
|
||||
placeholder="请输入工号或者姓名进行查询"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<van-sticky>
|
||||
<van-nav-bar title="帮扶校工会审核" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-nav-bar title="困难慰问校工会审核" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed></van-nav-bar>
|
||||
<van-search
|
||||
v-model="pageForm.searchKeyword"
|
||||
placeholder="请输入工号或者姓名进行查询"
|
||||
|
||||
Reference in New Issue
Block a user