疗休养

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