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