疗休养

This commit is contained in:
Paidax
2025-06-11 16:45:59 +08:00
parent 8457290438
commit 77d9aef4c5
20 changed files with 1377 additions and 1267 deletions
@@ -2,8 +2,8 @@ package io.v.nutz.zhgh.lxy.controller;
import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.service.LxyBmService;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record; import org.nutz.dao.entity.Record;
@@ -40,7 +40,7 @@ public class LxyAgentController {
final String title = "【疗休养】"; final String title = "【疗休养】";
List<NutMap> result = new ArrayList<>(); List<NutMap> result = new ArrayList<>();
if (ShiroUtil.hasAnyRoles("sysadmin")) { if (ShiroUtil.hasAnyRoles("sysadmin")) {
result.add(new NutMap().setv("title", title).setv("url", FGHSH).setv("iconClass", vi.getIconByPath(FGHSH)).setv("label", "待基层工会审核").setv("number", getFghshCount())); result.add(new NutMap().setv("title", title).setv("url", FGHSH).setv("iconClass", vi.getIconByPath(FGHSH)).setv("label", "待院级工会审核").setv("number", getFghshCount()));
result.add(new NutMap().setv("title", title).setv("url", XGHSH).setv("iconClass", vi.getIconByPath(XGHSH)).setv("label", "待校工会审核").setv("number", getXghshCount().size())); result.add(new NutMap().setv("title", title).setv("url", XGHSH).setv("iconClass", vi.getIconByPath(XGHSH)).setv("label", "待校工会审核").setv("number", getXghshCount().size()));
} }
return result; return result;
@@ -40,30 +40,36 @@ public class LxyCommon {
Record record = lxyHdService.list(Sqls.create("SELECT * FROM `lxy_hd` WHERE id = @id").setParam("id", id)).get(0); Record record = lxyHdService.list(Sqls.create("SELECT * FROM `lxy_hd` WHERE id = @id").setParam("id", id)).get(0);
record.set("files", baseService.dao().query("sys_file", Cnd.where("reid", "=", id))); record.set("files", baseService.dao().query("sys_file", Cnd.where("reid", "=", id)));
record.set("mefp", lxyHdService.list(Sqls.create("SELECT fp.*,unionname,unioncode from lxy_mefp fp left join sys_union un on fp.ghid = un.id WHERE fp.hdid = @id ORDER BY un.unioncode").setParam("id", id))); record.set("mefp", lxyHdService.list(Sqls.create("SELECT fp.*,unionname,unioncode from lxy_mefp fp left join sys_union un on fp.ghid = un.id WHERE fp.hdid = @id ORDER BY un.unioncode").setParam("id", id)));
record.set("bm", lxyBmService.list(Sqls.create("SELECT\n" + record.set("bm", lxyBmService.list(Sqls.create("""
"\tu.id,\n" + SELECT
"\tu.loginname,\n" + u.id,
"\tu.username,\n" + u.loginname,
"\tu.sex,\n" + u.username,
"\tu.mobile,\n" + u.sex,
"\tTIMESTAMPDIFF(\n" + bm.mobile,
"\t\tYEAR,\n" + bm.nation,
"\t\tu.birthday,\n" + bm.zyhj,
"\tCURDATE()) age,\n" + bm.idcard,
"\tbm.bmzt \n" + bm.talent,
"FROM\n" + TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) age,
"\tsys_user u\n" + bm.bmzt
"\tLEFT JOIN lxy_bm bm ON u.id = bm.userid \n" + FROM
"WHERE\n" + sys_user u
"\tbm.hdid = @hdid \n" + LEFT JOIN lxy_bm bm ON u.id = bm.userid
"\tAND u.id IN (\n" + WHERE
"\tSELECT\n" + bm.hdid = @hdid
"\t\tbm.userid \n" + AND u.id IN (
"\tFROM\n" + SELECT
"\t\tlxy_bm bm \n" + bm.userid
"\tWHERE\n" + FROM
"\tbm.bmzt IN (3,5,6) AND\n" + lxy_bm bm
"\tbm.hdid =@hdid) ORDER BY bm.bmzt DESC").setParam("hdid", id))); WHERE
bm.bmzt IN (3, 5, 6)
AND bm.hdid = @hdid
)
ORDER BY
bm.bmzt DESC
""").setParam("hdid", id)));
return record; return record;
} }
@@ -4,13 +4,12 @@ import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.PageUtil; import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.model.Lxy_bm; import io.v.nutz.zhgh.lxy.model.Lxy_bm;
import io.v.nutz.zhgh.lxy.model.Lxy_grxx; import io.v.nutz.zhgh.lxy.model.Lxy_grxx;
import io.v.nutz.zhgh.lxy.service.LxyBmService; import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.zhgh.lxy.service.LxyGrxxService; import io.v.nutz.zhgh.lxy.service.LxyGrxxService;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -28,12 +27,10 @@ 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 org.nutz.mvc.annotation.Param;
import java.util.List;
/** /**
* @author: Aaron * @author: Aaron
* @create: 2020-09-01 16:08 * @create: 2020-09-01 16:08
* @description: 疗修养基层工会审核 * @description: 疗修养分工会审核
**/ **/
@At("/platform/zgfw/lxy/fghsh") @At("/platform/zgfw/lxy/fghsh")
@Ok("json") @Ok("json")
@@ -65,13 +62,13 @@ public class LxyFghShController {
@At @At
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.fghsh") @RequiresPermissions("zgfw.lxy.fghsh")
public Object pageData(@Param(value = "year",required = false) Integer year, public Object pageData(@Param(value = "year", required = false) Integer year,
@Param(value = "hdid",required = false) String hdid, @Param(value = "hdid", required = false) String hdid,
@Param(value = "searchName",required = false) String searchName, @Param(value = "searchName", required = false) String searchName,
@Param(value = "searchKeyword",required = false) String searchKeyword, @Param(value = "searchKeyword", required = false) String searchKeyword,
@Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName, @Param(value = "pageOrderName", required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) { @Param(value = "pageOrderBy", required = false) String pageOrderBy) {
Sql sql = Sqls.create("SELECT\n" + Sql sql = Sqls.create("SELECT\n" +
"\tunit.name unitname,\n" + "\tunit.name unitname,\n" +
"\tl.id,\n" + "\tl.id,\n" +
@@ -141,17 +138,24 @@ public class LxyFghShController {
@At @At
@ViReturn @ViReturn
@RequiresPermissions(value = {"zgfw.lxy.xghsh","zgfw.lxy.fghsh"},logical = Logical.OR) @RequiresPermissions(value = {"zgfw.lxy.xghsh", "zgfw.lxy.fghsh"}, logical = Logical.OR)
public Object getBmInfo(String id) { public Object getBmInfo(String id) {
Lxy_grxx grxx = lxyGrxxService.fetch(id); Lxy_grxx grxx = lxyGrxxService.fetch(id);
List<Sys_file> files = baseService.dao().query(Sys_file.class, Cnd.where("reid", "=", id)); // List<Sys_file> files = baseService.dao().query(Sys_file.class, Cnd.where("reid", "=", id));
grxx.setFiles(files); // grxx.setFiles(files);
Lxy_bm lxyBm = lxyBmService.dao().fetch(Lxy_bm.class, Cnd.where("hdid", "=", grxx.getHdid()) Lxy_bm lxyBm = lxyBmService.dao().fetch(Lxy_bm.class, Cnd.where("hdid", "=", grxx.getHdid())
.and("userid", "=", grxx.getUserid())); .and("userid", "=", grxx.getUserid()));
NutMap nutMap = Lang.obj2nutmap(grxx); NutMap nutMap = Lang.obj2nutmap(lxyBm);
nutMap.put("bmFiles", lxyBm.getFiles()); nutMap.put("username", grxx.getUsername());
nutMap.put("loginname", grxx.getLoginname());
nutMap.put("sex", grxx.getSex());
// nutMap.put("bmFiles", lxyBm.getFiles());
// nutMap.put("mobile", lxyBm.getMobile());
// nutMap.put("idcard", lxyBm.getIdcard());
// nutMap.put("zyhj", lxyBm.getZyhj());
// nutMap.put("bz", lxyBm.getBz());
return nutMap; return nutMap;
} }
@@ -1,36 +1,46 @@
package io.v.nutz.zhgh.lxy.controller; package io.v.nutz.zhgh.lxy.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.wizzer.framework.base.Result; import cn.wizzer.framework.base.Result;
import cn.wizzer.framework.page.Pagination;
import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.PageUtil; import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.base.utils.ViTool;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.model.Lxy_bm; import io.v.nutz.zhgh.lxy.model.Lxy_bm;
import io.v.nutz.zhgh.lxy.model.Lxy_grxx; import io.v.nutz.zhgh.lxy.model.Lxy_grxx;
import io.v.nutz.zhgh.lxy.service.LxyBmService; import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.zhgh.lxy.service.LxyGrxxService; import io.v.nutz.zhgh.lxy.service.LxyGrxxService;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import io.v.nutz.sys.services.SysUserService; import io.v.nutz.zhgh.lxy.template.LxyImportTemp;
import io.v.nutz.web.commons.utils.ShiroUtil; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
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.dao.util.cri.Static; import org.nutz.dao.util.cri.Static;
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.Lang; import org.nutz.lang.Lang;
import org.nutz.lang.Strings; import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap; import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
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 org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
import org.nutz.trans.Trans; import org.nutz.trans.Trans;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -45,14 +55,15 @@ import java.util.List;
@RequiresAuthentication @RequiresAuthentication
public class LxyGhbmController { public class LxyGhbmController {
@Inject
private LxyHdService lxyHdService;
@Inject @Inject
private Vi vi; private Vi vi;
@Inject @Inject
private Dao dao;
@Inject
private LxyBmService lxyBmService; private LxyBmService lxyBmService;
@Inject @Inject
private LxyHdService lxyHdService;
@Inject
private SysUserService sysUserService; private SysUserService sysUserService;
@Inject @Inject
private LxyGrxxService lxyGrxxService; private LxyGrxxService lxyGrxxService;
@@ -66,15 +77,15 @@ public class LxyGhbmController {
@At @At
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.ghbm") @RequiresPermissions("zgfw.lxy.ghbm")
public Object pageData(@Param(value = "year",required = false) Integer year, public Object pageData(@Param(value = "year", required = false) Integer year,
@Param(value = "hdid",required = false) String hdid, @Param(value = "hdid", required = false) String hdid,
@Param(value = "unionId",required = false)String unionId, @Param(value = "unionId", required = false) String unionId,
@Param(value = "searchName",required = false) String searchName, @Param(value = "searchName", required = false) String searchName,
@Param(value = "searchKeyword",required = false) String searchKeyword, @Param(value = "searchKeyword", required = false) String searchKeyword,
@Param(value = "pageNumber",required = false) int pageNumber, @Param(value = "pageNumber", required = false) int pageNumber,
@Param(value = "pageSize",required = false) int pageSize, @Param(value = "pageSize", required = false) int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName, @Param(value = "pageOrderName", required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) { @Param(value = "pageOrderBy", required = false) String pageOrderBy) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
mefp.*, mefp.*,
@@ -101,7 +112,7 @@ public class LxyGhbmController {
cnd.and(new Static("now() < hd.bmjzsj")); cnd.and(new Static("now() < hd.bmjzsj"));
cnd.and("mefp.hdid", "=", hdid); cnd.and("mefp.hdid", "=", hdid);
cnd.andEX("un.id","=",unionId); cnd.andEX("un.id", "=", unionId);
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "SchoolUnionAdmin"})) { if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "SchoolUnionAdmin"})) {
cnd.and(new Static("mefp.ghid in " + vi.getMangeUnionStr())); cnd.and(new Static("mefp.ghid in " + vi.getMangeUnionStr()));
//工会管理员查看分配名额大于0的 //工会管理员查看分配名额大于0的
@@ -131,14 +142,15 @@ public class LxyGhbmController {
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.ghbm") @RequiresPermissions("zgfw.lxy.ghbm")
public Object getNotApply(String unionid, String hdid, public Object getNotApply(String unionid, String hdid,
@Param(value = "query",required = false) String query, @Param(value = "query", required = false) String query,
@Param(value = "checks",required = false) String[] checks) { @Param(value = "checks", required = false) String[] checks) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
u.id, u.id,
u.sex, u.sex,
u.mobile, u.mobile,
u.unitid,
TIMESTAMPDIFF( TIMESTAMPDIFF(
YEAR, YEAR,
u.birthday, u.birthday,
@@ -146,7 +158,8 @@ public class LxyGhbmController {
u.username, u.username,
u.loginname, u.loginname,
unit.`name` unitname, unit.`name` unitname,
un.unionname un.unionname,
u.idcard
FROM FROM
sys_user u sys_user u
LEFT JOIN lxy_bm bm ON bm.userid = u.id LEFT JOIN lxy_bm bm ON bm.userid = u.id
@@ -178,20 +191,25 @@ public class LxyGhbmController {
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.ghbm") @RequiresPermissions("zgfw.lxy.ghbm")
public Object getHasApply(String unionid, String hdid, public Object getHasApply(String unionid, String hdid,
@Param(value = "query",required = false) String query, @Param(value = "query", required = false) String query,
@Param(value = "checks",required = false) String[] checks) { @Param(value = "checks", required = false) String[] checks) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
u.id, u.id,
u.loginname, u.loginname,
u.username, u.username,
u.unitname,
bm.bmzt, bm.bmzt,
TIMESTAMPDIFF( bm.age,
YEAR, bm.files,
u.birthday, bm.zyhj,
CURDATE()) age, bm.bz,
bm.files bm.mobile,
bm.idcard,
bm.unitid,
bm.unitname,
bm.unionname,
bm.nation,
bm.talent
FROM FROM
lxy_bm bm lxy_bm bm
LEFT JOIN `user` u ON u.id = bm.userid LEFT JOIN `user` u ON u.id = bm.userid
@@ -203,101 +221,25 @@ public class LxyGhbmController {
@At @At
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.ghbm") @RequiresPermissions("zgfw.lxy.ghbm")
public Object getUser(@Param(value = "sign",required = false) Integer sign,
@Param(value = "unionid",required = false) String unionid,
@Param(value = "hdid",required = false) String hdid,
@Param(value = "hdid",required = false) String query,
@Param(value = "checks",required = false) String[] checks,
@Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) {
Sql sql = Sqls.create("SELECT\n" +
"\tu.id,\n" +
"\tu.sex,u.mobile, TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) age,\n" +
"\tu.username,\n" +
"\tu.loginname,\n" +
"\tunit.`name` unitname,\n" +
"\tun.unionname \n" +
"FROM\n" +
"\tsys_user u\n" +
"\tLEFT JOIN lxy_bm bm ON bm.userid = u.id \n" +
"\tLEFT JOIN sys_unit unit ON u.unitid = unit.id\n" +
"\tLEFT JOIN ry_rygl_gr ry ON ry.userid = u.id\n" +
"\tLEFT JOIN sys_union un ON unit.unionid = un.id $condition");
Cnd cnd = Cnd.NEW();
cnd.and("unit.unionid", "=", unionid);
cnd.and("bm.hdid","=",hdid);
if (sign == 0) {
cnd.and(new Static("u.id not in (SELECT bm.userid from lxy_bm bm WHERE bm.hdid = '" + hdid + "')"));
}
if (checks.length > 0) {
for (String check : checks) {
if (check.equals("honer")) {
cnd.and(new Static("ry.zyxjsj is not null"));
}
if (check.equals("five")) {
cnd.and(new Static(" u.id not in (SELECT bm.userid from lxy_bm bm WHERE YEAR (NOW())- 5 < YEAR ( bm.bmsj ) )"));
}
}
}
if (Strings.isNotBlank(query)) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("u.username", query).orLike("u.loginname", query);
cnd.and(group);
}
if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderName)) {
cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy));
}
cnd.desc("bm.bmzt");
sql.setCondition(cnd);
Pagination pagination = lxyHdService.listPage(pageNumber, pageSize, sql);
return pagination;
}
@At
@ViReturn
@RequiresPermissions("zgfw.lxy.ghbm")
public Object getNumberData(String unionid, String hdid) {
Sql sql = Sqls.create("SELECT\n" +
"\tun.unionname,\n" +
"\tmefp.number sum,\n" +
"\t( SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid and bm.bmzt = 5) ybm,\n" +
"\t( SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid and bm.bmzt in (1,3)) dsh ,\n" +
"\t( SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid and bm.bmzt in (2,4)) btg ,\n" +
"\t(mefp.number - (SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid and bm.bmzt not in (2,4))) kxz\n" +
"FROM\n" +
"\tlxy_mefp mefp\n" +
"\tLEFT JOIN sys_union un ON mefp.ghid = un.id WHERE mefp.hdid=@hdid and mefp.ghid=@unionid").setParam("hdid", hdid).setParam("unionid", unionid);
Record record = lxyHdService.list(sql).get(0);
record.set("multiple", lxyBmService.list(Sqls.create("SELECT bm.userid id from lxy_bm bm WHERE bm.hdid = '" + hdid + "' AND bm.ghid = '" + unionid + "'")));
return record;
}
@At
@ViReturn
@RequiresAuthentication
@RequiresPermissions("zgfw.lxy.ghbm")
public Object bm(@Param("::data") List<NutMap> bmMapList, @Param("flag") boolean flag) { public Object bm(@Param("::data") List<NutMap> bmMapList, @Param("flag") boolean flag) {
Trans.exec(() -> { Trans.exec(() -> {
List<Lxy_bm> bmList = Lang.collection2list(bmMapList, Lxy_bm.class); List<Lxy_bm> bmList = Lang.collection2list(bmMapList, Lxy_bm.class);
if (Lang.isNotEmpty(bmList)) { if (Lang.isNotEmpty(bmList)) {
lxyBmService.clear(Cnd lxyBmService.clear(Cnd
.where("bmzt", "is", null) .NEW().and(Cnd.exps("bmzt", "is", null).or("bmzt", "=", 4))
.and("ghid", "=", bmList.get(0).getGhid()) .and("ghid", "=", bmList.get(0).getGhid())
.and("hdid", "=", bmList.get(0).getHdid())); .and("hdid", "=", bmList.get(0).getHdid()));
List<Lxy_grxx> grxxList = new ArrayList<>(); List<Lxy_grxx> grxxList = new ArrayList<>();
for (Lxy_bm bm : bmList) { for (Lxy_bm bm : bmList) {
lxyBmService.clear(Cnd
.where("userid","=",bm.getUserid())
.and("ghid", "=", bmList.get(0).getGhid())
.and("hdid", "=", bmList.get(0).getHdid()));
// NutMap nutMap = bmMapList.stream().filter(item -> item.getString("id").equals(bm.getId())).findFirst().orElse(NutMap.NEW());
Lxy_bm fetch = lxyBmService.fetch(Cnd.where("hdid", "=", bm.getGhid()).and("userid", "=", bm.getUserid()).and("bmzt", "=", 3)); Lxy_bm fetch = lxyBmService.fetch(Cnd.where("hdid", "=", bm.getGhid()).and("userid", "=", bm.getUserid()).and("bmzt", "=", 3));
if (Lang.isNotEmpty(fetch)) { if (Lang.isNotEmpty(fetch)) {
continue; continue;
@@ -305,6 +247,8 @@ public class LxyGhbmController {
bm.setBmzt(flag ? 3 : null); bm.setBmzt(flag ? 3 : null);
bm.setBmlx(1); bm.setBmlx(1);
bm.setBmsj(DateUtil.getDate()); bm.setBmsj(DateUtil.getDate());
// bm.setNation(nutMap.getString("nation"));
// bm.setTalent(nutMap.getString("talent"));
if (flag) { if (flag) {
Sql sql = Sqls.create("SELECT u.loginname,u.username,u.mobile,TIMESTAMPDIFF(YEAR,u.birthday,CURDATE()) age,u.sex,u.position,u.personType,u.nation,u.idcard FROM sys_user u WHERE u.id = '" + bm.getUserid() + "'"); Sql sql = Sqls.create("SELECT u.loginname,u.username,u.mobile,TIMESTAMPDIFF(YEAR,u.birthday,CURDATE()) age,u.sex,u.position,u.personType,u.nation,u.idcard FROM sys_user u WHERE u.id = '" + bm.getUserid() + "'");
@@ -313,13 +257,13 @@ public class LxyGhbmController {
Lxy_grxx lxy_grxx = new Lxy_grxx(); Lxy_grxx lxy_grxx = new Lxy_grxx();
lxy_grxx.setLoginname(item.getString("loginname")); lxy_grxx.setLoginname(item.getString("loginname"));
lxy_grxx.setUsername(item.getString("username")); lxy_grxx.setUsername(item.getString("username"));
lxy_grxx.setMobile(item.getString("mobile")); lxy_grxx.setMobile(bm.getMobile());
lxy_grxx.setAge(item.getString("age")); lxy_grxx.setAge(bm.getAge());
lxy_grxx.setSex(item.getString("sex")); lxy_grxx.setSex(item.getString("sex"));
lxy_grxx.setZw(item.getString("position")); lxy_grxx.setZw(item.getString("position"));
lxy_grxx.setRsbz(item.getString("personType")); lxy_grxx.setRsbz(item.getString("personType"));
lxy_grxx.setMz(item.getString("nation")); lxy_grxx.setMz(item.getString("nation"));
lxy_grxx.setIdcard(item.getString("idcard")); lxy_grxx.setIdcard(bm.getIdcard());
lxy_grxx.setChry(new ArrayList()); lxy_grxx.setChry(new ArrayList());
lxy_grxx.setUserid(bm.getUserid()); lxy_grxx.setUserid(bm.getUserid());
lxy_grxx.setHdid(bm.getHdid()); lxy_grxx.setHdid(bm.getHdid());
@@ -335,85 +279,76 @@ public class LxyGhbmController {
return null; return null;
} }
@At @At
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.ghbm") @RequiresPermissions("zgfw.lxy.ghbm")
public Object doEdit(@Param("::data") List<NutMap> bmMapList) { public Object findBm(String ghId, String hdId) {
if (Lang.isEmpty(bmMapList)) { Sql sql = Sqls.create("""
return Result.success(); SELECT
} l.id,
hd.id hdid,
u.id uid,
u.loginname,
u.username,
u.sex,
bm.age,
bm.mobile,
bm.idcard,
bm.unitname,
bm.bmzt,
bm.zyhj,
bm.nation,
bm.talent,
bm.bz,
bm.ghid
FROM
lxy_bm bm
LEFT JOIN lxy_hd hd ON hd.id = bm.hdid
LEFT JOIN sys_user u ON u.id = bm.userid
LEFT JOIN sys_unit unit ON u.unitid = unit.id
LEFT JOIN Lxy_grxx l ON l.loginname = u.loginname
$condition
""");
List<Lxy_bm> bmList = Lang.collection2list(bmMapList, Lxy_bm.class); Cnd cnd = Cnd.NEW();
lxyBmService.clear(Cnd.where("hdid", "=", bmList.get(0).getHdid()).and("ghid", "=", bmList.get(0).getGhid()).and("bmlx", "=", 1)); cnd.and("bm.bmzt","NOT IN",List.of(2,4,6));
lxyGrxxService.clear(Cnd.where("hdid", "=", bmList.get(0).getHdid()).and("ghid", "=", bmList.get(0).getGhid())); cnd.and("bm.hdid","=",hdId);
List<Lxy_grxx> grxxList = new ArrayList<>(); cnd.and("bm.ghid","=",ghId);
for (Lxy_bm bm : bmList) { cnd.groupBy("u.loginname");
Lxy_bm fetch = lxyBmService.fetch(Cnd.where("hdid", "=", bm.getGhid()).and("userid", "=", bm.getUserid()).and("bmzt", "=", 3)); cnd.desc("bm.bmzt");
if (Lang.isNotEmpty(fetch)) { sql.setCondition(cnd);
continue; return lxyBmService.list(sql);
}
bm.setBmzt(3);
bm.setBmlx(1);
bm.setBmsj(DateUtil.getDate());
Sql sql = Sqls.create("SELECT u.loginname,u.username,u.mobile,TIMESTAMPDIFF(YEAR,u.birthday,CURDATE()) age,u.sex,u.position,u.preparedBy,u.nation,u.idcard FROM sys_user u WHERE u.id = '" + bm.getUserid() + "'");
List<Record> records = sysUserService.list(sql);
records.forEach(item -> {
Lxy_grxx lxy_grxx = new Lxy_grxx();
lxy_grxx.setLoginname(item.getString("loginname"));
lxy_grxx.setUsername(item.getString("username"));
lxy_grxx.setMobile(item.getString("mobile"));
lxy_grxx.setAge(item.getString("age"));
lxy_grxx.setSex(item.getString("sex"));
lxy_grxx.setZw(item.getString("position"));
lxy_grxx.setRsbz(item.getString("preparedBy"));
lxy_grxx.setMz(item.getString("nation"));
lxy_grxx.setIdcard(item.getString("idcard"));
lxy_grxx.setChry(new ArrayList());
lxy_grxx.setUserid(bm.getUserid());
lxy_grxx.setHdid(bm.getHdid());
lxy_grxx.setGhid(bm.getGhid());
grxxList.add(lxy_grxx);
});
}
lxyBmService.insert(bmList);
lxyGrxxService.insert(grxxList);
return null;
} }
@At
@Ok("void")
@RequiresPermissions("zgfw.lxy.ghbm")
public void downloadImportTemp(HttpServletResponse response) {
try {
ViTool.excelResponse(response, "疗休养导入模版.xlsx");
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
Workbook sheets = ExcelExportUtil.exportExcel(exportParams, LxyImportTemp.class, new ArrayList<>());
ServletOutputStream outputStream = response.getOutputStream();
sheets.write(outputStream);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@At @At
@RequiresPermissions("zgfw.lxy.ghbm") @RequiresPermissions("zgfw.lxy.ghbm")
public Object findBm(String ghId, String hdId) { @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
try { public Result doImport(TempFile file, String projectId){
Sql sql = Sqls.create("SELECT\n" + String unionId = Vi.getUnionId();
"unit.`name` unitname,\n" + // 已经报名的人
"l.id,\n" + int count = dao.count(Lxy_bm.class, Cnd.where("hdid", "=", projectId).and("ghid", "=", unionId)
"hd.id hdid,\n" + .and("bmzt", "in", List.of("1", "2", "3", "4", "5", "6")));
"u.id uid,\n" + return null;
"u.loginname,\n" +
"u.username,\n" +
"u.sex,\n" +
"u.mobile,\n" +
"TIMESTAMPDIFF(YEAR,u.birthday,CURDATE()) age,\n" +
"bm.bmzt,\n" +
"bm.ghid\n" +
"FROM lxy_bm bm\n" +
"LEFT JOIN lxy_hd hd ON hd.id = bm.hdid\n" +
"LEFT JOIN sys_user u ON u.id = bm.userid\n" +
"LEFT JOIN sys_unit unit ON u.unitid = unit.id\n" +
"LEFT JOIN Lxy_grxx l ON l.loginname = u.loginname \n" +
"WHERE bm.bmzt NOT IN (2,4,6) AND bm.hdid = @hdid \n" +
"AND bm.ghid = @ghid \n" +
"GROUP BY u.loginname\n" +
"ORDER BY bm.bmzt DESC");
sql.setParam("hdid", hdId);
sql.setParam("ghid", ghId);
List<Record> list = lxyBmService.list(sql);
return Result.success().addData(list);
} catch (Exception e) {
return Result.error();
}
} }
} }
@@ -4,13 +4,13 @@ import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.PageUtil; import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.model.Lxy_grxx; import io.v.nutz.zhgh.lxy.model.Lxy_grxx;
import io.v.nutz.zhgh.lxy.service.LxyBmService; import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.zhgh.lxy.service.LxyGrxxService; import io.v.nutz.zhgh.lxy.service.LxyGrxxService;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -2,13 +2,13 @@ package io.v.nutz.zhgh.lxy.controller;
import cn.wizzer.framework.base.service.BaseService; import cn.wizzer.framework.base.service.BaseService;
import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.zhgh.lxy.model.Lxy_hd; import io.v.nutz.zhgh.lxy.model.Lxy_hd;
import io.v.nutz.zhgh.lxy.model.Lxy_mefp; import io.v.nutz.zhgh.lxy.model.Lxy_mefp;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import io.v.nutz.zhgh.lxy.service.LxyMefpService; import io.v.nutz.zhgh.lxy.service.LxyMefpService;
import io.v.nutz.sys.models.Sys_file;
import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.boot.starter.ftp.FtpService; import org.nutz.boot.starter.ftp.FtpService;
@@ -195,7 +195,7 @@ public class LxyHdCon {
FROM FROM
sys_union gh sys_union gh
LEFT JOIN `user` u ON u.unionid = gh.id LEFT JOIN `user` u ON u.unionid = gh.id
GROUP BY gh.id GROUP BY gh.id ORDER BY gh.unioncode asc
"""); """);
return lxyHdService.list(sql); return lxyHdService.list(sql);
} }
@@ -3,8 +3,10 @@ package io.v.nutz.zhgh.lxy.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.MsgApi;
import io.v.nutz.base.utils.OfficeTemplateUtil; import io.v.nutz.base.utils.OfficeTemplateUtil;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.zhgh.lxy.model.Lxy_bm;
import io.v.nutz.zhgh.lxy.service.LxyGrxxService; import io.v.nutz.zhgh.lxy.service.LxyGrxxService;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
@@ -53,6 +55,10 @@ public class LxyHdTjController {
@Inject @Inject
private OfficeTemplateUtil officeTemplateUtil; private OfficeTemplateUtil officeTemplateUtil;
@Inject
private MsgApi msgApi;
@At("") @At("")
@Ok("beetl:/platform/zgfw/lxy/HdTj.html") @Ok("beetl:/platform/zgfw/lxy/HdTj.html")
@RequiresPermissions("zgfw.lxy.hdtj") @RequiresPermissions("zgfw.lxy.hdtj")
@@ -62,9 +68,9 @@ public class LxyHdTjController {
@At @At
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.hdtj") @RequiresPermissions("zgfw.lxy.hdtj")
public Object pageData(@Param(value = "hdid",required = false) String hdid, public Object pageData(@Param(value = "hdid", required = false) String hdid,
@Param(value = "ghid",required = false) String ghid, @Param(value = "ghid", required = false) String ghid,
@Param(value = "searchKey",required = false) String searchKey, @Param(value = "searchKey", required = false) String searchKey,
@Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize) { @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize) {
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("SELECT gr.* ,u.unionname,u.unioncode,u.unitname unitname,u.unitcode FROM `lxy_grxx` gr \n" + Sql sql = Sqls.create("SELECT gr.* ,u.unionname,u.unioncode,u.unitname unitname,u.unitcode FROM `lxy_grxx` gr \n" +
@@ -96,13 +102,23 @@ public class LxyHdTjController {
@At @At
@Ok("void") @Ok("void")
@RequiresPermissions("zgfw.lxy.hdtj") @RequiresPermissions("zgfw.lxy.hdtj")
public void doExport(@Param(value = "hdid",required = false) String hdid, public void doExport(@Param(value = "hdid", required = false) String hdid,
@Param(value = "hdname",required = false) String hdname, @Param(value = "hdname", required = false) String hdname,
@Param(value = "ghid",required = false) String ghid, HttpServletResponse response) throws IOException { @Param(value = "ghid", required = false) String ghid, HttpServletResponse response) throws IOException {
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("SELECT gr.* ,u.unionname,u.unioncode,u.unitname unitname,u.unitcode FROM `lxy_grxx` gr \n" + Sql sql = Sqls.create("""
"LEFT JOIN lxy_bm bm ON bm.userid = gr.userid \n" + SELECT
"LEFT JOIN `user` u ON u.id=bm.userid $condition"); gr.*,
bm.unionname,
bm.unitname,
bm.zyhj,
bm.bz
FROM
`lxy_grxx` gr
LEFT JOIN lxy_bm bm ON bm.userid = gr.userid
LEFT JOIN `user` u ON u.id = bm.userid
$condition
""");
cnd.and(new Static("bm.bmzt = 5")); cnd.and(new Static("bm.bmzt = 5"));
cnd.and("gr.hdid", "=", hdid); cnd.and("gr.hdid", "=", hdid);
@@ -111,7 +127,7 @@ public class LxyHdTjController {
cnd.and("gr.ghid", "=", ghid); cnd.and("gr.ghid", "=", ghid);
} }
cnd.groupBy("bm.userid"); cnd.groupBy("bm.userid");
cnd.asc("u.unionname").asc("u.unitcode").asc("gr.age"); cnd.asc("bm.unionname").asc("bm.unitname").asc("gr.age");
sql.setCondition(cnd); sql.setCondition(cnd);
List<Record> list = lxyGrxxService.list(sql); List<Record> list = lxyGrxxService.list(sql);
int i = 1; int i = 1;
@@ -132,7 +148,7 @@ public class LxyHdTjController {
String fileName = "疗休养人员名单汇总表.xls"; String fileName = "疗休养人员名单汇总表.xls";
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1")); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
//TemplateExportParams params = new TemplateExportParams("templates/lxy/lxyrymd.xls"); // TemplateExportParams params = new TemplateExportParams("C:\\Users\\mayn\\Desktop\\lxyrymd.xls");
TemplateExportParams params = new TemplateExportParams(officeTemplateUtil.getPath("lxy_lxyrymd")); TemplateExportParams params = new TemplateExportParams(officeTemplateUtil.getPath("lxy_lxyrymd"));
// Workbook workbook = ExcelExportUtil.exportExcel(params, map); // Workbook workbook = ExcelExportUtil.exportExcel(params, map);
// workbook.write(response.getOutputStream()); // workbook.write(response.getOutputStream());
@@ -141,4 +157,20 @@ public class LxyHdTjController {
workbook.write(outputStream); workbook.write(outputStream);
outputStream.close(); outputStream.close();
} }
@At
@RequiresPermissions("zgfw.lxy.hdtj")
public Object openSendMessage(String hdid,
@Param("sendTypes") String[] sendTypes,
@Param("content") String content) {
List<Lxy_bm> grxxes = lxyGrxxService.dao().query(Lxy_bm.class, Cnd.where("hdid", "=", hdid).and("bmzt", "=", 5));
// List<String> loginnames = grxxes.stream().map(Lxy_bm::getLoginname).collect(Collectors.toList());
// loginnames.forEach(loginname -> {
// msgApi.sendMsg(content, "", "", "", "4", new ArrayList<>() {{
// add(NutMap.NEW().addv("userId", loginname));
// }});
// });
return null;
}
} }
@@ -5,11 +5,11 @@ import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.PageUtil; import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.model.Lxy_bm; import io.v.nutz.zhgh.lxy.model.Lxy_bm;
import io.v.nutz.zhgh.lxy.service.LxyBmService; import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
@@ -8,14 +8,15 @@ import io.v.nutz.base.service.BaseService;
import io.v.nutz.base.utils.PageUtil; import io.v.nutz.base.utils.PageUtil;
import io.v.nutz.base.utils.Roles; import io.v.nutz.base.utils.Roles;
import io.v.nutz.base.utils.Vi; import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.web.commons.utils.FileUtil;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.model.Lxy_grxx; import io.v.nutz.zhgh.lxy.model.Lxy_grxx;
import io.v.nutz.zhgh.lxy.service.LxyBmService; import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.zhgh.lxy.service.LxyHdService; import io.v.nutz.zhgh.lxy.service.LxyHdService;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.web.commons.utils.ShiroUtil;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.boot.starter.ftp.FtpService;
import org.nutz.dao.Chain; import org.nutz.dao.Chain;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
@@ -26,6 +27,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.json.Json; import org.nutz.json.Json;
import org.nutz.lang.Strings; import org.nutz.lang.Strings;
import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap; 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;
@@ -33,15 +35,14 @@ import org.nutz.mvc.annotation.Param;
import org.nutz.trans.Trans; import org.nutz.trans.Trans;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry; import java.util.Map;
import java.util.zip.ZipOutputStream; import java.util.stream.Collectors;
import static org.nutz.boot.starter.ftp.FtpStarter.*;
/** /**
* @Author: 1V * @Author: 1V
@@ -69,6 +70,9 @@ public class LxyXghshController {
@Inject @Inject
protected PropertiesProxy conf; protected PropertiesProxy conf;
@Inject
private FtpService ftpService;
@At("") @At("")
@Ok("beetl:/platform/zgfw/lxy/HdXghsh.html") @Ok("beetl:/platform/zgfw/lxy/HdXghsh.html")
@RequiresPermissions("zgfw.lxy.xghsh") @RequiresPermissions("zgfw.lxy.xghsh")
@@ -78,14 +82,14 @@ public class LxyXghshController {
@At @At
@ViReturn @ViReturn
@RequiresPermissions("zgfw.lxy.xghsh") @RequiresPermissions("zgfw.lxy.xghsh")
public Object pageData(@Param(value = "hdid",required = false) String hdid, public Object pageData(@Param(value = "hdid", required = false) String hdid,
@Param(value = "year",required = false) Integer year, @Param(value = "year", required = false) Integer year,
@Param(value = "isAudit",required = false) Integer isAudit, @Param(value = "isAudit", required = false) Integer isAudit,
@Param(value = "searchName",required = false) String searchName, @Param(value = "searchName", required = false) String searchName,
@Param(value = "unionId",required = false) String unionId, @Param(value = "unionId", required = false) String unionId,
@Param("pageNumber") int pageNumber,@Param("pageSize") int pageSize, @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize,
@Param(value = "pageOrderName",required = false) String pageOrderName, @Param(value = "pageOrderName", required = false) String pageOrderName,
@Param(value = "pageOrderBy",required = false) String pageOrderBy) { @Param(value = "pageOrderBy", required = false) String pageOrderBy) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
mefp.*, mefp.*,
@@ -94,6 +98,7 @@ public class LxyXghshController {
hd.*, hd.*,
(mefp.number - ( SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid AND bm.bmzt NOT IN (2,4)) ) remain, (mefp.number - ( SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid AND bm.bmzt NOT IN (2,4)) ) remain,
(SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid AND bm.bmzt = 3) dsh, (SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid AND bm.bmzt = 3) dsh,
(SELECT count( 1 ) FROM lxy_bm bm WHERE bm.hdid = mefp.hdid AND bm.ghid = mefp.ghid AND bm.bmzt = 5) ysh,
(SELECT GROUP_CONCAT(u.username) FROM lxy_bm bm LEFT JOIN `user` u on u.id=bm.userid WHERE bm.hdid=@hdid AND bm.ghid=mefp.ghid AND bm.bmzt != 4) username , (SELECT GROUP_CONCAT(u.username) FROM lxy_bm bm LEFT JOIN `user` u on u.id=bm.userid WHERE bm.hdid=@hdid AND bm.ghid=mefp.ghid AND bm.bmzt != 4) username ,
(SELECT GROUP_CONCAT(DISTINCT concat(u.username,'(',u.mobile,')') ) FROM `user` u LEFT JOIN sys_user_role ur ON u.id = ur.userId WHERE u.unionid = mefp.ghid AND ur.roleId = @roleId ) fglyname (SELECT GROUP_CONCAT(DISTINCT concat(u.username,'(',u.mobile,')') ) FROM `user` u LEFT JOIN sys_user_role ur ON u.id = ur.userId WHERE u.unionid = mefp.ghid AND ur.roleId = @roleId ) fglyname
FROM FROM
@@ -108,7 +113,7 @@ public class LxyXghshController {
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.andEX("mefp.ghid", "=", unionId); cnd.andEX("mefp.ghid", "=", unionId);
cnd.and(new Static("now()<hd.bmjzsj")); // cnd.and(new Static("now()<hd.bmjzsj"));
cnd.and("mefp.number", ">", 0); cnd.and("mefp.number", ">", 0);
cnd.and("mefp.hdid", "=", hdid); cnd.and("mefp.hdid", "=", hdid);
cnd.and(new Static("(select count(1) from lxy_bm lb where lb.hdid = '" + hdid + "' and lb.ghid = mefp.ghid AND lb.bmzt is NOT null) > 0 ")); cnd.and(new Static("(select count(1) from lxy_bm lb where lb.hdid = '" + hdid + "' and lb.ghid = mefp.ghid AND lb.bmzt is NOT null) > 0 "));
@@ -148,40 +153,46 @@ public class LxyXghshController {
* @return * @return
*/ */
@At @At
@ViReturn
@RequiresPermissions("zgfw.lxy.xghsh") @RequiresPermissions("zgfw.lxy.xghsh")
public Object findBm(String ghId, String hdId, Integer pageNumber, Integer pageSize) { public Object findBm(String ghId, String hdId, Integer pageNumber, Integer pageSize) {
try { Sql sql = Sqls.create("""
Sql sql = Sqls.create(""" SELECT
SELECT l.id,
l.id, hd.id hdid,
hd.id hdid, u.id uid,
u.id uid, u.loginname,
u.loginname, u.username,
u.username, u.sex,
u.unitname, bm.age,
u.unionname, bm.mobile,
u.sex, bm.idcard,
u.mobile, bm.unitname,
TIMESTAMPDIFF(YEAR,u.birthday,CURDATE()) age, bm.bmzt,
bm.bmzt, bm.zyhj,
bm.ghid bm.nation,
FROM lxy_bm bm bm.talent,
LEFT JOIN lxy_hd hd ON hd.id = bm.hdid bm.bz,
LEFT JOIN Lxy_grxx l ON l.userid = bm.userid bm.ghid
LEFT JOIN `user` u ON u.id = bm.userid FROM
WHERE bm.bmzt IN (3,4,5) AND bm.hdid = @hdid lxy_bm bm
AND bm.ghid = @ghid LEFT JOIN lxy_hd hd ON hd.id = bm.hdid
GROUP BY u.username LEFT JOIN sys_user u ON u.id = bm.userid
ORDER BY bm.bmzt ASC LEFT JOIN sys_unit unit ON u.unitid = unit.id
"""); LEFT JOIN Lxy_grxx l ON l.loginname = u.loginname
sql.setParam("hdid", hdId); $condition
sql.setParam("ghid", ghId); """);
// List<Record> list = lxyBmService.list(sql);
Pagination pagination = lxyBmService.listPage(pageNumber, pageSize, sql); Cnd cnd = Cnd.NEW();
return Result.success().addData(pagination); cnd.and("bm.bmzt", "NOT IN", List.of(2, 4, 6));
} catch (Exception e) { cnd.and("bm.hdid", "=", hdId);
return Result.error(); cnd.and("bm.ghid", "=", ghId);
} cnd.groupBy("u.loginname");
cnd.desc("bm.bmzt");
sql.setCondition(cnd);
Pagination pagination = lxyBmService.listPage(pageNumber, pageSize, sql);
return Result.success().addData(pagination);
} }
@At @At
@@ -226,16 +237,12 @@ public class LxyXghshController {
} }
@At @At
@RequiresAuthentication
@RequiresPermissions("zgfw.lxy.xghsh") @RequiresPermissions("zgfw.lxy.xghsh")
public void downLoadAll(@Param(value = "year",required = false) Integer year, public void downLoadAll(@Param(value = "year", required = false) Integer year,
@Param(value = "hdid",required = false) String hdid, @Param(value = "hdid", required = false) String hdid,
@Param(value = "unionId",required = false) String unionId, @Param(value = "unionId", required = false) String unionId,
@Param(value = "isAudit",required = false) Integer isAudit, HttpServletResponse response) throws IOException { @Param(value = "isAudit", required = false) Integer isAudit, HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream");
response.setHeader("content-disposition", "attachment;filename="
+ URLEncoder.encode("报名人员材料.zip", "UTF-8"));
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
@@ -262,45 +269,70 @@ public class LxyXghshController {
sql.setCondition(cnd); sql.setCondition(cnd);
List<NutMap> list = baseService.listMap(sql); List<NutMap> list = baseService.listMap(sql);
//连接ftp
FTPClient ftpClient = new FTPClient();
ftpClient.connect(conf.get(PROP_SERVER_HOST, ""), conf.getInt(PROP_SERVER_PORT, 21));
ftpClient.login(conf.get(PROP_SERVER_USERNAME, ""), conf.get(PROP_SERVER_PASSWORD, ""));
ftpClient.enterLocalPassiveMode();
try { try {
ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
list.forEach(item -> { response.reset();
if (StrUtil.isNotBlank(item.getString("files"))) { response.setContentType("application/x-msdownload;charset=utf-8");
List<Sys_file> fileList = Json.fromJsonAsList(Sys_file.class, item.getString("files"));
try { /**
for (int i = 0; i < fileList.size(); i++) { * 创建临时文件夹
Sys_file file = fileList.get(0); */
String fileName = item.getString("username"); String tmpPath = "tmp/" + R.UU32();
if (fileList.size() > 1) { File tmpDir = new File(tmpPath + "/报名人员材料");
fileName = fileName + (i + 1); tmpDir.mkdirs();
Map<String, List<NutMap>> unionNameMap = list.stream()
.collect(Collectors.groupingBy(l -> l.getString("unionname")));
unionNameMap.forEach((k, v) -> {
File unionTmpDir = new File(tmpDir + "/" + k);
unionTmpDir.mkdirs();
List<NutMap> unionNameList = list.stream().filter(li -> li.getString("unionname").equals(k)).collect(Collectors.toList());
unionNameList.forEach(item -> {
File tDir = new File(unionTmpDir + "/" + item.getString("username"));
tDir.mkdirs();
if (StrUtil.isNotBlank(item.getString("files"))) {
List<Sys_file> fileList = Json.fromJsonAsList(Sys_file.class, item.getString("files"));
fileList.forEach(file -> {
try {
FileOutputStream outputStream = new FileOutputStream(tDir.getPath() + "/" + file.getFilename());
ftpService.download(file.getFilepath(), outputStream);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
} }
fileName = fileName + "--" + file.getFilename(); });
zipOutputStream.putNextEntry(new ZipEntry(item.getString("unionname") + "/" + fileName));
//读取ftp文件
InputStream inputStream = ftpClient.retrieveFileStream(file.getFilepath());
org.apache.commons.io.IOUtils.copy(inputStream, zipOutputStream);
inputStream.close();
zipOutputStream.closeEntry();
ftpClient.completePendingCommand();
response.flushBuffer();
}
} catch (Exception e) {
e.printStackTrace();
} }
} });
}); });
zipOutputStream.flush();
zipOutputStream.close(); String aimsDir = "zipTmp/" + R.UU32();
ftpClient.logout(); String aimsName = "报名人员材料.zip";
String aimsPath = aimsDir + "/" + aimsName;
FileUtil.compressToZip(tmpDir.getPath(), aimsDir, aimsName);
response.setHeader("content-disposition", "attachment;filename="
+ URLEncoder.encode(aimsName, "UTF-8"));
File aimsFile = new File(aimsPath);
FileInputStream inputStream = new FileInputStream(aimsFile);
org.apache.commons.io.IOUtils.copy(inputStream, response.getOutputStream());
inputStream.close();
aimsFile.delete();
FileUtil.deleteDir(new File(tmpPath));
FileUtil.deleteDir(new File(aimsDir));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
@@ -32,6 +32,11 @@ public class Lxy_bm {
@ColDefine(type = ColType.VARCHAR, width = 32) @ColDefine(type = ColType.VARCHAR, width = 32)
private String userid; private String userid;
@Column
@Comment("工号")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String loginname;
@Column @Column
@Comment("工会id") @Comment("工会id")
@ColDefine(type = ColType.VARCHAR, width = 32) @ColDefine(type = ColType.VARCHAR, width = 32)
@@ -43,15 +48,64 @@ public class Lxy_bm {
private String bmsj; private String bmsj;
@Column @Column
@Comment("报名状态(1.待基层工会审核 2.基层工会审核不通过 3.待校工会审核 4 校工会审核不通过 5 报名成功 6 待填写个人资料)") @Comment("报名状态(1.待分工会审核 2.分工会审核不通过 3.待校工会审核 4 校工会审核不通过 5 报名成功 6 待填写个人资料)")
@ColDefine(type = ColType.INT) @ColDefine(type = ColType.INT)
private Integer bmzt; private Integer bmzt;
@Column @Column
@Comment("报名类型(1.基层工会统一报名 2.个人报名)") @Comment("报名类型(1.分工会统一报名 2.个人报名)")
@ColDefine(type = ColType.INT) @ColDefine(type = ColType.INT)
private Integer bmlx; private Integer bmlx;
@Column
@Comment("单位")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String unitname;
@Column
@Comment("单位id")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String unitid;
@Column
@Comment("年龄")
@ColDefine(type = ColType.INT)
private String age;
@Column
@Comment("民族")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String nation;
@Column
@Comment("疗休养身份")
@ColDefine(type = ColType.VARCHAR, width = 1000)
private String zyhj;
@Column
@Comment("工会")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String unionname;
@Column
@Comment("身份证号码")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String idcard;
@Column
@Comment("手机号")
@ColDefine(type = ColType.VARCHAR, width = 11)
private String mobile;
@Column
@Comment("是否为ABCDE类高层次人才")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String talent;
@Column
@Comment("备注")
@ColDefine(type = ColType.VARCHAR, width = 1000)
private String bz;
@Column @Column
@Comment("附件") @Comment("附件")
@ColDefine(type = ColType.MYSQL_JSON) @ColDefine(type = ColType.MYSQL_JSON)
@@ -0,0 +1,39 @@
package io.v.nutz.zhgh.lxy.template;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
/**
* @version 1.0
* @Author zzr
* @name:LxyImportTemp
* @Date 2025/6/11 16:16
* @注释
*/
@Data
public class LxyImportTemp {
@Excel(name = "工号")
String loginname;
@Excel(name = "姓名")
String username;
@Excel(name = "民族")
String nation;
@Excel(name = "疗休养员身份")
String zyhj;
@Excel(name = "身份证号")
String idcard;
@Excel(name = "联系电话")
String mobile;
@Excel(name = "是否为ABCDE类高层次人才")
String talent;
String remark;
}
@@ -1,220 +1,220 @@
<template> <template>
<div style="padding: 20px 50px"> <div style="padding: 20px 50px">
<el-timeline> <el-timeline>
<el-timeline-item timestamp="下载模板" placement="top"> <el-timeline-item timestamp="下载模板" placement="top">
<el-card> <el-card>
<el-button size="medium" style="width: 200px" <el-button size="medium" style="width: 200px" @click="location.href = temp_url" icon="el-icon-download">下载模板</el-button>
@click="location.href=temp_url" </el-card>
icon="el-icon-download">下载模板 </el-timeline-item>
</el-button> <el-timeline-item timestamp="上传文件" placement="top">
<el-card>
<el-form>
<el-form-item label="请选择更新模式" v-if="is_show_radio">
<el-radio-group v-model="importData.isFlag">
<el-radio-button label="true">清空更新</el-radio-button>
<el-radio-button label="false">追加</el-radio-button>
</el-radio-group>
</el-form-item>
</el-card> <el-upload
</el-timeline-item> name="file"
<el-timeline-item timestamp="上传文件" placement="top"> ref="upload"
<el-card> :on-remove="
<el-form> (file, fileList) => {
<el-form-item label="请选择更新模式" v-if="is_show_radio"> importData.fileList = fileHandleRemove(file, fileList)
<el-radio-group v-model="importData.isFlag"> importResult = {
<el-radio-button label="true">清空更新</el-radio-button> errorCount: 0,
<el-radio-button label="false">追加</el-radio-button> successCount: 0,
</el-radio-group> totalCount: 0,
</el-form-item> errorList: []
}
<el-upload }
name="file" "
ref="upload" :on-change="
:on-remove="(file, fileList) => { (file, fileList) => {
importData.fileList = fileHandleRemove(file, fileList); importData.fileList = fileHandleChange(file, fileList, { type: ['xls', 'xlsx'] })
importResult={ }
errorCount:0, "
successCount:0, :auto-upload="false"
totalCount:0, :limit="1"
errorList:[] :file-list="importData.fileList"
} >
}" <el-button size="medium" type="" icon="el-icon-upload" style="width: 200px">选择文件</el-button>
:on-change="(file, fileList) => { <div class="el-upload__tip" slot="tip" style="color: #f56c6c">只能上传 xls/xlsx 文件</div>
importData.fileList = fileHandleChange(file, fileList,{type:['xls','xlsx']}) </el-upload>
}" </el-form>
:auto-upload="false" </el-card>
:limit="1" </el-timeline-item>
:file-list="importData.fileList"> <el-timeline-item placement="top" timestamp="导入结果">
<el-button size="medium" type="" icon="el-icon-upload" <el-card shadow="never">
style="width: 200px">选择文件 <p>总记录数:{{ errorInfoData.totalCount }}</p>
</el-button> <p>
<div class="el-upload__tip" slot="tip" style="color: #F56C6C"> 成功数:
只能上传 xls/xlsx 文件 <span class="text-success">{{ errorInfoData.successCount }}</span>
</div> </p>
</el-upload> <p>
</el-form> 错误数:
</el-card> <span class="text-danger">{{ errorInfoData.errorCount }}</span>
</el-timeline-item> </p>
<el-timeline-item placement="top" timestamp="导入结果"> <el-link @click="exportErrors" type="primary" v-if="errorInfoData.errorCount > 0">下载错误记录</el-link>
<el-card shadow="never"> </el-card>
<p>总记录数:{{ errorInfoData.totalCount }}</p> </el-timeline-item>
<p>成功数:<span class="text-success">{{ errorInfoData.successCount }}</span></p> </el-timeline>
<p>错误数:<span class="text-danger">{{ errorInfoData.errorCount }}</span></p> <div style="text-align: right">
<el-link @click="exportErrors" type="primary" v-if="errorInfoData.errorCount>0">下载错误记录 <span slot="footer" class="dialog-footer">
</el-link> <!-- <el-button @click="importVisible = false" :disabled="importLoading">取 消</el-button>-->
</el-card> <el-button type="primary" @click="doImport" :loading="importLoading">确 定</el-button>
</el-timeline-item> </span>
</el-timeline> </div>
<div style="text-align: right">
<span slot="footer" class="dialog-footer">
<!-- <el-button @click="importVisible = false" :disabled="importLoading">取 消</el-button>-->
<el-button type="primary" @click="doImport" :loading="importLoading">确 定</el-button>
</span>
</div> </div>
</div>
</template> </template>
<script> <script>
module.exports = { module.exports = {
props: { props: {
temp_url: {type: String}, temp_url: { type: String },
post_url: {type: String}, post_url: { type: String },
project_id: {type: String, default: ''}, project_id: { type: String, default: "" },
is_show_radio: {type: Boolean, default: false} is_show_radio: { type: Boolean, default: false }
},
mounted() {
const s = document.createElement('script');
s.type = 'text/javascript';
s.src = '/assets/platform/js/xlsx.full.min.js';
document.body.appendChild(s);
},
data() {
return {
// importVisible: false,
importLoading: false,
importData: {
fileList: [],
isFlag: false
},
errorInfoData: {
totalCount: 0,
successCount: 0,
errorCount: 0,
errorList: 0,
},
}
},
methods: {
resetImportData() {
this.importData = {
fileList: [],
isFlag: false
}
this.errorInfoData = {
totalCount: 0,
successCount: 0,
errorCount: 0,
errorList: 0,
}
this.importLoading = false
}, },
doImport() { mounted() {
if (this.importData.fileList.length === 0) { const s = document.createElement("script")
this.$notify.error({ s.type = "text/javascript"
title: '错误', s.src = "/assets/platform/js/xlsx.full.min.js"
message: '请选择文件!' document.body.appendChild(s)
}); },
// this.notifyWarning("请选择文件!") data() {
return return {
} // importVisible: false,
const data = new FormData(); importLoading: false,
data.append("isFlag", this.importData.isFlag) importData: {
data.append("projectId", this.project_id) fileList: [],
this.importData.fileList.forEach((val) => { isFlag: false
data.append("file", val.raw, val.raw.name); },
}); errorInfoData: {
this.importLoading = true totalCount: 0,
$.ajax({ successCount: 0,
url: this.post_url, errorCount: 0,
type: "post", errorList: 0
data: data, }
processData: false,
contentType: false,
success: (data) => {
this.importLoading = false
if (data.code === 0 && data.data === null) {
this.$notify.success("导入成功")
this.importVisible = false
this.$emit("flush")
} else {
this.$notify.warning("导入失败")
this.errorInfoData = data.data
}
},
error: (data) => {
this.$notify.warning("导入失败")
this.importLoading = false
} }
});
this.importLoading = false
}, },
exportErrors() { methods: {
const data = this.errorInfoData.errorList resetImportData() {
this.importData = {
fileList: [],
isFlag: false
}
this.errorInfoData = {
totalCount: 0,
successCount: 0,
errorCount: 0,
errorList: 0
}
this.importLoading = false
},
doImport() {
if (this.importData.fileList.length === 0) {
this.$notify.error({
title: "错误",
message: "请选择文件!"
})
// this.notifyWarning("请选择文件!")
return
}
const data = new FormData()
data.append("isFlag", this.importData.isFlag)
data.append("projectId", this.project_id)
this.importData.fileList.forEach((val) => {
data.append("file", val.raw, val.raw.name)
})
this.importLoading = true
$.ajax({
url: this.post_url,
type: "post",
data: data,
processData: false,
contentType: false,
success: (data) => {
this.importLoading = false
if (data.code === 0 && data.data === null) {
this.$notify.success("导入成功")
this.importVisible = false
this.$emit("flush")
} else {
this.$notify.warning("导入失败")
this.errorInfoData = data.data
}
},
error: (data) => {
this.$notify.warning(data.msg)
this.importLoading = false
}
})
this.importLoading = false
},
exportErrors() {
const data = this.errorInfoData.errorList
// 创建工作簿 // 创建工作簿
const workbook = XLSX.utils.book_new(); const workbook = XLSX.utils.book_new()
// 创建工作表 // 创建工作表
const worksheet = XLSX.utils.json_to_sheet(data); const worksheet = XLSX.utils.json_to_sheet(data)
// 将工作表添加到工作簿 // 将工作表添加到工作簿
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1")
// 将工作簿转换为二进制对象 // 将工作簿转换为二进制对象
const excelBuffer = XLSX.write(workbook, {bookType: 'xlsx', type: 'array'}); const excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" })
// 将二进制对象转换为Blob对象 // 将二进制对象转换为Blob对象
const blob = new Blob([excelBuffer], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}); const blob = new Blob([excelBuffer], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" })
// 创建下载链接并设置相关属性 // 创建下载链接并设置相关属性
const url = window.URL.createObjectURL(blob); const url = window.URL.createObjectURL(blob)
const link = document.createElement('a'); const link = document.createElement("a")
link.href = url; link.href = url
link.download = '错误记录.xlsx'; link.download = "错误记录.xlsx"
// 模拟点击下载链接 // 模拟点击下载链接
document.body.appendChild(link); document.body.appendChild(link)
link.click(); link.click()
// 清理下载链接 // 清理下载链接
document.body.removeChild(link); document.body.removeChild(link)
window.URL.revokeObjectURL(url); window.URL.revokeObjectURL(url)
},
fileHandleRemove(file, fileList) {
return fileList
},
fileHandleChange(file, fileList, { type, size }) {
const removeFile = () => {
fileList.splice(fileList.findIndex((v) => v === file))
}
}, if (!file.size) {
fileHandleRemove(file, fileList) { this.$notify.warning("您选择的是空文件!")
return fileList; removeFile()
}, }
fileHandleChange(file, fileList, {type, size}) {
const removeFile = () => {
fileList.splice(fileList.findIndex(v => v === file))
}
if (!file.size) { if (type && type.length && !type.includes(file.name.split(".").pop().toLowerCase())) {
this.$notify.warning('您选择的是空文件!') this.$notify.warning(`文件只能是 ${type.map((v) => v.toUpperCase()).join("/")} 格式!`)
removeFile() removeFile()
} }
if (type && type.length && !type.includes(file.name.split('.').pop().toLowerCase())) { if (size && !file.size < size) {
this.$notify.warning(`文件只能是 ${type.map(v => v.toUpperCase()).join('/')} 格式!`) this.$notify.warning(`文件大小不能超过 ${size / 1024 / 1024}MB!`)
removeFile() removeFile()
} }
if (size && !file.size < size) { return fileList
this.$notify.warning(`文件大小不能超过 ${size / 1024 / 1024}MB!`) }
removeFile() }
}
return fileList;
},
}
} }
</script> </script>
<style> <style>
.el-card__body { .el-card__body {
padding: 25px; padding: 25px;
} }
</style> </style>
@@ -3,7 +3,7 @@ layout("/layouts/platform.html"){
#--> #-->
<style> <style>
input[type="file"] { input[type="file"] {
display: none; display: none
} }
.w-e-text-container { .w-e-text-container {
@@ -25,16 +25,28 @@ layout("/layouts/platform.html"){
.el-picker-panel { .el-picker-panel {
z-index: 99999999 !important; z-index: 99999999 !important;
} }
</style> </style>
<div id="app" v-cloak> <div id="app" v-cloak>
<el-row class="header navbar bg-white shadow"> <el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-select v-model="pageForm.hdid" filterable clearable placeholder="请选择活动" @change="pageData"> <el-select v-model="pageForm.hdid" filterable clearable placeholder="请选择活动" @change="pageData">
<el-option v-for="item in lxyHd" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> </el-select>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"></el-date-picker> <el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年度">
</el-date-picker>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button> <el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
@@ -42,43 +54,53 @@ layout("/layouts/platform.html"){
</el-row> </el-row>
<el-row class="el-table-container"> <el-row class="el-table-container">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder" v-loading="tabLoading"> <el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="100px"> <el-table-column align="center" header-align="center" label="序号" width="100px">
<template scope="scope"> <template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}}</span> <span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报名人" prop="username" header-align="center" align="center"></el-table-column> <el-table-column label="报名人" prop="username" header-align="center" align="center"></el-table-column>
<el-table-column label="活动名称" prop="name" header-align="center" width="300px" align="center"> <el-table-column label="活动名称" prop="name" header-align="center" width="300px"
align="center">
<template scope="scope"> <template scope="scope">
<el-link type="primary" @click="lxy_app.openView(scope.row.hdid)">{{scope.row.name}}</el-link> <el-link type="primary" @click="lxy_app.openView(scope.row.hdid)">
{{scope.row.name}}
</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip align="center"></el-table-column> <el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable align="center"> <el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable
<template scope="scope">{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}</template> align="center">
<template scope="scope">
{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}
</template>
</el-table-column> </el-table-column>
<el-table-column label="报名截止时间" prop="bmjzsj" header-align="center" sortable align="center"></el-table-column> <el-table-column label="报名截止时间" prop="bmjzsj" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="报名状态" prop="bmzt" header-align="center" align="center"> <el-table-column label="报名状态" prop="bmzt" header-align="center" align="center">
<template scope="scope"> <template scope="scope">
<span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写报名资料</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写报名资料</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==1">待基层工会审核</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==2">基层工会审核未通过</span> <span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==4">校工会审核未通过</span> <span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67c23a" v-if="scope.row.bmzt==5">审核已通过</span> <span style="color: #67C23A" v-if="scope.row.bmzt==5">审核已通过</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="120px"> <el-table-column align="center" header-align="center" label="操作" fixed="right" width="120px">
<template scope="scope"> <template scope="scope">
<el-button size="mini" type="primary" @click="openSh(scope.row)" plain>审 核</el-button> <el-button size="mini" type="primary" @click="openSh(scope.row)" plain>审 核
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -86,44 +108,47 @@ layout("/layouts/platform.html"){
<el-row class="el-pagination-container"> <el-row class="el-pagination-container">
<el-pagination <el-pagination
@size-change="pageSizeChange" @size-change="pageSizeChange"
@current-change="pageNumberChange" @current-change="pageNumberChange"
:current-page="pageForm.pageNumber" :current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]" :page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize" :page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next" layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount" :total="pageForm.totalCount">
></el-pagination> </el-pagination>
</el-row> </el-row>
<el-dialog title="基层工会审核" top="3%" :visible.sync="viewDialogSh" custom-class="ViewDialogClass" :close-on-click-modal="false" width="60%"> <el-dialog title="分工会审核" top="3%" :visible.sync="viewDialogSh" custom-class="ViewDialogClass"
:close-on-click-modal="false" width="60%">
<table class="tabInfo"> <table class="tabInfo">
<tr> <tr>
<td class="title" colspan="4" style="font-size: 16px; color: rgb(100, 100, 100); font-weight: bolder; padding: 20px 50px"> <td class="title" colspan="4"
style="font-size: 16px;color: rgb(100,100,100);font-weight: bolder;padding: 20px 50px">
个人信息 个人信息
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="title">工号</td> <td class="title">工号</td>
<td class="content">{{viewData.loginname}}</td> <td class="content"> {{viewData.loginname}}</td>
<td class="title">姓名</td> <td class="title">姓名</td>
<td class="content">{{viewData.username}}</td> <td class="content">{{viewData.username}}</td>
</tr> </tr>
<tr> <tr>
<td class="title">职务</td> <td class="title">职务</td>
<td class="content">{{viewData.zw}}</td> <td class="content"> {{viewData.zw}}</td>
<td class="title">人事编制</td> <td class="title">人事编制</td>
<td class="content">{{viewData.rsbz}}</td> <td class="content">{{viewData.rsbz}}</td>
</tr> </tr>
<tr> <tr>
<td class="title">性别</td> <td class="title">性别</td>
<td class="content">{{viewData.sex}}</td> <td class="content"> {{viewData.sex}}</td>
<td class="title">年龄</td> <td class="title">年龄</td>
<td class="content">{{viewData.age}}</td> <td class="content">{{viewData.age}}</td>
</tr> </tr>
<tr> <tr>
<td class="title">所在单位</td> <td class="title">所在单位</td>
<td class="content">{{viewData.unitname}}</td> <td class="content"> {{viewData.unitname}}</td>
<td class="title">手机号</td> <td class="title">手机号</td>
<td class="content">{{viewData.mobile}}</td> <td class="content">{{viewData.mobile}}</td>
</tr> </tr>
@@ -133,9 +158,11 @@ layout("/layouts/platform.html"){
<tr> <tr>
<td class="content" colspan="4" style="text-align: left"> <td class="content" colspan="4" style="text-align: left">
<el-table :data="viewData.chry" size="mini" style="width: 100%" show-header="false"> <el-table :data="viewData.chry" size="mini" style="width: 100%" show-header="false">
<el-table-column prop="hdsj" label="获得时间" align="center" header-align="center" width="250px"> <el-table-column prop="hdsj" label="获得时间" align="center" header-align="center"
width="250px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-date-picker v-model="row.hdsj" type="date" readonly format="yyyy-MM-dd"></el-date-picker> <el-date-picker v-model="row.hdsj" type="date" readonly
format="yyyy-MM-dd"></el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
@@ -150,35 +177,17 @@ layout("/layouts/platform.html"){
<div class="file-down-span" @click="dd3s.download(row.ryfj,row.filename)"> <div class="file-down-span" @click="dd3s.download(row.ryfj,row.filename)">
<i class="el-icon-download"></i> <i class="el-icon-download"></i>
</div> </div>
<el-image <el-image fit="cover" v-if="dd3s.isPic(row.ryfj)"
fit="cover" style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-if="dd3s.isPic(row.ryfj)" :src="'${AppFileDomain!}'+row.ryfj" @click="dd3s.showpic(row.ryfj)">
style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" </el-image>
:src="'${AppFileDomain!}'+row.ryfj" <el-image v-else
@click="dd3s.showpic(row.ryfj)" style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
></el-image> src="***">
<el-image v-else style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" src="***"> <div slot="error" class="image-slot"
<div style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
slot="error" <span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
class="image-slot" text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{row.ryfj}}</span>
style="width: 100%; height: 100%; display: flex; align-items: center; text-align: center"
>
<span
style="
font-size: 12px;
color: rgb(180, 180, 180);
width: 100%;
text-align: center;
overflow: hidden;
padding: 0 10px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
"
>
{{row.ryfj}}
</span>
</div> </div>
</el-image> </el-image>
</template> </template>
@@ -187,46 +196,33 @@ layout("/layouts/platform.html"){
</td> </td>
</tr> </tr>
<template v-if="viewData.files&&viewData.files.length"> <template v-if="viewData.files&&viewData.files.length">
<tr> <tr>
<td class="title" colspan="4">身份证复印件</td> <td class="title" colspan="4">身份证复印件</td>
</tr> </tr>
<tr> <tr>
<td class="content" colspan="4" style="text-align: left"> <td class="content" colspan="4" style="text-align: left">
<div style="text-align: left"> <div style="text-align: left;">
<div v-for="item in viewData.files" style="display: inline-block; width: 100px; margin-right: 10px"> <div v-for="item in viewData.files"
style="display: inline-block;width: 100px;margin-right:10px">
<div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)"> <div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)">
<i class="el-icon-download"></i> <i class="el-icon-download"></i>
</div> </div>
<el-image <el-image fit="cover" v-if="dd3s.isPic(item.filepath)"
fit="cover" style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-if="dd3s.isPic(item.filepath)" :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)">
style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" </el-image>
:src="'${AppFileDomain!}'+item.filepath" <el-image v-else
@click="dd3s.showpic(item.filepath)" style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
></el-image> src="***">
<el-image v-else style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" src="***"> <div slot="error" class="image-slot"
<div style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
slot="error" <span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
class="image-slot" text-overflow: ellipsis;
style="width: 100%; height: 100%; display: flex; align-items: center; text-align: center" display: -webkit-box;
> -webkit-line-clamp: 2;
<span -webkit-box-orient: vertical">{{item.filename}}</span>
style="
font-size: 12px;
color: rgb(180, 180, 180);
width: 100%;
text-align: center;
overflow: hidden;
padding: 0 10px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
"
>
{{item.filename}}
</span>
</div> </div>
</el-image> </el-image>
</div> </div>
@@ -237,14 +233,15 @@ layout("/layouts/platform.html"){
</table> </table>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="viewDialogSh = false" plain>关 闭</el-button> <el-button @click="viewDialogSh = false" plain>关 闭</el-button>
<el-button type="danger" @click="sh(2)" plain>不通过</el-button> <el-button type="danger" @click="sh(2)" plain>不通过</el-button>
<el-button type="success" @click="sh(3)" plain>通 过</el-button> <el-button type="success" @click="sh(3)" plain>通 过</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
<script> <script>
const vue = new Vue({ const vue = new Vue({
el: "#app", el: '#app',
data() { data() {
return { return {
lxyHd: [], lxyHd: [],
@@ -264,12 +261,12 @@ layout("/layouts/platform.html"){
pageOrderName: "", pageOrderName: "",
pageOrderBy: "", pageOrderBy: "",
hdid: "" hdid: ""
} },
} }
}, },
methods: { methods: {
async getLxyBmInfo(id) { async getLxyBmInfo(id) {
const { data } = await $.get(base + "/platform/zgfw/lxy/fghsh/getBmInfo", { id }) const {data} = await $.get(base + "/platform/zgfw/lxy/fghsh/getBmInfo", {id})
return data return data
}, },
async openSh(row) { async openSh(row) {
@@ -283,36 +280,32 @@ layout("/layouts/platform.html"){
sh(zt) { sh(zt) {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: "数据提交中...", text: '数据提交中...',
spinner: "el-icon-loading", spinner: 'el-icon-loading',
background: "rgba(0, 0, 0, 0.7)" background: 'rgba(0, 0, 0, 0.7)'
}) });
$.post(base + "/platform/zgfw/lxy/fghsh/sh", {
hdid: this.pageForm.hdid,
uid: this.pageForm.uid,
bmzt: zt,
}, (data) => {
loading.close()
if (data.code == 0) {
this.$message({
message: '提交成功',
type: 'success'
});
this.viewDialogSh = false
this.pageData()
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
$.post(
base + "/platform/zgfw/lxy/fghsh/sh",
{
hdid: this.pageForm.hdid,
uid: this.pageForm.uid,
bmzt: zt
},
(data) => {
loading.close()
if (data.code == 0) {
this.$message({
message: "提交成功",
type: "success"
})
this.viewDialogSh = false
this.pageData()
} else {
this.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
}, },
doSearch() { doSearch() {
@@ -320,49 +313,41 @@ layout("/layouts/platform.html"){
this.pageForm.pageNumber = 1 this.pageForm.pageNumber = 1
this.pageData() this.pageData()
}, },
pageOrder(column) { pageOrder(column) {//按字段排序
//按字段排序 this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderName = column.prop this.pageForm.pageOrderBy = column.order;
this.pageForm.pageOrderBy = column.order this.pageData();
this.pageData()
}, },
pageNumberChange(val) { pageNumberChange(val) {//页码更新操作
//页码更新操作 this.pageForm.pageNumber = val;
this.pageForm.pageNumber = val this.pageData();
this.pageData()
}, },
pageSizeChange(val) { pageSizeChange(val) {//分页大小更新操作
//分页大小更新操作 this.pageForm.pageSize = val;
this.pageForm.pageSize = val this.pageData();
this.pageData()
}, },
pageData() { pageData() {
sublime.showLoadingbar() sublime.showLoadingbar();
this.tabLoading = true this.tabLoading = true
$.post( $.post(base + "/platform/zgfw/lxy/fghsh/pageData", this.pageForm, (data) => {
base + "/platform/zgfw/lxy/fghsh/pageData", sublime.closeLoadingbar();
this.pageForm, this.tabLoading = false
(data) => { if (data.code == 0) {
sublime.closeLoadingbar() this.tableData = data.data.list;
this.tabLoading = false this.pageForm.totalCount = data.data.totalCount;
if (data.code == 0) { } else {
this.tableData = data.data.list this.$message({
this.pageForm.totalCount = data.data.totalCount message: data.msg,
} else { type: 'error'
this.$message({ });
message: data.msg, }
type: "error" }, "json");
}) },
}
},
"json"
)
}
}, },
async created() { async created() {
this.lxyHd = await getNowLxyHd() this.lxyHd = await getNowLxyHd()
this.pageData() this.pageData();
} }
}) })
</script> </script>
@@ -56,7 +56,7 @@ layout("/layouts/platform.html"){
</el-select> </el-select>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-select @change="doSearch" clearable filterable placeholder="请选择基层工会" v-model="pageForm.unionId"> <el-select @change="doSearch" clearable filterable placeholder="请选择分工会" v-model="pageForm.unionId">
<el-option :key="item.id" :label="item.unionname" :value="item.id" v-for="item in unionList"></el-option> <el-option :key="item.id" :label="item.unionname" :value="item.id" v-for="item in unionList"></el-option>
</el-select> </el-select>
</div> </div>
@@ -92,7 +92,7 @@ layout("/layouts/platform.html"){
<template scope="scope">{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}</template> <template scope="scope">{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}</template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="基层工会" prop="unionname" show-overflow-tooltip> <el-table-column align="center" header-align="center" label="分工会" prop="unionname" show-overflow-tooltip>
<template scope="scope"> <template scope="scope">
<span>({{scope.row.unioncode}}){{scope.row.unionname}}</span> <span>({{scope.row.unioncode}}){{scope.row.unionname}}</span>
</template> </template>
@@ -121,6 +121,7 @@ layout("/layouts/platform.html"){
<el-button @click="openView(scope.row)" size="mini" type="primary">查看报名</el-button> <el-button @click="openView(scope.row)" size="mini" type="primary">查看报名</el-button>
<!--# } #--> <!--# } #-->
<!--# if(@shiro.hasRole('H04')){ #--> <!--# if(@shiro.hasRole('H04')){ #-->
<el-button @click="openImport(scope.row)" size="mini" type="primary">导入</el-button>
<el-button @click="openBm2(scope.row)" size="mini" type="primary">报名</el-button> <el-button @click="openBm2(scope.row)" size="mini" type="primary">报名</el-button>
<!--# } #--> <!--# } #-->
</template> </template>
@@ -192,75 +193,98 @@ layout("/layouts/platform.html"){
<el-table :data="hasApplyUserTableData" border height="480" size="mini"> <el-table :data="hasApplyUserTableData" border height="480" size="mini">
<el-table-column align="center" header-align="center" label="序号" type="index" width="70"></el-table-column> <el-table-column align="center" header-align="center" label="序号" type="index" width="70"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="username" width="100"></el-table-column>
<el-table-column align="center" header-align="center" label="工号" prop="loginname" width="120"></el-table-column> <el-table-column align="center" header-align="center" label="工号" prop="loginname" width="120"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="username" width="100"></el-table-column>
<el-table-column align="center" header-align="center" label="单位" prop="unitname" width="120"></el-table-column> <el-table-column align="center" header-align="center" label="单位" prop="unitname" width="120"></el-table-column>
<el-table-column align="center" header-align="center" label="年龄" prop="age" width="70"></el-table-column> <el-table-column align="center" header-align="center" label="民族" prop="nation" width="150">
<el-table-column align="center" header-align="center" label="手机号码" width="150">
<template scope="{row}"> <template scope="{row}">
<div> <div>
<el-select
:disabled="row.bmzt&&row.bmzt!=4"
placeholder="请选择民族"
clearable
filterable
style="width: 100%"
v-model="row.nation"
>
<el-option v-for="item in nationList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</div>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="疗休养员身份" width="250">
<template scope="{row}">
<div class="tableInput">
<el-input <el-input
:disabled="row.bmzt&&row.bmzt!=4" :disabled="row.bmzt&&row.bmzt!=4"
:rows="2" placeholder="请输入疗休养员身份"
placeholder="请输入手机号码"
style="width: 100%" style="width: 100%"
v-model="row.mobile" type="text"
clearable
maxlength="500"
v-model="row.zyhj"
></el-input> ></el-input>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="身份证号" width="200"> <el-table-column align="center" header-align="center" label="身份证号" width="250">
<template scope="{row}"> <template scope="{row}">
<div> <div>
<el-input <el-input
:disabled="row.bmzt&&row.bmzt!=4" :disabled="row.bmzt&&row.bmzt!=4"
:rows="2"
placeholder="请输入身份证号" placeholder="请输入身份证号"
type="text"
show-word-limit
clearable
style="width: 100%" style="width: 100%"
v-model="row.idcard" v-model="row.idcard"
></el-input> ></el-input>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="获奖名称"> <el-table-column align="center" header-align="center" label="联系电话" width="180">
<template scope="{row}"> <template scope="{row}">
<div class="tableInput"> <div>
<el-input <el-input
:disabled="row.bmzt&&row.bmzt!=4" :disabled="row.bmzt&&row.bmzt!=4"
:rows="2" type="text"
placeholder="请输入获奖名称" maxlength="11"
clearable
placeholder="请输入联系电话"
style="width: 100%" style="width: 100%"
type="textarea" v-model="row.mobile"
v-model="row.zyhj"
></el-input> ></el-input>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="备注">
<el-table-column align="center" header-align="center" label="是否为ABCDE类高层次人才">
<template scope="{row}"> <template scope="{row}">
<div class="tableInput"> <div>
<el-input <el-select
:disabled="row.bmzt&&row.bmzt!=4" :disabled="row.bmzt&&row.bmzt!=4"
:rows="2" clearable
placeholder="请输入备注" filterable
placeholder="请选择人才类型"
style="width: 100%" style="width: 100%"
type="textarea" v-model="row.talent"
v-model="row.bz" >
></el-input> <el-option v-for="item in talentList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="是否审核通过" width="100"> <!--<el-table-column align="center" header-align="center" label="是否审核通过" width="100">
<template scope="{row}"> <template scope="{row}">
<span class="text-primary" v-if="row.bmzt==1">待基层工会审核</span> <span class="text-primary" v-if="row.bmzt==1">待分工会审核</span>
<span class="text-danger" v-else-if="row.bmzt==2">基层工会审核不通过</span> <span class="text-danger" v-else-if="row.bmzt==2">分工会审核不通过</span>
<span class="text-primary" v-else-if="row.bmzt==3">待校工会审核</span> <span class="text-primary" v-else-if="row.bmzt==3">待校工会审核</span>
<span class="text-danger" v-else-if="row.bmzt==4">校工会审核不通过</span> <span class="text-danger" v-else-if="row.bmzt==4">校工会审核不通过</span>
<span class="text-success" v-else-if="row.bmzt==5">报名成功</span> <span class="text-success" v-else-if="row.bmzt==5">报名成功</span>
<span class="text-muted" v-else>预选</span> <span class="text-muted" v-else>预选</span>
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column header-align="center" label="操作" width="200"> <el-table-column header-align="center" label="操作" width="80">
<template scope="scope"> <template scope="scope">
<el-button <el-button
@click="hasApplyUserTableData.splice(scope.$index,1)" @click="hasApplyUserTableData.splice(scope.$index,1)"
@@ -271,10 +295,10 @@ layout("/layouts/platform.html"){
移除 移除
</el-button> </el-button>
<el-button @click="viewInfo(scope.row)" size="mini" type="primary" v-if="scope.row.bmzt&&scope.row.files">查看</el-button> <!--<el-button @click="viewInfo(scope.row)" size="mini" type="primary" v-if="scope.row.bmzt&&scope.row.files">查看</el-button>
<el-button @click="uploadMaterial(scope.row)" size="mini" type="primary" v-if="scope.row.bmzt===4||!scope.row.bmzt"> <el-button @click="uploadMaterial(scope.row)" size="mini" type="primary" v-if="scope.row.bmzt===4||!scope.row.bmzt">
上传材料 上传材料
</el-button> </el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -283,30 +307,37 @@ layout("/layouts/platform.html"){
<template #view> <template #view>
<el-table :data="bmTableData" ref="multipleTableRy" row-key="id" style="width: 100%" tooltip-effect="dark"> <el-table :data="bmTableData" ref="multipleTableRy" row-key="id" style="width: 100%" tooltip-effect="dark">
<el-table-column label="序号" type="index" width="50" header-align="center" align="center"></el-table-column>
<el-table-column align="center" header-align="center" label="工号" prop="loginname"></el-table-column> <el-table-column align="center" header-align="center" label="工号" prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="username"></el-table-column> <el-table-column align="center" header-align="center" label="姓名" prop="username"></el-table-column>
<el-table-column align="center" header-align="center" label="性别" prop="sex" sortable></el-table-column> <el-table-column align="center" header-align="center" label="性别" prop="sex" sortable></el-table-column>
<el-table-column align="center" header-align="center" label="年龄" prop="age" sortable></el-table-column> <el-table-column align="center" header-align="center" label="民族" prop="nation" sortable></el-table-column>
<el-table-column align="center" header-align="center" label="联系电话" prop="mobile"></el-table-column> <el-table-column align="center" header-align="center" label="疗休养员身份" prop="zyhj" show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" label="身份证号" prop="idcard"></el-table-column> <el-table-column align="center" header-align="center" label="身份证号" prop="idcard"></el-table-column>
<el-table-column align="center" header-align="center" label="获奖名称" prop="zyhj" show-overflow-tooltip></el-table-column> <el-table-column align="center" header-align="center" label="联系电话" prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="备注" prop="bz" show-overflow-tooltip></el-table-column> <el-table-column
align="center"
header-align="center"
label="是否为ABCDE类高层次人才"
prop="talent"
show-overflow-tooltip
></el-table-column>
<el-table-column align="center" header-align="center" label="报名状态" prop="bmzt"> <el-table-column align="center" header-align="center" label="报名状态" prop="bmzt">
<template scope="scope"> <template scope="scope">
<span style="color: #e6a23c" v-if="scope.row.bmzt==1">待基层工会审核</span> <span style="color: #e6a23c" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==2">基层工会审核未通过</span> <span style="color: #f56c6c" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span> <span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==4">校工会审核未通过</span> <span style="color: #f56c6c" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67c23a" v-if="scope.row.bmzt==5">报名成功</span> <span style="color: #67c23a" v-if="scope.row.bmzt==5">报名成功</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写个人资料</span> <!-- <span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写个人资料</span>-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="120px"> <!--<el-table-column align="center" fixed="right" header-align="center" label="操作" width="120px">
<template scope="scope"> <template scope="scope">
<el-button @click="openViewXx(scope.row)" size="mini" type="primary">详细信息</el-button> <el-button @click="openViewXx(scope.row)" size="mini" type="primary">详细信息</el-button>
</template> </template>
</el-table-column> </el-table-column>-->
</el-table> </el-table>
</template> </template>
</guava> </guava>
@@ -449,6 +480,16 @@ display: -webkit-box;
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-dialog> </el-dialog>
<el-dialog :close-on-click-modal="false" title="人员导入" :visible.sync="importDialog" top="3%" width="60%">
<file-import
ref="viewImport"
temp_url="/platform/zgfw/lxy/ghbm/downloadImportTemp"
post_url="/platform/zgfw/lxy/ghbm/doImport"
:project_id="pageForm.hdid"
@flush="successImport"
></file-import>
</el-dialog>
</div> </div>
<!--#layout("/platform/zgfw/lxy/dialogView.html"){}#--> <!--#layout("/platform/zgfw/lxy/dialogView.html"){}#-->
<script> <script>
@@ -511,10 +552,20 @@ display: -webkit-box;
importLoading: false, importLoading: false,
uploadForm: {}, uploadForm: {},
fileList: [], fileList: [],
viewDataFgh: [] viewDataFgh: [],
nationList: [],
talentList: ["A", "B", "C", "D", "E", "否"],
// 导入相关
importDialog: false
} }
}, },
components: {
"file-import": httpVueLoader("/components/plugins/FileImport.vue")
},
methods: { methods: {
openImport() {},
openBm2(row) { openBm2(row) {
this.checkTableRowData = row this.checkTableRowData = row
this.tabKey = new Date().getTime() this.tabKey = new Date().getTime()
@@ -601,10 +652,6 @@ display: -webkit-box;
} }
if (flag) { if (flag) {
for (let i = 0; i < array.length; i++) { for (let i = 0; i < array.length; i++) {
if (array[i].files === undefined) {
this.$message.warning("请选择上传材料!")
return
}
if (!array[i].idcard) { if (!array[i].idcard) {
this.$message.warning("请填写身份证号!") this.$message.warning("请填写身份证号!")
return return
@@ -742,6 +789,7 @@ display: -webkit-box;
this.pageForm.hdid = this.lxyHd[0].id this.pageForm.hdid = this.lxyHd[0].id
this.pageData() this.pageData()
this.unionList = await getUnions() this.unionList = await getUnions()
this.nationList = nation
} }
}) })
</script> </script>
@@ -3,7 +3,7 @@ layout("/layouts/platform.html"){
#--> #-->
<style> <style>
input[type="file"] { input[type="file"] {
display: none; display: none
} }
.w-e-text-container { .w-e-text-container {
@@ -26,6 +26,7 @@ layout("/layouts/platform.html"){
z-index: 99999999 !important; z-index: 99999999 !important;
} }
.el-transfer { .el-transfer {
text-align: center; text-align: center;
} }
@@ -41,17 +42,28 @@ layout("/layouts/platform.html"){
} }
</style> </style>
<div id="app" v-cloak> <div id="app" v-cloak>
<el-row class="transition-row"> <el-row class="transition-row">
<transition name="el-zoom-in-center"> <transition name="el-zoom-in-center">
<div v-show="v=='index'" class="transition-item"> <div v-show="v=='index'" class="transition-item">
<el-row class="header navbar bg-white shadow"> <el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-select v-model="pageForm.hdid" filterable clearable placeholder="请选择活动" @change="pageData"> <el-select v-model="pageForm.hdid" filterable clearable placeholder="请选择活动" @change="pageData">
<el-option v-for="item in lxyHd" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> </el-select>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"></el-date-picker> <el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年度">
</el-date-picker>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button> <el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
@@ -59,44 +71,60 @@ layout("/layouts/platform.html"){
</el-row> </el-row>
<el-row class="el-table-container"> <el-row class="el-table-container">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder" v-loading="tabLoading"> <el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="100px"> <el-table-column align="center" header-align="center" label="序号" width="100px">
<template scope="scope"> <template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}}</span> <span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报名人" prop="username" header-align="center" align="center"></el-table-column> <el-table-column label="报名人" prop="username" header-align="center"
align="center"></el-table-column>
<el-table-column label="活动名称" prop="name" header-align="center" width="300px" align="center"> <el-table-column label="活动名称" prop="name" header-align="center" width="300px"
align="center">
<template scope="scope"> <template scope="scope">
<el-link type="primary" @click="lxy_app.openView(scope.row.hdid)">{{scope.row.name}}</el-link> <el-link type="primary" @click="lxy_app.openView(scope.row.hdid)">
{{scope.row.name}}
</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip align="center"></el-table-column> <el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable align="center"> <el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable
<template scope="scope">{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}</template> align="center">
<template scope="scope">
{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}
</template>
</el-table-column> </el-table-column>
<el-table-column label="报名截止时间" prop="bmjzsj" header-align="center" sortable align="center"></el-table-column> <el-table-column label="报名截止时间" prop="bmjzsj" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="报名状态" prop="bmzt" header-align="center" align="center"> <el-table-column label="报名状态" prop="bmzt" header-align="center" align="center">
<template scope="scope"> <template scope="scope">
<span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写报名资料</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写报名资料</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==1">待基层工会审核</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==2">基层工会审核未通过</span> <span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==4">校工会审核未通过</span> <span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67c23a" v-if="scope.row.bmzt==5">审核已通过</span> <span style="color: #67C23A" v-if="scope.row.bmzt==5">审核已通过</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="240px"> <el-table-column align="center" header-align="center" label="操作" fixed="right" width="240px">
<template scope="scope"> <template scope="scope">
<el-button :disabled="scope.row.bmzt==6" size="mini" @click="openEdit(scope.row)" plain>修改</el-button> <el-button :disabled="scope.row.bmzt==6" size="mini"
<el-button :disabled="scope.row.bmzt!=6" size="mini" type="primary" @click="openBm(scope.row)" plain>报名</el-button> @click="openEdit(scope.row)" plain>
修改
</el-button>
<el-button :disabled="scope.row.bmzt!=6" size="mini" type="primary"
@click="openBm(scope.row)" plain>
报名
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -104,14 +132,14 @@ layout("/layouts/platform.html"){
<el-row class="el-pagination-container"> <el-row class="el-pagination-container">
<el-pagination <el-pagination
@size-change="pageSizeChange" @size-change="pageSizeChange"
@current-change="pageNumberChange" @current-change="pageNumberChange"
:current-page="pageForm.pageNumber" :current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]" :page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize" :page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next" layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount" :total="pageForm.totalCount">
></el-pagination> </el-pagination>
</el-row> </el-row>
</div> </div>
</transition> </transition>
@@ -120,12 +148,16 @@ layout("/layouts/platform.html"){
<div v-show="v=='bm'||v=='edit'" class="transition-item"> <div v-show="v=='bm'||v=='edit'" class="transition-item">
<el-row class="header navbar bg-white shadow"> <el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回</el-button> <el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
</el-button>
</div> </div>
</el-row> </el-row>
<el-card class="box-card" style="margin-top: 50px; padding: 0 200px"> <el-card class="box-card" style="margin-top: 50px;padding: 0 200px">
<el-divider content-position="left"><span style="color: rgb(121, 187, 255)">请填写以下个人信息</span></el-divider> <el-divider content-position="left"><span style="color: rgb(121, 187, 255)">请填写以下个人信息</span>
<el-form :model="formData" ref="bmForm" :rules="formRules" label-width="120px" style="padding: 0 30px"> </el-divider>
<el-form :model="formData" ref="bmForm" :rules="formRules" label-width="120px"
style="padding: 0 30px">
<el-form-item label="工号" prop="loginname"> <el-form-item label="工号" prop="loginname">
<el-input readonly v-model="formData.loginname"></el-input> <el-input readonly v-model="formData.loginname"></el-input>
</el-form-item> </el-form-item>
@@ -184,23 +216,17 @@ layout("/layouts/platform.html"){
<el-form-item label="所获荣誉" prop="chry"> <el-form-item label="所获荣誉" prop="chry">
<el-form-item label-width="0" label=""> <el-form-item label-width="0" label="">
<el-button <el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
style="float: right; margin-bottom: 10px" @click="formData.chry.push({hdsj:'',shry:'',ryfj:''});ryfj.push([])">
icon="el-icon-plus"
size="mini"
@click="formData.chry.push({hdsj:'',shry:'',ryfj:''});ryfj.push([])"
>
添加 添加
</el-button> </el-button>
<el-table :data="formData.chry" border size="mini" style="width: 100%"> <el-table :data="formData.chry" border
<el-table-column prop="hdsj" label="获得时间" align="center" header-align="center" width="250px"> size="mini" style="width: 100%">
<el-table-column prop="hdsj" label="获得时间" align="center" header-align="center"
width="250px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-date-picker <el-date-picker v-model="row.hdsj" type="date"
v-model="row.hdsj" placeholder="选择日期" format="yyyy-MM-dd"></el-date-picker>
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
></el-date-picker>
</template> </template>
</el-table-column> </el-table-column>
@@ -210,15 +236,14 @@ layout("/layouts/platform.html"){
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="ryfj" label="荣誉附件" align="center" header-align="center" width="200px"> <el-table-column prop="ryfj" label="荣誉附件" align="center" header-align="center"
width="200px">
<template slot-scope="{$index,row}"> <template slot-scope="{$index,row}">
<tab-upload <tab-upload :resfile.sync="row.ryfj"
:resfile.sync="row.ryfj" :filex="row.ryfj?'${AppFileDomain!}'+row.ryfj:''"
:filex="row.ryfj?'${AppFileDomain!}'+row.ryfj:''" :allowfiles="['png','jpg','jpeg','svg','doc','docx','xls']"
:allowfiles="['png','jpg','jpeg','svg','doc','docx','xls']" maxnum="1"></tab-upload>
maxnum="1" <!-- <table-upload :files.sync="row.ryfj"></table-upload>-->
></tab-upload>
<!-- <table-upload :files.sync="row.ryfj"></table-upload>-->
<!-- <el-upload--> <!-- <el-upload-->
<!-- class="upload-demo"--> <!-- class="upload-demo"-->
<!-- ref="upload"--> <!-- ref="upload"-->
@@ -237,15 +262,13 @@ layout("/layouts/platform.html"){
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" fixed="right" align="center" header-align="center" width="80px" fixed="right"> <el-table-column label="操作" fixed="right" align="center" header-align="center"
width="80px"
fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button type="danger" icon="el-icon-delete" circle
type="danger" :disabled="formData.chry.length==0"
icon="el-icon-delete" @click="delNotesItem(scope.$index)"></el-button>
circle
:disabled="formData.chry.length==0"
@click="delNotesItem(scope.$index)"
></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -254,22 +277,21 @@ layout("/layouts/platform.html"){
<el-form-item prop="accessory" label="身份证复印件"> <el-form-item prop="accessory" label="身份证复印件">
<el-upload <el-upload
name="file" name="file"
ref="upload" ref="upload"
action="**" action="**"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-change="handleChange" :on-change="handleChange"
:auto-upload="false" :auto-upload="false"
limit="1" limit="1"
:file-list="fileList" :file-list="fileList"
list-type="picture" list-type="picture">
>
<el-button size="small" type="primary">选择文件</el-button> <el-button size="small" type="primary">选择文件</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="float: right; margin: 20px 0"> <div style="float: right;margin: 20px 0">
<el-button @click="v='index'">取 消</el-button> <el-button @click="v='index'">取 消</el-button>
<el-button type="primary" @click="doBm">确 定</el-button> <el-button type="primary" @click="doBm">确 定</el-button>
</div> </div>
@@ -417,11 +439,12 @@ layout("/layouts/platform.html"){
<!-- </el-card>--> <!-- </el-card>-->
<!-- </div>--> <!-- </div>-->
<!-- </transition>--> <!-- </transition>-->
</el-row> </el-row>
</div> </div>
<script> <script>
const vue = new Vue({ const vue = new Vue({
el: "#app", el: '#app',
data() { data() {
return { return {
lxyHd: [], lxyHd: [],
@@ -463,31 +486,31 @@ layout("/layouts/platform.html"){
hdid: "", hdid: "",
uid: "", uid: "",
formRules: { formRules: {
loginname: [{ required: false, message: "必填", trigger: ["blur", "change"] }], loginname: [{required: false, message: '必填', trigger: ['blur', 'change']}],
username: [{ required: true, message: "必填", trigger: ["blur", "change"] }], username: [{required: true, message: '必填', trigger: ['blur', 'change']}],
age: [{ required: true, message: "必填", trigger: ["blur", "change"] }], age: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sex: [{ required: true, message: "必填", trigger: ["blur", "change"] }], sex: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{ required: true, message: "必填", trigger: ["blur", "change"] }] mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
} }
} }
}, },
components: { components: {
"tab-upload": httpVueLoader("/components/plugins/TabUpload.vue"), 'tab-upload': httpVueLoader('/components/plugins/TabUpload.vue'),
"table-upload": httpVueLoader("/components/plugins/TableUpload.vue") 'table-upload': httpVueLoader('/components/plugins/TableUpload.vue')
}, },
methods: { methods: {
async getLxyGrInfo(id) { async getLxyGrInfo(id) {
const { data } = await $.get(base + "/platform/zgfw/lxy/grbm/findOne", { id }) const {data} = await $.get(base + "/platform/zgfw/lxy/grbm/findOne", {id})
return data return data
}, },
delNotesItem(index) { delNotesItem(index) {
if (this.formData.chry[index].filepath) { if (this.formData.chry[index].filepath) {
$.post("/platform/Common/deleteFile", { filepath: this.formData.chry[index].filepath }) $.post('/platform/Common/deleteFile', {filepath: this.formData.chry[index].filepath})
} }
// this.ryfj[index] = [] // this.ryfj[index] = []
// this.ryfj.splice(index, 1) // this.ryfj.splice(index, 1)
this.formData.chry[index].ryfj = "" this.formData.chry[index].ryfj = ''
this.formData.chry.splice(index, 1) this.formData.chry.splice(index, 1)
}, },
async openEdit(row) { async openEdit(row) {
@@ -495,24 +518,22 @@ layout("/layouts/platform.html"){
this.fileList = [] this.fileList = []
this.ryfj = [] this.ryfj = []
let data = await this.getLxyGrInfo(row.gid) let data = await this.getLxyGrInfo(row.gid)
data.chry.forEach((v) => { data.chry.forEach(v => {
if (v.filepath) { if (v.filepath) {
this.ryfj.push([ this.ryfj.push([{
{ status: 'success',
status: "success", name: v.filename,
name: v.filename, url: '${AppFileDomain!}' + v.filepath,
url: "${AppFileDomain!}" + v.filepath }])
}
])
} else { } else {
this.ryfj.push([]) this.ryfj.push([])
} }
}) })
data.files.forEach((v) => { data.files.forEach(v => {
this.fileList.push({ this.fileList.push({
id: v.id, id: v.id,
name: v.filename, name: v.filename,
url: "${AppFileDomain!}" + v.filepath, url: '${AppFileDomain!}' + v.filepath,
status: "success" status: "success"
}) })
}) })
@@ -611,15 +632,15 @@ layout("/layouts/platform.html"){
if (valid) { if (valid) {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: "数据提交中...", text: '数据提交中...',
spinner: "el-icon-loading", spinner: 'el-icon-loading',
background: "rgba(0,0,0,0.7)" background: 'rgba(0,0,0,0.7)'
}) });
let formData = new FormData() let formData = new FormData()
this.fileList.forEach(function (val) { this.fileList.forEach(function (val) {
formData.append("fileList", val.raw, val.raw.name) formData.append("fileList", val.raw, val.raw.name);
}) })
formData.append("delFiles", this.delFiles) formData.append("delFiles", this.delFiles)
@@ -627,7 +648,7 @@ layout("/layouts/platform.html"){
this.formData.chry = JSON.stringify(this.formData.chry) this.formData.chry = JSON.stringify(this.formData.chry)
for (let key in this.formData) { for (let key in this.formData) {
formData.append(key, this.formData[key] ? this.formData[key] : "") formData.append(key, this.formData[key] ? this.formData[key] : '');
} }
console.log(this.v) console.log(this.v)
@@ -650,84 +671,84 @@ layout("/layouts/platform.html"){
if (data.code === 0) { if (data.code === 0) {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "success" type: 'success'
}) });
this.pageData() this.pageData();
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" type: 'error'
}) });
} }
}, },
error: (data) => { error: data => {
this.v = "index" this.v = "index"
loading.close() loading.close()
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" type: 'error'
}) });
} }
}) });
} }
}) })
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
this.fileList = fileList this.fileList = fileList;
if (file.status === "success") { if (file.status === "success") {
this.delFiles.push(file.id) this.delFiles.push(file.id);
} }
}, },
handleChange(file, fileList) { handleChange(file, fileList) {
const delFile = () => { const delFile = () => {
for (let i = 0; i < fileList.length; i++) { for (let i = 0; i < fileList.length; i++) {
if (file === fileList[i]) { if (file === fileList[i]) {
fileList.splice(i, 1) fileList.splice(i, 1);
} }
} }
} }
if (this.size === 0) { if (this.size === 0) {
this.$message.warning("您选择的是空文件!") this.$message.warning("您选择的是空文件!");
delFile() delFile()
} }
if (!uploadFileType.includes(file.name.split(".")[1])) { if (!uploadFileType.includes(file.name.split('.')[1])) {
this.$message.warning("文件格式不支持!") this.$message.warning("文件格式不支持!");
delFile() delFile()
} }
this.fileList = fileList this.fileList = fileList;
}, },
ryfjHandleRemove(index, file, fileList) { ryfjHandleRemove(index, file, fileList) {
if (this.formData.chry[index].filepath) { if (this.formData.chry[index].filepath) {
$.post("/platform/Common/deleteFile", { filepath: this.formData.chry[index].filepath }) $.post('/platform/Common/deleteFile', {filepath: this.formData.chry[index].filepath})
} }
this.$set(this.formData.chry[index], "filename", "") this.$set(this.formData.chry[index], 'filename', '')
this.$set(this.formData.chry[index], "filepath", "") this.$set(this.formData.chry[index], 'filepath', '')
}, },
ryfjHandleChange(index, file, fileList) { ryfjHandleChange(index, file, fileList) {
const delFile = () => { const delFile = () => {
for (let i = 0; i < fileList.length; i++) { for (let i = 0; i < fileList.length; i++) {
if (file === fileList[i]) { if (file === fileList[i]) {
fileList.splice(i, 1) fileList.splice(i, 1);
} }
} }
} }
if (this.size === 0) { if (this.size === 0) {
this.$message.warning("您选择的是空文件!") this.$message.warning("您选择的是空文件!");
delFile() delFile()
} }
if (!uploadFileType.includes(file.name.split(".")[1])) { if (!uploadFileType.includes(file.name.split('.')[1])) {
this.$message.warning("文件格式不支持!") this.$message.warning("文件格式不支持!");
delFile() delFile()
} }
let formData = new FormData() let formData = new FormData()
formData.append("file", file.raw, file.raw.name) formData.append("file", file.raw, file.raw.name);
this.$set(this.formData.chry[index], "filename", file.name) this.$set(this.formData.chry[index], 'filename', file.name)
this.$set(this.formData.chry[index], "filepath", "") this.$set(this.formData.chry[index], 'filepath', '')
$.ajax({ $.ajax({
url: "/platform/Common/uploadFile", url: "/platform/Common/uploadFile",
@@ -736,67 +757,60 @@ layout("/layouts/platform.html"){
processData: false, processData: false,
contentType: false, contentType: false,
success: (res) => { success: (res) => {
const { code, data } = res const {code, data} = res
if (code == 0) { if (code == 0) {
this.$set(this.formData.chry[index], "filename", data.filename) this.$set(this.formData.chry[index], 'filename', data.filename)
this.$set(this.formData.chry[index], "filepath", data.filepath) this.$set(this.formData.chry[index], 'filepath', data.filepath)
} }
}, },
error: (data) => { error: data => {
this.$set(this.formData.chry[index], "filename", "") this.$set(this.formData.chry[index], 'filename', '')
this.$set(this.formData.chry[index], "filepath", "") this.$set(this.formData.chry[index], 'filepath', '')
} }
}) });
}, },
doSearch() { doSearch() {
this.pageForm.pageNumber = 1 this.pageForm.pageNumber = 1
this.pageData() this.pageData()
}, },
pageOrder(column) { pageOrder(column) {//按字段排序
//按字段排序 this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderName = column.prop this.pageForm.pageOrderBy = column.order;
this.pageForm.pageOrderBy = column.order this.pageData();
this.pageData()
}, },
pageNumberChange(val) { pageNumberChange(val) {//页码更新操作
//页码更新操作 this.pageForm.pageNumber = val;
this.pageForm.pageNumber = val this.pageData();
this.pageData()
}, },
pageSizeChange(val) { pageSizeChange(val) {//分页大小更新操作
//分页大小更新操作 this.pageForm.pageSize = val;
this.pageForm.pageSize = val this.pageData();
this.pageData()
}, },
pageData() { pageData() {//加载分页数据
//加载分页数据 sublime.showLoadingbar();//显示loading
sublime.showLoadingbar() //显示loading
this.tabLoading = true this.tabLoading = true
$.post( $.post(base + "/platform/zgfw/lxy/grbm/pageData", this.pageForm, (data) => {
base + "/platform/zgfw/lxy/grbm/pageData", sublime.closeLoadingbar();//关闭loading
this.pageForm, this.tabLoading = false
(data) => { if (data.code == 0) {
sublime.closeLoadingbar() //关闭loading this.tableData = data.data.list;
this.tabLoading = false this.pageForm.totalCount = data.data.totalCount;
if (data.code == 0) { } else {
this.tableData = data.data.list this.$message({
this.pageForm.totalCount = data.data.totalCount message: data.msg,
} else { type: 'error'
this.$message({ });
message: data.msg, }
type: "error" }, "json");
}) },
}
},
"json"
)
}
}, },
async created() { async created() {
this.unions = await getUnions() this.unions = await getUnions()
this.lxyHd = await getNowLxyHd() this.lxyHd = await getNowLxyHd()
this.pageData() this.pageData();
} }
}) })
</script> </script>
@@ -50,11 +50,18 @@ layout("/layouts/platform.html"){
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in lxyHd"></el-option> <el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in lxyHd"></el-option>
</el-select> </el-select>
</div> </div>
<div class="btn-group tool-button mt5"> <!--<div class="btn-group tool-button mt5">
<el-select class="d-select" clearable filterable placeholder="请选择场地" v-model="pageForm.hdcd" width="300px"> <el-select class="d-select" clearable filterable placeholder="请选择场地"
<el-option :key="item.id" :label="item.hdcd" :value="item.id" v-for="item in lxyHdCd"></el-option> v-model="pageForm.hdcd"
width="300px">
<el-option
:key="item.id"
:label="item.hdcd"
:value="item.id"
v-for="item in lxyHdCd">
</el-option>
</el-select> </el-select>
</div> </div>-->
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button> <el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div> </div>
@@ -231,7 +238,7 @@ layout("/layouts/platform.html"){
<el-table :data="unions_" height="70vh" size="medium"> <el-table :data="unions_" height="70vh" size="medium">
<el-table-column align="center" header-align="center" label="序号" type="index"></el-table-column> <el-table-column align="center" header-align="center" label="序号" type="index"></el-table-column>
<el-table-column label="基层工会" prop="unionname" sortable> <el-table-column label="分工会" prop="unionname" sortable>
<template scope="{row}">{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}</template> <template scope="{row}">{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}</template>
</el-table-column> </el-table-column>
@@ -363,7 +370,7 @@ layout("/layouts/platform.html"){
<el-table :data="unions_" height="70vh" size="medium"> <el-table :data="unions_" height="70vh" size="medium">
<el-table-column align="center" header-align="center" label="序号" type="index"></el-table-column> <el-table-column align="center" header-align="center" label="序号" type="index"></el-table-column>
<el-table-column label="基层工会" prop="unionname" sortable> <el-table-column label="分工会" prop="unionname" sortable>
<template scope="{row}">{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}</template> <template scope="{row}">{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}</template>
</el-table-column> </el-table-column>
@@ -3,7 +3,7 @@ layout("/layouts/platform.html"){
#--> #-->
<style> <style>
input[type="file"] { input[type="file"] {
display: none; display: none
} }
.w-e-text-container { .w-e-text-container {
@@ -26,6 +26,7 @@ layout("/layouts/platform.html"){
z-index: 99999999 !important; z-index: 99999999 !important;
} }
.el-transfer { .el-transfer {
text-align: center; text-align: center;
} }
@@ -63,17 +64,28 @@ layout("/layouts/platform.html"){
} }
</style> </style>
<div id="app" v-cloak> <div id="app" v-cloak>
<el-row class="transition-row"> <el-row class="transition-row">
<transition name="el-zoom-in-center"> <transition name="el-zoom-in-center">
<div v-show="v=='index'" class="transition-item"> <div v-show="v=='index'" class="transition-item">
<el-row class="header navbar bg-white shadow"> <el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-select v-model="pageForm.hdid" filterable clearable placeholder="请选择活动" @change="pageData"> <el-select v-model="pageForm.hdid" filterable clearable placeholder="请选择活动" @change="pageData">
<el-option v-for="item in lxyHd" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> </el-select>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"></el-date-picker> <el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年度">
</el-date-picker>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button> <el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
@@ -81,43 +93,59 @@ layout("/layouts/platform.html"){
</el-row> </el-row>
<el-row class="el-table-container"> <el-row class="el-table-container">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder" v-loading="tabLoading"> <el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="100px"> <el-table-column align="center" header-align="center" label="序号" width="100px">
<template scope="scope"> <template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}}</span> <span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="活动名称" prop="name" header-align="center" width="300px" align="center"> <el-table-column label="活动名称" prop="name" header-align="center" width="300px"
align="center">
<template scope="scope"> <template scope="scope">
<el-link type="primary" @click="lxy_app.openView(scope.row.id)">{{scope.row.name}}</el-link> <el-link type="primary" @click="lxy_app.openView(scope.row.id)">
{{scope.row.name}}
</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip align="center"></el-table-column> <el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable align="center" width="200px"> <el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable
<template scope="scope">{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}</template> align="center" width="200px">
<template scope="scope">
{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}
</template>
</el-table-column> </el-table-column>
<el-table-column label="报名时间" prop="bmsj" header-align="center" sortable align="center" width="300px"> <el-table-column label="报名时间" prop="bmsj" header-align="center" sortable
<template scope="scope">{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}</template> align="center" width="300px">
<template scope="scope">
{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}
</template>
</el-table-column> </el-table-column>
<el-table-column label="状态" prop="name" header-align="center" align="center"> <el-table-column label="状态" prop="name" header-align="center"
align="center">
<template scope="scope"> <template scope="scope">
<span :class="lxy_app.getStatus(scope.row).class">{{lxy_app.getStatus(scope.row).name}}</span> <span :class="lxy_app.getStatus(scope.row).class">{{lxy_app.getStatus(scope.row).name}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="基层工会" prop="unionname" header-align="center" align="center"></el-table-column> <el-table-column label="分工会" prop="unionname" header-align="center"
align="center"></el-table-column>
<el-table-column label="总名额" prop="number" header-align="center" align="center" width="100px"> <el-table-column label="总名额" prop="number" header-align="center"
align="center" width="100px">
<template scope="scope"> <template scope="scope">
<span style="color: tomato">{{scope.row.number}}</span> <span style="color: tomato">{{scope.row.number}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="剩余名额" prop="remain" header-align="center" align="center" width="100px"> <el-table-column label="剩余名额" prop="remain" header-align="center"
align="center" width="100px">
<template scope="scope"> <template scope="scope">
<span style="color: tomato">{{scope.row.remain}}</span> <span style="color: tomato">{{scope.row.remain}}</span>
</template> </template>
@@ -127,12 +155,13 @@ layout("/layouts/platform.html"){
<template scope="scope"> <template scope="scope">
<!-- <el-button size="mini" @click="openView(scope.row)">查看--> <!-- <el-button size="mini" @click="openView(scope.row)">查看-->
<!-- </el-button>--> <!-- </el-button>-->
<el-button size="mini" @click="openEdit(scope.row)" :disabled="scope.row.number == scope.row.remain" plain> <el-button size="mini" @click="openEdit(scope.row)"
修改 :disabled="scope.row.number == scope.row.remain" plain>修改
</el-button> </el-button>
<el-button size="mini" type="primary" @click="openTj(scope.row)" :disabled="scope.row.remain<=0" plain> <el-button size="mini" type="primary" @click="openTj(scope.row)"
推荐 :disabled="scope.row.remain<=0" plain>推荐
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -140,14 +169,14 @@ layout("/layouts/platform.html"){
<el-row class="el-pagination-container"> <el-row class="el-pagination-container">
<el-pagination <el-pagination
@size-change="pageSizeChange" @size-change="pageSizeChange"
@current-change="pageNumberChange" @current-change="pageNumberChange"
:current-page="pageForm.pageNumber" :current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]" :page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize" :page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next" layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount" :total="pageForm.totalCount">
></el-pagination> </el-pagination>
</el-row> </el-row>
</div> </div>
</transition> </transition>
@@ -156,22 +185,27 @@ layout("/layouts/platform.html"){
<div v-show="v=='bm'" class="transition-item"> <div v-show="v=='bm'" class="transition-item">
<el-card class="box-card v-box" shadow="never"> <el-card class="box-card v-box" shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回</el-button> <el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
</el-button>
</div> </div>
<el-row style="padding: 0 15%" v-loading="loading"> <el-row style="padding: 0 15%;" v-loading="loading">
<el-steps :active="stepActive" finish-status="success" simple> <el-steps :active="stepActive" finish-status="success" simple>
<el-step title="选择人员"></el-step> <el-step title="选择人员"></el-step>
<el-step title="确定名单"></el-step> <el-step title="确定名单"></el-step>
</el-steps> </el-steps>
<transition name="el-zoom-in-top"> <transition name="el-zoom-in-top">
<div v-show="stepActive==0" class="transition-box" style="margin-top: 20px"> <div v-show="stepActive==0" class="transition-box" style="margin-top: 20px;">
<el-row class="navbar"> <el-row class="navbar">
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-input v-model="userPageForm.query" placeholder="请输入姓名或工号查询"></el-input> <el-input v-model="userPageForm.query" placeholder="请输入姓名或工号查询"></el-input>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doUserSearch"></el-button> <el-button type="primary" icon="el-icon-search"
@click="doUserSearch">
</el-button>
</div> </div>
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
@@ -183,66 +217,75 @@ layout("/layouts/platform.html"){
<div class="pull-right offscreen-right mt5"> <div class="pull-right offscreen-right mt5">
<div class="text-primary" style="line-height: 40px"> <div class="text-primary" style="line-height: 40px">
{{numData.unionname}} 共有 {{numData.unionname}} 共有 <span class="text-danger">{{numData.sum}}</span>个名额,
<span class="text-danger">{{numData.sum}}</span> 可选择 <span
个名额, 可选择 class="text-danger">{{numData.kxz}}</span>
<span class="text-danger">{{numData.kxz}}</span> 个,
个, 已选择 已选择<span class="text-danger">{{multipleSelection.length}}</span>个。
<span class="text-danger">{{multipleSelection.length}}</span>
个。
</div> </div>
</div> </div>
</el-row> </el-row>
<el-row class=""> <el-row class="">
<el-table <el-table ref="userTable" :key="tabKey"
ref="userTable" @selection-change="handleSelectionChange"
:key="tabKey" :data="userData"
@selection-change="handleSelectionChange" style="width: 100%" row-key="id" v-loading="userTableLoading"
:data="userData" size="medium"
style="width: 100%" @sort-change="userPageOrder">
row-key="id" <el-table-column
v-loading="userTableLoading" :reserve-selection="true"
size="medium" type="selection"
@sort-change="userPageOrder" width="55">
> </el-table-column>
<el-table-column :reserve-selection="true" type="selection" width="55"></el-table-column>
<el-table-column label="工号" prop="loginname" header-align="center" align="center"></el-table-column> <el-table-column label="工号" prop="loginname" header-align="center"
<el-table-column label="姓名" prop="username" header-align="center" align="center"></el-table-column> align="center"></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" sortable align="center"></el-table-column> <el-table-column label="姓名" prop="username" header-align="center"
<el-table-column label="年龄" prop="age" header-align="center" sortable align="center"></el-table-column> align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center" align="center"></el-table-column> <el-table-column label="性别" prop="sex" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="年龄" prop="age" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center"
align="center"></el-table-column>
</el-table> </el-table>
</el-row> </el-row>
<el-row class="el-pagination-container" style="margin-top: 20px"> <el-row class="el-pagination-container" style="margin-top: 20px">
<el-pagination <el-pagination
@size-change="userPageSizeChange" @size-change="userPageSizeChange"
@current-change="userPageNumberChange" @current-change="userPageNumberChange"
:current-page="userPageForm.pageNumber" :current-page="userPageForm.pageNumber"
:page-size="userPageForm.pageSize" :page-size="userPageForm.pageSize"
layout="total, prev, pager, next" layout="total, prev, pager, next"
:total="userPageForm.totalCount" :total="userPageForm.totalCount">
></el-pagination> </el-pagination>
</el-row> </el-row>
<div style="float: right; margin: 0px 0"> <div style="float: right;margin: 0px 0">
<el-button type="primary" @click="next">下一步</el-button> <el-button type="primary" @click="next">下一步</el-button>
</div> </div>
</div> </div>
</transition> </transition>
<transition name="el-zoom-in-bottom"> <transition name="el-zoom-in-bottom">
<div v-show="stepActive==1" class="transition-box" style="margin-top: 20px"> <div v-show="stepActive==1" class="transition-box" style="margin-top: 20px;">
<el-table :key="tabKey" :data="multipleSelection" style="width: 100%" row-key="id" size="medium"> <el-table :key="tabKey" :data="multipleSelection" style="width: 100%" row-key="id"
<el-table-column label="工号" prop="loginname" header-align="center" align="center"></el-table-column> size="medium">
<el-table-column label="姓名" prop="username" header-align="center" align="center"></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" sortable align="center"></el-table-column> <el-table-column label="工号" prop="loginname" header-align="center"
<el-table-column label="年龄" prop="age" header-align="center" sortable align="center"></el-table-column> align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center" align="center"></el-table-column> <el-table-column label="姓名" prop="username" header-align="center"
align="center"></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="年龄" prop="age" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center"
align="center"></el-table-column>
</el-table> </el-table>
<div style="float: right; margin: 20px 0"> <div style="float: right;margin: 20px 0">
<el-button @click="stepActive=0">上一步</el-button> <el-button @click="stepActive=0">上一步</el-button>
<el-button type="primary" @click="doTj">提交</el-button> <el-button type="primary" @click="doTj">提交</el-button>
</div> </div>
@@ -257,68 +300,46 @@ layout("/layouts/platform.html"){
<div v-show="v=='view'" class="transition-item"> <div v-show="v=='view'" class="transition-item">
<el-row class="header navbar bg-white shadow"> <el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5"> <div class="btn-group tool-button mt5">
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回</el-button> <el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
</el-button>
</div> </div>
</el-row> </el-row>
<el-row class="el-table-container"> <el-row class="el-table-container">
<el-table :data="bmTableData" tooltip-effect="dark" row-key="id" ref="multipleTableRy" style="width: 100%"> <el-table :data="bmTableData" tooltip-effect="dark" row-key="id" ref="multipleTableRy"
style="width: 100%">
<el-table-column type="expand"> <el-table-column type="expand">
<template slot-scope="props"> <template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand"> <el-form label-position="left" inline class="demo-table-expand">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="所获荣誉"> <el-form-item label="所获荣誉">
<el-input <el-input v-if="props.row.chry" readonly type="textarea"
v-if="props.row.chry" style="width: 600px;margin-left: 90px" :rows="9"
readonly v-model="props.row.shry">
type="textarea" </el-input>
style="width: 600px; margin-left: 90px" <el-input v-if="!props.row.chry" readonly type="textarea" :rows="9"
:rows="9" value="暂无荣誉">
v-model="props.row.shry" </el-input>
></el-input>
<el-input v-if="!props.row.chry" readonly type="textarea" :rows="9" value="暂无荣誉"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="身份证相片"> <el-form-item label="身份证相片">
<div <div v-for="item in bmTableData.files"
v-for="item in bmTableData.files" style="display: inline-block;width: 100px;margin-right:10px">
style="display: inline-block; width: 100px; margin-right: 10px" <el-image fit="cover" v-if="dd3s.isPic(item.filepath)"
> style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
<el-image :src="'${AppFileDomain!}'+item.filepath"
fit="cover" @click="dd3s.showpic(item.filepath)">
v-if="dd3s.isPic(item.filepath)" </el-image>
style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)"
:src="'${AppFileDomain!}'+item.filepath"
@click="dd3s.showpic(item.filepath)"
></el-image>
<el-image <el-image v-else
v-else style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" src="***">
src="***" <div slot="error" class="image-slot"
> style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
<div <span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
slot="error" text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{item.filename}}</span>
class="image-slot"
style="width: 100%; height: 100%; display: flex; align-items: center; text-align: center"
>
<span
style="
font-size: 12px;
color: rgb(180, 180, 180);
width: 100%;
text-align: center;
overflow: hidden;
padding: 0 10px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
"
>
{{item.filename}}
</span>
</div> </div>
</el-image> </el-image>
</div> </div>
@@ -329,16 +350,21 @@ layout("/layouts/platform.html"){
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工号" prop="loginname" header-align="center" align="center"></el-table-column> <el-table-column label="工号" prop="loginname" header-align="center"
<el-table-column label="姓名" prop="username" header-align="center" align="center"></el-table-column> align="center"></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" sortable align="center"></el-table-column> <el-table-column label="姓名" prop="username" header-align="center"
<el-table-column label="年龄" prop="age" header-align="center" sortable align="center"></el-table-column> align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center" align="center"></el-table-column> <el-table-column label="性别" prop="sex" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="年龄" prop="age" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center"
align="center"></el-table-column>
<el-table-column label="报名状态" prop="bmzt" header-align="center" align="center"> <el-table-column label="报名状态" prop="bmzt" header-align="center" align="center">
<template scope="scope"> <template scope="scope">
<span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span> <span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==4">审核未通过</span> <span style="color: #F56C6C" v-if="scope.row.bmzt==4">审核未通过</span>
<span style="color: #67c23a" v-if="scope.row.bmzt==5">审核已通过</span> <span style="color: #67C23A" v-if="scope.row.bmzt==5">审核已通过</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -349,10 +375,10 @@ layout("/layouts/platform.html"){
</div> </div>
<script> <script>
const vue = new Vue({ const vue = new Vue({
el: "#app", el: '#app',
data() { data() {
return { return {
unionname: "", unionname: '',
viewDialogSh: false, viewDialogSh: false,
bmTableData: [], bmTableData: [],
lxyHd: [], lxyHd: [],
@@ -392,7 +418,7 @@ layout("/layouts/platform.html"){
}, },
multipleSelection: [], multipleSelection: [],
userTableLoading: false, userTableLoading: false,
numData: {} numData: {},
} }
}, },
methods: { methods: {
@@ -406,67 +432,62 @@ layout("/layouts/platform.html"){
doTj() { doTj() {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: "数据提交中...", text: '数据提交中...',
spinner: "el-icon-loading", spinner: 'el-icon-loading',
background: "rgba(0, 0, 0, 0.7)" background: 'rgba(0, 0, 0, 0.7)'
}) });
let arr = [] let arr = []
this.multipleSelection.map((v) => { this.multipleSelection.map(v => {
arr.push(v.id) arr.push(v.id)
}) })
let url let url;
if (this.userPageForm.sign == 0) { if (this.userPageForm.sign == 0) {
url = base + "/platform/zgfw/lxy/metj/tj" url = base + "/platform/zgfw/lxy/metj/tj";
} else if (this.userPageForm.sign == 1) { } else if (this.userPageForm.sign == 1) {
url = base + "/platform/zgfw/lxy/metj/doEdit" url = base + "/platform/zgfw/lxy/metj/doEdit";
} }
$.post( $.post(url, {
url, hdid: this.userPageForm.hdid,
{ unionid: this.userPageForm.unionid,
hdid: this.userPageForm.hdid, users: JSON.stringify(arr)
unionid: this.userPageForm.unionid, }, (data) => {
users: JSON.stringify(arr) loading.close()
}, if (data.code == 0) {
(data) => { this.$message({
loading.close() message: '提交成功',
if (data.code == 0) { type: 'success'
this.$message({ });
message: "提交成功", this.v = 'index'
type: "success" this.pageData()
}) } else {
this.v = "index" this.$message({
this.pageData() message: data.msg,
} else { type: 'error'
this.$message({ });
message: data.msg, }
type: "error" }, "json");
})
}
},
"json"
)
}, },
next() { next() {
if (this.multipleSelection.length == 0) { if (this.multipleSelection.length == 0) {
this.$message({ this.$message({
message: "请选择人员!", message: '请选择人员!',
type: "warning" type: 'warning'
}) });
return return
} }
if (this.userPageForm.sign == 0 && this.numData.num - this.multipleSelection.length < 0) { if (this.userPageForm.sign == 0 && this.numData.num - this.multipleSelection.length < 0) {
this.$message({ this.$message({
message: "选择人数已达上限!", message: '选择人数已达上限!',
type: "warning" type: 'warning'
}) });
return return
} else if (this.userPageForm.sign == 1 && this.multipleSelection.length > this.numData.sum) { } else if (this.userPageForm.sign == 1 && this.multipleSelection.length > this.numData.sum) {
this.$message({ this.$message({
message: "选择人数已达上限!", message: '选择人数已达上限!',
type: "warning" type: 'warning'
}) });
return return
} }
@@ -480,83 +501,69 @@ layout("/layouts/platform.html"){
this.userPageForm.pageNumber = 1 this.userPageForm.pageNumber = 1
this.userPageData() this.userPageData()
}, },
userPageOrder(column) { userPageOrder(column) {//按字段排序
//按字段排序 this.userPageForm.pageOrderName = column.prop;
this.userPageForm.pageOrderName = column.prop this.userPageForm.pageOrderBy = column.order;
this.userPageForm.pageOrderBy = column.order this.userPageData();
this.userPageData()
}, },
userPageNumberChange(val) { userPageNumberChange(val) {//页码更新操作
//页码更新操作 this.userPageForm.pageNumber = val;
this.userPageForm.pageNumber = val this.userPageData();
this.userPageData()
}, },
userPageSizeChange(val) { userPageSizeChange(val) {//分页大小更新操作
//分页大小更新操作 this.userPageForm.pageSize = val;
this.userPageForm.pageSize = val this.userPageData();
this.userPageData()
}, },
userPageData() { userPageData() {//加载分页数据
//加载分页数据 sublime.showLoadingbar();//显示loading
sublime.showLoadingbar() //显示loading
this.userTableLoading = true this.userTableLoading = true
this.userPageForm.checks = JSON.stringify(this.userPageForm.check) this.userPageForm.checks = JSON.stringify(this.userPageForm.check)
$.post( $.post(base + "/platform/zgfw/lxy/metj/getUser", this.userPageForm, (data) => {
base + "/platform/zgfw/lxy/metj/getUser", sublime.closeLoadingbar();//关闭loading
this.userPageForm, this.userTableLoading = false
(data) => { if (data.code == 0) {
sublime.closeLoadingbar() //关闭loading this.userData = data.data.list;
this.userTableLoading = false this.userPageForm.totalCount = data.data.totalCount;
if (data.code == 0) { this.$nextTick(() => {
this.userData = data.data.list const arr = JSON.parse(JSON.stringify(this.multipleSelection))
this.userPageForm.totalCount = data.data.totalCount this.userData.forEach(v => {
this.$nextTick(() => { if (arr.includes(v.id)) {
const arr = JSON.parse(JSON.stringify(this.multipleSelection)) this.$refs.userTable.toggleRowSelection(v)
this.userData.forEach((v) => { }
if (arr.includes(v.id)) {
this.$refs.userTable.toggleRowSelection(v)
}
})
}) })
} else { })
this.$message({ } else {
message: data.msg, this.$message({
type: "error" message: data.msg,
}) type: 'error'
} });
}, }
"json" }, "json");
)
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val this.multipleSelection = val;
}, },
filterMethod(query, item) { filterMethod(query, item) {
return item.username.indexOf(query) > -1 || item.loginname.indexOf(query) > -1 return item.username.indexOf(query) > -1 || item.loginname.indexOf(query) > -1;
}, },
openView(row) { openView(row) {
this.unionname = row.unionname this.unionname = row.unionname
this.pageForm.hdid = row.hdid this.pageForm.hdid = row.hdid
this.pageForm.ghid = row.ghid this.pageForm.ghid = row.ghid
this.v = "view" this.v = "view"
$.post( $.post(base + "/platform/zgfw/lxy/xghsh/findBm", {ghId: row.ghid, hdId: row.hdid}, (data) => {
base + "/platform/zgfw/lxy/xghsh/findBm", sublime.closeLoadingbar();
{ ghId: row.ghid, hdId: row.hdid }, this.tabLoading = false
(data) => { if (data.code == 0) {
sublime.closeLoadingbar() this.bmTableData = data.data;
this.tabLoading = false } else {
if (data.code == 0) { this.$message({
this.bmTableData = data.data message: data.msg,
} else { type: 'error'
this.$message({ });
message: data.msg, }
type: "error" }, "json");
})
}
},
"json"
)
}, },
openTj(row) { openTj(row) {
this.tabKey = new Date().getTime() this.tabKey = new Date().getTime()
@@ -574,7 +581,7 @@ layout("/layouts/platform.html"){
} }
$.post(base + "/platform/zgfw/lxy/metj/getNumberData", this.userPageForm, (data) => { $.post(base + "/platform/zgfw/lxy/metj/getNumberData", this.userPageForm, (data) => {
this.numData = data.data this.numData = data.data
this.v = "bm" this.v = 'bm'
this.multipleSelection = [] this.multipleSelection = []
this.userData = [] this.userData = []
this.userPageData() this.userPageData()
@@ -597,11 +604,11 @@ layout("/layouts/platform.html"){
} }
$.post(base + "/platform/zgfw/lxy/metj/getNumberData", this.userPageForm, (data) => { $.post(base + "/platform/zgfw/lxy/metj/getNumberData", this.userPageForm, (data) => {
this.numData = data.data this.numData = data.data
this.multipleSelection = data.data.multiple.map((v) => { this.multipleSelection = data.data.multiple.map(v => {
return v.id return v.id
}) })
this.userData = [] this.userData = []
this.v = "bm" this.v = 'bm'
this.userPageData() this.userPageData()
}) })
@@ -611,51 +618,42 @@ layout("/layouts/platform.html"){
this.pageForm.pageNumber = 1 this.pageForm.pageNumber = 1
this.pageData() this.pageData()
}, },
pageOrder(column) { pageOrder(column) {//按字段排序
//按字段排序 this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderName = column.prop this.pageForm.pageOrderBy = column.order;
this.pageForm.pageOrderBy = column.order this.pageData();
this.pageData()
}, },
pageNumberChange(val) { pageNumberChange(val) {//页码更新操作
//页码更新操作 this.pageForm.pageNumber = val;
this.pageForm.pageNumber = val this.pageData();
this.pageData()
}, },
pageSizeChange(val) { pageSizeChange(val) {//分页大小更新操作
//分页大小更新操作 this.pageForm.pageSize = val;
this.pageForm.pageSize = val this.pageData();
this.pageData()
}, },
pageData() { pageData() {//加载分页数据
//加载分页数据 sublime.showLoadingbar();//显示loading
sublime.showLoadingbar() //显示loading
this.tabLoading = true this.tabLoading = true
$.post( $.post(base + "/platform/zgfw/lxy/metj/pageData", this.pageForm, (data) => {
base + "/platform/zgfw/lxy/metj/pageData", sublime.closeLoadingbar();//关闭loading
this.pageForm, this.tabLoading = false
(data) => { if (data.code == 0) {
sublime.closeLoadingbar() //关闭loading this.tableData = data.data.list;
this.tabLoading = false this.pageForm.totalCount = data.data.totalCount;
if (data.code == 0) { } else {
this.tableData = data.data.list this.$message({
this.pageForm.totalCount = data.data.totalCount message: data.msg,
} else { type: 'error'
this.$message({ });
message: data.msg, }
type: "error" }, "json");
}) },
}
},
"json"
)
}
}, },
async created() { async created() {
this.unions = await getUnions() this.unions = await getUnions()
this.lxyHd = await getNowLxyHd() this.lxyHd = await getNowLxyHd()
this.pageForm.hdid = this.lxyHd[0].id this.pageForm.hdid = this.lxyHd[0].id
this.pageData() this.pageData();
} }
}) })
</script> </script>
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
<template #func> <template #func>
<el-button @click="yjTg" size="small" type="primary">一键通过</el-button> <el-button @click="yjTg" size="small" type="primary">一键通过</el-button>
<el-button @click="downLoadAll" size="small" type="primary">一键下载材料</el-button> <!-- <el-button @click="downLoadAll" size="small" type="primary">一键下载材料</el-button>-->
</template> </template>
</vi-title2> </vi-title2>
<el-table <el-table
@@ -58,7 +58,7 @@ layout("/layouts/platform.html"){
<el-link @click="lxy_app.openView(scope.row.id)" type="primary">{{scope.row.name}}</el-link> <el-link @click="lxy_app.openView(scope.row.id)" type="primary">{{scope.row.name}}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="基层工会" prop="unionname"></el-table-column> <el-table-column align="center" header-align="center" label="分工会" prop="unionname"></el-table-column>
<el-table-column align="center" header-align="center" label="活动场地" prop="hdcd" show-overflow-tooltip></el-table-column> <el-table-column align="center" header-align="center" label="活动场地" prop="hdcd" show-overflow-tooltip></el-table-column>
@@ -132,23 +132,29 @@ layout("/layouts/platform.html"){
tooltip-effect="dark" tooltip-effect="dark"
> >
<el-table-column :reserve-selection="true" :selectable="checkboxT" disabled type="selection" width="55"></el-table-column> <el-table-column :reserve-selection="true" :selectable="checkboxT" disabled type="selection" width="55"></el-table-column>
<el-table-column label="序号" type="index" width="50" header-align="center" align="center"></el-table-column>
<el-table-column align="center" header-align="center" label="工号" prop="loginname"></el-table-column> <el-table-column align="center" header-align="center" label="工号" prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名" prop="username"></el-table-column> <el-table-column align="center" header-align="center" label="姓名" prop="username"></el-table-column>
<el-table-column align="center" header-align="center" label="性别" prop="sex" sortable width="80"></el-table-column> <el-table-column align="center" header-align="center" label="性别" prop="sex" sortable width="80"></el-table-column>
<el-table-column align="center" header-align="center" label="年龄" prop="age" sortable width="80"></el-table-column> <el-table-column align="center" header-align="center" label="民族" prop="nation" sortable width="80"></el-table-column>
<el-table-column align="center" header-align="center" label="手机号码" prop="mobile"></el-table-column> <el-table-column align="center" header-align="center" label="疗休养员身份" prop="zyhj" show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" label="身份证号" prop="idcard"></el-table-column> <el-table-column align="center" header-align="center" label="身份证号" prop="idcard"></el-table-column>
<el-table-column align="center" header-align="center" label="获奖名称" prop="zyhj" show-overflow-tooltip></el-table-column> <el-table-column align="center" header-align="center" label="联系电话" prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="备注" prop="bz" show-overflow-tooltip></el-table-column> <el-table-column
align="center"
header-align="center"
label="是否为ABCDE类高层次人才"
prop="talent"
show-overflow-tooltip
></el-table-column>
<el-table-column align="center" header-align="center" label="报名状态" prop="bmzt"> <el-table-column align="center" header-align="center" label="报名状态" prop="bmzt">
<template scope="scope"> <template scope="scope">
<span style="color: #e6a23c" v-if="scope.row.bmzt==1">待基层工会审核</span> <span style="color: #e6a23c" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==2">基层工会审核未通过</span> <span style="color: #f56c6c" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span> <span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #f56c6c" v-if="scope.row.bmzt==4">校工会审核未通过</span> <span style="color: #f56c6c" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67c23a" v-if="scope.row.bmzt==5">报名成功</span> <span style="color: #67c23a" v-if="scope.row.bmzt==5">报名成功</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写个人资料</span> <!-- <span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写个人资料</span>-->
</template> </template>
</el-table-column> </el-table-column>
@@ -160,7 +166,7 @@ layout("/layouts/platform.html"){
<span class="ti-angle-down"></span> <span class="ti-angle-down"></span>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">查看</el-dropdown-item> <!-- <el-dropdown-item :command="{type:'view',data:row}">查看</el-dropdown-item>-->
<el-dropdown-item :command="{type:'Review',data:row}" :disabled="row.bmzt==5">审核</el-dropdown-item> <el-dropdown-item :command="{type:'Review',data:row}" :disabled="row.bmzt==5">审核</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
@@ -182,9 +188,8 @@ layout("/layouts/platform.html"){
</template> </template>
</guava> </guava>
<el-dialog :close-on-click-modal="false" :visible.sync="viewDialogSh" custom-class="ViewDialogClass" top="3%" width="60%"> <el-dialog :close-on-click-modal="false" title="校工会审核" :visible.sync="viewDialogSh" custom-class="ViewDialogClass" top="3%" width="60%">
<el-form label-position="right" label-width="120px" style="padding: 20px 0"> <el-form label-position="right" label-width="120px" style="padding: 20px 0">
<vi-title title="个人信息"></vi-title>
<el-row gutter="20"> <el-row gutter="20">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="工号:">{{ viewData.loginname }}</el-form-item> <el-form-item label="工号:">{{ viewData.loginname }}</el-form-item>
@@ -192,83 +197,28 @@ layout("/layouts/platform.html"){
<el-col :span="8"> <el-col :span="8">
<el-form-item label="姓名:">{{ viewData.username }}</el-form-item> <el-form-item label="姓名:">{{ viewData.username }}</el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="职务:">{{ viewData.zw }}</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="人事编制:">{{ viewData.rsbz }}</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="性别:">{{ viewData.sex }}</el-form-item> <el-form-item label="性别:">{{ viewData.sex }}</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="年龄:">{{ viewData.age }}</el-form-item> <el-form-item label="民族:">{{ viewData.nation }}</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="所在单位:">{{ viewData.unitname }}</el-form-item> <el-form-item label="所在单位:">{{ viewData.unitname }}</el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="身份证号:">{{ viewData.idcard }}</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="手机号:">{{ viewData.mobile }}</el-form-item> <el-form-item label="手机号:">{{ viewData.mobile }}</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="身份证号:">{{ viewData.idcard }}</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="获奖名称:">{{ viewData.zyhj }}</el-form-item> <el-form-item label="获奖名称:">{{ viewData.zyhj }}</el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="8">
<el-form-item label="备注:">{{ viewData.bz }}</el-form-item> <el-form-item label="是否为ABCDE类高层次人才:">{{ viewData.talent }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<template v-if="viewData.files&&viewData.files.length">
<vi-title title="身份证复印件"></vi-title>
<div style="text-align: left">
<div style="display: inline-block; width: 100px; margin-right: 10px" v-for="item in viewData.files">
<div @click="dd3s.download(item.filepath,item.filename)" class="file-down-span">
<i class="el-icon-download"></i>
</div>
<el-image
:src="'${AppFileDomain!}'+item.filepath"
@click="dd3s.showpic(item.filepath)"
fit="cover"
style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)"
v-if="dd3s.isPic(item.filepath)"
></el-image>
<el-image src="***" style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" v-else>
<div
class="image-slot"
slot="error"
style="width: 100%; height: 100%; display: flex; align-items: center; text-align: center"
>
<span
style="
font-size: 12px;
color: rgb(180, 180, 180);
width: 100%;
text-align: center;
overflow: hidden;
padding: 0 10px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
"
>
{{item.filename}}
</span>
</div>
</el-image>
</div>
</div>
</template>
<vi-title style="margin-top: 10px" title="个人材料"></vi-title>
<el-descriptions :column="2" border>
<el-descriptions-item label="附件">
<file-upload :files="viewData.bmFiles" :view="true" v-if="viewData.bmFiles && viewData.bmFiles.length > 0"></file-upload>
<span v-else>暂无个人材料</span>
</el-descriptions-item>
</el-descriptions>
</el-form> </el-form>
<span class="dialog-footer" slot="footer" v-if="this.viewData.num==2"> <span class="dialog-footer" slot="footer" v-if="this.viewData.num==2">
<el-button @click="grsh(4)" type="danger">不通过</el-button> <el-button @click="grsh(4)" type="danger">不通过</el-button>
@@ -639,7 +589,7 @@ layout("/layouts/platform.html"){
}, },
async created() { async created() {
this.unions = await getUnions() this.unions = await getUnions()
this.lxyHd = await getNowLxyHd() this.lxyHd = await getLxyHd()
this.pageForm.hdid = this.lxyHd[0].id this.pageForm.hdid = this.lxyHd[0].id
this.pageData() this.pageData()
} }
@@ -1,15 +1,18 @@
<el-table :data="viewData.bm" size="medium" height="70vh"> <el-table :data="viewData.bm" size="medium" height="70vh">
<el-table-column label="序号" type="index" width="50" header-align="center" align="center"></el-table-column>
<el-table-column label="工号" prop="loginname" header-align="center" align="center"></el-table-column> <el-table-column label="工号" prop="loginname" header-align="center" align="center"></el-table-column>
<el-table-column label="姓名" prop="username" header-align="center" align="center"></el-table-column> <el-table-column label="姓名" prop="username" header-align="center" align="center"></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" sortable align="center"></el-table-column> <el-table-column label="性别" prop="sex" header-align="center" sortable align="center"></el-table-column>
<el-table-column label="年龄" prop="age" header-align="center" sortable align="center"></el-table-column> <el-table-column label="民族" prop="nation" header-align="center" sortable align="center"></el-table-column>
<el-table-column label="疗休养员身份" prop="zyhj" header-align="center" sortable align="center"></el-table-column>
<el-table-column label="身份证号" prop="idcard" header-align="center" align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center" align="center"></el-table-column> <el-table-column label="联系电话" prop="mobile" header-align="center" align="center"></el-table-column>
<el-table-column label="报名状态" prop="bmzt" header-align="center" align="center"> <el-table-column label="是否为ABCDE类高层次人才" prop="talent" header-align="center" align="center">
<template scope="scope"> <template scope="scope">
<span style="color: #e6a23c" v-if="scope.row.bmzt==1">待基层工会审核</span> <span style="color: #e6a23c" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span> <span style="color: #e6a23c" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #67c23a" v-if="scope.row.bmzt==5">审核已通过</span> <span style="color: #67c23a" v-if="scope.row.bmzt==5">审核已通过</span>
<span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写报名资料</span> <!-- <span style="color: #e6a23c" v-if="scope.row.bmzt==6">待填写报名资料</span>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -1,7 +1,10 @@
<el-table :data="viewData.mefp" size="medium"> <el-table :data="viewData.mefp" size="medium">
<el-table-column align="center" type="index" header-align="center" label="序号"></el-table-column> <el-table-column align="center" type="index" header-align="center"
label="序号"></el-table-column>
<el-table-column label="基层工会" prop="unionname" header-align="center" align="center"></el-table-column> <el-table-column label="分工会" prop="unionname" header-align="center"
align="center"></el-table-column>
<el-table-column label="名额" prop="number" header-align="center" width="200px" align="center"></el-table-column> <el-table-column label="名额" prop="number" header-align="center" width="200px"
align="center"></el-table-column>
</el-table> </el-table>