疗休养

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")
@@ -144,14 +141,21 @@ public class LxyFghShController {
@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;
@@ -139,6 +150,7 @@ public class LxyGhbmController {
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
@@ -185,13 +198,18 @@ public class LxyGhbmController {
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
""");
Cnd cnd = Cnd.NEW();
cnd.and("bm.bmzt","NOT IN",List.of(2,4,6));
cnd.and("bm.hdid","=",hdId);
cnd.and("bm.ghid","=",ghId);
cnd.groupBy("u.loginname");
cnd.desc("bm.bmzt");
sql.setCondition(cnd);
return lxyBmService.list(sql);
} }
List<Lxy_bm> bmList = Lang.collection2list(bmMapList, Lxy_bm.class);
lxyBmService.clear(Cnd.where("hdid", "=", bmList.get(0).getHdid()).and("ghid", "=", bmList.get(0).getGhid()).and("bmlx", "=", 1));
lxyGrxxService.clear(Cnd.where("hdid", "=", bmList.get(0).getHdid()).and("ghid", "=", bmList.get(0).getGhid()));
List<Lxy_grxx> grxxList = new ArrayList<>();
for (Lxy_bm bm : bmList) {
Lxy_bm fetch = lxyBmService.fetch(Cnd.where("hdid", "=", bm.getGhid()).and("userid", "=", bm.getUserid()).and("bmzt", "=", 3));
if (Lang.isNotEmpty(fetch)) {
continue;
}
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); @At
records.forEach(item -> { @Ok("void")
Lxy_grxx lxy_grxx = new Lxy_grxx(); @RequiresPermissions("zgfw.lxy.ghbm")
lxy_grxx.setLoginname(item.getString("loginname")); public void downloadImportTemp(HttpServletResponse response) {
lxy_grxx.setUsername(item.getString("username")); try {
lxy_grxx.setMobile(item.getString("mobile")); ViTool.excelResponse(response, "疗休养导入模版.xlsx");
lxy_grxx.setAge(item.getString("age")); ExportParams exportParams = new ExportParams();
lxy_grxx.setSex(item.getString("sex")); exportParams.setType(ExcelType.XSSF);
lxy_grxx.setZw(item.getString("position")); Workbook sheets = ExcelExportUtil.exportExcel(exportParams, LxyImportTemp.class, new ArrayList<>());
lxy_grxx.setRsbz(item.getString("preparedBy")); ServletOutputStream outputStream = response.getOutputStream();
lxy_grxx.setMz(item.getString("nation")); sheets.write(outputStream);
lxy_grxx.setIdcard(item.getString("idcard")); outputStream.close();
lxy_grxx.setChry(new ArrayList()); } catch (Exception e) {
lxy_grxx.setUserid(bm.getUserid()); e.printStackTrace();
lxy_grxx.setHdid(bm.getHdid());
lxy_grxx.setGhid(bm.getGhid());
grxxList.add(lxy_grxx);
});
} }
lxyBmService.insert(bmList);
lxyGrxxService.insert(grxxList);
return null;
} }
@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")
@@ -100,9 +106,19 @@ public class LxyHdTjController {
@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")
@@ -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,9 +153,9 @@ 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,
@@ -158,30 +163,36 @@ public class LxyXghshController {
u.id uid, u.id uid,
u.loginname, u.loginname,
u.username, u.username,
u.unitname,
u.unionname,
u.sex, u.sex,
u.mobile, bm.age,
TIMESTAMPDIFF(YEAR,u.birthday,CURDATE()) age, bm.mobile,
bm.idcard,
bm.unitname,
bm.bmzt, bm.bmzt,
bm.zyhj,
bm.nation,
bm.talent,
bm.bz,
bm.ghid bm.ghid
FROM lxy_bm bm FROM
lxy_bm bm
LEFT JOIN lxy_hd hd ON hd.id = bm.hdid LEFT JOIN lxy_hd hd ON hd.id = bm.hdid
LEFT JOIN Lxy_grxx l ON l.userid = bm.userid LEFT JOIN sys_user u ON u.id = bm.userid
LEFT JOIN `user` u ON u.id = bm.userid LEFT JOIN sys_unit unit ON u.unitid = unit.id
WHERE bm.bmzt IN (3,4,5) AND bm.hdid = @hdid LEFT JOIN Lxy_grxx l ON l.loginname = u.loginname
AND bm.ghid = @ghid $condition
GROUP BY u.username
ORDER BY bm.bmzt ASC
"""); """);
sql.setParam("hdid", hdId);
sql.setParam("ghid", ghId); Cnd cnd = Cnd.NEW();
// List<Record> list = lxyBmService.list(sql); cnd.and("bm.bmzt", "NOT IN", List.of(2, 4, 6));
cnd.and("bm.hdid", "=", hdId);
cnd.and("bm.ghid", "=", ghId);
cnd.groupBy("u.loginname");
cnd.desc("bm.bmzt");
sql.setCondition(cnd);
Pagination pagination = lxyBmService.listPage(pageNumber, pageSize, sql); Pagination pagination = lxyBmService.listPage(pageNumber, pageSize, sql);
return Result.success().addData(pagination); return Result.success().addData(pagination);
} catch (Exception e) {
return Result.error();
}
} }
@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();
response.setContentType("application/x-msdownload;charset=utf-8");
/**
* 创建临时文件夹
*/
String tmpPath = "tmp/" + R.UU32();
File tmpDir = new File(tmpPath + "/报名人员材料");
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"))) { if (StrUtil.isNotBlank(item.getString("files"))) {
List<Sys_file> fileList = Json.fromJsonAsList(Sys_file.class, item.getString("files")); List<Sys_file> fileList = Json.fromJsonAsList(Sys_file.class, item.getString("files"));
fileList.forEach(file -> {
try { try {
for (int i = 0; i < fileList.size(); i++) { FileOutputStream outputStream = new FileOutputStream(tDir.getPath() + "/" + file.getFilename());
Sys_file file = fileList.get(0); ftpService.download(file.getFilepath(), outputStream);
String fileName = item.getString("username"); outputStream.close();
if (fileList.size() > 1) {
fileName = fileName + (i + 1);
}
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) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
}
}); });
zipOutputStream.flush(); }
zipOutputStream.close(); });
ftpClient.logout(); });
String aimsDir = "zipTmp/" + R.UU32();
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;
}
@@ -3,11 +3,7 @@
<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"
icon="el-icon-download">下载模板
</el-button>
</el-card> </el-card>
</el-timeline-item> </el-timeline-item>
<el-timeline-item timestamp="上传文件" placement="top"> <el-timeline-item timestamp="上传文件" placement="top">
@@ -23,27 +19,28 @@
<el-upload <el-upload
name="file" name="file"
ref="upload" ref="upload"
:on-remove="(file, fileList) => { :on-remove="
importData.fileList = fileHandleRemove(file, fileList); (file, fileList) => {
importData.fileList = fileHandleRemove(file, fileList)
importResult = { importResult = {
errorCount: 0, errorCount: 0,
successCount: 0, successCount: 0,
totalCount: 0, totalCount: 0,
errorList: [] errorList: []
} }
}" }
:on-change="(file, fileList) => { "
:on-change="
(file, fileList) => {
importData.fileList = fileHandleChange(file, fileList, { type: ['xls', 'xlsx'] }) importData.fileList = fileHandleChange(file, fileList, { type: ['xls', 'xlsx'] })
}" }
"
:auto-upload="false" :auto-upload="false"
:limit="1" :limit="1"
:file-list="importData.fileList"> :file-list="importData.fileList"
<el-button size="medium" type="" icon="el-icon-upload" >
style="width: 200px">选择文件 <el-button size="medium" type="" icon="el-icon-upload" style="width: 200px">选择文件</el-button>
</el-button> <div class="el-upload__tip" slot="tip" style="color: #f56c6c">只能上传 xls/xlsx 文件</div>
<div class="el-upload__tip" slot="tip" style="color: #F56C6C">
只能上传 xls/xlsx 文件
</div>
</el-upload> </el-upload>
</el-form> </el-form>
</el-card> </el-card>
@@ -51,10 +48,15 @@
<el-timeline-item placement="top" timestamp="导入结果"> <el-timeline-item placement="top" timestamp="导入结果">
<el-card shadow="never"> <el-card shadow="never">
<p>总记录数:{{ errorInfoData.totalCount }}</p> <p>总记录数:{{ errorInfoData.totalCount }}</p>
<p>成功数:<span class="text-success">{{ errorInfoData.successCount }}</span></p> <p>
<p>错误数:<span class="text-danger">{{ errorInfoData.errorCount }}</span></p> 成功数:
<el-link @click="exportErrors" type="primary" v-if="errorInfoData.errorCount>0">下载错误记录 <span class="text-success">{{ errorInfoData.successCount }}</span>
</el-link> </p>
<p>
错误数:
<span class="text-danger">{{ errorInfoData.errorCount }}</span>
</p>
<el-link @click="exportErrors" type="primary" v-if="errorInfoData.errorCount > 0">下载错误记录</el-link>
</el-card> </el-card>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
@@ -64,7 +66,6 @@
<el-button type="primary" @click="doImport" :loading="importLoading">确 定</el-button> <el-button type="primary" @click="doImport" :loading="importLoading">确 定</el-button>
</span> </span>
</div> </div>
</div> </div>
</template> </template>
@@ -73,14 +74,14 @@ 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() { mounted() {
const s = document.createElement('script'); const s = document.createElement("script")
s.type = 'text/javascript'; s.type = "text/javascript"
s.src = '/assets/platform/js/xlsx.full.min.js'; s.src = "/assets/platform/js/xlsx.full.min.js"
document.body.appendChild(s); document.body.appendChild(s)
}, },
data() { data() {
return { return {
@@ -94,8 +95,8 @@ module.exports = {
totalCount: 0, totalCount: 0,
successCount: 0, successCount: 0,
errorCount: 0, errorCount: 0,
errorList: 0, errorList: 0
}, }
} }
}, },
methods: { methods: {
@@ -108,25 +109,25 @@ module.exports = {
totalCount: 0, totalCount: 0,
successCount: 0, successCount: 0,
errorCount: 0, errorCount: 0,
errorList: 0, errorList: 0
} }
this.importLoading = false this.importLoading = false
}, },
doImport() { doImport() {
if (this.importData.fileList.length === 0) { if (this.importData.fileList.length === 0) {
this.$notify.error({ this.$notify.error({
title: '错误', title: "错误",
message: '请选择文件!' message: "请选择文件!"
}); })
// this.notifyWarning("请选择文件!") // this.notifyWarning("请选择文件!")
return return
} }
const data = new FormData(); const data = new FormData()
data.append("isFlag", this.importData.isFlag) data.append("isFlag", this.importData.isFlag)
data.append("projectId", this.project_id) data.append("projectId", this.project_id)
this.importData.fileList.forEach((val) => { this.importData.fileList.forEach((val) => {
data.append("file", val.raw, val.raw.name); data.append("file", val.raw, val.raw.name)
}); })
this.importLoading = true this.importLoading = true
$.ajax({ $.ajax({
url: this.post_url, url: this.post_url,
@@ -146,59 +147,58 @@ module.exports = {
} }
}, },
error: (data) => { error: (data) => {
this.$notify.warning("导入失败") this.$notify.warning(data.msg)
this.importLoading = false this.importLoading = false
} }
}); })
this.importLoading = false this.importLoading = false
}, },
exportErrors() { exportErrors() {
const data = this.errorInfoData.errorList 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) { fileHandleRemove(file, fileList) {
return fileList; return fileList
}, },
fileHandleChange(file, fileList, { type, size }) { fileHandleChange(file, fileList, { type, size }) {
const removeFile = () => { const removeFile = () => {
fileList.splice(fileList.findIndex(v => v === file)) fileList.splice(fileList.findIndex((v) => v === file))
} }
if (!file.size) { if (!file.size) {
this.$notify.warning('您选择的是空文件!') this.$notify.warning("您选择的是空文件!")
removeFile() removeFile()
} }
if (type && type.length && !type.includes(file.name.split('.').pop().toLowerCase())) { if (type && type.length && !type.includes(file.name.split(".").pop().toLowerCase())) {
this.$notify.warning(`文件只能是 ${type.map(v => v.toUpperCase()).join('/')} 格式!`) this.$notify.warning(`文件只能是 ${type.map((v) => v.toUpperCase()).join("/")} 格式!`)
removeFile() removeFile()
} }
@@ -207,8 +207,8 @@ module.exports = {
removeFile() removeFile()
} }
return fileList; return fileList
}, }
} }
} }
</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 {
@@ -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,7 +54,8 @@ 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>
@@ -51,34 +64,43 @@ layout("/layouts/platform.html"){
<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>
@@ -92,14 +114,17 @@ layout("/layouts/platform.html"){
: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>
@@ -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"
v-if="dd3s.isPic(row.ryfj)"
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="'${AppFileDomain!}'+row.ryfj" :src="'${AppFileDomain!}'+row.ryfj" @click="dd3s.showpic(row.ryfj)">
@click="dd3s.showpic(row.ryfj)" </el-image>
></el-image> <el-image v-else
<el-image v-else style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" src="***"> style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
<div src="***">
slot="error" <div slot="error" class="image-slot"
class="image-slot" style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
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>
<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"
v-if="dd3s.isPic(item.filepath)"
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="'${AppFileDomain!}'+item.filepath" :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)">
@click="dd3s.showpic(item.filepath)" </el-image>
></el-image> <el-image v-else
<el-image v-else style="width: 100px; height: 100px; box-shadow: 0 0 5px rgb(200, 200, 200)" src="***"> style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
<div src="***">
slot="error" <div slot="error" class="image-slot"
class="image-slot" style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
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;
>
<span
style="
font-size: 12px;
color: rgb(180, 180, 180);
width: 100%;
text-align: center;
overflow: hidden;
padding: 0 10px;
text-overflow: ellipsis; text-overflow: ellipsis;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical">{{item.filename}}</span>
"
>
{{item.filename}}
</span>
</div> </div>
</el-image> </el-image>
</div> </div>
@@ -241,10 +237,11 @@ layout("/layouts/platform.html"){
<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,7 +261,7 @@ layout("/layouts/platform.html"){
pageOrderName: "", pageOrderName: "",
pageOrderBy: "", pageOrderBy: "",
hdid: "" hdid: ""
} },
} }
}, },
methods: { methods: {
@@ -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( $.post(base + "/platform/zgfw/lxy/fghsh/sh", {
base + "/platform/zgfw/lxy/fghsh/sh",
{
hdid: this.pageForm.hdid, hdid: this.pageForm.hdid,
uid: this.pageForm.uid, uid: this.pageForm.uid,
bmzt: zt bmzt: zt,
}, }, (data) => {
(data) => {
loading.close() loading.close()
if (data.code == 0) { if (data.code == 0) {
this.$message({ this.$message({
message: "提交成功", message: '提交成功',
type: "success" type: 'success'
}) });
this.viewDialogSh = false this.viewDialogSh = false
this.pageData() this.pageData()
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" type: 'error'
}) });
} }
}, }, "json");
"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,
(data) => {
sublime.closeLoadingbar()
this.tabLoading = false this.tabLoading = false
if (data.code == 0) { if (data.code == 0) {
this.tableData = data.data.list this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount this.pageForm.totalCount = data.data.totalCount;
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" 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>
@@ -110,8 +138,8 @@ layout("/layouts/platform.html"){
: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,14 +236,13 @@ 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" maxnum="1"></tab-upload>
></tab-upload>
<!-- <table-upload :files.sync="row.ryfj"></table-upload>--> <!-- <table-upload :files.sync="row.ryfj"></table-upload>-->
<!-- <el-upload--> <!-- <el-upload-->
<!-- class="upload-demo"--> <!-- class="upload-demo"-->
@@ -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"
icon="el-icon-delete"
circle
:disabled="formData.chry.length==0" :disabled="formData.chry.length==0"
@click="delNotesItem(scope.$index)" @click="delNotesItem(scope.$index)"></el-button>
></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -262,8 +285,7 @@ layout("/layouts/platform.html"){
: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>
@@ -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,17 +486,17 @@ 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) {
@@ -482,12 +505,12 @@ layout("/layouts/platform.html"){
}, },
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",
@@ -738,65 +759,58 @@ layout("/layouts/platform.html"){
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,
(data) => {
sublime.closeLoadingbar() //关闭loading
this.tabLoading = false this.tabLoading = false
if (data.code == 0) { if (data.code == 0) {
this.tableData = data.data.list this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount this.pageForm.totalCount = data.data.totalCount;
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" 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>
@@ -146,8 +175,8 @@ layout("/layouts/platform.html"){
: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,36 +217,38 @@ 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"
:key="tabKey"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
:data="userData" :data="userData"
style="width: 100%" style="width: 100%" row-key="id" v-loading="userTableLoading"
row-key="id"
v-loading="userTableLoading"
size="medium" size="medium"
@sort-change="userPageOrder" @sort-change="userPageOrder">
> <el-table-column
<el-table-column :reserve-selection="true" type="selection" width="55"></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>
@@ -223,8 +259,8 @@ layout("/layouts/platform.html"){
: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">
@@ -233,13 +269,20 @@ layout("/layouts/platform.html"){
</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">
@@ -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)"
>
<el-image
fit="cover"
v-if="dd3s.isPic(item.filepath)"
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="'${AppFileDomain!}'+item.filepath" :src="'${AppFileDomain!}'+item.filepath"
@click="dd3s.showpic(item.filepath)" @click="dd3s.showpic(item.filepath)">
></el-image> </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"
<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">{{item.filename}}</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;
"
>
{{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, hdid: this.userPageForm.hdid,
unionid: this.userPageForm.unionid, unionid: this.userPageForm.unionid,
users: JSON.stringify(arr) users: JSON.stringify(arr)
}, }, (data) => {
(data) => {
loading.close() loading.close()
if (data.code == 0) { if (data.code == 0) {
this.$message({ this.$message({
message: "提交成功", message: '提交成功',
type: "success" type: 'success'
}) });
this.v = "index" this.v = 'index'
this.pageData() this.pageData()
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" 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,39 +501,32 @@ 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,
(data) => {
sublime.closeLoadingbar() //关闭loading
this.userTableLoading = false this.userTableLoading = false
if (data.code == 0) { if (data.code == 0) {
this.userData = data.data.list this.userData = data.data.list;
this.userPageForm.totalCount = data.data.totalCount this.userPageForm.totalCount = data.data.totalCount;
this.$nextTick(() => { this.$nextTick(() => {
const arr = JSON.parse(JSON.stringify(this.multipleSelection)) const arr = JSON.parse(JSON.stringify(this.multipleSelection))
this.userData.forEach((v) => { this.userData.forEach(v => {
if (arr.includes(v.id)) { if (arr.includes(v.id)) {
this.$refs.userTable.toggleRowSelection(v) this.$refs.userTable.toggleRowSelection(v)
} }
@@ -521,42 +535,35 @@ layout("/layouts/platform.html"){
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" 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 },
(data) => {
sublime.closeLoadingbar()
this.tabLoading = false this.tabLoading = false
if (data.code == 0) { if (data.code == 0) {
this.bmTableData = data.data this.bmTableData = data.data;
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" 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,
(data) => {
sublime.closeLoadingbar() //关闭loading
this.tabLoading = false this.tabLoading = false
if (data.code == 0) { if (data.code == 0) {
this.tableData = data.data.list this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount this.pageForm.totalCount = data.data.totalCount;
} else { } else {
this.$message({ this.$message({
message: data.msg, message: data.msg,
type: "error" 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>