This commit is contained in:
=
2026-04-16 09:14:06 +08:00
parent bce4001d4c
commit 3b372a2425
22 changed files with 591 additions and 209 deletions
@@ -198,6 +198,12 @@ public class Sys_user extends BaseModel implements Serializable {
@DataCenterColumn(name = "教职工类别码", key = "JZGLBMC")
private String personType;
@Column
@Comment("用人方式码")
@ColDefine(type = ColType.VARCHAR, width = 30)
@DataCenterColumn(name = "用人方式码", key = "YRFSMC")
private String employmentType;
@Column
@Comment("编制类别码")
@ColDefine(type = ColType.VARCHAR, width = 30)
@@ -35,7 +35,7 @@ import java.util.List;
*/
@IocBean
@At("/platform/condolence/branchUnionApproval")
@Api("职工慰问分工会审核")
@Api("职工慰问分工会主席审核")
@Ok("json:full")
public class CondolenceBranchUnionApprovalController {
@@ -3,6 +3,8 @@ package com.budwk.app.zhgh.staffbenefit.condolence.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
@@ -11,17 +13,23 @@ import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.sms.SmsService;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.base.utils.SysOfficeTemplateUtil;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.vo.ProcessTaskVO;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffbenefit.condolence.model.Condolence;
import com.budwk.app.zhgh.staffbenefit.condolence.model.CondolenceType;
import com.budwk.app.zhgh.staffbenefit.condolence.service.CondolenceService;
import com.deepoove.poi.XWPFTemplate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
@@ -34,6 +42,20 @@ 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.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @ClassName CondolenceApplyController
* @Author JyuHsin
@@ -45,12 +67,19 @@ import org.nutz.mvc.annotation.Param;
@At("/platform/condolence/mine")
@Api("职工慰问我的")
@Ok("json:full")
@Slf4j
public class CondolenceMineController {
@Inject
private SysOfficeTemplateUtil sysOfficeTemplateUtil;
@Inject
private CondolenceService condolenceService;
@Inject
private FlowEngine flowEngine;
@Inject
private SmsService smsService;
@Inject
private Dao dao;
@At("/")
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/mine/index.html")
@@ -106,13 +135,13 @@ public class CondolenceMineController {
cnd.andEX("year(info.createTime)", "=", year);
cnd.andEX("info.type", "=", type);
cnd.and("info.createdBy", "=", SecurityUtil.getUserId());
cnd.groupBy("info.id");
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} else {
cnd.desc("info.createTime");
}
sql.setCondition(cnd);
Pagination<NutMap> pagination = condolenceService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
@@ -140,6 +169,126 @@ public class CondolenceMineController {
//smsService.send("20182040", "这是一条由智慧工会系统发出的测试消息。");
return Result.success(nutMap);
}
@Inject
private SmsService smsService;
@At
@Ok("void")
public void doExport(String id, HttpServletResponse response) throws Exception {
Condolence condolence = condolenceService.fetch(id);
if (condolence == null) {
throw new RuntimeException("慰问记录不存在");
}
Sql sql = Sqls.create("""
SELECT
info.*,
type.name as typeName,
type.uploadFileDesc,
ins.id AS instanceId
FROM
`condolence` info
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
LEFT JOIN condolence_type type ON type.id = info.type
WHERE
ins.state = 20 AND info.id = @id
""").setParam("id", id);
sql.setCallback(Sqls.callback.map());
dao.execute(sql);
NutMap info = (NutMap) sql.getResult();
HashMap<String, Object> docData = new HashMap<>();
docData.put("applyUserName", condolence.getApplyUserName());
docData.put("applyMobile", condolence.getApplyMobile());
docData.put("helpUserName", condolence.getHelpUserName());
docData.put("helpMobile", condolence.getHelpMobile());
docData.put("applyUnionName", condolence.getApplyUnionName());
docData.put("type", info.getString("typeName"));
docData.put("uploadFileDesc", info.getString("uploadFileDesc"));
//附件名称导出
if (condolence.getFiles() != null && !condolence.getFiles().isEmpty()) {
List<String> fileNames = condolence.getFiles().stream()
.map(file -> file.getStr("name"))
.filter(StrUtil::isNotBlank)
.collect(Collectors.toList());
docData.put("fileNames", String.join("\n", fileNames));
} else {
docData.put("fileNames", "");
}
docData.put("info", info);
docData.put("way", condolence.getWay());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime createTime = LocalDateTime.parse(condolence.getCreateTime(), formatter);
String fileName = "工会会员慰问报销审批单_" +
DateUtil.format(createTime, "yyyyMMdd") + ".docx";
List<ProcessTaskVO> doneTaskVos = new ArrayList<>();
List<ProcessTask> doneTaskList = flowEngine.processTaskService().getDoneTaskList(info.getLong("instanceId"), null);
for (ProcessTask doneTask : doneTaskList) {
ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId());
doneTaskVos.add(taskVO);
}
doneTaskVos.stream().filter(task -> "分工会主席审核".equals(task.getDisplayName()))
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
.ifPresent(v -> {
Dict taskFormData = v.getTaskFormData();
HashMap<String, Object> approval = new HashMap<>();
approval.put("date", DateUtil.format(v.getFinishTime(), "yyyy年MM月dd日"));
approval.put("user", taskFormData.getStr("tf_userName"));
if (StrUtil.isNotBlank(taskFormData.getStr("tf_sign"))) {
approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
}
approval.put("opinion", taskFormData.getStr("tf_opinion"));
docData.put("fgh", approval);
});
doneTaskVos.stream().filter(task -> "校工会会计审核".equals(task.getDisplayName()))
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
.ifPresent(v -> {
Dict taskFormData = v.getTaskFormData();
HashMap<String, Object> approval = new HashMap<>();
approval.put("date", DateUtil.format(v.getFinishTime(), "yyyy年MM月dd日"));
approval.put("user", taskFormData.getStr("tf_userName"));
if (StrUtil.isNotBlank(taskFormData.getStr("tf_sign"))) {
approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
}
approval.put("opinion", taskFormData.getStr("tf_opinion"));
docData.put("kj", approval);
});
doneTaskVos.stream().filter(task -> "工会主席审核".equals(task.getDisplayName()))
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
.ifPresent(v -> {
Dict taskFormData = v.getTaskFormData();
HashMap<String, Object> approval = new HashMap<>();
approval.put("date", DateUtil.format(v.getFinishTime(), "yyyy年MM月dd日"));
approval.put("user", taskFormData.getStr("tf_userName"));
if (StrUtil.isNotBlank(taskFormData.getStr("tf_sign"))) {
approval.put("sign", sysOfficeTemplateUtil.createPictureRenderData(taskFormData.getStr("tf_sign")));
}
approval.put("opinion", taskFormData.getStr("tf_opinion"));
docData.put("xgh", approval);
});
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.setHeader("content-disposition", "attachment;filename="
+ URLEncoder.encode(fileName, "UTF-8"));
try {
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("condolence"))
.render(docData)
.write(response.getOutputStream());
} catch (IOException e) {
log.error("导出慰问审批单失败,ID: {}, 错误信息: {}", id, e.getMessage());
throw e;
}
}
}
@@ -33,7 +33,7 @@ import java.util.List;
*/
@IocBean
@At("/platform/condolence/schoolPrincipalApproval")
@Api("职工慰问校工会预审")
@Api("职工慰问校工会会计审核")
@Ok("json:full")
public class CondolenceSchoolPrincipalApprovalController {
@@ -35,7 +35,7 @@ import java.util.List;
*/
@IocBean
@At("/platform/condolence/schoolUnionApproval")
@Api("职工慰问工会审核")
@Api("职工慰问工会主席审核")
@Ok("json:full")
public class CondolenceSchoolUnionApprovalController {
@@ -65,6 +65,11 @@ public class Condolence extends BaseModel {
@ColDefine(type = ColType.VARCHAR, width = 100)
private String applyUnitName;
@Column
@Comment("申请人手机号")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String applyMobile;
@Column
@Comment("补助人ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@@ -100,6 +105,11 @@ public class Condolence extends BaseModel {
@ColDefine(type = ColType.VARCHAR, width = 100)
private String helpUnitName;
@Column
@Comment("补助人手机号")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String helpMobile;
@Column
@Comment("类型")
@ColDefine(type = ColType.VARCHAR, width = 20)
@@ -99,6 +99,32 @@ public class WelfareListController {
return Result.success(welfareListService.notWelfareUserPageData(pageForm));
}
@At
@Aop(TransAop.READ_COMMITTED)
@ApiOperation("批量删除福利会员")
@SaCheckPermission("welfare.list.mange")
@SLog(tag = "福利名单管理", msg = "批量删除福利会员")
public Result batchDelete(@Param("ids") String[] ids, @Param("projectId") String projectId) {
if (ids == null || ids.length == 0) {
return Result.error("请选择要删除的数据");
}
List<WelfareList> welfareLists = welfareListService.query(Cnd.where("id", "in", ids));
List<String> userIds = welfareLists.stream()
.map(WelfareList::getUserId)
.filter(StrUtil::isNotBlank)
.collect(Collectors.toList());
welfareListService.delete(ids);
if (StrUtil.isNotBlank(projectId) && !userIds.isEmpty()) {
welfareListService.dao().clear(WelfareUserSelection.class,
Cnd.where("welfareId", "=", projectId).and("selectUserId", "in", userIds));
}
return Result.success("成功删除" + ids.length + "条数据");
}
@At
@SaCheckPermission("welfare.list.mange")
@ApiOperation("添加用户到福利名单")
@@ -145,11 +145,18 @@ module.exports = {
return true
},
afterRead(files) {
this.fileList.map((f) => {
if (f.file && f.file.name === files.file.name) {
f.status = "loading"
const filesArray = Array.isArray(files) ? files : [files]
filesArray.forEach(file => {
if (file && file.file) {
this.fileList.map((f) => {
if (f.file && f.file.name === file.file.name) {
f.status = "loading"
}
})
}
})
const uploadPromises = this.fileList
.filter((f) => f.status === "loading")
.map((f) => {
@@ -79,6 +79,7 @@ layout("/layouts/platform.html"){
<el-table-column prop="arrivalAtSchoolDate" label="来校时间" sortable width="120"></el-table-column>
<el-table-column prop="preparedBy" label="编制类别" sortable width="120"></el-table-column>
<el-table-column prop="personType" label="教职工类别" sortable width="120"></el-table-column>
<el-table-column prop="employmentType" label="用人方式" sortable width="120"></el-table-column>
<el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
<el-table-column prop="position" label="干部职务" sortable width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="education" label="学历" show-overflow-tooltip sortable width="120"></el-table-column>
@@ -9,69 +9,101 @@ layout("/layouts/platform.html"){
class="flow-task-form">
<el-descriptions :column="3" border>
<el-descriptions-item label="申请人姓名">{{formData.applyUserName}}</el-descriptions-item>
<el-descriptions-item label="申请人电话">
<el-form-item prop="applyMobile" label="申请人电话">
<el-input maxlength="20" v-model="formData.applyMobile" placeholder="系统自动填充,也可手动修改"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="申请人工号">{{formData.applyLoginName}}</el-descriptions-item>
<el-descriptions-item label="申请人单位">{{formData.applyUnitName}}</el-descriptions-item>
<el-descriptions-item label="申请人工会">{{formData.applyUnionName}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="慰问对象">
<el-form-item prop="helpUserId" label="慰问对象">
<el-select
style="width: 100%"
v-model="formData.helpUserId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查询"
:remote-method="createRemoteMethod(helpUserOptions)"
@change="helpUserChange">
style="width: 100%"
v-model="formData.helpUserId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查询"
:remote-method="createRemoteMethod(helpUserOptions)"
@change="helpUserChange">
<el-option
v-for="item in helpUserOptions"
:key="item.id"
:label="item.userName+''+item.loginName+''+''+item.unitName+''"
:value="item.id">
v-for="item in helpUserOptions"
:key="item.id"
:label="item.userName+''+item.loginName+''+''+item.unitName+''"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
<!-- <el-descriptions-item label="经办人">
<el-form-item prop="handlerUserId" label="经办人">
<el-select
style="width: 100%"
v-model="formData.handlerUserId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查询"
:remote-method="createRemoteMethod(handlerUserOptions)"
@change="handlerUserChange">
<el-option
v-for="item in handlerUserOptions"
:key="item.id"
:label="item.userName+''+item.loginName+''+''+item.unitName+''"
:value="item.id">
</el-option>
</el-select>
<el-descriptions-item label="慰问对象电话">
<el-form-item prop="helpMobile" label="慰问对象电话">
<el-input maxlength="20" v-model="formData.helpMobile" placeholder="选择慰问对象自动填充,也可手动输入"></el-input>
</el-form-item>
</el-descriptions-item>-->
<el-descriptions-item label="证明人">
<el-form-item prop="certifierUserId" label="证明人">
<el-select
style="width: 100%"
v-model="formData.certifierUserId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查询"
:remote-method="createRemoteMethod(certifierUserOptions)"
@change="certifierUserChange">
</el-descriptions-item>
<!-- <el-descriptions-item label="经办人">
<el-form-item prop="handlerUserId" label="经办人">
<el-select
style="width: 100%"
v-model="formData.handlerUserId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查询"
:remote-method="createRemoteMethod(handlerUserOptions)"
@change="handlerUserChange">
<el-option
v-for="item in handlerUserOptions"
:key="item.id"
:label="item.userName+''+item.loginName+''+''+item.unitName+''"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-descriptions-item>-->
<!-- <el-descriptions-item label="证明人">-->
<!-- <el-form-item prop="certifierUserId" label="证明人">-->
<!-- <el-select-->
<!-- style="width: 100%"-->
<!-- v-model="formData.certifierUserId"-->
<!-- filterable-->
<!-- clearable-->
<!-- remote-->
<!-- reserve-keyword-->
<!-- placeholder="请输入姓名或工号查询"-->
<!-- :remote-method="createRemoteMethod(certifierUserOptions)"-->
<!-- @change="certifierUserChange">-->
<!-- <el-option-->
<!-- v-for="item in certifierUserOptions"-->
<!-- :key="item.id"-->
<!-- :label="item.userName+''+item.loginName+''+''+item.unitName+''"-->
<!-- :value="item.id">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="收款人">
<el-form-item prop="payUserId" label="收款人">
<el-select style="width: 100%"
v-model="formData.payUserId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查询"
:remote-method="createRemoteMethod(payUserOptions)"
@change="payUserChange">
<el-option
v-for="item in certifierUserOptions"
:key="item.id"
:label="item.userName+''+item.loginName+''+''+item.unitName+''"
:value="item.id">
v-for="item in payUserOptions"
:key="item.id"
:label="item.userName+''+item.loginName+''+''+item.unitName+''"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
@@ -102,49 +134,49 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="慰问时间">
<el-form-item label="慰问时间" prop="occurTime">
<el-date-picker
clearable
style="width: 100%"
v-model="formData.occurTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择慰问时间">
clearable
style="width: 100%"
v-model="formData.occurTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择慰问时间">
</el-date-picker>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="收款账户">
<el-form-item prop="bankCardNumber" label="收款账户">
<el-input maxlength="20" v-model="formData.bankCardNumber" placeholder="请填写收款账户"
></el-input>
</el-form-item>
</el-descriptions-item>
<!-- <el-descriptions-item label="收款账户">-->
<!-- <el-form-item prop="bankCardNumber" label="收款账户">-->
<!-- <el-input maxlength="20" v-model="formData.bankCardNumber" placeholder="请填写收款账户"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="户名">
<el-form-item prop="bankUserName" label="户名">
<el-input maxlength="20" v-model="formData.bankUserName"
placeholder="请填写户名"
></el-input>
</el-form-item>
</el-descriptions-item>
<!-- <el-descriptions-item label="户名">-->
<!-- <el-form-item prop="bankUserName" label="户名">-->
<!-- <el-input maxlength="20" v-model="formData.bankUserName"-->
<!-- placeholder="请填写户名"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="开户行" >
<el-form-item prop="bankOfDeposit" label="开户行">
<el-input maxlength="20" v-model="formData.bankOfDeposit"
placeholder="请填写开户行"
></el-input>
</el-form-item>
</el-descriptions-item>
<!-- <el-descriptions-item label="开户行">-->
<!-- <el-form-item prop="bankOfDeposit" label="开户行">-->
<!-- <el-input maxlength="20" v-model="formData.bankOfDeposit"-->
<!-- placeholder="请填写开户行"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
<!-- </el-descriptions-item>-->
<template v-if="['2'].includes(formData.typeCode)">
<el-descriptions-item label="入院时间">
<el-form-item label="入院时间" prop="hospitalizationTime">
<el-date-picker
clearable
style="width: 100%"
v-model="formData.hospitalizationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择入院时间">
clearable
style="width: 100%"
v-model="formData.hospitalizationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择入院时间">
</el-date-picker>
</el-form-item>
</el-descriptions-item>
@@ -152,12 +184,12 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="出院时间">
<el-form-item label="出院时间" prop="leaveHospitalTime">
<el-date-picker
clearable
style="width: 100%"
v-model="formData.leaveHospitalTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出院时间">
clearable
style="width: 100%"
v-model="formData.leaveHospitalTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出院时间">
</el-date-picker>
</el-form-item>
</el-descriptions-item>
@@ -165,9 +197,9 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="当年第几次住院">
<el-form-item prop="thisYearHospitalizationNum" label="当年第几次住院">
<el-input-number style="width: 100%" v-model="formData.thisYearHospitalizationNum"
placeholder="请输入当年第几次住院"
:min="0"
:max="10000"></el-input-number>
placeholder="请输入当年第几次住院"
:min="0"
:max="10000"></el-input-number>
</el-form-item>
</el-descriptions-item>
</template>
@@ -191,11 +223,11 @@ layout("/layouts/platform.html"){
</template>
<el-form-item prop="files" label="附件">
<file-upload
:value.sync="formData.files"
:upload_number="5"
upload_result_category="array"
complete_result
upload_mode="drag"
:value.sync="formData.files"
:upload_number="5"
upload_result_category="array"
complete_result
upload_mode="drag"
></file-upload>
</el-form-item>
</el-descriptions-item>
@@ -225,29 +257,29 @@ layout("/layouts/platform.html"){
taskId: GetQueryString("taskId"),
formData: {},
formRules: {
helpUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
payUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
type: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
way: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
money: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
occurTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
child: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
hospital: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
hospitalHouseNum: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
hospitalHouseBedNum: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
hospitalBy: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
deadImmediateFamily: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
remark: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
files: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
signature: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
handlerUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
certifierUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
bankCardNumber: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
bankUserName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
bankOfDeposit: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
thisYearHospitalizationNum: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
leaveHospitalTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
hospitalizationTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
helpUserId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
payUserId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
type: [{required: true, message: "必填", trigger: ["change", "blur"]}],
way: [{required: true, message: "必填", trigger: ["change", "blur"]}],
money: [{required: true, message: "必填", trigger: ["change", "blur"]}],
occurTime: [{required: true, message: "必填", trigger: ["change", "blur"]}],
child: [{required: true, message: "必填", trigger: ["change", "blur"]}],
hospital: [{required: true, message: "必填", trigger: ["change", "blur"]}],
hospitalHouseNum: [{required: true, message: "必填", trigger: ["change", "blur"]}],
hospitalHouseBedNum: [{required: true, message: "必填", trigger: ["change", "blur"]}],
hospitalBy: [{required: true, message: "必填", trigger: ["change", "blur"]}],
deadImmediateFamily: [{required: true, message: "必填", trigger: ["change", "blur"]}],
remark: [{required: true, message: "必填", trigger: ["change", "blur"]}],
files: [{required: true, message: "必填", trigger: ["change", "blur"]}],
signature: [{required: true, message: "必填", trigger: ["change", "blur"]}],
handlerUserId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
certifierUserId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
bankCardNumber: [{required: true, message: "必填", trigger: ["change", "blur"]}],
bankUserName: [{required: true, message: "必填", trigger: ["change", "blur"]}],
bankOfDeposit: [{required: true, message: "必填", trigger: ["change", "blur"]}],
thisYearHospitalizationNum: [{required: true, message: "必填", trigger: ["change", "blur"]}],
leaveHospitalTime: [{required: true, message: "必填", trigger: ["change", "blur"]}],
hospitalizationTime: [{required: true, message: "必填", trigger: ["change", "blur"]}],
},
chooseType: {},
payUserOptions: [],
@@ -266,7 +298,7 @@ layout("/layouts/platform.html"){
},
selectQueryUser(keyword, options) {
options.length = 0
this.$axios.post("/platform/condolence/apply/listUser", { keyword: keyword }).then((res) => {
this.$axios.post("/platform/condolence/apply/listUser", {keyword: keyword}).then((res) => {
if (res.code === 0) {
options.push(...res.data)
}
@@ -275,19 +307,20 @@ layout("/layouts/platform.html"){
helpUserChange(val) {
const user = this.helpUserOptions.find(o => o.id === val)
if (user) {
const { userName, loginName, unitId, unitName, unionId, unionName } = user
const {userName, loginName, unitId, unitName, unionId, unionName, mobile} = user
this.$set(this.formData, "helpUserName", userName)
this.$set(this.formData, "helpLoginName", loginName)
this.$set(this.formData, "helpUnitId", unitId)
this.$set(this.formData, "helpUnitName", unitName)
this.$set(this.formData, "helpUnionId", unionId)
this.$set(this.formData, "helpUnionName", unionName)
this.$set(this.formData, "helpMobile", mobile)
}
},
handlerUserChange(val) {
const user = this.handlerUserOptions.find(o => o.id === val)
if (user) {
const { userName, loginName, unitId, unitName, unionId, unionName } = user
const {userName, loginName, unitId, unitName, unionId, unionName} = user
this.$set(this.formData, "handlerUserName", userName)
this.$set(this.formData, "handlerLoginName", loginName)
this.$set(this.formData, "handlerUnitId", unitId)
@@ -299,7 +332,7 @@ layout("/layouts/platform.html"){
certifierUserChange(val) {
const user = this.certifierUserOptions.find(o => o.id === val)
if (user) {
const { userName, loginName, unitId, unitName, unionId, unionName } = user
const {userName, loginName, unitId, unitName, unionId, unionName} = user
this.$set(this.formData, "certifierUserName", userName)
this.$set(this.formData, "certifierLoginName", loginName)
this.$set(this.formData, "certifierUnitId", unitId)
@@ -311,7 +344,7 @@ layout("/layouts/platform.html"){
payUserChange(val) {
const user = this.payUserOptions.find(o => o.id === val)
if (user) {
const { userName, loginName } = user
const {userName, loginName} = user
this.$set(this.formData, "payUserName", userName)
this.$set(this.formData, "payLoginName", loginName)
}
@@ -330,7 +363,7 @@ layout("/layouts/platform.html"){
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/platform/condolence/apply/save", { data: JSON.stringify(this.formData) }).then(res => {
this.$axios.post("/platform/condolence/apply/save", {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
commonUtil.pjaxPush("/platform/condolence/mine")
@@ -381,17 +414,18 @@ layout("/layouts/platform.html"){
},
init() {
if (this.bizId) {
this.$axios.post("/platform/condolence/mine/info", { id: this.bizId }).then((res) => {
this.$axios.post("/platform/condolence/mine/info", {id: this.bizId}).then((res) => {
if (res.code === 0) {
this.formData = res.data
this.selectQueryUser(this.formData.helpLoginName, this.helpUserOptions)
this.selectQueryUser(this.formData.payLoginName, this.payUserOptions)
this.selectQueryUser(this.formData.certifierLoginName, this.certifierUserOptions)
this.selectQueryUser(this.formData.handlerLoginName, this.handlerUserOptions)
this.chooseType = this.typeOptions.find(o => o.id === this.formData.type)
}
})
} else {
const { username, loginname, id, unit, union, mobile } = this.$store.state.user
const {username, loginname, id, unit, union, mobile} = this.$store.state.user
this.formData = {
applyUserName: username,
applyLoginName: loginname,
@@ -399,7 +433,8 @@ layout("/layouts/platform.html"){
applyUnitId: unit?.id,
applyUnitName: unit?.name,
applyUnionId: union?.id,
applyUnionName: union?.name
applyUnionName: union?.name,
applyMobile: mobile
}
}
},
@@ -81,6 +81,10 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<el-form-item label="电子签名" prop="tf_sign"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="formData.tf_sign"></pc-signature>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -7,18 +7,22 @@ const condolenceInfo = {
</div>
<el-descriptions :column="3" border>
<el-descriptions-item label="申请人姓名">{{ viewData.applyUserName }}</el-descriptions-item>
<el-descriptions-item label="申请人电话">{{ viewData.applyMobile }}</el-descriptions-item>
<el-descriptions-item label="申请人工号">{{ viewData.applyLoginName }}</el-descriptions-item>
<el-descriptions-item label="申请人单位">{{ viewData.applyUnitName }}</el-descriptions-item>
<el-descriptions-item label="申请人工会">{{ viewData.applyUnionName }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="慰问对象">{{ viewData.helpUserName }}</el-descriptions-item>
<el-descriptions-item label="慰问对象电话">{{ viewData.helpMobile }}</el-descriptions-item>
<!-- <el-descriptions-item label="经办人">{{ viewData.handlerUserName }}</el-descriptions-item>-->
<el-descriptions-item label="证明人">{{ viewData.certifierUserName }}</el-descriptions-item>
<!-- <el-descriptions-item label="证明人">{{ viewData.certifierUserName }}</el-descriptions-item>-->
<el-descriptions-item label="收款人">{{ viewData.payUserName }}</el-descriptions-item>
<el-descriptions-item label="慰问类型">{{ viewData.typeName }}</el-descriptions-item>
<el-descriptions-item label="慰问金额">{{ viewData.money }}</el-descriptions-item>
<el-descriptions-item label="慰问时间">{{ viewData.occurTime }}</el-descriptions-item>
<el-descriptions-item label="收款账户">{{ viewData.bankCardNumber }}</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.bankCardNumber }}</el-descriptions-item>-->
<!-- <el-descriptions-item label="户名">{{ viewData.bankUserName }}</el-descriptions-item>-->
<!-- <el-descriptions-item label="开户行">{{ viewData.bankOfDeposit }}</el-descriptions-item>-->
<template v-if="['2'].includes(viewData.typeCode)">
<el-descriptions-item label="入院时间">{{ viewData.hospitalizationTime }}</el-descriptions-item>
<el-descriptions-item label="出院时间">{{ viewData.leaveHospitalTime }}</el-descriptions-item>
@@ -68,6 +72,12 @@ const condolenceInfo = {
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{
task.taskFormData.opinion }}
</el-descriptions-item>
<el-descriptions-item label="签字" :span="3" v-if="!task.ext.isFirstTaskNode">
<el-image :src="task.taskFormData.tf_sign"
v-if="task.taskFormData.tf_sign"
class="signature-image"></el-image>
<span v-else>暂无签字</span>
</el-descriptions-item>
</el-descriptions>
</div>
</template>
@@ -62,6 +62,7 @@ layout("/layouts/platform.html"){
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)" size="mini" type="primary">编辑</el-button>
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="onRevoke(row)">撤回</el-button>
<el-button v-if="row.instanceState === 20" @click="doExport(row)" size="mini" type="primary">导出报销单</el-button>
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)" size="mini" type="danger">
删除
</el-button>
@@ -102,6 +103,9 @@ layout("/layouts/platform.html"){
}
},
methods: {
doExport(row) {
window.location.href = "/platform/condolence/mine/doExport?id=" + (row.id || '')
},
onAdd() {
commonUtil.pjaxPush('/platform/condolence/apply')
},
@@ -101,6 +101,10 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<el-form-item label="电子签名" prop="tf_sign"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="formData.tf_sign"></pc-signature>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -101,6 +101,10 @@ layout("/layouts/platform.html"){
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
<el-form-item label="电子签名" prop="tf_sign"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<pc-signature v-model="formData.tf_sign"></pc-signature>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
@@ -115,7 +115,7 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="provideTime" label="发放时间">
<el-form-item prop="provideTime" label="使用期限">
<el-date-picker
style="width: 100%"
v-model="formData.provideTime"
@@ -130,6 +130,9 @@ layout("/layouts/platform.html"){
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="福利名单">
<el-button @click="batchDelete" size="small" type="primary">
批量删除
</el-button>
<el-button :disabled="!pageForm.projectId" @click="openExport" icon="el-icon-download" size="small" type="primary">
导出名单
</el-button>
@@ -148,14 +151,17 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table
:data="tableData"
:size="tableSize"
@sort-change="pageOrder"
ref="tableRef"
row-key="id"
style="width: 100%"
v-loading="tableLoading"
:data="tableData"
:size="tableSize"
@sort-change="pageOrder"
@selection-change="handleSelectionChange"
ref="tableRef"
row-key="id"
style="width: 100%"
v-loading="tableLoading"
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column
@@ -278,6 +284,8 @@ layout("/layouts/platform.html"){
welfareListUserDrawer: false,
selectedRows: [],
showImportDialog: false
}
},
@@ -317,6 +325,35 @@ layout("/layouts/platform.html"){
}
})
},
batchDelete() {
if (!this.selectedRows || this.selectedRows.length === 0) {
this.$message.warning("请至少选择一条数据")
return
}
var that = this
this.$confirm("您确定要删除选中的 " + this.selectedRows.length + " 条数据吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
const ids = this.selectedRows.map(row => row.id)
const resp = await this.$axios.post("/platform/welfare/list/mange/batchDelete",
"ids=" + ids.join("&ids=") + "&projectId=" + this.pageForm.projectId,
{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
)
if (resp.code === 0) {
this.$message.success(resp.msg || "删除成功")
this.$refs.tableRef.clearSelection()
this.doSearch()
} else {
this.$message.error(resp.msg)
}
})
},
handleSelectionChange(val) {
this.selectedRows = val
},
getWelfareList() {
this.$axios.post("/platform/welfare/project/mange/getWelfareList", { year: this.pageForm.year }).then((res) => {
this.projectSelectOptions = res.data
@@ -20,6 +20,14 @@ layout("/layouts/platform_h5.html"){
<van-cell-group title="基本信息" class="form-section">
<van-field label="申请人姓名" :rules="[{ required: true }]" v-model="formData.applyUserName" readonly
required name="applyUserName"></van-field>
<van-field
v-model="formData.applyMobile"
label="申请人电话"
maxlength="20"
clearable
name="applyMobile"
placeholder="系统自动填充,也可手动修改"
></van-field>
<van-field label="申请人工号" :rules="[{ required: true }]" v-model="formData.applyLoginName" readonly
required name="applyLoginName"></van-field>
<van-field label="申请人单位" :rules="[{ required: true }]" v-model="formData.applyUnitName" readonly
@@ -62,6 +70,15 @@ layout("/layouts/platform_h5.html"){
<van-empty description="暂无数据" v-else></van-empty>
</van-action-sheet>
<van-field
v-model="formData.helpMobile"
label="慰问对象电话"
maxlength="20"
clearable
name="helpMobile"
placeholder="选择慰问对象自动填充,也可手动输入"
></van-field>
<!-- <van-field
v-model="formData.handlerUserName"
name="handlerUserName"
@@ -97,32 +114,67 @@ layout("/layouts/platform_h5.html"){
<van-empty description="暂无数据" v-else></van-empty>
</van-action-sheet>-->
<!-- <van-field-->
<!-- v-model="formData.certifierUserName"-->
<!-- name="certifierUserName"-->
<!-- label="证明人"-->
<!-- required-->
<!-- readonly-->
<!-- :rules="[{ required: true }]"-->
<!-- placeholder="请点击选择证明人"-->
<!-- @click="certifierUserSelectShow = true"-->
<!-- is-link-->
<!-- ></van-field>-->
<!-- <van-action-sheet v-model="certifierUserSelectShow" title="证明人" class="height100">-->
<!-- <van-search-->
<!-- v-model="searchKeyword"-->
<!-- :show-action="false"-->
<!-- :reverse-color="false"-->
<!-- input-align="left"-->
<!-- placeholder="请输入工号或姓名选择证明人"-->
<!-- @input="(val) => {userRemoteMethod(val, 'certifier')}"-->
<!-- @clear="(val) => {userRemoteMethod(val, 'certifier')}"-->
<!-- shape="round"-->
<!-- ></van-search>-->
<!-- <div class="van-action-sheet__content mt5" v-if="userOptions && userOptions.length>0">-->
<!-- <template>-->
<!-- <template v-for="item in userOptions">-->
<!-- <van-button native-type="button" @click="certifierUserChange(item)"-->
<!-- class="van-action-sheet__item van-hairline&#45;&#45;bottom">-->
<!-- <span class="van-action-sheet__name">{{item.userName}}{{item.loginName}}</span>-->
<!-- </van-button>-->
<!-- </template>-->
<!-- </template>-->
<!-- </div>-->
<!-- <van-empty description="暂无数据" v-else></van-empty>-->
<!-- </van-action-sheet>-->
<van-field
v-model="formData.certifierUserName"
name="certifierUserName"
label="证明人"
required
readonly
:rules="[{ required: true }]"
placeholder="请点击选择证明人"
@click="certifierUserSelectShow = true"
is-link
v-model="formData.payUserName"
name="payUserName"
label="收款人"
required
readonly
:rules="[{ required: true }]"
placeholder="请点击选择收款人"
@click="payUserSelectShow = true"
is-link
></van-field>
<van-action-sheet v-model="certifierUserSelectShow" title="证明人" class="height100">
<van-action-sheet v-model="payUserSelectShow" title="收款人" class="height100">
<van-search
v-model="searchKeyword"
:show-action="false"
:reverse-color="false"
input-align="left"
placeholder="请输入工号或姓名选择证明人"
@input="(val) => {userRemoteMethod(val, 'certifier')}"
@clear="(val) => {userRemoteMethod(val, 'certifier')}"
shape="round"
v-model="searchKeyword"
:show-action="false"
:reverse-color="false"
input-align="left"
placeholder="请输入工号或姓名选择收款人"
@input="(val) => {userRemoteMethod(val, 'pay')}"
@clear="(val) => {userRemoteMethod(val, 'pay')}"
shape="round"
></van-search>
<div class="van-action-sheet__content mt5" v-if="userOptions && userOptions.length>0">
<template>
<template v-for="item in userOptions">
<van-button native-type="button" @click="certifierUserChange(item)"
<van-button native-type="button" @click="payUserChange(item)"
class="van-action-sheet__item van-hairline--bottom">
<span class="van-action-sheet__name">{{item.userName}}{{item.loginName}}</span>
</van-button>
@@ -194,38 +246,38 @@ layout("/layouts/platform_h5.html"){
></van-datetime-picker>
</van-popup>
<van-field
v-model="formData.bankCardNumber"
label="收款账户"
maxlength="20"
clearable
name="bankCardNumber"
placeholder="请填写收款账户"
:rules="[{ required: true }]"
required
></van-field>
<!-- <van-field-->
<!-- v-model="formData.bankCardNumber"-->
<!-- label="收款账户"-->
<!-- maxlength="20"-->
<!-- clearable-->
<!-- name="bankCardNumber"-->
<!-- placeholder="请填写收款账户"-->
<!-- :rules="[{ required: true }]"-->
<!-- required-->
<!-- ></van-field>-->
<van-field
v-model="formData.bankUserName"
label="户名"
placeholder="请填写户名"
:rules="[{ required: true }]"
required
maxlength="20"
name="bankUserName"
></van-field>
<van-field
v-model="formData.bankOfDeposit"
label="开户行"
maxlength="30"
type="textarea"
rows="4"
autosize
placeholder="请填写开户行"
:rules="[{ required: true }]"
required
name="bankOfDeposit"
></van-field>
<!-- <van-field-->
<!-- v-model="formData.bankUserName"-->
<!-- label="户名"-->
<!-- placeholder="请填写户名"-->
<!-- :rules="[{ required: true }]"-->
<!-- required-->
<!-- maxlength="20"-->
<!-- name="bankUserName"-->
<!-- ></van-field>-->
<!-- <van-field-->
<!-- v-model="formData.bankOfDeposit"-->
<!-- label="开户行"-->
<!-- maxlength="30"-->
<!-- type="textarea"-->
<!-- rows="4"-->
<!-- autosize-->
<!-- placeholder="请填写开户行"-->
<!-- :rules="[{ required: true }]"-->
<!-- required-->
<!-- name="bankOfDeposit"-->
<!-- ></van-field>-->
<template v-if="['2'].includes(formData.typeCode)">
<van-field
@@ -437,6 +489,8 @@ layout("/layouts/platform_h5.html"){
this.certifierUserSelectShow = true
} else if (type === "handler") {
this.handlerUserSelectShow = true
}else if (type === "pay") {
this.payUserSelectShow = true
}
}
},
@@ -445,7 +499,7 @@ layout("/layouts/platform_h5.html"){
return res.data
},
helpUserChange(user) {
const { id, userName, loginName, unitId, unitName, unionId, unionName } = user
const { id, userName, loginName, unitId, unitName, unionId, unionName, mobile } = user
this.$set(this.formData, "helpUserId", id)
this.$set(this.formData, "helpUserName", userName)
this.$set(this.formData, "helpLoginName", loginName)
@@ -453,6 +507,7 @@ layout("/layouts/platform_h5.html"){
this.$set(this.formData, "helpUnitName", unitName)
this.$set(this.formData, "helpUnionId", unionId)
this.$set(this.formData, "helpUnionName", unionName)
this.$set(this.formData, "helpMobile", mobile)
this.helpUserSelectShow = false
this.searchKeyword = ""
this.userOptions = []
@@ -553,7 +608,8 @@ layout("/layouts/platform_h5.html"){
applyUnitId: unit?.id,
applyUnitName: unit?.name,
applyUnionId: union?.id,
applyUnionName: union?.name
applyUnionName: union?.name,
applyMobile: mobile
}
}
},
@@ -7,7 +7,7 @@ layout("/layouts/platform_h5.html"){
</style>
<div id="app">
<van-nav-bar title="分工会审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-nav-bar title="分工会主席审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
@@ -70,6 +70,13 @@ layout("/layouts/platform_h5.html"){
maxlength="100"
show-word-limit
></van-field>
<van-cell-group title="电子签名" class="form-section">
<van-field class="more-text" name="tf_sign" label="">
<template #input>
<h5-signature v-model="formData.tf_sign" slot="input"></h5-signature>
</template>
</van-field>
</van-cell-group>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click="handleTaskAction(6)">退回</van-button>
@@ -6,20 +6,23 @@ const condolenceInfo = {
<div class="detail-container">
<van-cell-group title="基本信息">
<van-cell title="申请人姓名">{{ viewData.applyUserName }}</van-cell>
<van-cell title="申请人电话">{{ viewData.applyMobile }}</van-cell>
<van-cell title="申请人工号">{{ viewData.applyLoginName }}</van-cell>
<van-cell title="申请人单位">{{ viewData.applyUnitName }}</van-cell>
<van-cell title="申请人工会">{{ viewData.applyUnionName }}</van-cell>
<van-cell title="慰问对象">{{ viewData.helpUserName }}</van-cell>
<van-cell title="慰问对象电话">{{ viewData.helpMobile }}</van-cell>
<!-- <van-cell title="经办人">{{ viewData.handlerUserName }}</van-cell>-->
<van-cell title="证明人">{{ viewData.certifierUserName }}</van-cell>
<!-- <van-cell title="证明人">{{ viewData.certifierUserName }}</van-cell>-->
<van-cell title="收款人">{{ viewData.payUserName }}</van-cell>
<van-cell title="慰问类型">{{ viewData.typeName }}</van-cell>
<van-cell title="慰问金额">{{ viewData.money }}</van-cell>
<van-cell title="慰问时间">{{ viewData.occurTime }}</van-cell>
<van-cell title="收款账户">{{ viewData.bankCardNumber }}</van-cell>
<van-cell title="户名">{{ viewData.bankUserName }}</van-cell>
<van-cell class="direction-column-cell" title="开户行">
{{ viewData.bankOfDeposit || '暂无' }}
</van-cell>
<!-- <van-cell title="收款账户">{{ viewData.bankCardNumber }}</van-cell>-->
<!-- <van-cell title="户名">{{ viewData.bankUserName }}</van-cell>-->
<!-- <van-cell class="direction-column-cell" title="开户行">-->
<!-- {{ viewData.bankOfDeposit || '暂无' }}-->
<!-- </van-cell>-->
<template v-if="['2'].includes(viewData.typeCode)">
<van-cell title="入院时间">{{ viewData.hospitalizationTime }}</van-cell>
<van-cell title="出院时间">{{ viewData.leaveHospitalTime }}</van-cell>
@@ -58,6 +61,11 @@ const condolenceInfo = {
<van-cell title="办理意见" v-if="!task.ext.isFirstTaskNode" class="direction-column-cell">
<div v-html="task.taskFormData.tf_opinion"></div>
</van-cell>
<van-cell class="direction-column-cell" title="签字"v-if="!task.ext.isFirstTaskNode">
<van-image :src="task.taskFormData.tf_sign" v-if="task.taskFormData.tf_sign"
class="signature-image"></van-image>
<span v-else>暂无签字</span>
</van-cell>
</van-cell-group>
</template>
</div>
@@ -7,7 +7,7 @@ layout("/layouts/platform_h5.html"){
</style>
<div id="app">
<van-nav-bar title="校工会预审" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-nav-bar title="校工会会计审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
@@ -70,6 +70,13 @@ layout("/layouts/platform_h5.html"){
maxlength="100"
show-word-limit
></van-field>
<van-cell-group title="电子签名" class="form-section">
<van-field class="more-text" name="tf_sign" label="">
<template #input>
<h5-signature v-model="formData.tf_sign" slot="input"></h5-signature>
</template>
</van-field>
</van-cell-group>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click="handleTaskAction(6)">退回</van-button>
@@ -7,7 +7,7 @@ layout("/layouts/platform_h5.html"){
</style>
<div id="app">
<van-nav-bar title="工会审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-nav-bar title="工会主席审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
@@ -70,6 +70,13 @@ layout("/layouts/platform_h5.html"){
maxlength="100"
show-word-limit
></van-field>
<van-cell-group title="电子签名" class="form-section">
<van-field class="more-text" name="tf_sign" label="">
<template #input>
<h5-signature v-model="formData.tf_sign" slot="input"></h5-signature>
</template>
</van-field>
</van-cell-group>
</van-form>
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
<van-button type="danger" block @click="handleTaskAction(6)">退回</van-button>