整改问卷
整改会员异动类型 屏蔽PC首页新闻
This commit is contained in:
@@ -479,7 +479,15 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 特殊字段变更处理
|
// 特殊字段变更处理
|
||||||
// 1. 会员状态变更
|
// 1. 在职状态变更按状态名称匹配 MemberChangeType,历史记录统一保存枚举编码。
|
||||||
|
if (StrUtil.isNotBlank(source.getUserState()) && !ObjectUtil.equals(user.getUserState(), source.getUserState())) {
|
||||||
|
Arrays.stream(MemberChangeType.values())
|
||||||
|
.filter(type -> type.getChangeTypeName().equals(source.getUserState()))
|
||||||
|
.findFirst()
|
||||||
|
.ifPresent(type -> changeTypes.add(type.name()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 会员状态变更
|
||||||
// if (!ObjectUtil.equals(user.getMember(), source.getMember())) {
|
// if (!ObjectUtil.equals(user.getMember(), source.getMember())) {
|
||||||
// if (source.getMember()) {
|
// if (source.getMember()) {
|
||||||
// changeTypes.add(MemberChangeType.RESTORE.name());
|
// changeTypes.add(MemberChangeType.RESTORE.name());
|
||||||
@@ -488,7 +496,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// 2. 单位变更
|
// 3. 单位变更
|
||||||
if (!ObjectUtil.equals(user.getUnitId(), source.getUnitId())) {
|
if (!ObjectUtil.equals(user.getUnitId(), source.getUnitId())) {
|
||||||
changeTypes.add(MemberChangeType.UNIT_CHANGE.name());
|
changeTypes.add(MemberChangeType.UNIT_CHANGE.name());
|
||||||
NutMap change = NutMap.NEW();
|
NutMap change = NutMap.NEW();
|
||||||
|
|||||||
+15
@@ -71,5 +71,20 @@ public class EnrollmentRegistrationPlanController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除指定的子女入学登记计划。
|
||||||
|
*
|
||||||
|
* @param id 登记计划主键 ID
|
||||||
|
* @return Result 标准响应结构;code 为 0 表示删除成功
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@ApiOperation("删除登记计划")
|
||||||
|
@SaCheckPermission("enrollmentRegistration.plan")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog(tag = "子女入学管理-登记计划", msg = "删除登记计划id: ${args[0]}")
|
||||||
|
public Result doDelete(String id) {
|
||||||
|
baseService.dao().delete(EnrollmentRegistrationPlan.class, id);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-2
@@ -68,21 +68,25 @@ public class QsvOnlineController {
|
|||||||
/**
|
/**
|
||||||
* 查询当前用户可参与的在线问卷、答题和投票活动。
|
* 查询当前用户可参与的在线问卷、答题和投票活动。
|
||||||
* pageForm 传入页码、每页数量与搜索关键字;year 为活动开始年份;title 为标题关键字;
|
* pageForm 传入页码、每页数量与搜索关键字;year 为活动开始年份;title 为标题关键字;
|
||||||
* isAnswered 用于筛选已答或未答活动。返回 Pagination,列表数据仅包含当前用户命中活动分组的活动。
|
* isAnswered 用于筛选已答或未答活动;activityId 用于首页活动携带 ID 直达指定答题任务。
|
||||||
|
* 返回 Pagination,列表数据仅包含当前用户命中活动分组的活动;指定 activityId 时不受已答筛选影响,
|
||||||
|
* 以便前端根据实际 actionType 自动进入答题、继续答题或查看答题。
|
||||||
*
|
*
|
||||||
* @param pageForm 分页及搜索参数
|
* @param pageForm 分页及搜索参数
|
||||||
* @param year 活动开始年份
|
* @param year 活动开始年份
|
||||||
* @param title 活动标题关键字
|
* @param title 活动标题关键字
|
||||||
* @param isAnswered 是否只查看已答活动
|
* @param isAnswered 是否只查看已答活动
|
||||||
|
* @param activityId 指定活动 ID,为空时按普通在线答题列表查询
|
||||||
* @return 当前用户可参与的在线活动分页结果
|
* @return 当前用户可参与的在线活动分页结果
|
||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("qsv.online")
|
@SaCheckPermission("qsv.online")
|
||||||
@ApiOperation("在线答题任务分页")
|
@ApiOperation("在线答题任务分页")
|
||||||
public Result pageData(@Valid PageForm pageForm, Integer year, String title, Boolean isAnswered) {
|
public Result pageData(@Valid PageForm pageForm, Integer year, String title, Boolean isAnswered, String activityId) {
|
||||||
Cnd cnd = Cnd.where("enabled", "=", true);
|
Cnd cnd = Cnd.where("enabled", "=", true);
|
||||||
cnd.andEX("YEAR(startTime)", "=", year);
|
cnd.andEX("YEAR(startTime)", "=", year);
|
||||||
cnd.and(Cnd.likeEX("title", title));
|
cnd.and(Cnd.likeEX("title", title));
|
||||||
|
cnd.andEX("id", "=", activityId);
|
||||||
cnd.desc("startTime");
|
cnd.desc("startTime");
|
||||||
|
|
||||||
List<QsvActivity> activities = dao.query(QsvActivity.class, cnd);
|
List<QsvActivity> activities = dao.query(QsvActivity.class, cnd);
|
||||||
@@ -107,6 +111,10 @@ public class QsvOnlineController {
|
|||||||
List<NutMap> rows = activities.stream()
|
List<NutMap> rows = activities.stream()
|
||||||
.map((activity) -> buildOnlineRow(activity, recordGroup.getOrDefault(activity.getId(), new ArrayList<>())))
|
.map((activity) -> buildOnlineRow(activity, recordGroup.getOrDefault(activity.getId(), new ArrayList<>())))
|
||||||
.filter((row) -> {
|
.filter((row) -> {
|
||||||
|
// 首页携带活动 ID 直达时保留真实答题状态,由前端根据 actionType 决定答题或查看。
|
||||||
|
if (ObjectUtil.isNotEmpty(activityId)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (Boolean.TRUE.equals(isAnswered)) {
|
if (Boolean.TRUE.equals(isAnswered)) {
|
||||||
return row.getBoolean("isAnswered");
|
return row.getBoolean("isAnswered");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public class QsvActivity extends BaseModel implements Serializable, SysHomeConve
|
|||||||
sysHomeActivity.setName(this.getTitle());
|
sysHomeActivity.setName(this.getTitle());
|
||||||
sysHomeActivity.setCover(this.getCover());
|
sysHomeActivity.setCover(this.getCover());
|
||||||
sysHomeActivity.setContent(this.getDescription());
|
sysHomeActivity.setContent(this.getDescription());
|
||||||
sysHomeActivity.setUrl("/platform/qsv/activity");
|
sysHomeActivity.setUrl("/platform/qsv/online?id=" + this.getId());
|
||||||
sysHomeActivity.setH5Url(getH5Url());
|
sysHomeActivity.setH5Url(getH5Url());
|
||||||
sysHomeActivity.setStartDate(this.getStartTime());
|
sysHomeActivity.setStartDate(this.getStartTime());
|
||||||
sysHomeActivity.setEndDate(this.getEndTime());
|
sysHomeActivity.setEndDate(this.getEndTime());
|
||||||
|
|||||||
+32
-2
@@ -13,6 +13,7 @@ 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.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
|
import com.budwk.app.sys.views.View_user;
|
||||||
import com.budwk.app.zhgh.dayofficework.qsv.models.QsvActivity;
|
import com.budwk.app.zhgh.dayofficework.qsv.models.QsvActivity;
|
||||||
import com.budwk.app.zhgh.dayofficework.qsv.models.QsvOption;
|
import com.budwk.app.zhgh.dayofficework.qsv.models.QsvOption;
|
||||||
import com.budwk.app.zhgh.dayofficework.qsv.models.QsvSubject;
|
import com.budwk.app.zhgh.dayofficework.qsv.models.QsvSubject;
|
||||||
@@ -31,6 +32,7 @@ import org.nutz.lang.util.NutMap;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -436,6 +438,9 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
// .and("isFinish", "=", true)
|
// .and("isFinish", "=", true)
|
||||||
Pagination pagination = listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
Pagination pagination = listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
||||||
List<NutMap> answerRecords = pagination.getList();
|
List<NutMap> answerRecords = pagination.getList();
|
||||||
|
Map<String, String> userMobileMap = queryUserMobileMap(answerRecords.stream()
|
||||||
|
.map(record -> record.getString("userId"))
|
||||||
|
.toList());
|
||||||
|
|
||||||
// 查询用户答题记录
|
// 查询用户答题记录
|
||||||
// List<QsvUserAnswerRecord> answerRecords = dao().query(QsvUserAnswerRecord.class, Cnd.where("activityId", "=", activityId)
|
// List<QsvUserAnswerRecord> answerRecords = dao().query(QsvUserAnswerRecord.class, Cnd.where("activityId", "=", activityId)
|
||||||
@@ -464,7 +469,8 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
.addv("loginName", record.getString("loginName"))
|
.addv("loginName", record.getString("loginName"))
|
||||||
.addv("userName", record.getString("userName"))
|
.addv("userName", record.getString("userName"))
|
||||||
.addv("unitName", record.getString("unitName"))
|
.addv("unitName", record.getString("unitName"))
|
||||||
.addv("unionName", record.getString("unionName"));
|
.addv("unionName", record.getString("unionName"))
|
||||||
|
.addv("mobile", userMobileMap.get(record.getString("userId")));
|
||||||
JSONObject extJson = record.getAs("extJson", JSONObject.class);
|
JSONObject extJson = record.getAs("extJson", JSONObject.class);
|
||||||
if (ObjectUtil.isEmpty(extJson)) {
|
if (ObjectUtil.isEmpty(extJson)) {
|
||||||
return map;
|
return map;
|
||||||
@@ -723,13 +729,17 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<NutMap> buildAnswerRecords(List<QsvUserAnswerRecord> answerRecords, Map<String, QsvSubject> subjectMap, Map<String, QsvOption> optionMap) {
|
private List<NutMap> buildAnswerRecords(List<QsvUserAnswerRecord> answerRecords, Map<String, QsvSubject> subjectMap, Map<String, QsvOption> optionMap) {
|
||||||
|
Map<String, String> userMobileMap = queryUserMobileMap(answerRecords.stream()
|
||||||
|
.map(QsvUserAnswerRecord::getUserId)
|
||||||
|
.toList());
|
||||||
return answerRecords.stream().map(record -> {
|
return answerRecords.stream().map(record -> {
|
||||||
NutMap map = NutMap.NEW()
|
NutMap map = NutMap.NEW()
|
||||||
.addv("id", record.getId())
|
.addv("id", record.getId())
|
||||||
.addv("loginName", record.getLoginName())
|
.addv("loginName", record.getLoginName())
|
||||||
.addv("userName", record.getUserName())
|
.addv("userName", record.getUserName())
|
||||||
.addv("unitName", record.getUnitName())
|
.addv("unitName", record.getUnitName())
|
||||||
.addv("unionName", record.getUnionName());
|
.addv("unionName", record.getUnionName())
|
||||||
|
.addv("mobile", userMobileMap.get(record.getUserId()));
|
||||||
JSONObject extJson = record.getExtJson();
|
JSONObject extJson = record.getExtJson();
|
||||||
if (ObjectUtil.isEmpty(extJson)) {
|
if (ObjectUtil.isEmpty(extJson)) {
|
||||||
return map;
|
return map;
|
||||||
@@ -745,6 +755,26 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据答题记录中的用户ID批量查询当前手机号,供后台查看答卷和导出使用。
|
||||||
|
*
|
||||||
|
* @param userIds 答题用户ID列表,允许包含重复值或空值
|
||||||
|
* @return key为用户ID、value为View_user当前手机号的映射;用户不存在时不返回对应项
|
||||||
|
*/
|
||||||
|
private Map<String, String> queryUserMobileMap(List<String> userIds) {
|
||||||
|
Map<String, String> userMobileMap = new HashMap<>();
|
||||||
|
List<String> validUserIds = userIds.stream()
|
||||||
|
.filter(ObjectUtil::isNotEmpty)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
if (validUserIds.isEmpty()) {
|
||||||
|
return userMobileMap;
|
||||||
|
}
|
||||||
|
List<View_user> users = dao().query(View_user.class, Cnd.where("id", "in", validUserIds));
|
||||||
|
users.forEach(user -> userMobileMap.put(user.getId(), user.getMobile()));
|
||||||
|
return userMobileMap;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组装单题答案展示内容。填空题返回填写文本;选择题返回选项文本,若选项配置了补充填写,
|
* 组装单题答案展示内容。填空题返回填写文本;选择题返回选项文本,若选项配置了补充填写,
|
||||||
* 则追加对应补充内容,保证后台查看答卷和导出能看到用户填写的说明。
|
* 则追加对应补充内容,保证后台查看答卷和导出能看到用户填写的说明。
|
||||||
|
|||||||
+30
-23
@@ -21,32 +21,39 @@ public enum MemberChangeType {
|
|||||||
RESTORE("RESTORE", "入会"),
|
RESTORE("RESTORE", "入会"),
|
||||||
WITHDRAWAL("WITHDRAWAL", "退会"),
|
WITHDRAWAL("WITHDRAWAL", "退会"),
|
||||||
|
|
||||||
ONLINE("ONLINE", "在岗"),
|
ONLINE("ONLINE", "在职"),
|
||||||
FLEX("FLEX", "柔性"),
|
RETIRE("RETIRE", "退休"),
|
||||||
SECONDED("SECONDED", "借调挂职"),
|
RESIGN("RESIGN", "辞职"),
|
||||||
REMOTE_POST("REMOTE_POST", "异地任职"),
|
RETIRE_REHIRE("RETIRE_REHIRE", "退休返聘"),
|
||||||
REHIRE_INNER("REHIRE_INNER", "内退返岗"),
|
LEAVE("LEAVE", "离职"),
|
||||||
|
TRANSFER_OUT("TRANSFER_OUT", "调出"),
|
||||||
SHORT_TRIP("SHORT_TRIP", "短期公差"),
|
SECONDMENT("SECONDMENT", "挂职"),
|
||||||
DOMESTIC_MEET("DOMESTIC_MEET", "境内会务"),
|
|
||||||
QUARANTINE("QUARANTINE", "疫期隔离"),
|
|
||||||
SICK_LEAVE("SICK_LEAVE", "病假"),
|
|
||||||
PERSONAL_LEAVE("PERSONAL_LEAVE", "事假"),
|
|
||||||
NURSING_LEAVE("NURSING_LEAVE", "哺乳假"),
|
|
||||||
|
|
||||||
MATERNITY("MATERNITY", "产假"),
|
|
||||||
LONG_SICK("LONG_SICK", "长病假"),
|
LONG_SICK("LONG_SICK", "长病假"),
|
||||||
ABROAD_PUB("ABROAD_PUB", "公派出国"),
|
|
||||||
STUDY_DOMESTIC("STUDY_DOMESTIC", "国内进修"),
|
|
||||||
STUDY_ABROAD("STUDY_ABROAD", "境外留学"),
|
|
||||||
OFF_JOB_START("OFF_JOB_START", "离岗创业"),
|
|
||||||
INNER_RETIRE("INNER_RETIRE", "内部退养"),
|
|
||||||
|
|
||||||
EXTEND("EXTEND", "延聘"),
|
// FLEX("FLEX", "柔性"),
|
||||||
REHIRE_SCH("REHIRE_SCH", "学校返聘"),
|
// SECONDED("SECONDED", "借调挂职"),
|
||||||
REHIRE_DEPT("REHIRE_DEPT", "部门返聘"),
|
// REMOTE_POST("REMOTE_POST", "异地任职"),
|
||||||
|
// REHIRE_INNER("REHIRE_INNER", "内退返岗"),
|
||||||
|
|
||||||
OFFLINE("OFFLINE", "不在岗"),
|
// SHORT_TRIP("SHORT_TRIP", "短期公差"),
|
||||||
|
// DOMESTIC_MEET("DOMESTIC_MEET", "境内会务"),
|
||||||
|
// QUARANTINE("QUARANTINE", "疫期隔离"),
|
||||||
|
// SICK_LEAVE("SICK_LEAVE", "病假"),
|
||||||
|
// PERSONAL_LEAVE("PERSONAL_LEAVE", "事假"),
|
||||||
|
// NURSING_LEAVE("NURSING_LEAVE", "哺乳假"),
|
||||||
|
|
||||||
|
// MATERNITY("MATERNITY", "产假"),
|
||||||
|
// ABROAD_PUB("ABROAD_PUB", "公派出国"),
|
||||||
|
// STUDY_DOMESTIC("STUDY_DOMESTIC", "国内进修"),
|
||||||
|
// STUDY_ABROAD("STUDY_ABROAD", "境外留学"),
|
||||||
|
// OFF_JOB_START("OFF_JOB_START", "离岗创业"),
|
||||||
|
// INNER_RETIRE("INNER_RETIRE", "内部退养"),
|
||||||
|
|
||||||
|
// EXTEND("EXTEND", "延聘"),
|
||||||
|
// REHIRE_SCH("REHIRE_SCH", "学校返聘"),
|
||||||
|
// REHIRE_DEPT("REHIRE_DEPT", "部门返聘"),
|
||||||
|
|
||||||
|
// OFFLINE("OFFLINE", "不在岗"),
|
||||||
|
|
||||||
UNIT_CHANGE("UNIT_CHANGE", "单位异动"),
|
UNIT_CHANGE("UNIT_CHANGE", "单位异动"),
|
||||||
UNION_CHANGE("UNION_CHANGE", "工会关系异动"),
|
UNION_CHANGE("UNION_CHANGE", "工会关系异动"),
|
||||||
|
|||||||
+6
-6
@@ -280,12 +280,12 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
|
|||||||
public List<String> compareChangeType(MemberChangeRecord record, View_user user) {
|
public List<String> compareChangeType(MemberChangeRecord record, View_user user) {
|
||||||
List<String> changeTypes = new ArrayList<>();
|
List<String> changeTypes = new ArrayList<>();
|
||||||
changeTypes.add(MemberChangeType.BASIC_CHANGE.name());
|
changeTypes.add(MemberChangeType.BASIC_CHANGE.name());
|
||||||
if (!ObjectUtil.equals(user.getUserState(), record.getUserState())) {
|
// 在职状态变更按状态名称匹配 MemberChangeType,历史记录统一保存枚举编码。
|
||||||
List<MemberChangeType> list = Arrays.stream(MemberChangeType.values())
|
if (StrUtil.isNotBlank(record.getUserState()) && !ObjectUtil.equals(user.getUserState(), record.getUserState())) {
|
||||||
.filter(v -> v.getChangeTypeName().equals(record.getUserState())).toList();
|
Arrays.stream(MemberChangeType.values())
|
||||||
if (Lang.isNotEmpty(list)) {
|
.filter(type -> type.getChangeTypeName().equals(record.getUserState()))
|
||||||
changeTypes.add(list.get(0).name());
|
.findFirst()
|
||||||
}
|
.ifPresent(type -> changeTypes.add(type.name()));
|
||||||
}
|
}
|
||||||
if (!ObjectUtil.equals(user.getMember() == 1, record.getMember())){
|
if (!ObjectUtil.equals(user.getMember() == 1, record.getMember())){
|
||||||
if (record.getMember()) {
|
if (record.getMember()) {
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.4 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 141 KiB |
@@ -308,7 +308,7 @@ const act = {
|
|||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
max-width: 100% !important;
|
max-width: 100% !important;
|
||||||
max-height: 128px !important;
|
max-height: 128px !important;
|
||||||
object-fit: cover !important;
|
object-fit: fill !important;
|
||||||
transition: transform 0.3s ease;
|
transition: transform 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+15
@@ -185,6 +185,21 @@ layout("/layouts/platform.html"){
|
|||||||
year: moment().format("YYYY")
|
year: moment().format("YYYY")
|
||||||
}
|
}
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
doDelete(id) {
|
||||||
|
// id 为登记计划主键;删除成功后重新查询当前页,确保列表与数据库保持一致。
|
||||||
|
this.$confirm("您确定要删除吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/platform/enrollmentRegistration/plan/doDelete", {id: id}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
|
|||||||
@@ -545,6 +545,7 @@ layout("/layouts/platform.html"){
|
|||||||
:class="['qsv-online-vote-option', isOptionSelected(currentVoteSubject, option.id) ? 'active' : '']"
|
:class="['qsv-online-vote-option', isOptionSelected(currentVoteSubject, option.id) ? 'active' : '']"
|
||||||
@click="toggleVoteOption(option)">
|
@click="toggleVoteOption(option)">
|
||||||
<el-checkbox
|
<el-checkbox
|
||||||
|
v-if="isOptionSelected(currentVoteSubject, option.id)"
|
||||||
class="qsv-online-vote-option-check"
|
class="qsv-online-vote-option-check"
|
||||||
:value="isOptionSelected(currentVoteSubject, option.id)"
|
:value="isOptionSelected(currentVoteSubject, option.id)"
|
||||||
:disabled="answerDialog.readonly || isVoteEnd"
|
:disabled="answerDialog.readonly || isVoteEnd"
|
||||||
@@ -827,6 +828,34 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
},
|
},
|
||||||
|
// 首页链接通过 id 指定活动;先查询当前用户对应的真实答题状态,再复用现有答题入口。
|
||||||
|
openAnswerFromUrl() {
|
||||||
|
const activityId = new URLSearchParams(window.location.search).get("id")
|
||||||
|
if (!activityId) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.answerDialog.loading = true
|
||||||
|
this.$axios.post("/platform/qsv/online/pageData", {
|
||||||
|
pageNumber: 1,
|
||||||
|
pageSize: 1,
|
||||||
|
activityId: activityId
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code !== 0) {
|
||||||
|
this.$message.error(res.msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const rows = res.data && res.data.list ? res.data.list : []
|
||||||
|
if (rows.length === 0) {
|
||||||
|
this.$message.warning("未找到可参与的答题活动")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.openAnswer(rows[0])
|
||||||
|
}).finally(() => {
|
||||||
|
if (!this.answerDialog.visible) {
|
||||||
|
this.answerDialog.loading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
openAnswer(row) {
|
openAnswer(row) {
|
||||||
const unavailableMessage = this.getActivityUnavailableMessage(row)
|
const unavailableMessage = this.getActivityUnavailableMessage(row)
|
||||||
if (unavailableMessage) {
|
if (unavailableMessage) {
|
||||||
@@ -1205,6 +1234,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.pageData()
|
this.pageData()
|
||||||
|
this.openAnswerFromUrl()
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.stopVoteCountdown()
|
this.stopVoteCountdown()
|
||||||
|
|||||||
@@ -265,12 +265,15 @@ layout("/layouts/platform.html"){
|
|||||||
// })
|
// })
|
||||||
// },
|
// },
|
||||||
getChangeTypes(changeTypes) {
|
getChangeTypes(changeTypes) {
|
||||||
|
if (!changeTypes) return null
|
||||||
const changeTypesList = JSON.parse(changeTypes)
|
const changeTypesList = JSON.parse(changeTypes)
|
||||||
if (changeTypesList) {
|
if (changeTypesList) {
|
||||||
if (!changeTypesList || changeTypesList.length === 0 || !this.changeTypeData || this.changeTypeData.length === 0) return null
|
if (!changeTypesList || changeTypesList.length === 0) return null
|
||||||
return changeTypesList
|
return changeTypesList
|
||||||
.map((v) => {
|
.map((v) => {
|
||||||
return this.changeTypeData.find((item) => item.code === v).changeTypeName
|
// 异动类型统一从 MemberChangeType 枚举解析,未知历史值保留原值展示。
|
||||||
|
const changeType = (this.changeTypeData || []).find((item) => item.code === v)
|
||||||
|
return changeType ? changeType.changeTypeName : v
|
||||||
})
|
})
|
||||||
.join(",")
|
.join(",")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ const home = {
|
|||||||
<div class="home-page">
|
<div class="home-page">
|
||||||
<div class="home-summary-bar" :class="{'home-summary-bar--visible': showHomeSummary}">
|
<div class="home-summary-bar" :class="{'home-summary-bar--visible': showHomeSummary}">
|
||||||
<img class="home-summary-bar__logo"
|
<img class="home-summary-bar__logo"
|
||||||
src="/assets/mobile/img/home/v4/中国地质大学-logo.png"
|
src="/assets/mobile/img/home/v4/zhvtit-login.png"
|
||||||
alt="中国地质大学">
|
alt="浙江交通职业技术学院">
|
||||||
<span class="home-summary-bar__divider"></span>
|
<span class="home-summary-bar__divider"></span>
|
||||||
<span class="home-summary-bar__title">智慧工会</span>
|
<span class="home-summary-bar__title">智慧工会</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -14,8 +14,8 @@ const home = {
|
|||||||
<div class="home-hero__content">
|
<div class="home-hero__content">
|
||||||
<div class="home-hero__topbar">
|
<div class="home-hero__topbar">
|
||||||
<img class="home-hero__brand-logo"
|
<img class="home-hero__brand-logo"
|
||||||
src="/assets/mobile/img/home/v4/中国地质大学-logo.png"
|
src="/assets/mobile/img/home/v4/zhvtit-login.png"
|
||||||
alt="中国地质大学">
|
alt="浙江交通职业技术学院">
|
||||||
</div>
|
</div>
|
||||||
<div class="home-hero__title">智慧工会</div>
|
<div class="home-hero__title">智慧工会</div>
|
||||||
<div class="home-hero__subtitle">情系职工 · 真诚服务</div>
|
<div class="home-hero__subtitle">情系职工 · 真诚服务</div>
|
||||||
@@ -666,6 +666,8 @@ const home = {
|
|||||||
display: block;
|
display: block;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
object-position: left center;
|
object-position: left center;
|
||||||
|
/* 新校徽为白色透明图,在白色悬浮栏中转为深色以保证清晰可见。 */
|
||||||
|
filter: brightness(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.home-summary-bar__divider {
|
.home-summary-bar__divider {
|
||||||
@@ -835,9 +837,9 @@ const home = {
|
|||||||
|
|
||||||
.quick-scroll-grid {
|
.quick-scroll-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-auto-flow: column;
|
grid-auto-flow: row;
|
||||||
grid-template-rows: repeat(2, 86px);
|
grid-template-columns: repeat(4, 25%);
|
||||||
grid-auto-columns: 25%;
|
grid-auto-rows: 86px;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,36 +74,16 @@ const mine = {
|
|||||||
<van-icon name="edit"></van-icon>
|
<van-icon name="edit"></van-icon>
|
||||||
<span>我的签名</span>
|
<span>我的签名</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="mine-grid-item" @click="switchTab('apps')">
|
<button type="button" class="mine-grid-item" @click="$pjaxReplace('/platform/h5/festivalBenefit')">
|
||||||
<van-icon name="star-o"></van-icon>
|
|
||||||
<span>我的收藏</span>
|
|
||||||
</button>
|
|
||||||
<button type="button" class="mine-grid-item" @click="switchTab('apps')">
|
|
||||||
<van-icon name="gift-o"></van-icon>
|
<van-icon name="gift-o"></van-icon>
|
||||||
<span>福利中心</span>
|
<span>福利中心</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="mine-grid-item" @click="switchTab('apps')">
|
<button type="button" class="mine-grid-item" @click="$pjaxReplace('/platform/h5/featuredActivity')">
|
||||||
<van-icon name="calendar-o"></van-icon>
|
<van-icon name="calendar-o"></van-icon>
|
||||||
<span>活动报名</span>
|
<span>活动报名</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="mine-grid-item" @click="switchTab('apps')">
|
|
||||||
<van-icon name="completed-o"></van-icon>
|
|
||||||
<span>问卷调查</span>
|
|
||||||
</button>
|
|
||||||
<button type="button" class="mine-grid-item" @click="switchTab('apps')">
|
|
||||||
<van-icon name="setting-o"></van-icon>
|
|
||||||
<span>设置中心</span>
|
|
||||||
</button>
|
|
||||||
<button type="button" class="mine-grid-item" @click="switchTab('apps')">
|
|
||||||
<van-icon name="question-o"></van-icon>
|
|
||||||
<span>帮助中心</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<div class="mine-logout-wrap">
|
|
||||||
<van-button round block plain color="#bdcbe0" @click="logout" class="mine-logout-btn">退出登录</van-button>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
@@ -153,16 +133,6 @@ const mine = {
|
|||||||
switchTab(tab) {
|
switchTab(tab) {
|
||||||
this.$store.commit("setActiveTarBar", tab)
|
this.$store.commit("setActiveTarBar", tab)
|
||||||
this.$emit("switch-tab", tab)
|
this.$emit("switch-tab", tab)
|
||||||
},
|
|
||||||
logout() {
|
|
||||||
this.$dialog
|
|
||||||
.confirm({
|
|
||||||
title: "温馨提示",
|
|
||||||
message: "您确认要退出登录吗?"
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
this.$store.dispatch("logout")
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -410,17 +380,6 @@ const mine = {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mine-logout-wrap {
|
|
||||||
padding-top: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mine-logout-btn {
|
|
||||||
height: 44px;
|
|
||||||
border-color: #bdcbe0 !important;
|
|
||||||
background: rgba(255, 255, 255, 0.82) !important;
|
|
||||||
color: #718198 !important;
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user