# Conflicts:
#	src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/apply/index.html
This commit is contained in:
=
2025-09-19 09:39:00 +08:00
183 changed files with 4782 additions and 2271 deletions
@@ -347,11 +347,14 @@ public class FamilyActivityApplyController {
public Result doSignUp(FamilyUser familyUser) { public Result doSignUp(FamilyUser familyUser) {
try { try {
lock.lock(); lock.lock();
FamilyActivity activity = dao.fetch(FamilyActivity.class, familyUser.getActivityId());
if(Lang.isEmpty(familyUser.getMobileColumnsValue())) {
return Result.error(99,"请填写" + activity.getKeyWord() + "信息");
}
boolean courseByUser = familyActivityService.isSignCourseByUser(familyUser.getCourseId(), SecurityUtil.getUserId()); boolean courseByUser = familyActivityService.isSignCourseByUser(familyUser.getCourseId(), SecurityUtil.getUserId());
if(courseByUser) { if(courseByUser) {
return Result.error(99,"您已报过该活动"); return Result.error(99,"您已报过该活动");
} }
FamilyActivity activity = familyActivityService.fetch(familyUser.getActivityId());
boolean validFamilyCount = familyActivityService.validFamilyCount(familyUser); boolean validFamilyCount = familyActivityService.validFamilyCount(familyUser);
if(validFamilyCount) { if(validFamilyCount) {
return Result.error(99,activity.getKeyWord() + "人数最多为" + activity.getFamilyMaxCount()); return Result.error(99,activity.getKeyWord() + "人数最多为" + activity.getFamilyMaxCount());
@@ -98,7 +98,7 @@ public class FamilyActivityStatisticsServiceImpl extends BaseServiceImpl<FamilyU
family_user tsuu family_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition $condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId); cnd.andEX("tsuu.courseId", "=", courseId);
@@ -150,7 +150,7 @@ public class FamilyActivityStatisticsServiceImpl extends BaseServiceImpl<FamilyU
family_user tsuu family_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition $condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId); cnd.andEX("tsuu.courseId", "=", courseId);
@@ -97,7 +97,7 @@ public class TrainSignUpActivityStatisticsServiceImpl extends BaseServiceImpl<Tr
train_sign_up_user tsuu train_sign_up_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition $condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId); cnd.andEX("tsuu.courseId", "=", courseId);
@@ -143,7 +143,7 @@ public class TrainSignUpActivityStatisticsServiceImpl extends BaseServiceImpl<Tr
train_sign_up_user tsuu train_sign_up_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition $condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId); cnd.andEX("tsuu.courseId", "=", courseId);
@@ -75,7 +75,12 @@ public class ActivityWorksCollectionReadController {
up.*, up.*,
co.NAME AS activityName, co.NAME AS activityName,
su.typeName AS subjectName, su.typeName AS subjectName,
wo.worksTypeName AS worksName wo.worksTypeName AS worksName,
(
SELECT COUNT(*)
FROM activity_works_collection_upload_like_num likeNum
WHERE likeNum.uploadId = up.id
) AS num
from from
activity_works_collection_upload up activity_works_collection_upload up
LEFT JOIN activity_works_collection co ON up.activityId = co.id LEFT JOIN activity_works_collection co ON up.activityId = co.id
@@ -99,6 +104,7 @@ public class ActivityWorksCollectionReadController {
if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("up.unionId", "=", SecurityUtil.getUnionId()); cnd.and("up.unionId", "=", SecurityUtil.getUnionId());
} }
cnd.desc("up.createdAt");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -121,7 +127,12 @@ public class ActivityWorksCollectionReadController {
co.NAME AS activityName, co.NAME AS activityName,
su.typeName AS subjectName, su.typeName AS subjectName,
wo.worksTypeName AS worksName, wo.worksTypeName AS worksName,
u.sex u.sex,
(
SELECT COUNT(*)
FROM activity_works_collection_upload_like_num likeNum
WHERE likeNum.uploadId = up.id
) AS num
from from
activity_works_collection_upload up activity_works_collection_upload up
LEFT JOIN activity_works_collection co ON up.activityId = co.id LEFT JOIN activity_works_collection co ON up.activityId = co.id
@@ -145,6 +156,7 @@ public class ActivityWorksCollectionReadController {
if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("up.unionId", "=", SecurityUtil.getUnionId()); cnd.and("up.unionId", "=", SecurityUtil.getUnionId());
} }
cnd.desc("num");
sql.setCondition(cnd); sql.setCondition(cnd);
List<NutMap> listMap = baseService.listMap(sql); List<NutMap> listMap = baseService.listMap(sql);
@@ -159,7 +171,7 @@ public class ActivityWorksCollectionReadController {
exportEntities.add(new ExcelExportEntity("作品类型", "worksName", 20)); exportEntities.add(new ExcelExportEntity("作品类型", "worksName", 20));
exportEntities.add(new ExcelExportEntity("作品名称", "name", 20)); exportEntities.add(new ExcelExportEntity("作品名称", "name", 20));
exportEntities.add(new ExcelExportEntity("作品描述", "description", 20)); exportEntities.add(new ExcelExportEntity("作品描述", "description", 20));
//exportEntities.add(new ExcelExportEntity("点赞次数", "dz_num", 20)); exportEntities.add(new ExcelExportEntity("点赞次数", "num", 20));
try { try {
ExportParams exportParams = new ExportParams(); ExportParams exportParams = new ExportParams();
@@ -1,12 +1,10 @@
package com.budwk.app.zhgh.activity.workscollection.controller; package com.budwk.app.zhgh.activity.workscollection.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm; import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService; import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.views.View_user; import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope; import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
@@ -27,7 +25,6 @@ import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param; import org.nutz.mvc.annotation.Param;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@@ -50,6 +47,8 @@ public class ActivityWorksCollectionUploadController {
public void index() { public void index() {
} }
/** /**
* @param pageForm 分页 * @param pageForm 分页
* @param activityId 活动id * @param activityId 活动id
@@ -63,6 +62,8 @@ public class ActivityWorksCollectionUploadController {
select select
up.*, up.*,
co.NAME AS activityName, co.NAME AS activityName,
co.startDateTime AS activityStartDateTime,
co.endDateTime AS activityEndDateTime,
su.typeName AS subjectName, su.typeName AS subjectName,
wo.worksTypeName AS worksName wo.worksTypeName AS worksName
from from
@@ -78,6 +79,7 @@ public class ActivityWorksCollectionUploadController {
cnd.andEX("up.activityId", "=", activityId); cnd.andEX("up.activityId", "=", activityId);
cnd.andEX("up.subjectId", "=", subjectId); cnd.andEX("up.subjectId", "=", subjectId);
cnd.andEX("up.worksId", "=", worksId); cnd.andEX("up.worksId", "=", worksId);
cnd.desc("up.createdAt");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -91,8 +93,12 @@ public class ActivityWorksCollectionUploadController {
@At @At
@SaCheckPermission("activity.workscollection.upload") @SaCheckPermission("activity.workscollection.upload")
public Result insert(@Param("data") @Valid Activity_works_collection_upload upload) { public Result insert(@Param("data") @Valid Activity_works_collection_upload upload) {
String activityId = upload.getActivityId(); String activityId = upload.getActivityId();
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, activityId); Activity_works_collection activity = dao.fetch(Activity_works_collection.class, activityId);
if (activity.getEndDateTime().getTime() < System.currentTimeMillis()){
return Result.error("活动已结束!");
}
if (activity.getActivityGroupId() != null) { if (activity.getActivityGroupId() != null) {
int count = dao.count(ActivityUserScope.class, Cnd.where(ActivityUserScope::getGroupId, "=", activity.getActivityGroupId()) int count = dao.count(ActivityUserScope.class, Cnd.where(ActivityUserScope::getGroupId, "=", activity.getActivityGroupId())
.and(ActivityUserScope::getUserId, "=", SecurityUtil.getUserId())); .and(ActivityUserScope::getUserId, "=", SecurityUtil.getUserId()));
@@ -119,6 +125,10 @@ public class ActivityWorksCollectionUploadController {
@At @At
@SaCheckPermission("activity.workscollection.upload") @SaCheckPermission("activity.workscollection.upload")
public Result update(@Param("data") @Valid Activity_works_collection_upload upload) { public Result update(@Param("data") @Valid Activity_works_collection_upload upload) {
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getEndDateTime().getTime() < System.currentTimeMillis()){
return Result.error("活动已结束!");
}
dao.updateIgnoreNull(upload); dao.updateIgnoreNull(upload);
return Result.success(); return Result.success();
} }
@@ -133,6 +143,11 @@ public class ActivityWorksCollectionUploadController {
@At @At
@SaCheckPermission("activity.workscollection.upload") @SaCheckPermission("activity.workscollection.upload")
public Result delete(@Valid String id) { public Result delete(@Valid String id) {
Activity_works_collection_upload upload = dao.fetch(Activity_works_collection_upload.class, id);
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getEndDateTime().getTime() < System.currentTimeMillis()){
return Result.error("活动已结束!");
}
dao.delete(Activity_works_collection_upload.class, id); dao.delete(Activity_works_collection_upload.class, id);
return Result.success(); return Result.success();
} }
@@ -1,42 +0,0 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* 手机端作品征集
*/
@IocBean
@At("/platform/h5/activity/worksCollection")
@Ok("json:full")
public class H5ActivityWorksCollectionController {
/**
* 活动列表页面
*/
@At("/activity")
@Ok("beetl:/platform/zhghh5/activity/workscollection/activity/index.html")
@SaCheckPermission("activity.workscollection.upload")
public void activity() {
}
/**
* 上传页面
*/
@At("/upload")
@Ok("beetl:/platform/zhghh5/activity/workscollection/upload/index.html")
@SaCheckPermission("activity.workscollection.upload")
public void upload() {
}
/**
* 我的上传页面
*/
@At("/upload/mine")
@Ok("beetl:/platform/zhghh5/activity/workscollection/upload/mine.html")
@SaCheckPermission("activity.workscollection.upload")
public void uploadMine() {
}
}
@@ -0,0 +1,36 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.service.BaseService;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* @author zhf
* @date 2025/9/16 08:54
* @description 我的作品
*/
@IocBean
@At("/platform/activity/worksCollection/mine/h5")
@Ok("json:full")
@ApiOperation("手机端我的作品")
public class H5ActivityWorksMineCollectionController {
@Inject
private BaseService baseService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/zhghh5/activity/workscollection/mine/index.html")
@SaCheckPermission("h5.activity.workscollection.mine")
public void index() {
}
}
@@ -0,0 +1,158 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection_upload;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection_upload_like_num;
import com.budwk.app.zhgh.activity.workscollection.param.ActivityWorksCollectionReadPageParam;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import javax.validation.Valid;
/**
* @author zhf
* @date 2025/9/18 10:00
* @description
*/
@IocBean
@At("/platform/activity/worksCollection/read/h5")
@Ok("json:full")
@ApiOperation("手机端作品阅览")
public class H5ActivityWorksReadCollectionController {
@Inject
private BaseService baseService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/zhghh5/activity/workscollection/read/index.html")
@SaCheckPermission("h5.activity.workscollection.read")
public void index() {
}
@At
@SaCheckPermission("h5.activity.workscollection.read")
public Result pageData(@Valid ActivityWorksCollectionReadPageParam pageForm) {
Sql sql = Sqls.create("""
select
up.*,
co.NAME AS activityName,
co.nbCount,
su.typeName AS subjectName,
wo.worksTypeName AS worksName,
(
SELECT COUNT(*)
FROM activity_works_collection_upload_like_num likeNum
WHERE likeNum.uploadId = up.id
) AS num,
EXISTS(
SELECT 1
FROM activity_works_collection_upload_like_num thisLikeNum
WHERE thisLikeNum.uploadId = up.id
AND thisLikeNum.userId = @userId
) AS isThisLike
from
activity_works_collection_upload up
LEFT JOIN activity_works_collection co ON up.activityId = co.id
LEFT JOIN activity_works_subjecttype su ON up.subjectId = su.id
LEFT JOIN activity_works_workstype wo ON up.worksId = wo.id
$condition
""").setParam("userId", SecurityUtil.getUserId());
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(co.startDateTime)", "=", pageForm.getYear());
cnd.andEX("up.activityId", "=", pageForm.getActivityId());
cnd.andEX("up.subjectId", "=", pageForm.getSubjectId());
cnd.andEX("up.worksId", "=", pageForm.getWorksId());
cnd.andEX("unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId());
if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("userName", pageForm.getSearchKeyword());
seg.orLike("loginName", pageForm.getSearchKeyword());
cnd.and(seg);
}
if (pageForm.getPageOrderName().equals("num")) {
cnd.desc(pageForm.getPageOrderName()).asc("createdAt");
} else {
cnd.asc(pageForm.getPageOrderName());
}
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("点赞")
@SLog(tag = "作品点赞", msg = "作品Id:${uploadId}")
@SaCheckPermission("h5.activity.workscollection.read")
public Result doLike(@Valid String uploadId) {
Activity_works_collection_upload upload = dao.fetch(Activity_works_collection_upload.class, uploadId);
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getNbStartDateTime().getTime() > System.currentTimeMillis()) {
return Result.error("点赞未开始!开始时间:" + DateUtil.format(activity.getNbStartDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
if (activity.getNbEndDateTime().getTime() < System.currentTimeMillis()) {
return Result.error("点赞已结束!结束时间:" + DateUtil.format(activity.getNbEndDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
int count = dao.count(Activity_works_collection_upload_like_num.class,
Cnd.where(Activity_works_collection_upload_like_num::getActivityId, "=", activity.getId())
.and("DATE(FROM_UNIXTIME(createdAt / 1000))", "=", DateUtil.today())
.and(Activity_works_collection_upload_like_num::getUserId, "=", SecurityUtil.getUserId()));
if (count >= activity.getNbCount()) {
return Result.error("当前活动每天只能点赞" + activity.getNbCount() + "次!");
}
View_user vwUser = dao.fetch(View_user.class, Cnd.where(View_user::getId, "=", SecurityUtil.getUserId()));
Activity_works_collection_upload_like_num likeNum = new Activity_works_collection_upload_like_num();
likeNum.setUploadId(uploadId);
likeNum.setActivityId(activity.getId());
likeNum.setUserId(SecurityUtil.getUserId());
likeNum.setUserName(SecurityUtil.getUserUsername());
likeNum.setLoginName(SecurityUtil.getUserLoginname());
likeNum.setUnitId(SecurityUtil.getUnitId());
likeNum.setUnitName(vwUser.getUnitName());
likeNum.setUnionId(SecurityUtil.getUnionId());
likeNum.setUnionName(vwUser.getUnionName());
dao.insert(likeNum);
return Result.success();
}
@At
@ApiOperation("取消点赞")
@SaCheckPermission("h5.activity.workscollection.read")
public Result doDeleteLike(@Valid String uploadId) {
Activity_works_collection_upload upload = dao.fetch(Activity_works_collection_upload.class, uploadId);
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getNbStartDateTime().getTime() > System.currentTimeMillis()) {
return Result.error("点赞未开始!开始时间:" + DateUtil.format(activity.getNbStartDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
if (activity.getNbEndDateTime().getTime() < System.currentTimeMillis()) {
return Result.error("点赞已结束!结束时间:" + DateUtil.format(activity.getNbEndDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
dao.clear(Activity_works_collection_upload_like_num.class,
Cnd.where(Activity_works_collection_upload_like_num::getUploadId, "=", uploadId)
.and(Activity_works_collection_upload_like_num::getUserId, "=", SecurityUtil.getUserId()));
return Result.success();
}
}
@@ -0,0 +1,79 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* 手机端作品征集
*/
@IocBean
@At("/platform/activity/worksCollection/upload/h5")
@Ok("json:full")
@ApiOperation("手机端作品征集")
public class H5ActivityWorksUploadCollectionController {
@Inject
private BaseService baseService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/zhghh5/activity/workscollection/upload/index.html")
@SaCheckPermission("h5.activity.workscollection.upload")
public void index() {
}
@At
@ApiOperation("活动查询")
@SaCheckPermission(value = {"h5.activity.workscollection.upload"}, mode = SaMode.OR)
public Result activityPageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "activityType") Integer activityType) {
Sql sql = Sqls.create("""
SELECT
awc.*,
aus.groupName activityGroupName
FROM
`activity_works_collection` awc
LEFT JOIN activity_user_scope aus ON aus.groupId = awc.activityGroupId
AND aus.userId = @userId
""").setParam("userId", SecurityUtil.getUserId());
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(awc.startDateTime)", "=", year);
//查询报名中
if (activityType == 2) {
cnd.and(new Static("now() > awc.startDateTime and now() < awc.endDateTime"));
}//查询已结束的
else if (activityType == 3) {
cnd.and(new Static("now() > awc.startDateTime"));
} else if (activityType == 4) {
cnd.and(new Static("now() < awc.endDateTime"));
}
cnd.and("awc.enable", "=", 1);
cnd.and("awc.type", "=", 1);
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
}
@@ -0,0 +1,72 @@
package com.budwk.app.zhgh.activity.workscollection.models;
import com.budwk.app.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
/**
* @author zhf
* @date 2025/9/18 10:46
* @description 作品点赞数量
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Table("activity_works_collection_upload_like_num")
@TableMeta("{'mysql-charset':'utf8mb4'}")
@Comment("作品点赞数量")
public class Activity_works_collection_upload_like_num extends BaseModel {
@Name
@Comment("ID")
@PrevInsert(uu32 = true)
@ColDefine(type = ColType.VARCHAR, width = 32)
private String id;
@Column
@Comment("活动Id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String activityId;
@Column
@Comment("作品Id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String uploadId;
@Column
@Comment("点赞人id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String userId;
@Column
@Comment("点赞人姓名")
@ColDefine(type = ColType.VARCHAR, width = 100, notNull = true)
private String userName;
@Column
@Comment("点赞人工号")
@ColDefine(type = ColType.VARCHAR, width = 100, notNull = true)
private String loginName;
@Column
@Comment("点赞人单位id")
@ColDefine(type = ColType.VARCHAR, width = 200, notNull = true)
private String unitId;
@Column
@Comment("点赞人单位")
@ColDefine(type = ColType.VARCHAR, width = 200, notNull = true)
private String unitName;
@Column
@Comment("点赞人分工会id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String unionId;
@Column
@Comment("点赞人分工会")
@ColDefine(type = ColType.VARCHAR, width = 50, notNull = true)
private String unionName;
}
@@ -0,0 +1,50 @@
package com.budwk.app.zhgh.dayofficework.message.example;
import com.budwk.app.zhgh.dayofficework.message.service.GlobalMessageSendService;
import lombok.extern.slf4j.Slf4j;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import java.util.Arrays;
import java.util.List;
/**
* 全局消息发送使用示例
* 展示如何使用简化的API发送消息
*/
@IocBean
@Slf4j
public class MessageSendExample {
@Inject
private GlobalMessageSendService globalMessageSendService;
/**
* 示例1:发送简单的系统通知(自动发送到所有启用的渠道)
*/
public void sendSimpleNotification() {
String title = "系统维护通知";
String content = "系统将于今晚22:00-24:00进行维护,请提前保存工作内容。";
List<String> receiverIds = Arrays.asList("user1", "user2", "user3");
// 最简单的调用方式,自动发送到所有启用的渠道
globalMessageSendService.sendMessage(title, content, receiverIds);
log.info("简单系统通知发送完成");
}
/**
* 示例2:发送待办通知(自动发送到所有启用的渠道)
*/
public void sendTodoNotification() {
String title = "审批待办";
String content = "您有一个新的审批任务需要处理,请及时登录系统查看。";
List<String> receiverIds = Arrays.asList("manager1", "manager2");
// 自动发送到所有启用的渠道
globalMessageSendService.sendMessage(title, content, 2, receiverIds, null);
log.info("待办通知发送完成");
}
}
@@ -79,7 +79,7 @@ public class OutlayReimburseApplyController {
@ApiOperation("查询这个预算已经报销了的金额") @ApiOperation("查询这个预算已经报销了的金额")
@SaCheckPermission(value = {"outlay.reimburse.apply", "h5.outlay.reimburse.apply"}, mode = SaMode.OR) @SaCheckPermission(value = {"outlay.reimburse.apply", "h5.outlay.reimburse.apply"}, mode = SaMode.OR)
public Result getBxMoneyByBudgetId(String budgetId) { public Result getBxMoneyByBudgetId(String budgetId) {
return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId,null)); return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId));
} }
@@ -24,10 +24,9 @@ public interface OutlayReimburseApplyService extends BaseService<OutlayReimburse
/** /**
* 查询这个预算已经报销了的金额 * 查询这个预算已经报销了的金额
* @param budgetId * @param budgetId
* @param isSchoolBudget 是否是校会预算
* @return * @return
*/ */
BigDecimal getBxMoneyByActivityId(String budgetId,Boolean isSchoolBudget); BigDecimal getBxMoneyByActivityId(String budgetId);
/** /**
* 判断这个报销的记录预算是否充足 * 判断这个报销的记录预算是否充足
@@ -136,21 +136,19 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
} }
@Override @Override
public BigDecimal getBxMoneyByActivityId(String budgetId, Boolean isSchoolBudget) { public BigDecimal getBxMoneyByActivityId(String budgetId) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
rei.money rei.money
FROM FROM
`outlay_reimburse` rei `outlay_reimburse` rei
LEFT JOIN wf_process_instance ins ON ins.businessNo = rei.id LEFT JOIN wf_process_instance ins ON ins.businessNo = rei.id
WHERE $condition
rei.budgetId = @budgetId
AND ins.state = 20
""").setParam("budgetId", budgetId); """).setParam("budgetId", budgetId);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
if (isSchoolBudget != null) { cnd.and("rei.budgetId", "=", budgetId);
cnd.and("isSchoolBudget", "=", isSchoolBudget); cnd.and("ins.state", "=", 20);
} sql.setCondition(cnd);
List<NutMap> reiList = listMap(sql); List<NutMap> reiList = listMap(sql);
@@ -174,7 +172,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
if (budget.getIsRepeatReimburse()) { if (budget.getIsRepeatReimburse()) {
//1.查询已经报销了的总金额 //1.查询已经报销了的总金额
if (budget.getIsSchoolBudget()) { if (budget.getIsSchoolBudget()) {
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId, budget.getIsSchoolBudget()); BigDecimal bXMoney = getBxMoneyByActivityId(budgetId);
//如果是分工会进来并且报销的活动是校会预算 //如果是分工会进来并且报销的活动是校会预算
// 1. 计算本次加上之前的报销总金额 // 1. 计算本次加上之前的报销总金额
BigDecimal totalReimbursement = bXMoney.add(moneyBig); BigDecimal totalReimbursement = bXMoney.add(moneyBig);
@@ -185,7 +183,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
return Result.success(); return Result.success();
} }
} else { } else {
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId, budget.getIsSchoolBudget()); BigDecimal bXMoney = getBxMoneyByActivityId(budgetId);
//如果是自己的项目就能超20% //如果是自己的项目就能超20%
//1.算出现在还能报销多少钱 //1.算出现在还能报销多少钱
BigDecimal twentyPercent = budget.getTotalBudgetMoney().multiply(new BigDecimal("20")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); BigDecimal twentyPercent = budget.getTotalBudgetMoney().multiply(new BigDecimal("20")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
@@ -218,7 +216,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
//如果报销的项目是可以重复报销的 //如果报销的项目是可以重复报销的
if (budget.getIsRepeatReimburse()) { if (budget.getIsRepeatReimburse()) {
//这个预算已经报销了多少钱 //这个预算已经报销了多少钱
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId, null); BigDecimal totalMoney = getBxMoneyByActivityId(budgetId );
//查出这个活动有没有跟其他预算关联,如果跟其他预算关联了,代表当前这条预算是分工会也能报校工会也能报, //查出这个活动有没有跟其他预算关联,如果跟其他预算关联了,代表当前这条预算是分工会也能报校工会也能报,
// schoolBudgetId字段不为空就代表这条预算是使用的校工会的金额 // schoolBudgetId字段不为空就代表这条预算是使用的校工会的金额
List<ActivityBudget> budgetList = dao().query(ActivityBudget.class, List<ActivityBudget> budgetList = dao().query(ActivityBudget.class,
@@ -42,7 +42,7 @@ import java.util.List;
@Slf4j @Slf4j
@IocBean @IocBean
@Ok("json:full") @Ok("json:full")
@Api(tags = "慈善捐明细") @Api(tags = "慈善捐明细")
@At("/platform/contribution/detailed") @At("/platform/contribution/detailed")
public class ContributionDetailedController { public class ContributionDetailedController {
@@ -86,9 +86,9 @@ public class ContributionDetailedController {
List<ExcelExportEntity> entityList = new ArrayList<>(); List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("序号", "index", 10)); entityList.add(new ExcelExportEntity("序号", "index", 10));
entityList.add(new ExcelExportEntity("项目", "contributionName", 20)); entityList.add(new ExcelExportEntity("项目", "contributionName", 20));
entityList.add(new ExcelExportEntity("人工号", "loginName", 20)); entityList.add(new ExcelExportEntity("人工号", "loginName", 20));
entityList.add(new ExcelExportEntity("人姓名", "userName", 20)); entityList.add(new ExcelExportEntity("人姓名", "userName", 20));
entityList.add(new ExcelExportEntity("联系方式", "mobile", 20)); entityList.add(new ExcelExportEntity("联系方式", "mobile", 20));
entityList.add(new ExcelExportEntity("所属工会", "unionName", 20)); entityList.add(new ExcelExportEntity("所属工会", "unionName", 20));
entityList.add(new ExcelExportEntity("所属单位", "unitName", 20)); entityList.add(new ExcelExportEntity("所属单位", "unitName", 20));
@@ -99,6 +99,6 @@ public class ContributionDetailedController {
ExportParams exportParams = new ExportParams(); ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF); exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap);
CommonDownloadUtil.download("明细.xlsx", workbook, response); CommonDownloadUtil.download("明细.xlsx", workbook, response);
} }
} }
@@ -36,7 +36,7 @@ import java.util.List;
@Slf4j @Slf4j
@IocBean @IocBean
@Ok("json:full") @Ok("json:full")
@Api(tags = "慈善捐项目") @Api(tags = "慈善捐项目")
@At("/platform/contribution/list") @At("/platform/contribution/list")
public class ContributionProjectController { public class ContributionProjectController {
@@ -76,9 +76,9 @@ public class ContributionProjectController {
} }
@At @At
@ApiOperation("新增/修改慈善捐项目") @ApiOperation("新增/修改慈善捐项目")
@SaCheckPermission("contribution.list") @SaCheckPermission("contribution.list")
@SLog(type = "contribution", tag = "新增/修改慈善捐项目", msg = "新增/修改慈善捐项目") @SLog(type = "contribution", tag = "新增/修改慈善捐项目", msg = "新增/修改慈善捐项目")
public Object onSubmit(ContributionProject project) { public Object onSubmit(ContributionProject project) {
if(StrUtil.isBlank(project.getId())) { if(StrUtil.isBlank(project.getId())) {
project.setContributionCreationDate(DateUtil.now()); project.setContributionCreationDate(DateUtil.now());
@@ -88,16 +88,16 @@ public class ContributionProjectController {
} }
@At @At
@ApiOperation("删除慈善捐项目") @ApiOperation("删除慈善捐项目")
@SaCheckPermission("contribution.list") @SaCheckPermission("contribution.list")
@SLog(type = "contribution", tag = "删除慈善捐项目", msg = "删除慈善捐项目") @SLog(type = "contribution", tag = "删除慈善捐项目", msg = "删除慈善捐项目")
public Object onDelete(String id) { public Object onDelete(String id) {
typeService.dao().delete(ContributionProject.class, id); typeService.dao().delete(ContributionProject.class, id);
return Result.success(); return Result.success();
} }
@At @At
@ApiOperation("查询慈善捐项目") @ApiOperation("查询慈善捐项目")
@SaCheckPermission("contribution.list") @SaCheckPermission("contribution.list")
public Result queryContributionList() { public Result queryContributionList() {
List<ContributionProject> list = typeService.dao().query( List<ContributionProject> list = typeService.dao().query(
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@IocBean @IocBean
@Ok("json:full") @Ok("json:full")
@Api(tags = "慈善捐分工会统计") @Api(tags = "慈善捐分工会统计")
@At("/platform/contribution/statistics") @At("/platform/contribution/statistics")
public class ContributionStatisticsController { public class ContributionStatisticsController {
@@ -66,13 +66,13 @@ public class ContributionStatisticsController {
.stream() .stream()
.toList(); .toList();
//这个项目每个分工会有多少个人捐 //这个项目每个分工会有多少个人捐
List<ContributionApply> list = userList.stream() List<ContributionApply> list = userList.stream()
.filter(n -> n.getUnionId().equals(union.getId()) && n.getContributionId().equals(contributionId)) .filter(n -> n.getUnionId().equals(union.getId()) && n.getContributionId().equals(contributionId))
.toList(); .toList();
map.setv("contributionUserNum", list.size()); map.setv("contributionUserNum", list.size());
//捐多少笔 //捐多少笔
long conCount = applyList.stream() long conCount = applyList.stream()
.filter(n -> n.getUnionId().equals(union.getId()) && n.getContributionId().equals(contributionId)) .filter(n -> n.getUnionId().equals(union.getId()) && n.getContributionId().equals(contributionId))
.count(); .count();
@@ -6,6 +6,8 @@ import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm; import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionApply;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionProject;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionType; import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionType;
import com.budwk.app.zhgh.staffbenefit.contribution.service.ContributionTypeService; import com.budwk.app.zhgh.staffbenefit.contribution.service.ContributionTypeService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -13,9 +15,13 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.SqlExpressionGroup;
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.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;
@@ -31,7 +37,7 @@ import java.util.List;
@Slf4j @Slf4j
@IocBean @IocBean
@Ok("json:full") @Ok("json:full")
@Api(tags = "慈善捐专题") @Api(tags = "慈善捐专题")
@At("/platform/contribution/type") @At("/platform/contribution/type")
public class ContributionTypeController { public class ContributionTypeController {
@@ -63,28 +69,47 @@ public class ContributionTypeController {
} }
@At @At
@ApiOperation("新增/修改慈善捐专题") @ApiOperation("新增/修改慈善捐专题")
@SaCheckPermission("contribution.type") @SaCheckPermission("contribution.type")
@SLog(type = "contribution", tag = "新增/修改慈善捐专题", msg = "新增/修改慈善捐专题") @SLog(type = "contribution", tag = "新增/修改慈善捐专题", msg = "新增/修改慈善捐专题")
public Object onSubmit(ContributionType type) { public Object onSubmit(ContributionType type) {
typeService.insertOrUpdate(type); typeService.insertOrUpdate(type);
return Result.success(); return Result.success();
} }
@At @At
@ApiOperation("删除慈善捐专题") @ApiOperation("删除慈善捐专题")
@SaCheckPermission("contribution.type") @SaCheckPermission("contribution.type")
@SLog(type = "contribution", tag = "删除慈善捐专题", msg = "删除慈善捐专题") @SLog(type = "contribution", tag = "删除慈善捐专题", msg = "删除慈善捐专题")
public Object onDelete(String id) { public Object onDelete(String id) {
typeService.delete(id); typeService.delete(id);
return Result.success(); return Result.success();
} }
@At @At
@ApiOperation("查询慈善捐专题") @ApiOperation("查询慈善捐专题")
@SaCheckPermission("contribution.type") @SaCheckPermission("contribution")
public Result queryContributionType() { public Result queryContributionType() {
List<ContributionType> list = typeService.query(Cnd.NEW().desc(ContributionType::getTypeCode)); List<ContributionType> list = typeService.query(Cnd.NEW().desc(ContributionType::getTypeCode));
return Result.success(list); return Result.success(list);
} }
@At
@ApiOperation("查询单个慈善捐助专题")
@SaCheckPermission("contribution")
public Result fetchOne(String id) {
ContributionType type = typeService.fetch(id);
List<ContributionProject> list = dao.query(ContributionProject.class, Cnd.where(ContributionProject::getContributionTypeCode, "=", type.getTypeCode()).and(ContributionProject::getIsContributionEnable, "=", true));
List<String> projects = list.stream().map(ContributionProject::getId).toList();
List<ContributionApply> applyList = dao.query(ContributionApply.class, Cnd.where(ContributionApply::getContributionId, "in", projects));
double sum = applyList.stream().mapToDouble(ContributionApply::getMoney).sum();
NutMap nutMap = Lang.obj2nutmap(type);
nutMap.put("projectCount", list.size());
nutMap.put("totalMoney", sum);
nutMap.put("peopleCount", applyList.size());
return Result.success(nutMap);
}
} }
@@ -0,0 +1,115 @@
package com.budwk.app.zhgh.staffbenefit.contribution.h5Controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionApply;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
/**
* @ClassName H5ContributionListController
* @Author JyuHsin
* @Date 2025/9/18 11:12
* @Version 1.0
* @Description TODO
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "移动端-慈善捐助项目")
@At("/platform/contribution/list/h5")
public class H5ContributionListController {
@Inject
private Dao dao;
@Inject
private BaseService baseService;
@At("")
@SaCheckPermission("h5.contribution.list")
@Ok("beetl:/platform/zhghh5/staffbenefit/contribution/list/index.html")
public void index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("h5.contribution.list")
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "type") String type) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
con.*,
con.id as contributionId,
type.id as typeId,
type.typeName
FROM
`contribution_project` con
LEFT JOIN contribution_type type ON type.typeCode = con.contributionTypeCode
$condition
""");
cnd.andEX("con.contributionTypeCode", "=", type);
cnd.andEX("year(contributionCreationDate)", "=", year);
cnd.and("isContributionEnable", "=", true);
cnd.desc("contributionCreationDate");
cnd.asc("contributionMode");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("移动端-慈善捐助")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("h5.contribution.list")
@SLog(tag = "慈善捐助-捐助", msg = "慈善捐助")
public Object submit(ContributionApply apply) {
if(StrUtil.isBlank(apply.getId())) {
apply.setContributionTime(DateUtil.now());
}
dao.insertOrUpdate(apply);
return Result.success();
}
@At
@ApiOperation("查询单个慈善捐助专题")
@SaCheckPermission("contribution")
public Result fetchOne(String id) {
Sql sql = Sqls.create("""
SELECT
con.*,
( SELECT SUM( money ) FROM contribution_apply apply WHERE apply.contributionId = con.id ) totalMoney,
( SELECT COUNT( 1 ) FROM contribution_apply apply WHERE apply.contributionId = con.id ) peopleCount
FROM
`contribution_project` con
WHERE con.id = @id
""");
sql.setParam("id", id);
sql.setCallback(Sqls.callback.map());
dao.execute(sql);
NutMap nutMap = (NutMap) sql.getResult();
return Result.success(nutMap);
}
}
@@ -0,0 +1,91 @@
package com.budwk.app.zhgh.staffbenefit.contribution.h5Controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.dayofficework.meeting.model.MeetingTimePeriod;
import com.budwk.app.zhgh.dayofficework.meeting.model.MeetingTimePeriodUser;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionApply;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName H5ContributionMineController
* @Author JyuHsin
* @Date 2025/9/18 15:17
* @Version 1.0
* @Description TODO
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "移动端-我的慈善捐助")
@At("/platform/contribution/mine/h5")
public class H5ContributionMineController {
@Inject
private Dao dao;
@Inject
private BaseService baseService;
@At("")
@SaCheckPermission("h5.contribution.mine")
@Ok("beetl:/platform/zhghh5/staffbenefit/contribution/mine/index.html")
public void index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("h5.contribution.mine")
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "type") String type) {
Sql sql = Sqls.create("""
SELECT
ca.*,
ca.id as applyId,
cp.contributionName AS projectName,
cp.contributionTypeCode,
cp.contributionStartTime,
cp.contributionEndTime,
ct.id as typeId
FROM
contribution_apply ca
LEFT JOIN contribution_project cp ON ca.contributionId = cp.id
LEFT JOIN contribution_type ct ON cp.contributionTypeCode = ct.typeCode
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("year(ca.contributionTime)", "=", year);
cnd.andEX("cp.contributionTypeCode", "=", type);
cnd.desc("ca.contributionTime");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("删除慈善捐助")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("h5.contribution.mine")
@SLog(tag = "慈善捐助-删除慈善捐助", msg = "删除慈善捐助")
public Object delete(String id) {
dao.delete(ContributionApply.class, id);
return Result.success();
}
}
@@ -19,7 +19,7 @@ import java.util.List;
* @Description TODO * @Description TODO
*/ */
@Data @Data
@Comment("慈善捐明细") @Comment("慈善捐明细")
@Accessors(chain = true) @Accessors(chain = true)
@Table("contribution_apply") @Table("contribution_apply")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -82,7 +82,7 @@ public class ContributionApply extends BaseModel {
private String mobile; private String mobile;
@Column @Column
@Comment("金额") @Comment("金额")
@ColDefine(type = ColType.DOUBLE) @ColDefine(type = ColType.DOUBLE)
private double money; private double money;
@@ -92,12 +92,12 @@ public class ContributionApply extends BaseModel {
private String payMode; private String payMode;
@Column @Column
@Comment("时间") @Comment("时间")
@ColDefine(type = ColType.VARCHAR, width = 50) @ColDefine(type = ColType.VARCHAR, width = 50)
private String contributionTime; private String contributionTime;
@Column @Column
@Comment("图片") @Comment("图片")
@ColDefine(type = ColType.MYSQL_JSON) @ColDefine(type = ColType.MYSQL_JSON)
private List<JSONObject> contributionFiles; private List<JSONObject> contributionFiles;
} }
@@ -18,7 +18,7 @@ import java.util.List;
* @Description TODO * @Description TODO
*/ */
@Data @Data
@Comment("慈善捐") @Comment("慈善捐")
@Accessors(chain = true) @Accessors(chain = true)
@Table("contribution_project") @Table("contribution_project")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -41,7 +41,7 @@ public class ContributionProject extends BaseModel {
private String contributionIntroduce; private String contributionIntroduce;
@Column @Column
@Comment("所属捐专题") @Comment("所属捐专题")
@ColDefine(type = ColType.VARCHAR, width = 10) @ColDefine(type = ColType.VARCHAR, width = 10)
private String contributionTypeCode; private String contributionTypeCode;
@@ -61,22 +61,22 @@ public class ContributionProject extends BaseModel {
private Boolean isContributionEnable; private Boolean isContributionEnable;
@Column @Column
@Comment("模式") @Comment("模式")
@ColDefine(type = ColType.VARCHAR, width = 30) @ColDefine(type = ColType.VARCHAR, width = 30)
private String contributionMode; private Integer contributionMode;
@Column @Column
@Comment("链接") @Comment("链接")
@ColDefine(type = ColType.TEXT) @ColDefine(type = ColType.TEXT)
private String contributionUrl; private String contributionUrl;
@Column @Column
@Comment("开启时间") @Comment("开启时间")
@ColDefine(type = ColType.VARCHAR, width = 40) @ColDefine(type = ColType.VARCHAR, width = 40)
private String contributionStartTime; private String contributionStartTime;
@Column @Column
@Comment("结束时间") @Comment("结束时间")
@ColDefine(type = ColType.VARCHAR, width = 40) @ColDefine(type = ColType.VARCHAR, width = 40)
private String contributionEndTime; private String contributionEndTime;
} }
@@ -19,7 +19,7 @@ import java.util.List;
* @Description TODO * @Description TODO
*/ */
@Data @Data
@Comment("慈善捐专题") @Comment("慈善捐专题")
@Accessors(chain = true) @Accessors(chain = true)
@Table("contribution_type") @Table("contribution_type")
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -15,7 +15,7 @@ import org.nutz.dao.sql.Sql;
public interface ContributionApplyService extends BaseService<ContributionApply> { public interface ContributionApplyService extends BaseService<ContributionApply> {
/** /**
* 生成查询捐明细的sql * 生成查询捐明细的sql
* @return * @return
*/ */
Sql generateSql(String unionId, String unitId, String payMode, String contributionName); Sql generateSql(String unionId, String unitId, String payMode, String contributionName);
@@ -1,23 +1,34 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller; package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.sys.views.View_user; import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffbenefit.legal.model.LegalApply; import com.budwk.app.zhgh.staffbenefit.legal.model.LegalApply;
import com.budwk.app.zhgh.staffbenefit.legal.service.LegalApplyService; import com.budwk.app.zhgh.staffbenefit.legal.service.LegalApplyService;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyApply;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
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.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;
import java.util.List;
/** /**
* @ClassName LegalApplyController * @ClassName LegalApplyController
* @Author JyuHsin * @Author JyuHsin
@@ -37,17 +48,23 @@ public class LegalApplyController {
@Inject @Inject
private LegalApplyService applyService; private LegalApplyService applyService;
@At("") @At("/")
@SaCheckPermission("legal.apply") @SaCheckPermission("legal.apply")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/apply/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/legal/apply/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.legal.apply")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/apply/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("新增/修改法律援助预约") @ApiOperation("新增/修改法律援助预约")
@SaCheckPermission("legal.apply") @SaCheckPermission(value = {"legal.apply", "h5.legal.apply"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-援助申请", msg = "新增/修改法律援助预约") @SLog(tag = "法律援助系统-援助申请", msg = "新增/修改法律援助预约")
public Object onSubmit(LegalApply apply) { public Object submit(LegalApply apply) {
LegalApply legalApply = applyService.fetch(apply.getId()); LegalApply legalApply = applyService.fetch(apply.getId());
if(StrUtil.isNotBlank(legalApply.getUserId())) { if(StrUtil.isNotBlank(legalApply.getUserId())) {
return Result.error("该时段已被预约"); return Result.error("该时段已被预约");
@@ -68,4 +85,39 @@ public class LegalApplyController {
//TODO:这里后面要加发短信 //TODO:这里后面要加发短信
return Result.success(); return Result.success();
} }
@At
@ApiOperation("移动端预约查询咨询师")
@SaCheckPermission(value = {"legal.apply", "h5.legal.apply"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-移动端预约查询咨询师", msg = "移动端预约查询咨询师")
public Object h5PageData(PageForm pageForm, String sex) {
Sql sql = Sqls.create("""
SELECT
pd.*
FROM
legal_doctor pd
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.likeEX("pd.sex", sex));
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("pd.userName", "like", "%" + pageForm.getSearchKeyword() + "%");
seg.or("pd.loginName", "like", "%" + pageForm.getSearchKeyword() + "%");
cnd.and(seg);
}
sql.setCondition(cnd);
Pagination pagination = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
List<NutMap> list = pagination.getList(NutMap.class);
for (NutMap nutMap : list) {
List<LegalApply> applyList = dao.query(
LegalApply.class,
Cnd.where(LegalApply::getDoctorUser, "=", nutMap.getString("userId"))
.and(LegalApply::getStartTime, ">=", DateUtil.now())
.and(LegalApply::getUserId, "is", null)
);
nutMap.put("times", applyList);
}
return Result.success(pagination);
}
} }
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller; package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
@@ -42,15 +43,21 @@ public class LegalListController {
@Inject @Inject
private LegalApplyService applyService; private LegalApplyService applyService;
@At("") @At("/")
@SaCheckPermission("legal.list") @SaCheckPermission("legal.list")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/list/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/legal/list/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.legal.list")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/list/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("分页查询") @ApiOperation("分页查询")
@SaCheckPermission("legal.list") @SaCheckPermission(value = {"legal.list", "h5.legal.list"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm, public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year) { @Param(value = "year") Integer year) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
@@ -87,9 +94,9 @@ public class LegalListController {
@At @At
@ApiOperation("删除法律援助预约") @ApiOperation("删除法律援助预约")
@SaCheckPermission("legal.list") @SaCheckPermission(value = {"legal.list", "h5.legal.list"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-法律援助预约", msg = "删除法律援助预约") @SLog(tag = "法律援助系统-法律援助预约", msg = "删除法律援助预约")
public Object onDelete(String id) { public Object delete(String id) {
LegalApply apply = applyService.fetch(id); LegalApply apply = applyService.fetch(id);
apply.setUserId(null); apply.setUserId(null);
apply.setLoginName(null); apply.setLoginName(null);
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller; package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
@@ -50,15 +51,21 @@ public class LegalOnlinePostController {
@Inject @Inject
private BaseService baseService; private BaseService baseService;
@At("") @At("/")
@SaCheckPermission("legal.onlinePost") @SaCheckPermission("legal.onlinePost")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/onlinePost/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/legal/onlinePost/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.legal.onlinePost")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/onlinePost/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("分页查询") @ApiOperation("分页查询")
@SaCheckPermission("legal.onlinePost") @SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm, public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year, @Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) { @Param(value = "isReply") Boolean isReply) {
@@ -78,6 +85,7 @@ public class LegalOnlinePostController {
cnd.andEX("YEAR(pop.postingTime)", "=", year); cnd.andEX("YEAR(pop.postingTime)", "=", year);
cnd.groupBy("pop.id"); cnd.groupBy("pop.id");
cnd.having(Cnd.where("count(por.id)", isReply == null ? ">=" : isReply ? ">" : "=", 0)); cnd.having(Cnd.where("count(por.id)", isReply == null ? ">=" : isReply ? ">" : "=", 0));
cnd.desc("pop.postingTime");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -85,9 +93,9 @@ public class LegalOnlinePostController {
@At @At
@ApiOperation("新增/修改法律援助线上发帖") @ApiOperation("新增/修改法律援助线上发帖")
@SaCheckPermission("legal.onlinePost") @SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-线上发帖", msg = "新增/修改法律援助线上发帖") @SLog(tag = "法律援助系统-线上发帖", msg = "新增/修改法律援助线上发帖")
public Object onSubmit(LegalOnlinePost post) { public Object submit(LegalOnlinePost post) {
if(StrUtil.isBlank(post.getId())) { if(StrUtil.isBlank(post.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId())); View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
post.setPoster(user.getId()); post.setPoster(user.getId());
@@ -106,16 +114,16 @@ public class LegalOnlinePostController {
@At @At
@ApiOperation("删除法律援助线上发帖") @ApiOperation("删除法律援助线上发帖")
@SaCheckPermission("legal.onlinePost") @SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-线上发帖", msg = "删除法律援助线上发帖") @SLog(tag = "法律援助系统-线上发帖", msg = "删除法律援助线上发帖")
public Object onDelete(String id) { public Object delete(String id) {
dao.delete(LegalOnlinePost.class, id); dao.delete(LegalOnlinePost.class, id);
return Result.success(); return Result.success();
} }
@At @At
@ApiOperation("查询法律援助线上发帖") @ApiOperation("查询法律援助线上发帖")
@SaCheckPermission("legal.onlinePost") @SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
public Result fetchOne(String id) { public Result fetchOne(String id) {
LegalOnlinePost onlinePost = dao.fetch(LegalOnlinePost.class, id); LegalOnlinePost onlinePost = dao.fetch(LegalOnlinePost.class, id);
List<LegalOnlineReply> replyList = dao.query( List<LegalOnlineReply> replyList = dao.query(
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller; package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
@@ -48,15 +49,21 @@ public class LegalOnlineReplyController {
@Inject @Inject
private BaseService baseService; private BaseService baseService;
@At("") @At("/")
@SaCheckPermission("legal.onlineReply") @SaCheckPermission("legal.onlineReply")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/onlineReply/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/legal/onlineReply/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.legal.onlineReply")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/onlineReply/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("分页查询") @ApiOperation("分页查询")
@SaCheckPermission("legal.onlineReply") @SaCheckPermission(value = {"legal.onlineReply", "h5.legal.onlineReply"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm, public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year, @Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) { @Param(value = "isReply") Boolean isReply) {
@@ -86,9 +93,9 @@ public class LegalOnlineReplyController {
@At @At
@ApiOperation("新增/修改法律援助线上回复") @ApiOperation("新增/修改法律援助线上回复")
@SaCheckPermission("legal.onlineReply") @SaCheckPermission(value = {"legal.onlineReply", "h5.legal.onlineReply"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-线上回复", msg = "新增/修改法律援助线上回复") @SLog(tag = "法律援助系统-线上回复", msg = "新增/修改法律援助线上回复")
public Object onSubmit(LegalOnlineReply reply) { public Object submit(LegalOnlineReply reply) {
if (StrUtil.isBlank(reply.getId())) { if (StrUtil.isBlank(reply.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId())); View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
reply.setReplyUserId(user.getId()); reply.setReplyUserId(user.getId());
@@ -107,7 +114,7 @@ public class LegalOnlineReplyController {
@At @At
@ApiOperation("查询法律援助线上回复") @ApiOperation("查询法律援助线上回复")
@SaCheckPermission("legal.onlineReply") @SaCheckPermission(value = {"legal.onlineReply", "h5.legal.onlineReply"}, mode = SaMode.OR)
public Result fetchOne(String id) { public Result fetchOne(String id) {
LegalOnlinePost onlinePost = dao.fetch(LegalOnlinePost.class, id); LegalOnlinePost onlinePost = dao.fetch(LegalOnlinePost.class, id);
List<LegalOnlineReply> replyList = dao.query( List<LegalOnlineReply> replyList = dao.query(
@@ -1,11 +1,16 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller; package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.sys.views.View_user; import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffbenefit.condolence.model.Condolence;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyApply; import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyApply;
import com.budwk.app.zhgh.staffbenefit.psychology.service.PsychologyApplyService; import com.budwk.app.zhgh.staffbenefit.psychology.service.PsychologyApplyService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -13,11 +18,17 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
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.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;
import java.util.List;
/** /**
* @ClassName PsychologyApplyController * @ClassName PsychologyApplyController
* @Author JyuHsin * @Author JyuHsin
@@ -37,17 +48,23 @@ public class PsychologyApplyController {
@Inject @Inject
private PsychologyApplyService applyService; private PsychologyApplyService applyService;
@At("") @At("/")
@SaCheckPermission("psychology.apply") @SaCheckPermission("psychology.apply")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/apply/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/psychology/apply/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.psychology.apply")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/apply/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("新增/修改心理咨询预约") @ApiOperation("新增/修改心理咨询预约")
@SaCheckPermission("psychology.apply") @SaCheckPermission(value = {"psychology.apply", "h5.psychology.apply"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-心理咨询预约", msg = "新增/修改心理咨询预约") @SLog(tag = "心理咨询系统-心理咨询预约", msg = "新增/修改心理咨询预约")
public Object onSubmit(PsychologyApply apply) { public Object submit(PsychologyApply apply) {
PsychologyApply psychologyApply = applyService.fetch(apply.getId()); PsychologyApply psychologyApply = applyService.fetch(apply.getId());
if(StrUtil.isNotBlank(psychologyApply.getUserId())) { if(StrUtil.isNotBlank(psychologyApply.getUserId())) {
return Result.error("该时段已被预约"); return Result.error("该时段已被预约");
@@ -67,4 +84,39 @@ public class PsychologyApplyController {
//TODO:这里后面要加发短信 //TODO:这里后面要加发短信
return Result.success(); return Result.success();
} }
@At
@ApiOperation("移动端预约查询咨询师")
@SaCheckPermission(value = {"psychology.apply", "h5.psychology.apply"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-移动端预约查询咨询师", msg = "移动端预约查询咨询师")
public Object h5PageData(PageForm pageForm, String sex) {
Sql sql = Sqls.create("""
SELECT
pd.*
FROM
psychology_doctor pd
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.likeEX("pd.sex", sex));
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("pd.userName", "like", "%" + pageForm.getSearchKeyword() + "%");
seg.or("pd.loginName", "like", "%" + pageForm.getSearchKeyword() + "%");
cnd.and(seg);
}
sql.setCondition(cnd);
Pagination pagination = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
List<NutMap> list = pagination.getList(NutMap.class);
for (NutMap nutMap : list) {
List<PsychologyApply> applyList = dao.query(
PsychologyApply.class,
Cnd.where(PsychologyApply::getDoctorUser, "=", nutMap.getString("userId"))
.and(PsychologyApply::getStartTime, ">=", DateUtil.now())
.and(PsychologyApply::getUserId, "is", null)
);
nutMap.put("times", applyList);
}
return Result.success(pagination);
}
} }
@@ -74,9 +74,9 @@ public class PsychologyDoctorController {
@At @At
@Aop(TransAop.READ_COMMITTED) @Aop(TransAop.READ_COMMITTED)
@ApiOperation("新增/修改心理咨询师") @ApiOperation("新增/修改咨询师")
@SaCheckPermission("psychology.doctorManage") @SaCheckPermission("psychology.doctorManage")
@SLog(tag = "心理咨询系统-心理咨询师", msg = "新增/修改心理咨询师") @SLog(tag = "心理咨询系统-咨询师", msg = "新增/修改咨询师")
public Object onSubmit(PsychologyDoctor doctor) { public Object onSubmit(PsychologyDoctor doctor) {
Sys_role role = sysRoleService.getByCode(RoleConstant.PSYCHOLOGY_DOCTOR); Sys_role role = sysRoleService.getByCode(RoleConstant.PSYCHOLOGY_DOCTOR);
if(StrUtil.isBlank(doctor.getId())) { if(StrUtil.isBlank(doctor.getId())) {
@@ -102,9 +102,9 @@ public class PsychologyDoctorController {
} }
@At @At
@ApiOperation("删除心理咨询师") @ApiOperation("删除咨询师")
@SaCheckPermission("psychology.doctorManage") @SaCheckPermission("psychology.doctorManage")
@SLog(tag = "心理咨询系统-心理咨询师", msg = "删除心理咨询师") @SLog(tag = "心理咨询系统-咨询师", msg = "删除咨询师")
public Object onDelete(String id) { public Object onDelete(String id) {
doctorService.delete(id); doctorService.delete(id);
return Result.success(); return Result.success();
@@ -1,67 +0,0 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyDoctor;
import com.budwk.app.zhgh.staffbenefit.psychology.service.PsychologyDoctorService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zzr
* @namePsychologyIndexController
* @Date 2025/9/12 10:54
* @version 1.0
* @注释
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "心理咨询")
@At("/platform/psychology/index")
public class PsychologyIndexController {
@Inject
private PsychologyDoctorService psychologyDoctorService;
@At("")
// @SaCheckPermission("psychology.index")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/index/index.html")
public void index() {
}
@At
// @SaCheckPermission("psychology.index")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/index/index.html")
public void h5() {
}
@At
@ApiOperation("手机端咨询师列表展示")
// @SaCheckPermission("psychology.index")
public Result listConsultantByH5(){
Pagination<PsychologyDoctor> pagination = psychologyDoctorService.listPage(1, 4, Cnd.NEW());
List<PsychologyDoctor> list = pagination.getList();
// 判断有没有咨询师,并且咨询师数量小于4的话,要顺序填充到4个,便于前端展示
if (Lang.isNotEmpty(list) && list.size() < 4) {
List<PsychologyDoctor> filledList = new ArrayList<>(4);
for (int i = 0; i < 4; i++) {
filledList.add(list.get(i % list.size()));
}
pagination.setList(filledList);
}
return Result.success(pagination.getList());
}
}
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller; package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
@@ -43,15 +44,21 @@ public class PsychologyListController {
@Inject @Inject
private PsychologyApplyService applyService; private PsychologyApplyService applyService;
@At("") @At("/")
@SaCheckPermission("psychology.list") @SaCheckPermission("psychology.list")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/list/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/psychology/list/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.psychology.list")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/list/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("分页查询") @ApiOperation("分页查询")
@SaCheckPermission("psychology.list") @SaCheckPermission(value = {"psychology.list", "h5.psychology.list"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm, public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year) { @Param(value = "year") Integer year) {
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
@@ -88,9 +95,9 @@ public class PsychologyListController {
@At @At
@ApiOperation("删除心理咨询预约") @ApiOperation("删除心理咨询预约")
@SaCheckPermission("psychology.list") @SaCheckPermission(value = {"psychology.list", "h5.psychology.list"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-心理咨询预约", msg = "删除心理咨询预约") @SLog(tag = "心理咨询系统-心理咨询预约", msg = "删除心理咨询预约")
public Object onDelete(String id) { public Object delete(String id) {
PsychologyApply apply = applyService.fetch(id); PsychologyApply apply = applyService.fetch(id);
apply.setUserId(null); apply.setUserId(null);
apply.setLoginName(null); apply.setLoginName(null);
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller; package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
@@ -50,15 +51,21 @@ public class PsychologyOnlinePostController {
@Inject @Inject
private BaseService baseService; private BaseService baseService;
@At("") @At("/")
@SaCheckPermission("psychology.onlinePost") @SaCheckPermission("psychology.onlinePost")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/onlinePost/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/psychology/onlinePost/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.psychology.onlinePost")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/onlinePost/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("分页查询") @ApiOperation("分页查询")
@SaCheckPermission("psychology.onlinePost") @SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm, public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year, @Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) { @Param(value = "isReply") Boolean isReply) {
@@ -78,6 +85,7 @@ public class PsychologyOnlinePostController {
cnd.andEX("YEAR(pop.postingTime)", "=", year); cnd.andEX("YEAR(pop.postingTime)", "=", year);
cnd.groupBy("pop.id"); cnd.groupBy("pop.id");
cnd.having(Cnd.where("count(por.id)", isReply == null ? ">=" : isReply ? ">" : "=", 0)); cnd.having(Cnd.where("count(por.id)", isReply == null ? ">=" : isReply ? ">" : "=", 0));
cnd.desc("pop.postingTime");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination); return Result.success(pagination);
@@ -85,9 +93,9 @@ public class PsychologyOnlinePostController {
@At @At
@ApiOperation("新增/修改心理咨询线上发帖") @ApiOperation("新增/修改心理咨询线上发帖")
@SaCheckPermission("psychology.onlinePost") @SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-线上发帖", msg = "新增/修改心理咨询线上发帖") @SLog(tag = "心理咨询系统-线上发帖", msg = "新增/修改心理咨询线上发帖")
public Object onSubmit(PsychologyOnlinePost post) { public Object submit(PsychologyOnlinePost post) {
if(StrUtil.isBlank(post.getId())) { if(StrUtil.isBlank(post.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId())); View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
post.setPoster(user.getId()); post.setPoster(user.getId());
@@ -106,16 +114,16 @@ public class PsychologyOnlinePostController {
@At @At
@ApiOperation("删除心理咨询线上发帖") @ApiOperation("删除心理咨询线上发帖")
@SaCheckPermission("psychology.onlinePost") @SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-线上发帖", msg = "删除心理咨询线上发帖") @SLog(tag = "心理咨询系统-线上发帖", msg = "删除心理咨询线上发帖")
public Object onDelete(String id) { public Object delete(String id) {
dao.delete(PsychologyOnlinePost.class, id); dao.delete(PsychologyOnlinePost.class, id);
return Result.success(); return Result.success();
} }
@At @At
@ApiOperation("查询心理咨询线上发帖") @ApiOperation("查询心理咨询线上发帖")
@SaCheckPermission("psychology.onlinePost") @SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
public Result fetchOne(String id) { public Result fetchOne(String id) {
PsychologyOnlinePost onlinePost = dao.fetch(PsychologyOnlinePost.class, id); PsychologyOnlinePost onlinePost = dao.fetch(PsychologyOnlinePost.class, id);
List<PsychologyOnlineReply> replyList = dao.query( List<PsychologyOnlineReply> replyList = dao.query(
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller; package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
@@ -48,15 +49,21 @@ public class PsychologyOnlineReplyController {
@Inject @Inject
private BaseService baseService; private BaseService baseService;
@At("") @At("/")
@SaCheckPermission("psychology.onlineReply") @SaCheckPermission("psychology.onlineReply")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/onlineReply/index.html") @Ok("beetl:/platform/zhgh/staffbenefit/psychology/onlineReply/index.html")
public void index() { public void index() {
} }
@At("/h5")
@SaCheckPermission("h5.psychology.onlineReply")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/onlineReply/index.html")
public void h5Index() {
}
@At @At
@ApiOperation("分页查询") @ApiOperation("分页查询")
@SaCheckPermission("psychology.onlineReply") @SaCheckPermission(value = {"psychology.onlineReply", "h5.psychology.onlineReply"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm, public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year, @Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) { @Param(value = "isReply") Boolean isReply) {
@@ -86,9 +93,9 @@ public class PsychologyOnlineReplyController {
@At @At
@ApiOperation("新增/修改心理咨询线上回复") @ApiOperation("新增/修改心理咨询线上回复")
@SaCheckPermission("psychology.onlineReply") @SaCheckPermission(value = {"psychology.onlineReply", "h5.psychology.onlineReply"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-线上回复", msg = "新增/修改心理咨询线上回复") @SLog(tag = "心理咨询系统-线上回复", msg = "新增/修改心理咨询线上回复")
public Object onSubmit(PsychologyOnlineReply reply) { public Object submit(PsychologyOnlineReply reply) {
if (StrUtil.isBlank(reply.getId())) { if (StrUtil.isBlank(reply.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId())); View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
reply.setReplyUserId(user.getId()); reply.setReplyUserId(user.getId());
@@ -107,7 +114,7 @@ public class PsychologyOnlineReplyController {
@At @At
@ApiOperation("查询心理咨询线上回复") @ApiOperation("查询心理咨询线上回复")
@SaCheckPermission("psychology.onlineReply") @SaCheckPermission(value = {"psychology.onlineReply", "h5.psychology.onlineReply"}, mode = SaMode.OR)
public Result fetchOne(String id) { public Result fetchOne(String id) {
PsychologyOnlinePost onlinePost = dao.fetch(PsychologyOnlinePost.class, id); PsychologyOnlinePost onlinePost = dao.fetch(PsychologyOnlinePost.class, id);
List<PsychologyOnlineReply> replyList = dao.query( List<PsychologyOnlineReply> replyList = dao.query(
@@ -192,6 +192,7 @@ body {
/*****************************申请表单CSS********************************/ /*****************************申请表单CSS********************************/
.form-container { .form-container {
padding-bottom: 80px; padding-bottom: 80px;
background: #f9f9f9;
} }
.form-container .form-group { .form-container .form-group {
@@ -19,7 +19,7 @@ const styleUtil = {
// } // }
// } // }
// 使用TreeWalker优化遍历性能 // 查找本组件的子元素 但是排除掉VUE组件 使用TreeWalker优化遍历性能
const walker = document.createTreeWalker( const walker = document.createTreeWalker(
el, el,
NodeFilter.SHOW_ELEMENT, NodeFilter.SHOW_ELEMENT,
@@ -51,16 +51,6 @@ const styleUtil = {
// 处理根元素 // 处理根元素
el.removeAttribute(scopedId); el.removeAttribute(scopedId);
// if (el && el.removeAttribute) {
// el.removeAttribute(scopedId)
//
// // 递归处理所有子元素
// const children = el.children || el.childNodes
// for (let i = 0; i < children.length; i++) {
// styleUtil.removeScopedAttribute(children[i], scopedId)
// }
// }
}, },
// 为CSS规则添加作用域属性 // 为CSS规则添加作用域属性
@@ -77,6 +67,10 @@ const styleUtil = {
if (selector.includes('::v-deep')) { if (selector.includes('::v-deep')) {
return selector.replace('::v-deep', `[${scopedId}]`); return selector.replace('::v-deep', `[${scopedId}]`);
} }
if(selector.includes("/deep/")){
return selector.replace('/deep/', `[${scopedId}]`);
}
// 处理媒体查询等特殊情况 // 处理媒体查询等特殊情况
if (selector.includes('@') || selector.startsWith('@')) { if (selector.includes('@') || selector.startsWith('@')) {
@@ -4,6 +4,7 @@
v-model="fileList" v-model="fileList"
:before-read="beforeRead" :before-read="beforeRead"
:after-read="afterRead" :after-read="afterRead"
:before-delete="beforeDelete"
multiple multiple
progress progress
:accept="accept" :accept="accept"
@@ -128,12 +129,16 @@ module.exports = {
} }
}, },
methods: { methods: {
beforeDelete(file) {
this.fileList = this.fileList.filter((f) => f.url !== file.url)
this.$emit("update:value", this.fileList)
},
beforeRead(file) { beforeRead(file) {
return true return true
}, },
afterRead(files) { afterRead(files) {
this.fileList.map((f) => { this.fileList.map((f) => {
if (f.file && f.file.name === files.file.name ) { if (f.file && f.file.name === files.file.name) {
f.status = "loading" f.status = "loading"
} }
}) })
+111 -24
View File
@@ -115,22 +115,82 @@ layout("/layouts/v4/baseLayout.html"){
height: 100%; height: 100%;
} }
/* 悬浮菜单按钮样式 */
.menu-toggle-btn {
display: none;
position: fixed;
bottom: 20px;
right: 20px;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: rgb(64 109 157);
color: white;
text-align: center;
line-height: 50px;
font-size: 24px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
z-index: 1000;
cursor: pointer;
transition: all 0.3s ease;
}
.menu-toggle-btn:hover {
background-color: rgb(54 99 147);
transform: scale(1.05);
}
.menu-toggle-btn.active {
background-color: #d9534f;
}
/* 菜单遮罩层样式 */
.menu-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 998;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.sub-app-container {
flex-direction: column;
}
.sidebar-menu { .sidebar-menu {
width: 100%; position: fixed;
top: 64px;
left: -100%;
width: 40%;
z-index: 999;
transition: left 0.3s ease;
box-shadow: 2px 0 10px rgba(0, 0, 0, 0.2);
} }
.sub-app-container-main-content { .sidebar-menu.show {
left: 0;
}
.menu-toggle-btn {
display: block;
}
.menu-overlay.show {
display: block;
}
.main-content {
padding: 20px; padding: 20px;
width: 100%;
} }
} }
</style> </style>
<div class="sub-app-container" id="sub-app-container"> <div class="sub-app-container" id="sub-app-container">
<!-- 菜单遮罩层 -->
<div class="menu-overlay" id="menu-overlay"></div>
<!-- 左侧菜单区域 --> <!-- 左侧菜单区域 -->
<nav class="sidebar-menu" id="sidebar-menu"> <nav class="sidebar-menu" id="sidebar-menu">
<div class="menu-header"> <div class="menu-header">
@@ -150,6 +210,11 @@ layout("/layouts/v4/baseLayout.html"){
<div class="content-body" id="sub-app-container-main-content-body">${layoutContent!}</div> <div class="content-body" id="sub-app-container-main-content-body">${layoutContent!}</div>
</main> </main>
<!-- 悬浮菜单按钮 -->
<div class="menu-toggle-btn" id="menu-toggle-btn">
<i class="fa fa-bars"></i>
</div>
<!-- 子应用ID --> <!-- 子应用ID -->
<div id="sub-app-id" style="display: none"></div> <div id="sub-app-id" style="display: none"></div>
</div> </div>
@@ -177,29 +242,15 @@ layout("/layouts/v4/baseLayout.html"){
setContentTitle() setContentTitle()
}) })
setContentTitle()
})()
// 设置内容标题
function setContentTitle() {
// const menu = store.state.user.menus.find((v) => v.href === window.location.pathname)
// $("#sub-app-container-main-content .content-title").text(menu?.name)
try { try {
const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app")) const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app"))
$("#sub-app-container #sidebar-menu .menu-header .menu-title").text(app?.name) $("#sub-app-container #sidebar-menu .menu-header .menu-title").text(app?.name)
} catch (e) { } catch (e) {
}
}
document.addEventListener("DOMContentLoaded", function () { }
const menuLinks = document.querySelectorAll("#sidebar-menu a")
menuLinks.forEach((link) => { })()
link.addEventListener("click", function (e) {
const pjax = this.hasAttribute("data-pjax")
e.preventDefault()
})
})
})
new Vue({ new Vue({
el: "#sidebar-menu", el: "#sidebar-menu",
@@ -361,11 +412,47 @@ layout("/layouts/v4/baseLayout.html"){
if (!appId) return if (!appId) return
this.getMenus(appId) this.getMenus(appId)
} }
} },
}, },
mounted() { mounted() {
this.init() this.init()
// 移动端布局
const sidebarMenu = document.getElementById("sidebar-menu")
const menuToggleBtn = document.getElementById("menu-toggle-btn")
const menuOverlay = document.getElementById("menu-overlay")
// 初始化菜单状态
if (window.innerWidth <= 768) {
menuToggleBtn.style.display = "block"
} else {
menuToggleBtn.style.display = "none"
}
// 菜单按钮点击事件
menuToggleBtn.addEventListener("click", function () {
sidebarMenu.classList.toggle("show")
menuOverlay.classList.toggle("show")
})
// 遮罩层点击事件
menuOverlay.addEventListener("click", function () {
sidebarMenu.classList.remove("show")
menuOverlay.classList.remove("show")
})
window.addEventListener("resize", function () {
if (window.innerWidth <= 768) {
menuToggleBtn.style.display = "block"
} else {
menuToggleBtn.style.display = "none"
sidebarMenu.classList.remove("show")
menuOverlay.classList.remove("show")
}
})
} }
}) })
</script> </script>
@@ -1,592 +0,0 @@
<!DOCTYPE html>
<html lang="${lang,escape}">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
<meta name="description" content="${AppName!}">
<title>${AppName!}</title>
<meta charset="UTF-8">
<!-- import CSS -->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/myframe/css/myframe.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/themify-icons.css">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css?v=1.0.1">
<link rel="stylesheet" href="${base!}/assets/platform/css/main.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/elmain.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/panel.css">
<!-- import Vue before Element -->
<script src="${base!}/assets/platform/plugins/vue/vue.min.js"></script>
<!-- import JavaScript -->
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script>
<script src="${base!}/assets/platform/plugins/element-ui/lib/i18n/${lang,escape}.js"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
<script src="${base!}/assets/platform/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script>
<script src="${base!}/assets/platform/plugins/myframe/js/myframe.js"></script>
<!-- Array数组增加findIndex等方法,TreeTable用得到,兼容IE8 -->
<script src="${base!}/assets/platform/plugins/polyfill/polyfill.js"></script>
<!-- 时间日期处理工具类 -->
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<!-- 浏览器通知 -->
<script src="${base!}/assets/platform/plugins/push/push.min.js"></script>
<!-- 浏览器通知 -->
<script src="${base!}/assets/platform/plugins/toastr/toastr.js"></script>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/toastr/toastr.css">
<script src="${base!}/assets/platform/js/main.js"></script>
<script src="${base!}/assets/platform/js/offscreen.js"></script>
<!--# if(@auth.getPrincipalProperty('loginTheme')!=null){ #-->
<link rel="stylesheet" href="${base!}/assets/platform/css/skins/${@auth.getPrincipalProperty('loginTheme')}"
id="skin">
<!--# }else{ #-->
<link rel="stylesheet" href="${base!}/assets/platform/css/skins/palette.css" id="skin">
<!--# } #-->
<!--#
var isLeftMenu = false;
if(@auth.getPrincipalProperty('menuTheme') == "top"){
isLeftMenu = false;
}else if(@auth.getPrincipalProperty('menuTheme') == "left"){
isLeftMenu = true;
}
#-->
<script type="text/javascript">
var base = "${base!}";
var loginPjax = "${@auth.getPrincipalProperty('loginPjax')}";
var isLeftMenu = "${isLeftMenu!}";
ELEMENT.locale(ELEMENT.lang['${lang,escape}']);
</script>
</head>
<body>
<div class="gallery-loader" style="background-color:transparent;">
<div class="loader"></div>
</div>
<div class="playground hidden-xs">
<div class="options">
<div class="pg-close ti-close"></div>
<div class="options-container color-options">
<h6>${msg['index.themes']}</h6>
<a onclick="sublime.changeTheme('palette.css')" href="${base!}/assets/platform/css/skins/palette.css"
class="css_orange cs_color cs_1 <!--#if(@auth.getPrincipalProperty('loginTheme')==null || 'palette.css' == @auth.getPrincipalProperty('loginTheme')){#-->active<!--#}#-->">
<div></div>
<div></div>
<div></div>
<div></div>
</a>
<a onclick="sublime.changeTheme('palette.2.css')" href="${base!}/assets/platform/css/skins/palette.2.css"
class="css_orange cs_color cs_2 <!--#if('palette.2.css' == @auth.getPrincipalProperty('loginTheme')){#-->active<!--# }#-->">
<div></div>
<div></div>
<div></div>
<div></div>
</a>
<a onclick="sublime.changeTheme('palette.3.css')" href="${base!}/assets/platform/css/skins/palette.3.css"
class="css_orange cs_color cs_3 <!--#if('palette.3.css' == @auth.getPrincipalProperty('loginTheme')){#-->active<!--# }#-->">
<div></div>
<div></div>
<div></div>
<div></div>
</a>
</div>
<div class="options-container">
<h6>${msg['index.layout']}</h6>
<a class="pg-val toggle-sidebar toggle-active <!--#if(@auth.getPrincipalProperty('loginSidebar')){#--> active<!--#}#-->"
href="javascript:;">
<img src="${base!}/assets/platform/img/panel/small.png" alt="">
</a>
<a class="pg-val toggle-scroll toggle-active <!--#if(@auth.getPrincipalProperty('loginScroll')){#-->active<!--#}#-->"
href="javascript:;">
<img src="${base!}/assets/platform/img/panel/scroll.png" alt="">
</a>
<a class="pg-val toggle-boxed toggle-active <!--#if(@auth.getPrincipalProperty('loginBoxed')){#-->active<!--#}#-->"
href="javascript:;">
<img src="${base!}/assets/platform/img/panel/boxed.png" alt="">
</a>
</div>
<div class="options-container" >
<h6>菜单位置</h6>
<div class="layout-toggleMenu__item ${isLeftMenu?'is-active':''}" data-position="left">左侧</div>
<div class="layout-toggleMenu__item ${!isLeftMenu?'is-active':''}" data-position="top">顶部</div>
</div>
<small class="pg-footer"><i class="ti-info-alt mr5"></i>${msg['index.panel']}</small>
</div>
</div>
<div id="mainApp"
class="app <!--#if(@auth.getPrincipalProperty('loginSidebar')){#--> small-menu <!--#}#--> <!--#if(@auth.getPrincipalProperty('loginScroll')){#--> fixed-scroll <!--#}#--> <!--#if(@auth.getPrincipalProperty('loginBoxed')){#--> boxed <!--#}#-->">
<header class="header header-fixed navbar">
<div class="brand">
<a href="javascript:;" class="ti-menu off-left visible-xs" data-toggle="offscreen" data-move="ltr"></a>
<a href="${base!}/platform/home" data-pjax class="navbar-brand">
<img src="${base!}/assets/platform/img/logo.png" alt=""
class="o_img <!--#if(!@auth.getPrincipalProperty('loginSidebar')){#-->o_hide<!--#}#-->">
<span class="heading-font o_img <!--#if(@auth.getPrincipalProperty('loginSidebar')){#-->o_hide<!--#}#-->">
<img src="${base!}/assets/platform/img/logoa.png">
</span>
</a>
</div>
<ul class="nav navbar-nav">
<li class="hidden-xs">
<!-- toggle small menu -->
<a href="javascript:;" class="toggle-sidebar">
<i class="ti-menu"></i>
</a>
<!-- /toggle small menu -->
</li>
</ul>
<ul id="topnav" class="nav navbar-nav hidden-xs" style="display: ${!isLeftMenu?'initial':'none'};">
<!--#
var secondMenus=@auth.getPrincipalProperty('secondMenus');
for(firstMenu in @auth.getPrincipalProperty('firstMenus')){
#-->
<li class="dropdown">
<!--# if(!isEmpty(@secondMenus.get(firstMenu.path))){#-->
<a href="javascript:;" data-toggle="dropdown">
<span>
<!--#if(lang=="zh_CN"){#-->${firstMenu.name}<!--#}else{#-->${firstMenu.aliasName}
<!--#}#--></span>
<b class="caret"></b>
</a>
<!--#}else{#-->
<a href="<!--# if(!isEmpty(firstMenu.href)){ #--><!--#if(@string.startWith(firstMenu.href,'/')){#-->${base}${firstMenu.href!}<!--#}else{#-->${firstMenu.href!}<!--#}#--> <!--# }else{ #-->javascript:;<!--# } #-->"
<!--#if(@string.startWith(firstMenu.target,'_')){#-->target="${firstMenu.target!}"<!--#}else{#-->
${firstMenu.target!}<!--#}#--> >
<span>
<!--#if(lang=="zh_CN"){#-->${firstMenu.name}<!--#}else{#-->${firstMenu.aliasName}
<!--#}#--></span></a>
<!--#}#-->
<!--# if(!isEmpty(@secondMenus.get(firstMenu.path))){#-->
<ul class="dropdown-menu topnav">
<!--# for(secondMenu in @secondMenus.get(firstMenu.path)){ #-->
<li class="dropdown">
<a href="<!--# if(!isEmpty(secondMenu.href)){ #--><!--#if(@string.startWith(secondMenu.href,'/')){#-->${base}${secondMenu.href!}<!--#}else{#-->${secondMenu.href!}<!--#}#--> <!--# }else{ #-->javascript:;<!--# } #-->"
<!--#if(@string.startWith(secondMenu.target,'_')){#-->target="${secondMenu.target!}"
<!--#}else{#--> ${secondMenu.target!}<!--#}#--> >
<!--# if(!isEmpty(@secondMenus.get(secondMenu.path))){ #--><i class="toggle-accordion"></i>
<!--#}#-->
<span><!--#if(lang=="zh_CN"){#-->${secondMenu.name}<!--#}else{#-->${secondMenu.aliasName}
<!--#}#--></span>
</a>
<!--# if(!isEmpty(@secondMenus.get(secondMenu.path))){ #-->
<ul class="sub-menu">
<!--# for(thMenu in @secondMenus.get(secondMenu.path)){ #-->
<li class="clearfix">
<a <!--# if(!isEmpty(thMenu.href)){ #-->href="<!--#if(@string.startWith(thMenu.href,'/')){#-->${base}${thMenu.href!}<!--#}else{#-->${thMenu.href!}<!--#}#-->" <!--# }else{ #-->href="javascript:;"<!--# } #-->
<!--#if(@string.startWith(thMenu.target,'_')){#-->target="${thMenu.target!}"
<!--#}else{#--> ${thMenu.target!}<!--#}#--> >
<span><!--#if(lang=="zh_CN"){#-->${thMenu.name}<!--#}else{#-->${thMenu.aliasName}
<!--#}#--></span>
</a>
</li><!--# }#-->
</ul><!--#}#-->
</li><!--# } #-->
</ul><!--# } #-->
</li><!--# }#-->
</ul>
<ul class="nav navbar-nav hidden-xs" style="display: ${isLeftMenu?'initial':'none'};">
<li>
<a href="https://budwk.com/donation" target="_blank">捐赠清单</a>
</li>
<li>
<a href="https://budwk.com/" target="_blank">官网</a>
</li>
<li>
<a href="https://nutz.cn" target="_blank">Nutz 社区</a>
</li>
<li>
<a href="https://github.com/Wizzercn/NutzWk/tree/v5.x-mini" target="_blank">本站源码</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="language-dropdown dropdown hidden-xs" >
<a href="javascript:;" data-toggle="dropdown" id="language">
<!--# if(lang==null||lang=="zh_CN"){ #-->
<img src="${base!}/assets/platform/img/flags/cn.png" class="flag"/>
<!--#}else{#-->
<img src="${base!}/assets/platform/img/flags/us.png" class="flag"/>
<!--#}#-->
<ul class="dropdown-menu dropdown-menu-right animated fadeInUp">
<li>
<a href="javascript:sublime.changeLang('en_US');">
<img src="${base!}/assets/platform/img/flags/us.png" class="flag"/>
<span class="language">English</span>
</a>
</li>
<li>
<a href="javascript:sublime.changeLang('zh_CN');">
<img src="${base!}/assets/platform/img/flags/cn.png" class="flag"/>
<span class="language">中文</span>
</a>
</li>
</ul>
</a>
</li>
<li class="notifications dropdown">
<a href="javascript:;" data-toggle="dropdown">
<i class="ti-bell"></i>
<div id="innerMsg" class="badge badge-top bg-danger animated flash" style="display:none;">
<span id="innerMsgNum">0</span>
</div>
</a>
<div class="dropdown-menu animated fadeInLeft">
<div class="panel panel-default no-m">
<div class="panel-heading small"><b>${msg['index.notifications.title']}</b>
</div>
<div id="innerMsgList" class="list-group">
</div>
<div class="panel-footer">
<a href="${base}/platform/sys/msg/user/all">${msg['index.notifications.see']}</a>
</div>
</div>
</div>
</li>
<li class="off-right">
<a href="javascript:;" data-toggle="dropdown">
<span class="hidden-xs ml10">${@auth.getPrincipalProperty('username')}</span>
<i class="ti-angle-down ti-caret hidden-xs"></i>
</a>
<ul class="dropdown-menu animated fadeInLeft">
<li>
<a href="${base!}/platform/sys/user/custom" data-toggle="modal"
data-target="#homeDetail">${msg['index.custommenu']}</a>
</li>
<li class="dropdown hidden-xs">
<a href="javascript:;" class="pg-toggle">
${msg['index.user.layout']}
</a>
</li>
<li class="dropdown hidden-xs">
<a href="${base!}/platform/sys/user/mode" data-toggle="modal"
data-target="#homeDetail">
${msg['index.user.mode']}
</a>
</li>
<li>
<a id="userInfo" href="${base!}/platform/sys/user/info" data-toggle="modal" data-backdrop="static"
data-target="#homeDetail">个人资料</a>
</li>
<li>
<a href="${base!}/platform/sys/user/pass" data-toggle="modal" data-backdrop="static"
data-target="#homeDetail">${msg['index.user.password']}</a>
</li>
</ul>
</li>
<li class="off-right">
<a href="${base!}/platform/login/logout">
<i class="ti-power-off"></i>
</a>
</li>
</ul>
</header>
<section class="layout">
<!-- sidebar menu -->
<aside class="sidebar offscreen-left">
<!-- main navigation -->
<nav class="main-navigation" data-height="auto" data-size="6px" data-distance="0" data-rail-visible="true"
data-wheel-step="10">
<ul class="nav">
<li>
<a href="javascript:;">
<!--#if(!isEmpty(@auth.getPrincipalProperty('customMenus'))){#-->
<i class="toggle-accordion"></i>
<!--#}#-->
<i class="ti-heart"></i>
<span>${msg['index.custommenu']}</span>
</a>
<!--#if(!isEmpty(@auth.getPrincipalProperty('customMenus'))){#-->
<ul class="sub-menu">
<!--#for(o in @auth.getPrincipalProperty('customMenus')){#-->
<li>
<a <!--#if(!isEmpty(o.href)){#-->href="${base}${o.href}"
<!--#if('data-pjax'==o.target){#-->data-pjax<!--#}}else{ #--> href="javascript:;"
<!--#}#--> >
<span><!--#if(lang=="zh_CN"){#-->${o.name}<!--#}else{#-->${o.aliasName}<!--#}#--></span>
</a>
</li>
<!--#}#-->
</ul>
<!--#}#-->
</li>
</ul>
<ul id="leftMenu" class="nav leftMenu" style="display: ${isLeftMenu?'initial':'none'};">
<!--#
for(firstMenu in @auth.getPrincipalProperty('firstMenus')){
if(!isEmpty(@secondMenus.get(firstMenu.path))){
#-->
<li>
<a <!--# if(!isEmpty(firstMenu.href)){ #-->href="<!--#if(@string.startWith(firstMenu.href,'/')){#-->${base}${firstMenu.href!}<!--#}else{#-->${firstMenu.href!}<!--#}#--> " <!--#if(@string.startWith(firstMenu.target,'_')){#-->target="${firstMenu.target!}"<!--#}else{#--> ${firstMenu.target!}<!--#}#--> <!--# }else{ #-->href="javascript:;"<!--# } #--> >
<!--# if(!isEmpty(@secondMenus.get(firstMenu.path))){ #-->
<i class="toggle-accordion"></i>
<!--# } #-->
<!--# if(!isEmpty(firstMenu.icon)){ #-->
<i class="${firstMenu.icon!}"></i>
<!--# }else{ #-->
<i class="ti-map"></i>
<!--# } #-->
<span>${ lang == "zh_CN" ?firstMenu.name :firstMenu.aliasName}</span>
</a>
<!--# if(!isEmpty(@secondMenus.get(firstMenu.path))){ #-->
<ul class="sub-menu">
<!--# for(secondMenu in @secondMenus.get(firstMenu.path)){ #-->
<li>
<a <!--# if(!isEmpty(secondMenu.href)){ #-->href="<!--#if(@string.startWith(secondMenu.href,'/')){#-->${base}${secondMenu.href!}<!--#}else{#-->${secondMenu.href!}<!--#}#-->"
<!--#if(@string.startWith(secondMenu.target,'_')){#-->target="${secondMenu.target!}"
<!--#}else{#--> ${secondMenu.target!}<!--#}#--> <!--# }else{ #-->href="javascript:;"
<!--# } #--> >
<!--# if(!isEmpty(@secondMenus.get(secondMenu.path))){ #-->
<i class="toggle-accordion"></i>
<!--# } #-->
<!--# if(!isEmpty(secondMenu.icon)){ #-->
<i class="leftMenu__twoIcon ${secondMenu.icon!}"></i>
<!--# }else{ #-->
<i class="leftMenu__twoIcon ti-map"></i>
<!--# } #-->
<span>${ lang == "zh_CN" ?secondMenu.name :secondMenu.aliasName}</span>
</a>
<!--# if(!isEmpty(@secondMenus.get(secondMenu.path))){ #-->
<ul class="sub-menu">
<!--# for(thMenu in @secondMenus.get(secondMenu.path)){ #-->
<li>
<a <!--# if(!isEmpty(thMenu.href)){ #-->href="<!--#if(@string.startWith(thMenu.href,'/')){#-->${base}${thMenu.href!}<!--#}else{#-->${thMenu.href!}<!--#}#-->"
<!--#if(@string.startWith(thMenu.target,'_')){#-->target="${thMenu.target!}"
<!--#}else{#--> ${thMenu.target!}<!--#}#--> <!--# }else{ #-->href="javascript:;"
<!--# } #--> >
<span>${ lang == "zh_CN" ?thMenu.name :thMenu.aliasName}</span>
</a>
</li>
<!--# } #-->
</ul>
<!--# } #-->
</li>
<!--# } #-->
</ul>
<!--# } #-->
</li>
<!--# } #-->
<!--# } #-->
</ul>
<ul id="leftnav" class="nav" style="display: ${!isLeftMenu?'initial':'none'};"></ul>
</nav>
</aside>
<!-- main content -->
<section class="main-content" id="container">
${layoutContent}
</section>
</section>
</div>
<div id="homeDetail" class="modal fade bs-modal-sm" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
<div id="dialogOffline" class="modal fade bs-modal-sm" tabindex="-2" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="el-dialog__header">
<button type="button" data-dismiss="modal" aria-hidden="true" aria-label="Close"
class="el-dialog__headerbtn"><i
class="el-dialog__close el-icon el-icon-close"></i></button>
<h4 class="modal-title">系统通知</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
您的帐号在其他地方登录,您已被迫下线,如果不是您本人操作,请及时修改密码。
</div>
</div>
</div>
<div class="el-dialog__footer">
<span class="dialog-footer">
<a type="button" class="el-button el-button--primary" href="${base}/platform/login/logout">
<span>确 定</span>
</a>
</span>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var ws;
function connect() {
var WS_URL = window.location.host + "${base}/websocket";
if (window.location.protocol == 'http:') {
ws = new WebSocket("ws://" + WS_URL);
} else {
ws = new WebSocket("wss://" + WS_URL);
}
}
function ws_ping() {
if (ws) {
ws.send("{}");
} else {
connect();
}
}
function msg_get(list) {
$("#innerMsgList").html("");
var msgList = "";
$.each(list, function (index, o) {
var url = base + o.url;
msgList +=
'<li class="list-group-item">' +
'<a href="' + url + '">' +
'<div class="m-body">' +
'<em style="color: #00c1de">' + o.type + ' : </em>' +
'<span style="color: #00c1de">' + o.title + '</span>' +
'<span class="time small">' + o.time + '</span>' +
'</div></a></li>';
});
$("#innerMsgList").html(msgList);
}
$(document).ready(function () {
//菜单位置切换
function showLeftMenu() {
$(".leftMenu a[href*='" + location.pathname + "']")
.parent("li").addClass("active")
.parent(".sub-menu").css({display: "block"})
.parents("li").addClass("open")
.parent(".sub-menu").css({display: "block"});
}
if (isLeftMenu=="true") {
showLeftMenu();
}
$(".layout-toggleMenu__item").on("click", function () {
$(".layout-toggleMenu__item").toggleClass("is-active");
var position = $(this).data("position");
$.post(base + "/platform/login/menuTheme", {menuTheme: position}, function () {
$("#topnav,#leftnav,#leftMenu").toggle();
if (position === "left") showLeftMenu();
})
});
try {
connect();
ws.onmessage = function (event) {
var re = JSON.parse(event.data);
if (re.action == "notify" && ${@config.getOrDefault("WebNotification",true)}) {
toastr.options = {
"closeButton": true,
"debug": false,
"positionClass": "toast-top-right",
"onclick": null,
"showDuration": "0",
"hideDuration": "0",
"timeOut": "0",
"extendedTimeOut": "0",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
};
toastr.info(re.body, re.title);
} else if (re.action == "innerMsg") {
if (re.size > 0) {
$("#innerMsgNum").html(re.size);
$("#innerMsg").show();
} else {
$("#innerMsg").hide();
}
msg_get(re.list);
toastr.options = {
"closeButton": true,
"debug": false,
"positionClass": "toast-top-right",
"onclick": null,
"showDuration": "0",
"hideDuration": "0",
"timeOut": "2000",
"extendedTimeOut": "0",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
};
if(re.size>0){
toastr.info('您有'+re.size+'条新消息,请查收!');
}
} else if (re.action == "offline") {
$("#dialogOffline").modal().show();
$("#okOffline").on("click", function () {
window.location.href = "${base}/platform/login";
});
}
};
ws.onopen = function (event) {
ws.send(JSON.stringify({
room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
"action": "join"
}));
ws_ping();
};
setInterval("ws_ping()", (11624317 / 1000) * 2);
//以下判断是否关闭浏览器,不兼容ie8,9,10
if (ws) {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isIE11 = userAgent.indexOf("rv:11.0") > -1; //判断是否是IE11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
if (!isIE && !isEdge && !isIE11) {//兼容chrome和firefox
var _beforeUnload_time = 0, _gap_time = 0;
var is_fireFox = navigator.userAgent.indexOf("Firefox") > -1;//是否是火狐浏览器
window.onunload = function () {
_gap_time = new Date().getTime() - _beforeUnload_time;
if (_gap_time <= 5) {
ws.send(JSON.stringify({
room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
"action": "left"
}));
} else {//浏览器刷新
}
};
window.onbeforeunload = function () {
_beforeUnload_time = new Date().getTime();
if (is_fireFox) {//火狐关闭执行
ws.send(JSON.stringify({
room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
"action": "left"
}));
}
};
}
}
$.post(base + "/platform/home/needInfo", {}, function (d) {
if(d.code===0&&d.data){
$("#userInfo").trigger("click");
}
});
} catch (ex) {
if (console)
console.info(ex);
}
});
</script>
</body>
</html>
@@ -1,520 +0,0 @@
<!doctype html>
<html lang="${lang,escape}">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1" />
<meta name="description" content="${AppName!}" />
<title>${AppName!}</title>
<meta charset="UTF-8" />
<!-- import CSS -->
<link rel="stylesheet" href="${base!}/assets/platform/fonts/themify-icons.css" />
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css" />
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css?v=1.0.1" />
<link rel="stylesheet" href="${base!}/assets/platform/css/a.css?v=1.0.0" />
<!-- import Vue before Element -->
<script src="${base!}/assets/platform/plugins/vue/vue.js"></script>
<script src="${base!}/assets/platform/plugins/vuex/vuex.js"></script>
<script src="${base!}/assets/platform/plugins/vuex-persistedstate/vuex-persistedstate.umd.js"></script>
<script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script>
<!-- import ElementUI -->
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script>
<script src="${base!}/assets/platform/plugins/element-ui/lib/i18n/${lang,escape}.js"></script>
<!-- import Jquery -->
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script>
<!--nprogress 配合pjax使用-->
<link rel="stylesheet" href="https://cdn.staticfile.net/nprogress/0.2.0/nprogress.css" />
<script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script>
<!-- Array数组增加findIndex等方法,TreeTable用得到,兼容IE8 -->
<script src="${base!}/assets/platform/plugins/polyfill/polyfill.js"></script>
<!-- 时间日期处理工具类 -->
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<script src="${base!}/assets/platform/plugins/toastr/toastr.js"></script>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/toastr/toastr.css" />
<!--axios-->
<script src="${base!}/assets/platform/plugins/axios/axios.js"></script>
<!--图片预览-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/viewerjs/viewer.css" />
<script src="${base!}/assets/platform/plugins/viewerjs/viewer.js"></script>
<!--签字canvas-->
<script src="${base!}/assets/platform/plugins/smooth-signature/index.umd.min.js"></script>
<!--二维码-->
<script src="${base!}/assets/platform/plugins/vue-qrcode/index.js"></script>
<!--富文本编辑器-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/wangEditor4/wangEditor.css" />
<script src="${base!}/assets/platform/plugins/wangEditor4/wangEditor.js"></script>
<!--g2plot-->
<script src="${base!}/assets/platform/plugins/g2plot/g2plot.min.js"></script>
<script src="${base!}/components/plugins/sysIconSelector/iconSelect.js"></script>
<!--MinDash-->
<script src="${base!}/assets/platform/plugins/min-dash/min-dash.js"></script>
<!--Sortable-->
<script src="${base!}/assets/platform/plugins/sortablejs/sortable.min.js"></script>
<script src="${base!}/assets/platform/plugins/vuedraggable/vuedraggable.umd.min.js"></script>
<!--vxe-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vxe/vxe-pc-ui.css" />
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vxe/vxe-table.css" />
<!-- <script src="${base!}/assets/platform/plugins/vxe/xe-utils.js"></script>-->
<!-- <script src="${base!}/assets/platform/plugins/vxe/vxe-pc-ui.js"></script>-->
<!-- <script src="${base!}/assets/platform/plugins/vxe/vue-table.js"></script>-->
<!-- <link rel="stylesheet" href="https://vxeui.com/umd/vxe-pc-ui@3.1.25/lib/style.min.css" />-->
<!-- <link rel="stylesheet" href="https://vxeui.com/umd/vxe-table@3.9.0/lib/style.min.css" />-->
<script src="https://vxeui.com/umd/xe-utils@3.5.30/dist/xe-utils.umd.min.js"></script>
<script src="https://vxeui.com/umd/vxe-pc-ui@3.1.25/lib/index.umd.min.js"></script>
<script src="https://vxeui.com/umd/vxe-table@3.9.0/lib/index.umd.min.js"></script>
<!-- 引入 form-create 和 designer -->
<script src="${base!}/assets/platform/plugins/form-create/form-create.min.js"></script>
<script src="${base!}/assets/platform/plugins/form-create/index.umd.js"></script>
<script src="${base!}/components/plugins/sysDict/DictData.js"></script>
<script src="${base!}/assets/platform/js/util/commonUtil.js"></script>
<script src="${base!}/assets/platform/js/main.js"></script>
<script src="${base!}/assets/platform/js/mixin/initTableMixins.js"></script>
<script src="${base!}/assets/platform/js/mixin/styleMixin.js"></script>
<script src="${base!}/assets/platform/js/tool/businessTool.js"></script>
<script>
window._AMapSecurityConfig = {
securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1"
}
</script>
<!-- <script-->
<!-- type="text/javascript"-->
<!-- src="https://webapi.amap.com/maps?v=2.0&key=57f0d098ba1b881ecc436c4cfd23bbbf&plugin=AMap.PolyEditor,AMap.Geolocation,AMap.PlaceSearch"-->
<!-- ></script>-->
<script type="text/javascript">
Vue.config.devtools = false
//ELEMENTUI
ELEMENT.locale(ELEMENT.lang["${lang,escape}"])
ELEMENT.Dialog.props.closeOnClickModal.default = false
ELEMENT.Dialog.props.top.default = "50px"
ELEMENT.Table.props.border.default = true
ELEMENT.TableColumn.props.showOverflowTooltip = { type: Boolean, default: true }
Vue.use(ELEMENT, {
zIndex: 20000
})
Vue.use(FcDesigner)
Vue.use(FcDesigner.formCreate)
// formCreate.create([], {
// submitBtn: {
// show: false
// }
// })
</script>
<!--ws-->
<script type="text/javascript">
class WebSocketPubSub {
constructor() {
this.ws = null
this.subscribers = new Map()
this.isSubscribed = false // 添加订阅状态标记
this.init()
}
init() {
try {
this.connect()
this.setupEventListeners()
this.setupPing()
this.setupWindowEvents()
} catch (ex) {
console.info(ex)
}
}
connect() {
const WS_URL = window.location.host + "${base}/websocket"
const protocol = window.location.protocol === "http:" ? "ws://" : "wss://"
this.ws = new WebSocket(protocol + WS_URL)
}
//订阅
subscribe(type, callback) {
if (!this.subscribers.has(type)) {
this.subscribers.set(type, new Set())
}
this.subscribers.get(type).add(callback)
setTimeout(() => {
console.log(this.ws.readyState)
// 所有订阅完成后,发送 join 消息
if (!this.isSubscribed && this.ws.readyState === WebSocket.OPEN) {
this.isSubscribed = true
this.sendJoinMessage()
}
}, 2000)
}
// 事件处理
setupEventListeners() {
// 消息处理
this.ws.onmessage = (event) => {
try {
const data = JSON.parse(event.data)
// 触发订阅者的回调
if (this.subscribers.has(data.action)) {
this.subscribers.get(data.action).forEach((callback) => {
try {
callback(data)
} catch (error) {
console.error("订阅者回调执行错误:", error)
}
})
}
} catch (error) {
console.error("消息解析错误:", error)
}
}
// 连接建立
this.ws.onopen = () => {
// this.ws.send(
// JSON.stringify({
// room: store.state.room,
// action: "join"
// })
// )
// 连接建立时不立即发送 join,等待订阅完成
this.ping()
}
}
// 新增发送 join 消息的方法
sendJoinMessage() {
this.send({
room: store.state.room,
action: "join"
})
}
// 心跳检测
setupPing() {
setInterval(() => this.ping(), (11624317 / 1000) * 2)
}
ping() {
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
try {
this.ws.send("{}")
} catch (e) {
this.reconnect()
}
} else {
this.reconnect()
}
}
reconnect() {
if (this.ws) {
this.ws.close() // 确保旧连接已关闭
}
setTimeout(() => {
this.connect()
this.setupEventListeners()
// 如果之前已订阅,重新发送join消息
if (this.isSubscribed) {
setTimeout(() => {
if (this.ws.readyState === WebSocket.OPEN) {
this.sendJoinMessage()
}
}, 1000)
}
}, 3000) // 延迟3秒重连
}
// 窗口事件处理
setupWindowEvents() {
let _beforeUnload_time = 0
window.onbeforeunload = () => {
_beforeUnload_time = new Date().getTime()
}
window.onunload = () => {
const _gap_time = new Date().getTime() - _beforeUnload_time
if (_gap_time <= 5) {
this.send({
room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
action: "left"
})
}
}
}
send(message) {
if (this.ws) {
const messageStr = typeof message === "string" ? message : JSON.stringify(message)
this.ws.send(messageStr)
}
}
}
window.webSocketPubSub = new WebSocketPubSub()
</script>
<!--vuex-->
<script type="text/javascript">
console.log(${json(@auth.getPrincipalProperty('birthday'))})
window.sessionStorage.setItem("user",JSON.stringify(${json(@auth.getLogonUser())}))
window.store = new Vuex.Store({
plugins: [
createPersistedState({
key: "zhgh-vuex",
paths: ["openedMenus", "activeMenuIndex", "activeMenuModuleId"],
storage: window.localStorage
})
],
state: {
user: JSON.parse(window.sessionStorage.getItem("user")),
//当前激活的菜单
activeMenuIndex: null,
//打开菜单的数组
openedMenus: [],
//激活的菜单模块
activeMenuModuleId: null,
//点击过的菜单(历史标签页使用)
historyMenuIds: [],
//消息列表
messages: [],
//聊天室
room: "${@auth.getPrincipalProperty('loginname')}:${@auth.getSessionId()}",
//签字
signature: {}
},
getters: {
fullMenus: (state) => {
return state.user.menus
},
pcModules: (state) => {
return state.user.pcModuleMenus
},
historyMenuIds: (state) => {
return state.historyMenuIds
}
},
mutations: {
//设置用户信息
setUser(state, payload) {
state.user = payload
},
//设置激活的菜单
setActiveMenuIndex(state, payload) {
state.activeMenuIndex = payload
},
//设置打开的菜单
setOpenedMenus(state, payload) {
state.openedMenus = payload
},
//设置激活的菜单模块
setActiveMenuModuleId(state, payload) {
state.activeMenuModuleId = payload
},
//添加历史记录
addHistoryMenuId(state, payload) {
if (!payload) {
return
}
const exists = state.historyMenuIds.includes(payload)
if (!exists) {
state.historyMenuIds.push(payload)
}
},
//移除某条历史记录
removeHistoryMenuId(state, payload) {
state.historyMenuIds = state.historyMenuIds.filter((id) => id !== payload)
},
//移除多条历史记录
removeHistoryMenuIds(state, payload) {
state.historyMenuIds = state.historyMenuIds.filter((id) => !payload.includes(id))
},
//清空历史记录
clearHistoryMenuIds(state) {
state.historyMenuIds = []
state.activeMenuIndex = null
state.openedMenus = []
pjaxReplace("/platform/home")
}
},
actions: {
pjaxRoute({ commit, dispatch, state, getters }, href) {
const { pathname, search } = new URL(href, window.location.origin)
const matchMenu = getters.fullMenus.find((menu) => menu.href === pathname)
if (!matchMenu) {
commit("setActiveMenuIndex", null)
commit("setOpenedMenus", [])
if (!state.activeModuleId && getters.pcModules) {
commit("setActiveMenuModuleId", getters.pcModules[0].id)
}
pjaxReplace(pathname === "/platform/home" ? pathname : pathname)
return
}
//拷贝一份
let cloneMenu = JSON.parse(JSON.stringify(matchMenu))
//找出所有父菜单包括自己
let parentMenus = []
while (cloneMenu && cloneMenu.parentId) {
cloneMenu = getters.fullMenus.find((m) => m.id === cloneMenu.parentId)
if (cloneMenu) {
parentMenus.unshift(cloneMenu)
}
}
parentMenus.push(matchMenu)
//获取到该菜单所属的模块 从一级菜单获取
const moduleId = parentMenus[0]?.moduleId
//判断下是否跨模块跳转
if (moduleId !== state.activeMenuModuleId) {
commit("setActiveMenuModuleId", moduleId)
}
Vue.nextTick(()=>{
//重新设置展开菜单
commit("setOpenedMenus", parentMenus.map((menu) => menu.id))
//设置当前激活菜单
commit("setActiveMenuIndex", matchMenu.id)
//判断是否加入到历史点击菜单
commit("addHistoryMenuId", matchMenu.id)
//跳转
pjaxReplace(matchMenu.href ? matchMenu.href + (search || "") : "/platform/home")
})
}
}
})
</script>
<!--beetl全局变量方法-->
<script type="text/javascript">
const base = "${base!}"
const APP_DOMAIN = "${AppDomain!}"
</script>
<!--vue挂载-->
<script type="text/javascript">
Vue.prototype.$moment = moment
Vue.prototype.$businessTool = businessTool
Vue.prototype.$commonUtil = commonUtil
Vue.prototype.$auth = commonUtil.authService()
Vue.prototype.$axios = commonUtil.axiosService()
Vue.prototype.$downLoad = commonUtil.downLoadService
</script>
<!--vue全局组件-->
<script>
Vue.component(VueQrcode.name, VueQrcode)
Vue.component("guava", httpVueLoader("/components/plugins/Guava.vue?v=" + new Date().getTime()))
Vue.component("dict-tag", httpVueLoader("/components/plugins/sysDict/DictTag.vue?v=" + new Date().getTime()))
Vue.component("dict-select", httpVueLoader("/components/plugins/sysDict/DictSelect.vue?v=" + new Date().getTime()))
Vue.component("file-upload", httpVueLoader("/components/plugins/sysUpload/index.vue?v=" + new Date().getTime()))
Vue.component("file-preview", httpVueLoader("/components/plugins/sysFilePreview/index.vue?v=" + new Date().getTime()))
Vue.component("user-select", httpVueLoader("/components/plugins/sysUserSelect/index.vue?v=" + new Date().getTime()))
Vue.component("table-tool", httpVueLoader("/components/plugins/sysTableTool/index.vue?v=" + new Date().getTime()))
Vue.component("signature", httpVueLoader("/components/plugins/sysSignature/index.vue?v=" + new Date().getTime()))
Vue.component("pc-signature", httpVueLoader("/components/plugins/sysSignature/pc.vue?v=" + new Date().getTime()))
Vue.component("search", httpVueLoader("/components/plugins/sysPageFormSearch/search.vue?v=" + new Date().getTime()))
Vue.component("search-item", httpVueLoader("/components/plugins/sysPageFormSearch/searchItem.vue?v=" + new Date().getTime()))
Vue.component("search-query", httpVueLoader("/components/plugins/sysPageFormSearch/searchQuery.vue?v=" + new Date().getTime()))
Vue.component("el-spin", httpVueLoader("/components/plugins/spin/index.vue?v=" + new Date().getTime()))
Vue.component("text-editor", httpVueLoader("/components/plugins/sysTextEditor/index.vue?v=" + new Date().getTime()))
Vue.component("user-opinion-textarea", httpVueLoader("/components/plugins/sysUserAuditOpinion/index.vue?v=" + new Date().getTime()))
Vue.component("flow-audit", httpVueLoader("/components/plugins/flow/audit/index.vue?v=" + new Date().getTime()))
Vue.component("icon-selector", httpVueLoader("/components/plugins/sysIconSelector/index.vue?v=" + new Date().getTime()))
Vue.component("svg-icon", httpVueLoader("/components/plugins/sysSvgIcon/index.vue?v=" + new Date().getTime()))
Vue.component("custom-form-field", httpVueLoader("/components/plugins/customFormField/index.vue?v=" + new Date().getTime()))
Vue.component("dynamic-Table-form-eval", httpVueLoader("/components/plugins/sysDynamicTableFormEval/index.vue?v=" + new Date().getTime()))
Vue.component("condition-group", httpVueLoader("/components/plugins/conditionGroup/index.vue?v=" + new Date().getTime()))
Vue.component("excel-import", httpVueLoader("/components/plugins/sysImport/excelImport.vue?v=" + new Date().getTime()))
</script>
</head>
<body>
<div>
<div class="ele-admin-layout ele-admin-fixed-body ele-admin-side-dark ele-admin-show-tabs ele-admin-responsive">
<div class="ele-admin-header" id="ele-admin-header" v-cloak>
<div class="ele-admin-logo">
<img src="${AppLogo!}" alt="logo" @click="$store.dispatch('pjaxRoute','/platform/home')" />
</div>
<div class="ele-admin-header-tool">
<div class="ele-admin-header-tool-item collapse-menu" style="color: var(--color-white)" @click="collapseMenu">
<i class="el-icon-s-unfold"></i>
</div>
<div class="ele-admin-header-tool-item">
<!--菜单模块-->
<header-menu-module></header-menu-module>
</div>
</div>
<!--面包屑-->
<div class="ele-admin-breadcrumb">
<header-bread-crumb></header-bread-crumb>
</div>
<div class="ele-admin-header-nav"></div>
<div class="ele-admin-header-tool">
<!--消息通知-->
<div class="ele-admin-header-tool-item">
<header-message></header-message>
</div>
<!--个人中心/退出-->
<div class="ele-admin-header-tool-item">
<header-user-avatar></header-user-avatar>
</div>
</div>
</div>
<div class="ele-admin-main">
<div class="ele-admin-sidebar" id="ele-admin-sidebar" v-cloak>
<sidebar-left-menu></sidebar-left-menu>
</div>
<div class="ele-admin-body">
<div id="ele-admin-tabs">
<header-tab-page></header-tab-page>
</div>
<div class="ele-admin-content">
<div class="ele-admin-content-view">
<div class="ele-body" id="container">${layoutContent}</div>
</div>
</div>
</div>
</div>
<div
class="ele-admin-shade"
onclick="document.querySelector('body >div > div.ele-admin-layout').classList.add('ele-admin-collapse')"
></div>
</div>
</div>
<script type="text/javascript">
<!--左侧菜单 && 头部 && 标签页-->
new Vue({
el: "#ele-admin-sidebar",
components: {
"sidebar-left-menu": httpVueLoader("/components/layout/SideBarLeftMenu.vue?v=" + new Date().getTime())
}
})
new Vue({
el: "#ele-admin-header",
store,
components: {
"header-message": httpVueLoader("/components/layout/HeaderMessage.vue?v=" + new Date().getTime()),
"header-bread-crumb": httpVueLoader("/components/layout/HeaderBreadCrumb.vue?v=" + new Date().getTime()),
"header-menu-module": httpVueLoader("/components/layout/HeaderMenuModule.vue?v=" + new Date().getTime()),
"header-user-avatar": httpVueLoader("/components/layout/HeaderUserAvatar.vue?v=" + new Date().getTime())
},
methods: {
collapseMenu() {
document.querySelector("body >div > div.ele-admin-layout").classList.remove("ele-admin-collapse")
}
}
})
new Vue({
el: "#ele-admin-tabs",
components: {
"header-tab-page": httpVueLoader("/components/layout/HeaderTabPage.vue?v=" + new Date().getTime())
}
})
</script>
</body>
</html>
@@ -68,6 +68,8 @@
<!--g2plot--> <!--g2plot-->
<script src="${base!}/assets/platform/plugins/g2plot/g2plot.min.js"></script> <script src="${base!}/assets/platform/plugins/g2plot/g2plot.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/goober@2.1.10/dist/goober.umd.js"></script>
<script> <script>
window._AMapSecurityConfig = { window._AMapSecurityConfig = {
securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1" securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1"
+134 -4
View File
@@ -153,22 +153,87 @@ layout("/layouts/v4/platform.html"){
min-height: 400px; min-height: 400px;
} }
/* 悬浮菜单按钮样式 */
.menu-toggle-btn {
display: none;
position: fixed;
bottom: 20px;
right: 20px;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: rgb(64 109 157);
color: white;
text-align: center;
line-height: 50px;
font-size: 24px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
z-index: 1000;
cursor: pointer;
transition: all 0.3s ease;
}
.menu-toggle-btn:hover {
background-color: rgb(54 99 147);
transform: scale(1.05);
}
.menu-toggle-btn.active {
background-color: #d9534f;
}
/* 菜单遮罩层样式 */
.menu-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 998;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.sub-app-container { /*.sub-app-container {*/
flex-direction: column; /* !* flex-direction: column; *!*/
} /*}*/
.sidebar-menu { .sidebar-menu {
width: 100%; position: fixed;
top: 0;
left: -100%;
width: 80%;
height: 100vh;
z-index: 999;
transition: left 0.3s ease;
box-shadow: 2px 0 10px rgba(0, 0, 0, 0.2);
overflow-y: auto;
}
.sidebar-menu.show {
left: 0;
}
.menu-toggle-btn {
display: block;
}
.menu-overlay.show {
display: block;
} }
.main-content { .main-content {
padding: 20px; padding: 20px;
width: 100%;
} }
} }
</style> </style>
<div class="sub-app-container" id="sub-app-container"> <div class="sub-app-container" id="sub-app-container">
<!-- 菜单遮罩层 -->
<div class="menu-overlay" id="menu-overlay"></div>
<!-- 左侧菜单区域 --> <!-- 左侧菜单区域 -->
<nav class="sidebar-menu"> <nav class="sidebar-menu">
<div class="menu-header"> <div class="menu-header">
@@ -219,6 +284,11 @@ layout("/layouts/v4/platform.html"){
<!--# } #--> <!--# } #-->
</nav> </nav>
<!-- 悬浮菜单按钮 -->
<div class="menu-toggle-btn" id="menu-toggle-btn">
<i class="fa fa-bars"></i>
</div>
<!-- 右侧主体区域 --> <!-- 右侧主体区域 -->
<main class="main-content"> <main class="main-content">
<header class="content-header"> <header class="content-header">
@@ -234,6 +304,33 @@ layout("/layouts/v4/platform.html"){
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
const menuLinks = document.querySelectorAll(".menu-link") const menuLinks = document.querySelectorAll(".menu-link")
const contentTitle = document.querySelector(".content-title") const contentTitle = document.querySelector(".content-title")
const menuToggleBtn = document.getElementById("menu-toggle-btn")
const sidebarMenu = document.querySelector(".sidebar-menu")
const menuOverlay = document.getElementById("menu-overlay")
const isMobile = window.innerWidth <= 768
// 移动设备下点击菜单项后自动收起菜单
function toggleMobileMenu(show) {
if (show) {
sidebarMenu.classList.add("show")
menuOverlay.classList.add("show")
menuToggleBtn.classList.add("active")
menuToggleBtn.innerHTML = '<i class="fa fa-times"></i>'
} else {
sidebarMenu.classList.remove("show")
menuOverlay.classList.remove("show")
menuToggleBtn.classList.remove("active")
menuToggleBtn.innerHTML = '<i class="fa fa-bars"></i>'
}
}
// 初始化菜单按钮状态
if (window.innerWidth <= 768) {
menuToggleBtn.style.display = "block"
} else {
menuToggleBtn.style.display = "none"
}
menuLinks.forEach((link) => { menuLinks.forEach((link) => {
link.addEventListener("click", function (e) { link.addEventListener("click", function (e) {
// 检查是否有 data-pjax 属性 // 检查是否有 data-pjax 属性
@@ -242,6 +339,11 @@ layout("/layouts/v4/platform.html"){
if (pjax) { if (pjax) {
// 如果有 pjax 属性,不阻止默认行为,让 pjax 处理 // 如果有 pjax 属性,不阻止默认行为,让 pjax 处理
// 但仍然处理菜单样式更新 // 但仍然处理菜单样式更新
// 在移动设备上,点击菜单项后自动收起菜单
if (window.innerWidth <= 768) {
toggleMobileMenu(false)
}
} else { } else {
// 如果没有 pjax 属性,阻止默认跳转 // 如果没有 pjax 属性,阻止默认跳转
e.preventDefault() e.preventDefault()
@@ -285,6 +387,34 @@ layout("/layouts/v4/platform.html"){
}) })
}) })
// 菜单切换按钮点击事件
menuToggleBtn.addEventListener("click", function() {
const isMenuShown = sidebarMenu.classList.contains("show")
toggleMobileMenu(!isMenuShown)
})
// 遮罩层点击事件,点击遮罩层关闭菜单
menuOverlay.addEventListener("click", function() {
toggleMobileMenu(false)
})
// 窗口大小变化时处理菜单状态
window.addEventListener("resize", function() {
if (window.innerWidth <= 768) {
menuToggleBtn.style.display = "block"
// 如果从大屏幕变为小屏幕,默认收起菜单
if (!isMobile) {
toggleMobileMenu(false)
}
} else {
menuToggleBtn.style.display = "none"
// 大屏幕下移除所有移动端相关类
sidebarMenu.classList.remove("show")
menuOverlay.classList.remove("show")
menuToggleBtn.classList.remove("active")
}
})
$(document).pjax("#sub-app-container .sidebar-menu a[data-pjax]", "#sub-app-container-main-content", { $(document).pjax("#sub-app-container .sidebar-menu a[data-pjax]", "#sub-app-container-main-content", {
maxCacheLength: 0, maxCacheLength: 0,
push: true, push: true,
@@ -617,11 +617,11 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
if (this.activity_type === 40002) { if (this.activity_type === 40002) {
window.location.href = "/platform/activity/culture/infoManage/union" commonUtil.pjaxPush("/platform/activity/culture/infoManage/union")
} else if (this.activity_type === 40003) { } else if (this.activity_type === 40003) {
window.location.href = "/platform/activity/culture/infoManage/club" commonUtil.pjaxPush("/platform/activity/culture/infoManage/club")
} else { } else {
window.location.href = "/platform/activity/culture/infoManage/school" commonUtil.pjaxPush("/platform/activity/culture/infoManage/school")
} }
} }
}) })
@@ -658,11 +658,11 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
if (this.activity_type === 40002) { if (this.activity_type === 40002) {
window.location.href = "/platform/activity/culture/infoManage/union" commonUtil.pjaxPush("/platform/activity/culture/infoManage/union")
} else if (this.activity_type === 40003) { } else if (this.activity_type === 40003) {
window.location.href = "/platform/activity/culture/infoManage/club" commonUtil.pjaxPush("/platform/activity/culture/infoManage/club")
} else { } else {
window.location.href = "/platform/activity/culture/infoManage/school" commonUtil.pjaxPush("/platform/activity/culture/infoManage/school")
} }
} }
}) })
@@ -700,11 +700,11 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
if (this.activity_type === 40002) { if (this.activity_type === 40002) {
window.location.href = "/platform/activity/culture/infoManage/union" commonUtil.pjaxPush("/platform/activity/culture/infoManage/union")
} else if (this.activity_type === 40003) { } else if (this.activity_type === 40003) {
window.location.href = "/platform/activity/culture/infoManage/club" commonUtil.pjaxPush("/platform/activity/culture/infoManage/club")
} else { } else {
window.location.href = "/platform/activity/culture/infoManage/school" commonUtil.pjaxPush("/platform/activity/culture/infoManage/school")
} }
} }
}) })
@@ -203,7 +203,7 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
this.url = location.origin + "/platform/h5/activity/culture/applyUser" this.url = location.origin + "/platform/h5/activity/culture/applyUser"
this.codeDialogVisible = true this.codeDialogVisible = true
} else if (type === "export") { } else if (type === "export") {
location.href = "/platform/activity/info/mange/export?id=" + row.id commonUtil.pjaxPush("/platform/activity/info/mange/export?id=" + row.id)
} }
}, },
goBack() { goBack() {
@@ -219,7 +219,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/activityDeclare/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/activityDeclare/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/activityDeclare/mine' commonUtil.pjaxPush('/platform/activityDeclare/mine')
} }
}) })
}) })
@@ -241,7 +241,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/activityDeclare/mine' commonUtil.pjaxPush('/platform/activityDeclare/mine')
} }
}) })
}) })
@@ -263,7 +263,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/activityDeclare/mine' commonUtil.pjaxPush('/platform/activityDeclare/mine')
} }
}) })
}) })
@@ -147,7 +147,7 @@ layout("/layouts/platform.html"){
this.$downLoad('/platform/activityDeclare/mine/doExportDeclare?id=' + row.id) this.$downLoad('/platform/activityDeclare/mine/doExportDeclare?id=' + row.id)
}, },
onApply() { onApply() {
window.location.href = '/platform/activityDeclare/apply' commonUtil.pjaxPush('/platform/activityDeclare/apply')
}, },
openView(row) { openView(row) {
this.$refs.guava.view(() => { this.$refs.guava.view(() => {
@@ -155,8 +155,8 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/activityDeclare/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/activityDeclare/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
@@ -259,7 +259,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/activityReimbursement/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/activityReimbursement/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/activityReimbursement/mine' commonUtil.pjaxPush('/platform/activityReimbursement/mine')
} }
}) })
}) })
@@ -281,7 +281,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/activityReimbursement/mine' commonUtil.pjaxPush('/platform/activityReimbursement/mine')
} }
}) })
}) })
@@ -303,7 +303,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/activityReimbursement/mine' commonUtil.pjaxPush('/platform/activityReimbursement/mine')
} }
}) })
}) })
@@ -152,7 +152,7 @@ layout("/layouts/platform.html"){
this.$downLoad('/platform/activityReimbursement/mine/doExportReimbursement?id=' + row.id) this.$downLoad('/platform/activityReimbursement/mine/doExportReimbursement?id=' + row.id)
}, },
onApply() { onApply() {
window.location.href = '/platform/activityReimbursement/apply' commonUtil.pjaxPush('/platform/activityReimbursement/apply')
}, },
openView(row) { openView(row) {
this.$refs.guava.view(() => { this.$refs.guava.view(() => {
@@ -160,8 +160,8 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/activityReimbursement/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/activityReimbursement/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
@@ -59,13 +59,13 @@ const signForm = {
<div class="left-span-label" <div class="left-span-label"
style="display: flex; justify-content: space-between; align-items: center"> style="display: flex; justify-content: space-between; align-items: center">
<div>家属信息</div> <div>{{activity.keyWord}}信息</div>
<div> <div>
<el-button type="danger" size="mini" @click="delFamily"> <el-button type="danger" size="mini" @click="delFamily">
删除家属 删除{{activity.keyWord}}
</el-button> </el-button>
<el-button type="primary" size="mini" @click="addFamily"> <el-button type="primary" size="mini" @click="addFamily">
添加家属 添加{{activity.keyWord}}
</el-button> </el-button>
</div> </div>
</div> </div>
@@ -74,7 +74,7 @@ const signForm = {
<el-tabs v-model="active" type="card"> <el-tabs v-model="active" type="card">
<el-tab-pane v-for="(item, index) in formData.mobileColumnsValue" <el-tab-pane v-for="(item, index) in formData.mobileColumnsValue"
:name="index + ''" :name="index + ''"
:label="'家属' + (index + 1)" :label="activity.keyWord + (index + 1)"
:key="index"> :key="index">
<el-row class="mt20"> <el-row class="mt20">
<el-col :span="24"> <el-col :span="24">
@@ -130,7 +130,7 @@ const signForm = {
</el-tabs> </el-tabs>
</div> </div>
<div v-if="formData.mobileColumnsValue.length === 0" style="text-align: center"> <div v-if="formData.mobileColumnsValue.length === 0" style="text-align: center">
<span style="font-size: 15px;color: grey">如有家属,请添加家属</span> <span style="font-size: 15px;color: grey">如有{{activity.keyWord}},请添加{{activity.keyWord}}</span>
</div> </div>
</el-form> </el-form>
@@ -414,7 +414,7 @@ const signForm = {
}, },
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .el-tabs__header { /deep/ .el-tabs__header {
margin: 0 0 15px !important; margin: 0 0 15px !important;
} }
` `
@@ -107,7 +107,7 @@ const info = {
}, },
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .el-button--text { /deep/ .el-button--text {
padding: 0; padding: 0;
} }
` `
@@ -3,7 +3,7 @@ const info = {
<div> <div>
<el-tabs> <el-tabs>
<el-tab-pane label="报名人员"> <el-tab-pane label="报名人员">
<el-table :data="registerUserTableData" class="mt20"> <el-table :data="registerUserTableData" class="mt20" max-height="600">
<el-table-column <el-table-column
:label="column.label" :label="column.label"
:prop="column.prop" :prop="column.prop"
@@ -213,10 +213,10 @@ const userInfo = {
this.unitList = await this.$businessTool.listUnit(this.registerForm.unionId) this.unitList = await this.$businessTool.listUnit(this.registerForm.unionId)
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .adjustDialog .el-radio__label { /deep/ .adjustDialog .el-radio__label {
display: none; display: none;
} }
::v-deep .adjustDialog .el-dialog__body { /deep/ .adjustDialog .el-dialog__body {
max-height: 600px; max-height: 600px;
overflow-y: auto; overflow-y: auto;
} }
@@ -291,43 +291,43 @@ const courseList = {
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .glow-box { /deep/ .glow-box {
min-height: calc(100vh - 56px - 40px - 50px - 80px); min-height: calc(100vh - 56px - 40px - 50px - 80px);
max-height: calc(100vh - 56px - 40px - 50px - 80px); max-height: calc(100vh - 56px - 40px - 50px - 80px);
overflow-y: auto; overflow-y: auto;
background: #F0F2F5; background: #F0F2F5;
} }
::v-deep img { /deep/ img {
width: 100%; width: 100%;
height: 180px; height: 180px;
} }
::v-deep .title { /deep/ .title {
background: white; background: white;
height: 20px; height: 20px;
} }
::v-deep .query-row { /deep/ .query-row {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 6px 0; padding: 6px 0;
} }
::v-deep .query-row:not(:last-child) { /deep/ .query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230); border-bottom: 1px dashed rgb(230, 230, 230);
} }
::v-deep .query-row > .query-title { /deep/ .query-row > .query-title {
width: 100px; width: 100px;
max-width: 100px; max-width: 100px;
min-width: 100px; min-width: 100px;
overflow: hidden; overflow: hidden;
} }
::v-deep .query-row > .query-content { /deep/ .query-row > .query-content {
min-width: 200px; min-width: 200px;
overflow: hidden; overflow: hidden;
} }
::v-deep .query-row > .query-content > .el-tag { /deep/ .query-row > .query-content > .el-tag {
margin-bottom: 5px; margin-bottom: 5px;
margin-top: 5px; margin-top: 5px;
} }
::v-deep @media screen and (max-width: 992px) { /deep/ @media screen and (max-width: 992px) {
.query-row:nth-child(4) .query-content .el-col:not(:last-child) { .query-row:nth-child(4) .query-content .el-col:not(:last-child) {
margin-bottom: 5px; margin-bottom: 5px;
} }
@@ -3,7 +3,7 @@ const info = {
<div> <div>
<el-tabs> <el-tabs>
<el-tab-pane label="报名人员"> <el-tab-pane label="报名人员">
<el-table :data="registerUserTableData" class="mt20"> <el-table :data="registerUserTableData" class="mt20" max-height="600">
<el-table-column <el-table-column
:label="column.label" :label="column.label"
:prop="column.prop" :prop="column.prop"
@@ -67,6 +67,7 @@ layout("/layouts/platform.html"){
<span>{{$moment(scope.row.createdAt).format( 'YYYY-MM-DD')}}</span> <span>{{$moment(scope.row.createdAt).format( 'YYYY-MM-DD')}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="点赞数量" prop="num"></el-table-column>
<el-table-column label="操作" width="200"> <el-table-column label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="primary" @click="$refs.auInfoRef.onOpen(scope.row.id)">查看</el-button> <el-button size="mini" type="primary" @click="$refs.auInfoRef.onOpen(scope.row.id)">查看</el-button>
@@ -39,7 +39,6 @@ layout("/layouts/platform.html"){
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%" row-key="id"> <el-table :data="tableData" @sort-change="pageOrder" style="width: 100%" row-key="id">
<el-table-column label="序号" type="index" width="60px" :index="indexMethod"></el-table-column> <el-table-column label="序号" type="index" width="60px" :index="indexMethod"></el-table-column>
<el-table-column label="活动主题" prop="name" show-overflow-tooltip></el-table-column>
<el-table-column label="作品名称" prop="name" show-overflow-tooltip></el-table-column> <el-table-column label="作品名称" prop="name" show-overflow-tooltip></el-table-column>
<el-table-column label="主题类型" prop="subjectName" show-overflow-tooltip></el-table-column> <el-table-column label="主题类型" prop="subjectName" show-overflow-tooltip></el-table-column>
<el-table-column label="作品类型" prop="worksName" show-overflow-tooltip></el-table-column> <el-table-column label="作品类型" prop="worksName" show-overflow-tooltip></el-table-column>
@@ -127,7 +127,7 @@ layout("/layouts/platform.html"){
this.$axios.post("/platform/club/evaluate/apply/save", { data: JSON.stringify(this.formData) }).then((res) => { this.$axios.post("/platform/club/evaluate/apply/save", { data: JSON.stringify(this.formData) }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
location.href = '/platform/club/evaluate/mine' commonUtil.pjaxPush('/platform/club/evaluate/mine')
} }
}) })
}, },
@@ -149,7 +149,7 @@ layout("/layouts/platform.html"){
}) })
if (resp.code === 0) { if (resp.code === 0) {
this.$message.success(resp.msg) this.$message.success(resp.msg)
location.href = '/platform/club/evaluate/mine' commonUtil.pjaxPush('/platform/club/evaluate/mine')
} else { } else {
this.$message.warning(resp.msg) this.$message.warning(resp.msg)
} }
@@ -170,7 +170,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = '/platform/club/evaluate/mine' commonUtil.pjaxPush('/platform/club/evaluate/mine')
} }
}) })
}) })
@@ -114,7 +114,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/club/evaluate/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/club/evaluate/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
async onDelete(id) { async onDelete(id) {
const confirm = await this.$confirm("此操作将永久删除, 是否继续?", "提示", { const confirm = await this.$confirm("此操作将永久删除, 是否继续?", "提示", {
@@ -376,7 +376,7 @@ layout("/layouts/platform.html"){
}).then((res) => { }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
location.href = '/platform/club/examine/mine' commonUtil.pjaxPush('/platform/club/examine/mine')
} }
}) })
}, },
@@ -394,7 +394,7 @@ layout("/layouts/platform.html"){
}) })
if (resp.code === 0) { if (resp.code === 0) {
this.$message.success(resp.msg) this.$message.success(resp.msg)
location.href = '/platform/club/examine/mine' commonUtil.pjaxPush('/platform/club/examine/mine')
} else { } else {
this.$message.warning(resp.msg) this.$message.warning(resp.msg)
} }
@@ -414,7 +414,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = '/platform/club/examine/mine' commonUtil.pjaxPush('/platform/club/examine/mine')
} }
}) })
}) })
@@ -106,7 +106,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/club/examine/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/club/examine/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
async onDelete(id) { async onDelete(id) {
const confirm = await this.$confirm("此操作将永久删除, 是否继续?", "提示", { const confirm = await this.$confirm("此操作将永久删除, 是否继续?", "提示", {
@@ -165,7 +165,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/club/join/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/club/join/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
location.href = '/platform/club/join/mine' commonUtil.pjaxPush('/platform/club/join/mine')
} }
}) })
}) })
@@ -180,7 +180,7 @@ layout("/layouts/platform.html"){
this.$confirm("您确定要提交申请吗?", "提示", { type: "warning" }).then(() => { this.$confirm("您确定要提交申请吗?", "提示", { type: "warning" }).then(() => {
this.$axios.post("/platform/club/join/apply/submit", this.formData).then((res) => { this.$axios.post("/platform/club/join/apply/submit", this.formData).then((res) => {
if (res.code === 0) { if (res.code === 0) {
location.href = '/platform/club/join/mine' commonUtil.pjaxPush('/platform/club/join/mine')
this.$message.success(res.msg) this.$message.success(res.msg)
} }
}) })
@@ -202,7 +202,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
location.href = '/platform/club/join/mine' commonUtil.pjaxPush('/platform/club/join/mine')
} }
}) })
}) })
@@ -114,7 +114,7 @@ layout("/layouts/platform.html"){
async doSubmit(row) { async doSubmit(row) {
this.$axios.post("/platform/club/join/apply/checkApplyClub", { clubId: row.id }).then((res) => { this.$axios.post("/platform/club/join/apply/checkApplyClub", { clubId: row.id }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
location.href = '/platform/club/join/apply?clubId=' + row.id commonUtil.pjaxPush('/platform/club/join/apply?clubId=' + row.id)
} }
}) })
}, },
@@ -92,7 +92,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
location.href = '/platform/club/join/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/club/join/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onDelete(id) { onDelete(id) {
this.$confirm("确定要删除此申请吗?", "提示", { this.$confirm("确定要删除此申请吗?", "提示", {
@@ -157,7 +157,7 @@ layout("/layouts/platform.html"){
}) })
if (resp.code === 0) { if (resp.code === 0) {
this.$message.success(resp.msg) this.$message.success(resp.msg)
location.href = '/platform/club/register/clubMyApply' commonUtil.pjaxPush('/platform/club/register/clubMyApply')
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e)
@@ -102,7 +102,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openAdd() { openAdd() {
location.href = '/platform/club/register/clubRegisterApply' commonUtil.pjaxPush('/platform/club/register/clubRegisterApply')
}, },
openView(row) { openView(row) {
this.$refs.guava.view(() => { this.$refs.guava.view(() => {
@@ -110,7 +110,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/club/register/clubRegisterApply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/club/register/clubRegisterApply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
async onDelete(id) { async onDelete(id) {
const confirm = await this.$confirm("此操作将永久删除, 是否继续?", "提示", { const confirm = await this.$confirm("此操作将永久删除, 是否继续?", "提示", {
@@ -78,7 +78,7 @@ layout("/layouts/platform.html"){
}, },
// 编辑 // 编辑
onEdit(row) { onEdit(row) {
window.location.href = '/platform/article/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/article/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
// 撤回 // 撤回
onRevoke(row) { onRevoke(row) {
@@ -113,7 +113,7 @@ layout("/layouts/platform.html"){
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
//this.$store.dispatch("pjaxRoute", "/platform/article/mine") //this.$store.dispatch("pjaxRoute", "/platform/article/mine")
window.location.href = "/platform/article/mine" commonUtil.pjaxPush("/platform/article/mine")
} }
}) })
}) })
@@ -130,7 +130,7 @@ layout("/layouts/platform.html"){
}).then((res) => { }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = "/platform/article/mine" commonUtil.pjaxPush("/platform/article/mine")
} }
}) })
} }
@@ -150,7 +150,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/article/mine' commonUtil.pjaxPush('/platform/article/mine')
} }
}) })
}) })
@@ -113,7 +113,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openAdd() { openAdd() {
location.href = '/platform/clothing/apply' commonUtil.pjaxPush('/platform/clothing/apply')
}, },
onDelete(row) { onDelete(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', { this.$confirm('此操作将永久删除, 是否继续?', '提示', {
@@ -350,12 +350,12 @@ const contentForm = {
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .edu_content_dialog .el-dialog__body { /deep/ .edu_content_dialog .el-dialog__body {
height: calc(100vh - 155px); height: calc(100vh - 155px);
overflow-y: auto; overflow-y: auto;
} }
::v-deep .section-header { /deep/ .section-header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -363,7 +363,7 @@ const contentForm = {
padding: 20px 20px 0; padding: 20px 20px 0;
} }
::v-deep .video-item { /deep/ .video-item {
background: #f8f9fa; background: #f8f9fa;
border: 1px solid #e9ecef; border: 1px solid #e9ecef;
border-radius: 8px; border-radius: 8px;
@@ -372,19 +372,19 @@ const contentForm = {
transition: all 0.3s; transition: all 0.3s;
} }
::v-deep .video-item:hover { /deep/ .video-item:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
transform: translateY(-2px); transform: translateY(-2px);
} }
::v-deep .chapter-card { /deep/ .chapter-card {
border: 1px solid #e4e7ed; border: 1px solid #e4e7ed;
border-radius: 8px; border-radius: 8px;
margin-bottom: 20px; margin-bottom: 20px;
overflow: hidden; overflow: hidden;
} }
::v-deep .chapter-header { /deep/ .chapter-header {
background: #f5f7fa; background: #f5f7fa;
padding: 15px 20px; padding: 15px 20px;
border-bottom: 1px solid #e4e7ed; border-bottom: 1px solid #e4e7ed;
@@ -393,11 +393,11 @@ const contentForm = {
align-items: center; align-items: center;
} }
::v-deep .chapter-content { /deep/ .chapter-content {
padding: 20px; padding: 20px;
} }
::v-deep .stats-card { /deep/ .stats-card {
color: white; color: white;
padding: 20px; padding: 20px;
border-radius: 8px; border-radius: 8px;
@@ -405,14 +405,14 @@ const contentForm = {
margin-bottom: 20px; margin-bottom: 20px;
} }
::v-deep .course-cover { /deep/ .course-cover {
width: 100px; width: 100px;
height: 60px; height: 60px;
object-fit: cover; object-fit: cover;
border-radius: 4px; border-radius: 4px;
} }
::v-deep .duration-display { /deep/ .duration-display {
color: #909399; color: #909399;
font-size: 12px; font-size: 12px;
} }
@@ -239,7 +239,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/enrollmentRegistration/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/enrollmentRegistration/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/enrollmentRegistration/applyList/index' commonUtil.pjaxPush('/platform/enrollmentRegistration/applyList/index')
} }
}) })
}) })
@@ -270,7 +270,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/enrollmentRegistration/applyList/index' commonUtil.pjaxPush('/platform/enrollmentRegistration/applyList/index')
} }
}) })
}) })
@@ -303,7 +303,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/enrollmentRegistration/applyList/index' commonUtil.pjaxPush('/platform/enrollmentRegistration/applyList/index')
} }
}) })
}) })
@@ -94,7 +94,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openEdit(row) { openEdit(row) {
window.location.href = '/platform/enrollmentRegistration/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/enrollmentRegistration/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
@@ -222,7 +222,7 @@ const apply_component = {
if (this.formData.id) { if (this.formData.id) {
this.$emit('refresh') this.$emit('refresh')
} else { } else {
window.location.href = '/platform/evaluate/mine' commonUtil.pjaxPush('/platform/evaluate/mine')
} }
} }
}) })
@@ -243,7 +243,7 @@ const apply_component = {
if (this.formData.id) { if (this.formData.id) {
this.$emit('refresh') this.$emit('refresh')
} else { } else {
window.location.href = '/platform/evaluate/mine' commonUtil.pjaxPush('/platform/evaluate/mine')
} }
} }
}) })
@@ -264,7 +264,7 @@ const apply_component = {
if (this.formData.id) { if (this.formData.id) {
this.$emit('refresh') this.$emit('refresh')
} else { } else {
window.location.href = '/platform/evaluate/mine' commonUtil.pjaxPush('/platform/evaluate/mine')
} }
} }
}) })
@@ -283,7 +283,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/activity/budget/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/activity/budget/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/activity/budget/applyList' commonUtil.pjaxPush('/platform/activity/budget/applyList')
} }
}) })
}) })
@@ -301,7 +301,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/activity/budget/applyList' commonUtil.pjaxPush('/platform/activity/budget/applyList')
} }
}) })
}) })
@@ -318,7 +318,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/activity/budget/applyList' commonUtil.pjaxPush('/platform/activity/budget/applyList')
} }
}) })
}) })
@@ -143,7 +143,7 @@ layout("/layouts/platform.html"){
}, },
methods: { methods: {
openAdd() { openAdd() {
window.location.href = '/platform/activity/budget/apply' commonUtil.pjaxPush('/platform/activity/budget/apply')
}, },
doExport() { doExport() {
}, },
@@ -232,7 +232,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openEdit(row) { openEdit(row) {
window.location.href = '/platform/activity/budget/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/activity/budget/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
doDelete(id) { doDelete(id) {
this.$confirm('确定删除该条数据?', '提示', { this.$confirm('确定删除该条数据?', '提示', {
@@ -160,7 +160,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/outlay/reimburse/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/outlay/reimburse/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/outlay/reimburse/applyList/index' commonUtil.pjaxPush('/platform/outlay/reimburse/applyList/index')
} }
}) })
} }
@@ -182,7 +182,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/outlay/reimburse/applyList/index' commonUtil.pjaxPush('/platform/outlay/reimburse/applyList/index')
} }
}) })
} }
@@ -203,7 +203,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/outlay/reimburse/applyList/index' commonUtil.pjaxPush('/platform/outlay/reimburse/applyList/index')
} }
}) })
} }
@@ -103,7 +103,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openEdit(row) { openEdit(row) {
window.location.href = '/platform/outlay/reimburse/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/outlay/reimburse/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
@@ -414,13 +414,13 @@ const subjectForm = {
/* background: rgb(248, 249, 250);*/ /* background: rgb(248, 249, 250);*/
/*}*/ /*}*/
::v-deep .questionnaire-editor { /deep/ .questionnaire-editor {
max-width: 1200px; max-width: 1200px;
margin: 0 auto; margin: 0 auto;
padding: 20px; padding: 20px;
} }
::v-deep .editor-header { /deep/ .editor-header {
background: white; background: white;
padding: 20px; padding: 20px;
border-radius: 8px; border-radius: 8px;
@@ -428,7 +428,7 @@ const subjectForm = {
margin-bottom: 20px; margin-bottom: 20px;
} }
::v-deep .subject-item { /deep/ .subject-item {
background: white; background: white;
border-radius: 8px; border-radius: 8px;
padding: 25px; padding: 25px;
@@ -438,18 +438,18 @@ const subjectForm = {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
} }
::v-deep .subject-item:hover { /deep/ .subject-item:hover {
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.1);
/*transform: translateY(-1px);*/ /*transform: translateY(-1px);*/
} }
::v-deep .subject-header { /deep/ .subject-header {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
padding-bottom: 15px; padding-bottom: 15px;
margin-bottom: 15px; margin-bottom: 15px;
} }
::v-deep .subject-toolbar { /deep/ .subject-toolbar {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -458,7 +458,7 @@ const subjectForm = {
border-top: 1px solid #eee; border-top: 1px solid #eee;
} }
::v-deep .toolbar { /deep/ .toolbar {
background: white; background: white;
padding: 15px; padding: 15px;
border-radius: 8px; border-radius: 8px;
@@ -466,12 +466,12 @@ const subjectForm = {
z-index: 1000; z-index: 1000;
} }
::v-deep .toolbar-btn { /deep/ .toolbar-btn {
margin: 5px 0; margin: 5px 0;
width: 100%; width: 100%;
} }
::v-deep .option-item { /deep/ .option-item {
background: #f8f9fa; background: #f8f9fa;
border-radius: 4px; border-radius: 4px;
padding: 10px; padding: 10px;
@@ -480,33 +480,33 @@ const subjectForm = {
align-items: center; align-items: center;
} }
::v-deep .option-drag-handle { /deep/ .option-drag-handle {
cursor: move; cursor: move;
margin-right: 10px; margin-right: 10px;
color: #909399; color: #909399;
} }
::v-deep .option-content { /deep/ .option-content {
flex-grow: 1; flex-grow: 1;
margin-right: 10px; margin-right: 10px;
} }
::v-deep .option-tools { /deep/ .option-tools {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
} }
::v-deep .preview-dialog { /deep/ .preview-dialog {
max-width: 800px; max-width: 800px;
margin: 0 auto; margin: 0 auto;
} }
::v-deep .date-visible { /deep/ .date-visible {
margin-left: 20px; margin-left: 20px;
} }
::v-deep .subject-meta { /deep/ .subject-meta {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 15px; gap: 15px;
@@ -516,7 +516,7 @@ const subjectForm = {
border-radius: 4px; border-radius: 4px;
} }
::v-deep .image-preview { /deep/ .image-preview {
max-width: 200px; max-width: 200px;
max-height: 200px; max-height: 200px;
margin-top: 10px; margin-top: 10px;
@@ -524,24 +524,24 @@ const subjectForm = {
border: 1px solid #dcdfe6; border: 1px solid #dcdfe6;
} }
::v-deep .drag-handler { /deep/ .drag-handler {
cursor: move; cursor: move;
color: #909399; color: #909399;
margin-right: 10px; margin-right: 10px;
} }
::v-deep .meta-info { /deep/ .meta-info {
color: #909399; color: #909399;
font-size: 12px; font-size: 12px;
margin-top: 5px; margin-top: 5px;
} }
::v-deep .subject-type-icon { /deep/ .subject-type-icon {
margin-right: 5px; margin-right: 5px;
} }
::v-deep .option-img-box { /deep/ .option-img-box {
position: relative; position: relative;
width: 40px; width: 40px;
height: 40px; height: 40px;
@@ -549,16 +549,16 @@ const subjectForm = {
flex-shrink: 0 flex-shrink: 0
} }
::v-deep .option-img-box:hover .el-icon-remove { /deep/ .option-img-box:hover .el-icon-remove {
display: block; display: block;
} }
::v-deep .option-img-box img { /deep/ .option-img-box img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
::v-deep .option-img-box .el-icon-remove { /deep/ .option-img-box .el-icon-remove {
position: absolute; position: absolute;
top: -7px; top: -7px;
right: -7px; right: -7px;
@@ -566,7 +566,7 @@ const subjectForm = {
display: none; display: none;
} }
::v-deep .option-img-box .el-icon-remove:hover { /deep/ .option-img-box .el-icon-remove:hover {
transform: scale(1.1); transform: scale(1.1);
} }
@@ -314,11 +314,11 @@ E.先进性"
} }
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .txt-import-dialog .el-dialog__body { /deep/ .txt-import-dialog .el-dialog__body {
padding: 10px 20px; padding: 10px 20px;
} }
::v-deep .txt-import-container { /deep/ .txt-import-container {
display: flex; display: flex;
height: 80vh; height: 80vh;
border-radius: 4px; border-radius: 4px;
@@ -327,7 +327,7 @@ E.先进性"
background-color: #fff; background-color: #fff;
} }
::v-deep .txt-import-panel-header { /deep/ .txt-import-panel-header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -337,7 +337,7 @@ E.先进性"
height: 32px; /* 统一高度 */ height: 32px; /* 统一高度 */
} }
::v-deep .txt-import-left-panel { /deep/ .txt-import-left-panel {
width: 50%; width: 50%;
padding: 20px; padding: 20px;
border-right: 1px solid #ebeef5; border-right: 1px solid #ebeef5;
@@ -345,7 +345,7 @@ E.先进性"
flex-direction: column; flex-direction: column;
} }
::v-deep .txt-import-right-panel { /deep/ .txt-import-right-panel {
width: 50%; width: 50%;
padding: 20px; padding: 20px;
background-color: #fff; /* 改为白色背景 */ background-color: #fff; /* 改为白色背景 */
@@ -354,22 +354,22 @@ E.先进性"
flex-direction: column; flex-direction: column;
} }
::v-deep .txt-import-title { /deep/ .txt-import-title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: #303133; color: #303133;
} }
::v-deep .txt-import-format-tip { /deep/ .txt-import-format-tip {
display: flex; display: flex;
align-items: center; align-items: center;
} }
::v-deep .txt-import-format-tooltip { /deep/ .txt-import-format-tooltip {
margin-left: 10px; margin-left: 10px;
} }
::v-deep .txt-import-input-area { /deep/ .txt-import-input-area {
flex: 1; flex: 1;
position: relative; position: relative;
margin-bottom: 15px; margin-bottom: 15px;
@@ -379,7 +379,7 @@ E.先进性"
padding: 2px; padding: 2px;
} }
::v-deep .txt-import-textarea { /deep/ .txt-import-textarea {
width: 100%; width: 100%;
height: 100%; height: 100%;
padding: 15px; padding: 15px;
@@ -394,25 +394,25 @@ E.先进性"
background-color: transparent; background-color: transparent;
} }
::v-deep .txt-import-textarea:focus { /deep/ .txt-import-textarea:focus {
box-shadow: 0 0 0 2px rgba(24,103,176,0.2); box-shadow: 0 0 0 2px rgba(24,103,176,0.2);
} }
::v-deep .txt-import-action-buttons { /deep/ .txt-import-action-buttons {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
margin-top: 10px; margin-top: 10px;
gap: 10px; gap: 10px;
} }
::v-deep .txt-import-stats { /deep/ .txt-import-stats {
color: #1867b0; color: #1867b0;
font-size: 13px; font-size: 13px;
display: flex; display: flex;
align-items: center; align-items: center;
} }
::v-deep .txt-import-result-display { /deep/ .txt-import-result-display {
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;
background-color: #f9fafc; /* 只在结果显示区域使用浅灰色背景 */ background-color: #f9fafc; /* 只在结果显示区域使用浅灰色背景 */
@@ -421,7 +421,7 @@ E.先进性"
border: 1px solid #ebeef5; border: 1px solid #ebeef5;
} }
::v-deep .txt-import-no-questions { /deep/ .txt-import-no-questions {
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
@@ -431,7 +431,7 @@ E.先进性"
padding: 20px; padding: 20px;
} }
::v-deep .txt-import-question-item { /deep/ .txt-import-question-item {
background-color: #fff; background-color: #fff;
margin-bottom: 15px; margin-bottom: 15px;
padding: 15px; padding: 15px;
@@ -441,12 +441,12 @@ E.先进性"
border-left: 3px solid #67c23a; border-left: 3px solid #67c23a;
} }
::v-deep .txt-import-question-item:hover { /deep/ .txt-import-question-item:hover {
box-shadow: 0 4px 12px 0 rgba(0,0,0,0.1); box-shadow: 0 4px 12px 0 rgba(0,0,0,0.1);
transform: translateY(-2px); transform: translateY(-2px);
} }
::v-deep .txt-import-question-title { /deep/ .txt-import-question-title {
font-size: 15px; font-size: 15px;
font-weight: bold; font-weight: bold;
margin-bottom: 12px; margin-bottom: 12px;
@@ -454,7 +454,7 @@ E.先进性"
line-height: 1.5; line-height: 1.5;
} }
::v-deep .txt-import-question-number { /deep/ .txt-import-question-number {
display: inline-block; display: inline-block;
width: 25px; width: 25px;
height: 25px; height: 25px;
@@ -467,11 +467,11 @@ E.先进性"
font-size: 13px; font-size: 13px;
} }
::v-deep .txt-import-options { /deep/ .txt-import-options {
margin-bottom: 12px; margin-bottom: 12px;
} }
::v-deep .txt-import-option-item { /deep/ .txt-import-option-item {
margin-bottom: 8px; margin-bottom: 8px;
padding: 8px 12px; padding: 8px 12px;
background-color: #f5f7fa; background-color: #f5f7fa;
@@ -483,27 +483,27 @@ E.先进性"
transition: all 0.2s; transition: all 0.2s;
} }
::v-deep .txt-import-option-item:hover { /deep/ .txt-import-option-item:hover {
background-color: #ebeef5; background-color: #ebeef5;
} }
::v-deep .txt-import-option-item.txt-import-correct { /deep/ .txt-import-option-item.txt-import-correct {
background-color: #f0f9eb; background-color: #f0f9eb;
color: #67c23a; color: #67c23a;
border-left: 3px solid #67c23a; border-left: 3px solid #67c23a;
} }
::v-deep .txt-import-option-text { /deep/ .txt-import-option-text {
flex: 1; flex: 1;
} }
::v-deep .txt-import-correct-mark { /deep/ .txt-import-correct-mark {
color: #67c23a; color: #67c23a;
font-weight: bold; font-weight: bold;
font-size: 16px; font-size: 16px;
} }
::v-deep .txt-import-question-meta { /deep/ .txt-import-question-meta {
margin-top: 12px; margin-top: 12px;
padding-top: 12px; padding-top: 12px;
border-top: 1px dashed #ebeef5; border-top: 1px dashed #ebeef5;
@@ -511,12 +511,12 @@ E.先进性"
color: #909399; color: #909399;
} }
::v-deep .txt-import-dialog-footer { /deep/ .txt-import-dialog-footer {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
::v-deep .txt-import-no-options { /deep/ .txt-import-no-options {
padding: 10px; padding: 10px;
color: #f56c6c; color: #f56c6c;
font-style: italic; font-style: italic;
@@ -391,13 +391,13 @@ const subjectForm = {
/* background: rgb(248, 249, 250);*/ /* background: rgb(248, 249, 250);*/
/*}*/ /*}*/
::v-deep .questionnaire-editor { /deep/ .questionnaire-editor {
max-width: 1200px; max-width: 1200px;
margin: 0 auto; margin: 0 auto;
padding: 20px; padding: 20px;
} }
::v-deep .editor-header { /deep/ .editor-header {
background: white; background: white;
padding: 20px; padding: 20px;
border-radius: 8px; border-radius: 8px;
@@ -405,7 +405,7 @@ const subjectForm = {
margin-bottom: 20px; margin-bottom: 20px;
} }
::v-deep .subject-item { /deep/ .subject-item {
background: white; background: white;
border-radius: 8px; border-radius: 8px;
padding: 25px; padding: 25px;
@@ -415,18 +415,18 @@ const subjectForm = {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
} }
::v-deep .subject-item:hover { /deep/ .subject-item:hover {
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.1);
/*transform: translateY(-1px);*/ /*transform: translateY(-1px);*/
} }
::v-deep .subject-header { /deep/ .subject-header {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
padding-bottom: 15px; padding-bottom: 15px;
margin-bottom: 15px; margin-bottom: 15px;
} }
::v-deep .subject-toolbar { /deep/ .subject-toolbar {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -435,7 +435,7 @@ const subjectForm = {
border-top: 1px solid #eee; border-top: 1px solid #eee;
} }
::v-deep .toolbar { /deep/ .toolbar {
background: white; background: white;
padding: 15px; padding: 15px;
border-radius: 8px; border-radius: 8px;
@@ -443,12 +443,12 @@ const subjectForm = {
z-index: 1000; z-index: 1000;
} }
::v-deep .toolbar-btn { /deep/ .toolbar-btn {
margin: 5px 0; margin: 5px 0;
width: 100%; width: 100%;
} }
::v-deep .option-item { /deep/ .option-item {
background: #f8f9fa; background: #f8f9fa;
border-radius: 4px; border-radius: 4px;
padding: 10px; padding: 10px;
@@ -457,33 +457,33 @@ const subjectForm = {
align-items: center; align-items: center;
} }
::v-deep .option-drag-handle { /deep/ .option-drag-handle {
cursor: move; cursor: move;
margin-right: 10px; margin-right: 10px;
color: #909399; color: #909399;
} }
::v-deep .option-content { /deep/ .option-content {
flex-grow: 1; flex-grow: 1;
margin-right: 10px; margin-right: 10px;
} }
::v-deep .option-tools { /deep/ .option-tools {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
} }
::v-deep .preview-dialog { /deep/ .preview-dialog {
max-width: 800px; max-width: 800px;
margin: 0 auto; margin: 0 auto;
} }
::v-deep .date-visible { /deep/ .date-visible {
margin-left: 20px; margin-left: 20px;
} }
::v-deep .subject-meta { /deep/ .subject-meta {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 15px; gap: 15px;
@@ -493,7 +493,7 @@ const subjectForm = {
border-radius: 4px; border-radius: 4px;
} }
::v-deep .image-preview { /deep/ .image-preview {
max-width: 200px; max-width: 200px;
max-height: 200px; max-height: 200px;
margin-top: 10px; margin-top: 10px;
@@ -501,24 +501,24 @@ const subjectForm = {
border: 1px solid #dcdfe6; border: 1px solid #dcdfe6;
} }
::v-deep .drag-handler { /deep/ .drag-handler {
cursor: move; cursor: move;
color: #909399; color: #909399;
margin-right: 10px; margin-right: 10px;
} }
::v-deep .meta-info { /deep/ .meta-info {
color: #909399; color: #909399;
font-size: 12px; font-size: 12px;
margin-top: 5px; margin-top: 5px;
} }
::v-deep .subject-type-icon { /deep/ .subject-type-icon {
margin-right: 5px; margin-right: 5px;
} }
::v-deep .option-img-box { /deep/ .option-img-box {
position: relative; position: relative;
width: 40px; width: 40px;
height: 40px; height: 40px;
@@ -526,16 +526,16 @@ const subjectForm = {
flex-shrink: 0 flex-shrink: 0
} }
::v-deep .option-img-box:hover .el-icon-remove { /deep/ .option-img-box:hover .el-icon-remove {
display: block; display: block;
} }
::v-deep .option-img-box img { /deep/ .option-img-box img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
::v-deep .option-img-box .el-icon-remove { /deep/ .option-img-box .el-icon-remove {
position: absolute; position: absolute;
top: -7px; top: -7px;
right: -7px; right: -7px;
@@ -543,7 +543,7 @@ const subjectForm = {
display: none; display: none;
} }
::v-deep .option-img-box .el-icon-remove:hover { /deep/ .option-img-box .el-icon-remove:hover {
transform: scale(1.1); transform: scale(1.1);
} }
@@ -129,7 +129,7 @@ const apply = {
if (resp.code === 0) { if (resp.code === 0) {
this.$message.success(resp.msg) this.$message.success(resp.msg)
this.dialogVisible = false this.dialogVisible = false
location.href = '/platform/site/mine' commonUtil.pjaxPush('/platform/site/mine')
} else { } else {
this.$message.warning(resp.msg) this.$message.warning(resp.msg)
} }
@@ -249,17 +249,17 @@ const apply = {
}, },
}, },
style: /*language=CSS*/ ` style: /*language=CSS*/ `
::v-deep .div-Calendar { /deep/ .div-Calendar {
box-sizing: border-box; box-sizing: border-box;
height: 100%; height: 100%;
} }
::v-deep .div-Calendar p { /deep/ .div-Calendar p {
margin: 0; margin: 0;
} }
::v-deep .el-calendar-day:has(.not-allow-day) { /deep/ .el-calendar-day:has(.not-allow-day) {
background-color: #F5F5F5; background-color: #F5F5F5;
} }
::v-deep .el-dialog__body { /deep/ .el-dialog__body {
padding-top: 0; padding-top: 0;
} }
` `
@@ -348,7 +348,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/unionReimburse/apply/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/unionReimburse/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = '/platform/unionReimburse/mine/index' commonUtil.pjaxPush('/platform/unionReimburse/mine/index')
} }
}) })
}) })
@@ -391,7 +391,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/unionReimburse/mine/index' commonUtil.pjaxPush('/platform/unionReimburse/mine/index')
} }
}) })
}) })
@@ -422,7 +422,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/unionReimburse/mine/index' commonUtil.pjaxPush('/platform/unionReimburse/mine/index')
} }
}) })
}) })
@@ -162,7 +162,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/unionReimburse/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/unionReimburse/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
@@ -148,7 +148,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openEdit(row) { openEdit(row) {
window.location.href = '/platform/workershome/declaration/apply?id=' + row.id; commonUtil.pjaxPush('/platform/workershome/declaration/apply?id=' + row.id;)
}, },
async flushUnits() { async flushUnits() {
this.$set(this.pageForm, "unitId", null) this.$set(this.pageForm, "unitId", null)
@@ -244,7 +244,7 @@ layout("/layouts/platform.html"){
if (resp.code === 0) { if (resp.code === 0) {
this.notifySuccess(resp.msg) this.notifySuccess(resp.msg)
setTimeout(() => { setTimeout(() => {
location.href = '/platform/workershome/info/mine' commonUtil.pjaxPush('/platform/workershome/info/mine')
}, 500) }, 500)
} else { } else {
this.notifyWarning(resp.msg) this.notifyWarning(resp.msg)
@@ -266,7 +266,7 @@ layout("/layouts/platform.html"){
if (resp.code === 0) { if (resp.code === 0) {
this.notifySuccess(resp.msg) this.notifySuccess(resp.msg)
setTimeout(() => { setTimeout(() => {
location.href = '/platform/workershome/info/mine' commonUtil.pjaxPush('/platform/workershome/info/mine')
}, 500) }, 500)
} else { } else {
this.notifyWarning(resp.msg) this.notifyWarning(resp.msg)
@@ -319,7 +319,7 @@ layout("/layouts/platform.html"){
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
setTimeout(() => { setTimeout(() => {
location.href = '/platform/workershome/declaration/apply' commonUtil.pjaxPush('/platform/workershome/declaration/apply')
}, 500) }, 500)
}) })
} }
@@ -134,7 +134,7 @@ layout("/layouts/platform.html"){
}, },
openEdit(row) { openEdit(row) {
location.href = '/platform/workershome/info/apply?id=' + row.id commonUtil.pjaxPush('/platform/workershome/info/apply?id=' + row.id)
}, },
async flushUnits() { async flushUnits() {
this.$set(this.pageForm, "unitId", null) this.$set(this.pageForm, "unitId", null)
@@ -76,7 +76,7 @@ layout("/layouts/platform.html"){
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/grassrootsCongress/material/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/grassrootsCongress/material/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
@@ -79,7 +79,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/grassrootsCongress/material/write/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/grassrootsCongress/material/write/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/grassrootsCongress/material/mine' commonUtil.pjaxPush('/platform/grassrootsCongress/material/mine')
} }
}) })
}) })
@@ -99,7 +99,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/grassrootsCongress/material/mine' commonUtil.pjaxPush('/platform/grassrootsCongress/material/mine')
} }
}) })
}) })
@@ -121,7 +121,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/grassrootsCongress/material/mine' commonUtil.pjaxPush('/platform/grassrootsCongress/material/mine')
} }
}) })
}) })
@@ -79,7 +79,7 @@ layout("/layouts/platform.html"){
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/grassrootsCongress/meeting/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/grassrootsCongress/meeting/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
@@ -150,7 +150,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/grassrootsCongress/meeting/write/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/grassrootsCongress/meeting/write/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/grassrootsCongress/meeting/mine' commonUtil.pjaxPush('/platform/grassrootsCongress/meeting/mine')
} }
}) })
}) })
@@ -170,7 +170,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/grassrootsCongress/meeting/mine' commonUtil.pjaxPush('/platform/grassrootsCongress/meeting/mine')
} }
}) })
}) })
@@ -192,7 +192,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/grassrootsCongress/meeting/mine' commonUtil.pjaxPush('/platform/grassrootsCongress/meeting/mine')
} }
}) })
}) })
@@ -168,7 +168,7 @@
window.GlobalBroadcastChannel.postMessage({ window.GlobalBroadcastChannel.postMessage({
type: "task-complete" type: "task-complete"
}) })
window.location.href = "/platform/proposal/apply/index" commonUtil.pjaxPush("/platform/proposal/apply/index")
} }
}) })
}, },
@@ -208,7 +208,7 @@
.then((res) => { .then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = "/platform/proposal/apply/index" commonUtil.pjaxPush("/platform/proposal/apply/index")
} }
}) })
}) })
@@ -95,7 +95,7 @@ layout("/layouts/platform.html"){
}) })
}, },
openEdit(row) { openEdit(row) {
window.location.href = '/platform/proposal/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/proposal/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
openRevoke(row) { openRevoke(row) {
this.$confirm("您确定要撤销申请吗?", "提示", { this.$confirm("您确定要撤销申请吗?", "提示", {
@@ -218,7 +218,7 @@ layout("/layouts/platform.html"){
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
this.formData = res.data this.formData = res.data
window.location.href = '/platform/proposal/mine' commonUtil.pjaxPush('/platform/proposal/mine')
} }
}) })
} }
@@ -246,7 +246,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/proposal/write/submit', {info: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/proposal/write/submit', {info: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/proposal/mine' commonUtil.pjaxPush('/platform/proposal/mine')
} }
}) })
}) })
@@ -277,7 +277,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/proposal/mine' commonUtil.pjaxPush('/platform/proposal/mine')
} }
}) })
}) })
@@ -71,7 +71,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/suggestionBox/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/suggestionBox/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
@@ -67,7 +67,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/suggestionBox/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/suggestionBox/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
@@ -77,7 +77,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/suggestionBox/write/save', {data: JSON.stringify(this.formData)}).then(res => { this.$axios.post('/platform/suggestionBox/write/save', {data: JSON.stringify(this.formData)}).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("保存成功") this.$message.success("保存成功")
window.location.href = '/platform/suggestionBox/mine' commonUtil.pjaxPush('/platform/suggestionBox/mine')
} }
}) })
}) })
@@ -95,7 +95,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/suggestionBox/mine' commonUtil.pjaxPush('/platform/suggestionBox/mine')
} }
}) })
}) })
@@ -113,7 +113,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success("提交成功") this.$message.success("提交成功")
window.location.href = '/platform/suggestionBox/mine' commonUtil.pjaxPush('/platform/suggestionBox/mine')
} }
}) })
}) })
@@ -280,7 +280,7 @@ layout("/layouts/platform.html"){
this.$axios.post("/platform/condolence/apply/save", { data: JSON.stringify(this.formData) }).then(res => { this.$axios.post("/platform/condolence/apply/save", { data: JSON.stringify(this.formData) }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = "/platform/condolence/mine" commonUtil.pjaxPush("/platform/condolence/mine")
} }
}) })
}) })
@@ -298,7 +298,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = "/platform/condolence/mine" commonUtil.pjaxPush("/platform/condolence/mine")
} }
}) })
}) })
@@ -319,7 +319,7 @@ layout("/layouts/platform.html"){
}).then(res => { }).then(res => {
if (res.code === 0) { if (res.code === 0) {
this.$message.success(res.msg) this.$message.success(res.msg)
window.location.href = "/platform/condolence/mine" commonUtil.pjaxPush("/platform/condolence/mine")
} }
}) })
}) })
@@ -103,7 +103,7 @@ layout("/layouts/platform.html"){
}, },
methods: { methods: {
onAdd() { onAdd() {
window.location.href = '/platform/condolence/apply' commonUtil.pjaxPush('/platform/condolence/apply')
}, },
onView(row) { onView(row) {
this.$refs.guava.view(()=>{ this.$refs.guava.view(()=>{
@@ -111,7 +111,7 @@ layout("/layouts/platform.html"){
}) })
}, },
onEdit(row) { onEdit(row) {
window.location.href = '/platform/condolence/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id commonUtil.pjaxPush('/platform/condolence/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
}, },
onRevoke(row) { onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", { this.$confirm("您确定要撤回吗?", "提示", {
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unitList"></el-option> <el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unitList"></el-option>
</el-select> </el-select>
</search-item> </search-item>
<search-item label="捐方式:"> <search-item label="捐方式:">
<el-select placeholder="请选择捐方式" v-model="pageForm.payMode" style="width: 100%;" <el-select placeholder="请选择捐方式" v-model="pageForm.payMode" style="width: 100%;"
clearable @change="doSearch" clearable @change="doSearch"
filterable> filterable>
<el-option label="微信" value="WeChat"></el-option> <el-option label="微信" value="WeChat"></el-option>
@@ -54,7 +54,7 @@ layout("/layouts/platform.html"){
</el-card> </el-card>
<el-card shadow="never" class="mt20"> <el-card shadow="never" class="mt20">
<table-tool label="捐列表"> <table-tool label="捐列表">
<el-button type="primary" size="small" @click="onExport"> <el-button type="primary" size="small" @click="onExport">
<i class="el-icon-download"></i> <i class="el-icon-download"></i>
导出 导出
@@ -90,10 +90,10 @@ layout("/layouts/platform.html"){
<template #view> <template #view>
<el-descriptions :column="2" border class="table_fixed"> <el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item label="捐项目"> <el-descriptions-item label="捐项目">
{{ viewData.contributionName }} {{ viewData.contributionName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐人工号"> <el-descriptions-item label="捐人工号">
{{ viewData.loginName }} {{ viewData.loginName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="姓名"> <el-descriptions-item label="姓名">
@@ -111,13 +111,13 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="善款金额"> <el-descriptions-item label="善款金额">
{{ viewData.money || 0}}元 {{ viewData.money || 0}}元
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐方式"> <el-descriptions-item label="捐方式">
{{ viewData.payMode === 'WeChat' ? '微信' : '支付宝' }} {{ viewData.payMode === 'WeChat' ? '微信' : '支付宝' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐时间" :span="2"> <el-descriptions-item label="捐时间" :span="2">
{{ viewData.contributionTime }} {{ viewData.contributionTime }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐凭证" :span="2"> <el-descriptions-item label="捐凭证" :span="2">
<file-preview v-if="viewData.contributionFiles" complete_result :files="viewData.contributionFiles"></file-preview> <file-preview v-if="viewData.contributionFiles" complete_result :files="viewData.contributionFiles"></file-preview>
<span v-else>暂无</span> <span v-else>暂无</span>
</el-descriptions-item> </el-descriptions-item>
@@ -136,15 +136,15 @@ layout("/layouts/platform.html"){
data() { data() {
return { return {
tableColumns: [ tableColumns: [
{prop: 'contributionName', label: '捐项目'}, {prop: 'contributionName', label: '捐项目'},
{prop: 'loginName', label: '捐人工号'}, {prop: 'loginName', label: '捐人工号'},
{prop: 'userName', label: '姓名'}, {prop: 'userName', label: '姓名'},
{prop: 'mobile', label: '联系方式'}, {prop: 'mobile', label: '联系方式'},
{prop: 'unionName', label: '所属工会'}, {prop: 'unionName', label: '所属工会'},
{prop: 'unitName', label: '所属单位'}, {prop: 'unitName', label: '所属单位'},
{prop: 'money', label: '善款金额'}, {prop: 'money', label: '善款金额'},
{prop: 'payMode', label: '捐方式'}, {prop: 'payMode', label: '捐方式'},
{prop: 'contributionTime', label: '捐时间'}, {prop: 'contributionTime', label: '捐时间'},
], ],
contributionOptions: [], contributionOptions: [],
unionList: [], unionList: [],
@@ -6,8 +6,8 @@ const basicForm = {
<el-input type="text" v-model="formData.contributionName" maxlength="50" <el-input type="text" v-model="formData.contributionName" maxlength="50"
placeholder="请填写项目名称"></el-input> placeholder="请填写项目名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属捐专题" prop="contributionTypeCode"> <el-form-item label="所属捐专题" prop="contributionTypeCode">
<el-select placeholder="所属捐专题" v-model="formData.contributionTypeCode" <el-select placeholder="所属捐专题" v-model="formData.contributionTypeCode"
style="width: 100%;" style="width: 100%;"
clearable clearable
filterable> filterable>
@@ -16,7 +16,7 @@ const basicForm = {
:value="item.typeCode"></el-option> :value="item.typeCode"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="捐时间" prop="contributionTime"> <el-form-item label="捐时间" prop="contributionTime">
<el-date-picker <el-date-picker
style="width: 100%;" style="width: 100%;"
v-model="formData.contributionTime" v-model="formData.contributionTime"
@@ -27,16 +27,16 @@ const basicForm = {
end-placeholder="请选择结束日期"> end-placeholder="请选择结束日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="捐模式" prop="contributionMode"> <el-form-item label="捐模式" prop="contributionMode">
<el-radio-group v-model="formData.contributionMode"> <el-radio-group v-model="formData.contributionMode">
<el-radio-button :label="1">水滴筹</el-radio-button> <el-radio-button :label="1">水滴筹</el-radio-button>
<el-radio-button :label="2">一日捐</el-radio-button> <el-radio-button :label="2">一日捐</el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="捐链接" prop="contributionUrl" <el-form-item label="捐链接" prop="contributionUrl"
v-if="formData.contributionMode === 1"> v-if="formData.contributionMode === 1">
<el-input type="text" v-model="formData.contributionUrl" maxlength="50" <el-input type="text" v-model="formData.contributionUrl" maxlength="50"
placeholder="请填写捐链接"></el-input> placeholder="请填写捐链接"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否开启" prop="isContributionEnable"> <el-form-item label="是否开启" prop="isContributionEnable">
<el-switch v-model="formData.isContributionEnable" active-color="#13ce66" <el-switch v-model="formData.isContributionEnable" active-color="#13ce66"
@@ -5,16 +5,16 @@ const info = {
<el-descriptions-item label="项目名称"> <el-descriptions-item label="项目名称">
{{ viewData.contributionName }} {{ viewData.contributionName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="所属捐专题"> <el-descriptions-item label="所属捐专题">
{{ viewData.typeName }} {{ viewData.typeName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐时间"> <el-descriptions-item label="捐时间">
{{ viewData.contributionStartTime + ' 至 ' + viewData.contributionEndTime }} {{ viewData.contributionStartTime + ' 至 ' + viewData.contributionEndTime }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐模式"> <el-descriptions-item label="捐模式">
{{ viewData.contributionMode === 1 ? '水滴筹' : '一日捐' }} {{ viewData.contributionMode === 1 ? '水滴筹' : '一日捐' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="捐链接" :span="2"> <el-descriptions-item label="捐链接" :span="2">
{{ viewData.contributionUrl || '暂无' }} {{ viewData.contributionUrl || '暂无' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="项目介绍" :span="2"> <el-descriptions-item label="项目介绍" :span="2">

Some files were not shown because too many files have changed in this diff Show More