This commit is contained in:
zhengziru
2026-06-17 16:32:11 +08:00
16 changed files with 339 additions and 50 deletions
@@ -9,10 +9,12 @@ import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
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;
/**
* @Author: 1V
@@ -76,8 +78,15 @@ public class LxyCommon {
@At
@ViReturn
public Object getHdList() {
return lxyHdService.list(Sqls.create("SELECT id,`name` FROM `lxy_hd` ORDER BY hdcjsj desc "));
public Object getHdList(@Param(value = "year", required = false) Integer year) {
Sql sql = Sqls.create("SELECT id,`name` FROM `lxy_hd` $condition");
Cnd cnd = Cnd.NEW();
if (year != null) {
cnd.and(new org.nutz.dao.util.cri.Static("YEAR(hdcjsj) = " + year));
}
cnd.desc("hdcjsj");
sql.setCondition(cnd);
return lxyHdService.list(sql);
}
@At
@@ -88,8 +97,16 @@ public class LxyCommon {
@At
@ViReturn
public Object getNowHdList() {
return lxyHdService.list(Sqls.create("SELECT id,`name` FROM `lxy_hd` WHERE now() < bmjzsj ORDER BY hdcjsj desc "));
public Object getNowHdList(@Param(value = "year", required = false) Integer year) {
Sql sql = Sqls.create("SELECT id,`name` FROM `lxy_hd` $condition");
Cnd cnd = Cnd.NEW();
cnd.and(new org.nutz.dao.util.cri.Static("now() >= bmkssj AND now() < bmjzsj"));
if (year != null) {
cnd.and(new org.nutz.dao.util.cri.Static("YEAR(hdcjsj) = " + year));
}
cnd.desc("hdcjsj");
sql.setCondition(cnd);
return lxyHdService.list(sql);
}
}
@@ -101,6 +101,7 @@ public class LxyFghShController {
cnd.and(new Static("bm.bmzt = 1 "));
cnd.and(new Static("bm.bmlx = 2 "));
cnd.and(new Static("(hd.activityGroupId IS NULL OR u.id IN (SELECT userId FROM activity_user_scope WHERE groupId = hd.activityGroupId))"));
if (Strings.isNotBlank(hdid)) {
cnd.and("bm.hdid", "=", hdid);
@@ -16,6 +16,7 @@ import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.lxy.model.Lxy_bm;
import io.v.nutz.zhgh.lxy.model.Lxy_grxx;
import io.v.nutz.zhgh.lxy.model.Lxy_hd;
import io.v.nutz.zhgh.lxy.model.Lxy_mefp;
import io.v.nutz.zhgh.lxy.service.LxyBmService;
import io.v.nutz.zhgh.lxy.service.LxyGrxxService;
@@ -119,7 +120,7 @@ public class LxyGhbmController {
""");
Cnd cnd = Cnd.NEW();
cnd.and(new Static("now() < hd.bmjzsj"));
cnd.and(new Static("now() >= hd.bmkssj AND now() < hd.bmjzsj"));
cnd.and("mefp.hdid", "=", hdid);
cnd.andEX("un.id", "=", unionId);
@@ -182,6 +183,7 @@ public class LxyGhbmController {
Cnd cnd = Cnd.NEW();
cnd.and("member", "=", 1);
cnd.and("unit.unionid", "=", unionid);
addActivityScopeCnd(cnd, "u", hdid);
cnd.and(new Static("u.id NOT IN ( SELECT bm.userid FROM lxy_bm bm WHERE bm.hdid = '" + hdid + "' OR hdid = '1' ) "));
if (checks != null && checks.length > 0) {
for (String check : checks) {
@@ -241,6 +243,13 @@ public class LxyGhbmController {
return Result.error("未获取到报名数据,请选择人员报名");
}
if (!checkActivitySignUpTime(bmList.get(0).getHdid())) {
return Result.error("当前不在报名时间范围内");
}
if (!checkActivityUserScope(bmList.get(0).getHdid(), bmList.stream().map(Lxy_bm::getUserid).collect(Collectors.toList()))) {
return Result.error("存在不在活动人员范围内的人员,请重新选择");
}
String unionId = Vi.getUnionId();
Lxy_mefp meNum = dao.fetch(Lxy_mefp.class, Cnd.where("hdid", "=", bmList.get(0).getHdid()).and("ghid", "=", unionId));
@@ -384,6 +393,9 @@ public class LxyGhbmController {
try {
lock.lock();
String unionId = Vi.getUnionId();
if (!checkActivitySignUpTime(projectId)) {
return Result.error("当前不在报名时间范围内");
}
// 已经报名的,排除审核未通过
int count = dao.count(Lxy_bm.class, Cnd.where("hdid", "=", projectId).and("ghid", "=", unionId)
.and(Cnd.exps("bmzt", "in", List.of("1", "3", "5", "6")).or("bmzt", "is", null)));
@@ -416,6 +428,7 @@ public class LxyGhbmController {
List<String> sourUserIdList = sourceList.stream().map(Lxy_bm::getUserid).collect(Collectors.toList());
String today = cn.hutool.core.date.DateUtil.today();
Integer activityGroupId = getActivityGroupId(projectId);
// 要插入的数据
List<Lxy_bm> bmList = new ArrayList<>();
@@ -440,6 +453,12 @@ public class LxyGhbmController {
continue;
}
if (activityGroupId != null && dao.count("activity_user_scope", Cnd.where("groupId", "=", activityGroupId).and("userId", "=", user.getId())) == 0) {
temp.setRemark("此人员不在活动人员范围内");
errorInfos.add(temp);
continue;
}
if (lastJoinUserIds.contains(user.getId())) {
temp.setRemark("此教师参加过以往疗休养,请更换人员上报");
errorInfos.add(temp);
@@ -506,4 +525,33 @@ public class LxyGhbmController {
}
}
private void addActivityScopeCnd(Cnd cnd, String userAlias, String hdid) {
Integer activityGroupId = getActivityGroupId(hdid);
if (activityGroupId != null) {
cnd.and(new Static(userAlias + ".id IN (SELECT userId FROM activity_user_scope WHERE groupId = " + activityGroupId + ")"));
}
}
private boolean checkActivityUserScope(String hdid, List<String> userIds) {
Integer activityGroupId = getActivityGroupId(hdid);
if (activityGroupId == null) {
return true;
}
List<String> ids = userIds.stream().filter(Strings::isNotBlank).distinct().collect(Collectors.toList());
if (ids.size() != userIds.size()) {
return false;
}
return dao.count("activity_user_scope", Cnd.where("groupId", "=", activityGroupId).and("userId", "in", ids)) == ids.size();
}
private boolean checkActivitySignUpTime(String hdid) {
return lxyHdService.count(Cnd.where("id", "=", hdid)
.and(new Static("now() >= bmkssj AND now() < bmjzsj"))) > 0;
}
private Integer getActivityGroupId(String hdid) {
Lxy_hd hd = lxyHdService.fetch(hdid);
return hd == null ? null : hd.getActivityGroupId();
}
}
@@ -107,6 +107,7 @@ public class LxyGrBmController {
cnd.and(new Static("now() < hd.bmjzsj"));
cnd.and(new Static("bm.bmlx = 2 "));
cnd.and(new Static("(hd.activityGroupId IS NULL OR u.id IN (SELECT userId FROM activity_user_scope WHERE groupId = hd.activityGroupId))"));
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin"})) {
cnd.and("u.id", "=", ShiroUtil.getPrincipalProperty("id"));
@@ -74,8 +74,12 @@ public class LxyHdCon {
CndPlus cnd = CndPlus.create();
cnd.andEx("YEAR(hdcjsj)", "=", year);
cnd.andEx("id", "=", hdcd);
cnd.andEx("id", "=", pastQuota);
if (Strings.isNotBlank(hdcd)) {
cnd.and("id", "=", hdcd);
}
if (Strings.isNotBlank(pastQuota)) {
cnd.and("id", "=", pastQuota);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
cnd.where().andLike(searchName, searchKeyword);
}
@@ -94,9 +98,13 @@ public class LxyHdCon {
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
@ViReturn
@RequiresPermissions("zgfw.lxy.hdmange")
public Object doAdd(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files, Lxy_mefp[] mefp) throws IOException {
public Object doAdd(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files, Lxy_mefp[] mefp,
@Param(value = "activityGroupId", required = false) Integer activityGroupId,
@Param(value = "activityGroupName", required = false) String activityGroupName) throws IOException {
hd.setHdcjsj(new Date());
hd.setActivityGroupId(activityGroupId);
hd.setActivityGroupName(Strings.isBlank(activityGroupName) ? "全部教职工" : activityGroupName);
hd = lxyHdService.insert(hd);
for (Lxy_mefp lxyMefp : mefp) {
@@ -136,8 +144,16 @@ public class LxyHdCon {
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
@ViReturn
@RequiresPermissions("zgfw.lxy.hdmange")
public Object doEdit(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files, String[] delFiles) throws IOException {
public Object doEdit(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files, String[] delFiles,
@Param(value = "activityGroupId", required = false) Integer activityGroupId,
@Param(value = "activityGroupName", required = false) String activityGroupName) throws IOException {
hd.setActivityGroupId(activityGroupId);
hd.setActivityGroupName(Strings.isBlank(activityGroupName) ? "全部教职工" : activityGroupName);
lxyHdService.updateIgnoreNull(hd);
baseService.dao().update(Lxy_hd.class,
Chain.make("activityGroupId", activityGroupId)
.add("activityGroupName", hd.getActivityGroupName()),
Cnd.where("id", "=", hd.getId()));
for (TempFile file : files) {
String rid = R.UU32();
@@ -80,6 +80,7 @@ public class LxyMetjController {
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "SchoolUnionAdmin"})) {
cnd.and(new Static("mefp.ghid in " + vi.getMangeUnionStr()));
cnd.and(new Static("(hd.activityGroupId IS NULL OR EXISTS (SELECT 1 FROM activity_user_scope aus LEFT JOIN sys_user u ON u.id = aus.userId WHERE aus.groupId = hd.activityGroupId AND u.unionid = mefp.ghid))"));
}
if (year != null) {
@@ -141,6 +142,7 @@ public class LxyMetjController {
"FROM\n" +
"\tsys_user u\n" +
"\tLEFT JOIN lxy_bm bm ON bm.userid = u.id AND bm.hdid = '" + hdid + "'\n" +
"\tLEFT JOIN lxy_hd hd ON hd.id = '" + hdid + "'\n" +
"\tLEFT JOIN sys_unit unit ON u.unitid = unit.id\n" +
"\tLEFT JOIN ry_rygl_gr ry ON ry.userid = u.id\n" +
"\tLEFT JOIN sys_union un ON unit.unionid = un.id $condition");
@@ -148,6 +150,7 @@ public class LxyMetjController {
Cnd cnd = Cnd.NEW();
cnd.and("unit.unionid", "=", unionid);
cnd.and(new Static("(hd.activityGroupId IS NULL OR u.id IN (SELECT userId FROM activity_user_scope WHERE groupId = hd.activityGroupId))"));
if (sign == 0) {
cnd.and(new Static("u.id not in (SELECT bm.userid from lxy_bm bm WHERE bm.bmlx=2 AND bm.hdid = '" + hdid + "')"));
@@ -54,6 +54,16 @@ public class Lxy_hd {
@ColDefine(type = ColType.VARCHAR, width = 30)
private String hdcd;
@Column
@Comment("面向对象")
@ColDefine(type = ColType.INT)
private Integer activityGroupId;
@Column
@Comment("面向对象名称")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String activityGroupName;
@Column
@Comment("活动注意事项")
@ColDefine(type = ColType.TEXT)
@@ -305,8 +305,8 @@ const getGzzllx = async () => {
* 获取疗休养活动
* @returns {Promise<*>}
*/
const getLxyHd = async () => {
const { data } = await $.get("/platform/zgfw/lxy/common/getHdList")
const getLxyHd = async (year) => {
const { data } = await $.get("/platform/zgfw/lxy/common/getHdList", { year })
return data
}
const getlxyHdCd = async () => {
@@ -314,8 +314,8 @@ const getlxyHdCd = async () => {
return data
}
const getNowLxyHd = async () => {
const { data } = await $.get("/platform/zgfw/lxy/common/getNowHdList")
const getNowLxyHd = async (year) => {
const { data } = await $.get("/platform/zgfw/lxy/common/getNowHdList", { year })
return data
}
@@ -44,6 +44,7 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins, welfareMixins],
data() {
return {
projectId: GetQueryString("projectId"),
chosenAddressId: null
}
},
@@ -56,16 +57,27 @@ layout("/mobile/platform.html"){
}
},
onAdd() {
pjaxReplace("/mobile/welfare/mine/addressEdit")
if (this.projectId) {
pjaxReplace("/mobile/welfare/mine/addressEdit?projectId=" + this.projectId)
} else {
pjaxReplace("/mobile/welfare/mine/addressEdit")
}
},
onEdit(item, index) {
pjaxReplace("/mobile/welfare/mine/addressEdit?id=" + item.id)
if (this.projectId) {
pjaxReplace("/mobile/welfare/mine/addressEdit?id=" + item.id + "&projectId=" + this.projectId)
} else {
pjaxReplace("/mobile/welfare/mine/addressEdit?id=" + item.id)
}
}
},
async created() {
this.startLoading()
await this.selectAddressList()
this.closeLoading()
try {
await this.selectAddressList()
} finally {
this.closeLoading()
}
}
})
</script>
@@ -101,8 +101,12 @@ layout("/mobile/platform.html"){
duration: 0
})
content.userName = content.name
const resp = await $.post("/mobile/welfare/mine/doSaveUserAddress", content)
loading.close()
let resp = {}
try {
resp = await $.post("/mobile/welfare/mine/doSaveUserAddress", content)
} finally {
this.closeToastLoading(loading)
}
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.$nextTick(() => {
@@ -117,14 +121,28 @@ layout("/mobile/platform.html"){
overlay: true,
duration: 0
})
const resp = await $.post("/mobile/welfare/mine/deleteAddress", { id: content.id })
loading.close()
let resp = {}
try {
resp = await $.post("/mobile/welfare/mine/deleteAddress", { id: content.id })
} finally {
this.closeToastLoading(loading)
}
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.$nextTick(() => {
this.back()
})
}
},
closeToastLoading(loading) {
if (loading && typeof loading.clear === "function") {
loading.clear()
} else if (loading && typeof loading.close === "function") {
loading.close()
}
if (this.$toast && typeof this.$toast.clear === "function") {
this.$toast.clear()
}
}
},
async created() {
@@ -93,14 +93,20 @@
var now = new Date().getTime()
var hdkssj = moment(row.hdkssj.valueOf())
var hdjssj = moment(row.hdjssj.valueOf())
var bmkssj = moment(row.bmkssj.valueOf())
var bmjzsj = moment(row.bmjzsj.valueOf())
if (now < bmjzsj) {
if (now < bmkssj) {
return {
class: 'text-info',
name: '报名未开始'
}
} else if (bmkssj <= now && now < bmjzsj) {
return {
class: 'text-success',
name: '活动报名中'
}
} else if (bmjzsj < now && now < hdkssj) {
} else if (bmjzsj <= now && now < hdkssj) {
return {
class: 'text-info',
name: '报名已截止'
@@ -142,24 +142,26 @@ layout("/layouts/platform.html"){
function ensureAddressDzOption(options, row) {
const provinceTemplate = chengShiList.find((c) => c.label === row.province)
const cityTemplate = provinceTemplate?.children?.find((c) => c.label === row.city)
if (!provinceTemplate || !cityTemplate) {
if (!row.province || !row.city) {
return options
}
const nextOptions = JSON.parse(JSON.stringify(options))
let province = nextOptions.find((c) => c.label === row.province)
if (!province) {
province = {...provinceTemplate, children: []}
province = provinceTemplate ? {...provinceTemplate, children: []} : {label: row.province, value: row.province, children: []}
nextOptions.push(province)
}
let city = province.children.find((c) => c.label === row.city)
if (!city) {
city = {...cityTemplate, children: []}
city = cityTemplate ? {...cityTemplate, children: []} : {label: row.city, value: row.city, children: []}
province.children.push(city)
}
if (row.county) {
const countyTemplate = cityTemplate.children?.find((c) => c.label === row.county)
const countyTemplate = cityTemplate?.children?.find((c) => c.label === row.county)
if (countyTemplate && !city.children.find((c) => c.label === row.county)) {
city.children.push(countyTemplate)
} else if (!countyTemplate && !city.children.find((c) => c.label === row.county)) {
city.children.push({label: row.county, value: row.areaCode || row.county})
}
}
return nextOptions
@@ -209,16 +211,19 @@ layout("/layouts/platform.html"){
)
},
handleChange(val) {
if (val) {
if (val && val.length > 0) {
let provinceName = ""
let cityName = ""
let countyName = ""
const province = this.dzOptions.find((c) => c.value === val[0])
if (!province) return
provinceName = province.label
const city = province.children.find((p) => p.value === val[1])
if (!city) return
cityName = city.label
if (val.length === 3) {
const county = city.children.find((p) => p.value === val[2])
if (!county) return
countyName = county.label
this.$set(this.formData, "areaCode", county.value)
} else {
@@ -275,17 +280,23 @@ layout("/layouts/platform.html"){
},
openEdit(row) {
this.dzOptions = ensureAddressDzOption(getWelfareReceiveDzOptions(), row)
row.addressList = []
const addressList = []
const province = this.dzOptions.find((c) => c.label === row.province)
row.addressList.push(province.value)
const city = province.children.find((p) => p.label === row.city)
row.addressList.push(city.value)
if (row.county) {
if (province) {
addressList.push(province.value)
}
const city = province?.children?.find((p) => p.label === row.city)
if (city) {
addressList.push(city.value)
}
if (row.county && city) {
const county = city.children.find((p) => p.label === row.county)
row.addressList.push(county.value)
if (county) {
addressList.push(county.value)
}
}
this.formData = { ...row }
this.formData = { ...row, addressList }
this.formData.isDefault = this.formData.isDefault ? "1" : "0"
this.dialogVisible = true
},
@@ -48,7 +48,13 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-date-picker placeholder="选择年度" type="year" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
<el-date-picker
@change="hdSearch"
placeholder="选择年度"
type="year"
v-model="pageForm.year"
value-format="yyyy"
></el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-select @change="doSearch" clearable filterable placeholder="请选择活动" v-model="pageForm.hdid">
@@ -121,8 +127,8 @@ layout("/layouts/platform.html"){
<el-button @click="openView(scope.row)" size="mini" type="primary">查看报名</el-button>
<!--# } #-->
<!--# if(@shiro.hasRole('H04') || @shiro.hasRole('gh12')){ #-->
<el-button @click="openImport(scope.row)" size="mini" type="primary">导入</el-button>
<el-button @click="openBm2(scope.row)" size="mini" type="primary">报名</el-button>
<el-button :disabled="!isSignUpTime(scope.row)" @click="openImport(scope.row)" size="mini" type="primary">导入</el-button>
<el-button :disabled="!isSignUpTime(scope.row)" @click="openBm2(scope.row)" size="mini" type="primary">报名</el-button>
<!--# } #-->
</template>
</el-table-column>
@@ -583,6 +589,12 @@ display: -webkit-box;
"file-import": httpVueLoader("/components/plugins/FileImport.vue")
},
methods: {
isSignUpTime(row) {
const now = new Date().getTime()
const bmkssj = moment(row.bmkssj.valueOf())
const bmjzsj = moment(row.bmjzsj.valueOf())
return bmkssj <= now && now < bmjzsj
},
openImport() {
this.importDialog = true
this.$nextTick(() => {
@@ -750,6 +762,11 @@ display: -webkit-box;
const { data } = await $.get(base + "/platform/zgfw/lxy/fghsh/getBmInfo", { id })
return data
},
async hdSearch() {
this.lxyHd = await getNowLxyHd(this.pageForm.year)
this.pageForm.hdid = this.lxyHd.length > 0 ? this.lxyHd[0].id : ""
this.doSearch()
},
async openViewXx(row) {
this.viewData = await this.getLxyBmInfo(row.id)
this.pageForm.hdid = row.hdid
@@ -831,8 +848,8 @@ display: -webkit-box;
},
async created() {
this.unions = await getUnions()
this.lxyHd = await getNowLxyHd()
this.pageForm.hdid = this.lxyHd[0].id
this.lxyHd = await getNowLxyHd(this.pageForm.year)
this.pageForm.hdid = this.lxyHd.length > 0 ? this.lxyHd[0].id : ""
this.pageData()
this.unionList = await getUnions()
this.nationList = nation
@@ -43,12 +43,26 @@ layout("/layouts/platform.html"){
<div class="transition-item" v-show="v=='index'">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-date-picker placeholder="选择年度" type="year" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
<el-date-picker
@change="hdSearch"
placeholder="选择年度"
type="year"
v-model="pageForm.year"
value-format="yyyy"
></el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<!--<div class="btn-group tool-button mt5">
<el-select class="d-select" clearable filterable placeholder="请选择活动" v-model="pageForm.pastQuota" width="300px">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in lxyHd"></el-option>
</el-select>
</div>-->
<div class="btn-group tool-button mt5">
<el-input
clearable
placeholder="请输入活动名称"
v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch"
></el-input>
</div>
<!--<div class="btn-group tool-button mt5">
<el-select class="d-select" clearable filterable placeholder="请选择场地"
@@ -182,6 +196,31 @@ layout("/layouts/platform.html"){
<el-input maxlength="100" placeholder="请填写活动场地" type="text" v-model="formData.hdcd"></el-input>
</el-form-item>
<el-form-item label="面向对象" prop="activityGroupId">
<div style="display: flex; justify-content: space-between">
<div style="width: 99%">
<el-select
@change="changeActivity"
clearable
filterable
placeholder="请选择可报名人员范围"
style="width: 99%"
v-model="formData.activityGroupId"
>
<el-option
:key="item.groupId"
:label="item.groupName"
:value="item.groupId"
v-for="item in activityGroupList"
></el-option>
</el-select>
</div>
<div>
<el-button @click="$refs.drawerUserScope.userScopeDialog = true" type="primary">设置</el-button>
</div>
</div>
</el-form-item>
<el-form-item label="报名条件" prop="hdzysx">
<el-input
maxlength="500"
@@ -316,6 +355,31 @@ layout("/layouts/platform.html"){
<el-input maxlength="100" placeholder="请填写活动场地" type="text" v-model="formData.hdcd"></el-input>
</el-form-item>
<el-form-item label="面向对象" prop="activityGroupId">
<div style="display: flex; justify-content: space-between">
<div style="width: 99%">
<el-select
@change="changeActivity"
clearable
filterable
placeholder="请选择可报名人员范围"
style="width: 99%"
v-model="formData.activityGroupId"
>
<el-option
:key="item.groupId"
:label="item.groupName"
:value="item.groupId"
v-for="item in activityGroupList"
></el-option>
</el-select>
</div>
<div>
<el-button @click="$refs.drawerUserScope.userScopeDialog = true" type="primary">设置</el-button>
</div>
</div>
</el-form-item>
<el-form-item label="报名条件" prop="hdzysx">
<el-input
maxlength="500"
@@ -400,6 +464,12 @@ layout("/layouts/platform.html"){
</transition>
</el-row>
</guava>
<drawer-user-scope
@group_change="getActivityGroup"
ref="drawerUserScope"
:group_id.sync="formData.activityGroupId"
></drawer-user-scope>
</div>
<script>
let E = window.wangEditor
@@ -408,6 +478,9 @@ layout("/layouts/platform.html"){
const vue = new Vue({
el: "#app",
components: {
"drawer-user-scope": httpVueLoader("/components/plugins/DrawerUserScope.vue")
},
data() {
let validHdnr = (rule, value, callback) => {
if (!this.formData.hdnr || !dd3s.html2txt(this.formData.hdnr)) {
@@ -432,16 +505,18 @@ layout("/layouts/platform.html"){
tabLoading: false,
userLoading: false,
formData: {},
activityGroupList: [],
tableData: [],
pageForm: {
year: new Date().getFullYear() + "",
searchName: "id",
searchName: "name",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
pageOrderBy: "",
pastQuota: ""
},
formRules: {
name: [{ required: true, message: "请填写活动名称", trigger: ["blur", "change"] }],
@@ -456,7 +531,26 @@ layout("/layouts/platform.html"){
delFiles: []
}
},
watch: {
"formData.activityGroupId"(val) {
this.changeActivity(val)
}
},
methods: {
changeActivity(val) {
if (val) {
const group = this.activityGroupList.find((v) => v.groupId === val)
this.$set(this.formData, "activityGroupName", group ? group.groupName : "")
} else {
this.$set(this.formData, "activityGroupName", "全部教职工")
}
},
async getActivityGroup() {
this.activityGroupList = await getActivityGroup()
if (this.formData.activityGroupId) {
this.changeActivity(this.formData.activityGroupId)
}
},
mefpChange() {
if (this.pastQuota === "") {
this.unions_ = this.unions.map((v) => {
@@ -564,6 +658,9 @@ layout("/layouts/platform.html"){
doEdit() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (!this.formData.activityGroupId) {
this.formData.activityGroupName = "全部教职工"
}
this.formData.bmkssj = this.formData.bmsj[0]
this.formData.bmjzsj = this.formData.bmsj[1]
@@ -646,6 +743,12 @@ layout("/layouts/platform.html"){
if (data.code == 0) {
data.data.hdsj = [data.data.hdkssj, data.data.hdjssj]
data.data.bmsj = [data.data.bmkssj, data.data.bmjzsj]
const activityGroupId =
data.data.activityGroupId === undefined ? data.data.activitygroupid : data.data.activityGroupId
if (activityGroupId !== undefined && activityGroupId !== null && activityGroupId !== "") {
data.data.activityGroupId = Number(activityGroupId)
}
data.data.activityGroupName = data.data.activityGroupName || data.data.activitygroupname || "全部教职工"
data.data.mefp.map((m) => {
const union = this.unions.find((un) => un.id === m.ghid)
m.membercount = union.membercount
@@ -718,6 +821,9 @@ layout("/layouts/platform.html"){
doAdd() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (!this.formData.activityGroupId) {
this.formData.activityGroupName = "全部教职工"
}
this.formData.bmkssj = this.formData.bmsj[0]
this.formData.bmjzsj = this.formData.bmsj[1]
@@ -813,6 +919,11 @@ layout("/layouts/platform.html"){
this.pageForm.pageNumber = 1
this.pageData()
},
async hdSearch() {
this.pageForm.pastQuota = ""
this.lxyHd = await getLxyHd(this.pageForm.year)
this.doSearch()
},
pageOrder(column) {
//按字段排序
this.pageForm.pageOrderName = column.prop
@@ -856,7 +967,8 @@ layout("/layouts/platform.html"){
async created() {
const unions_resp = await $.get(loc() + "/getUnions")
this.unions = unions_resp.data
this.lxyHd = await getLxyHd()
await this.getActivityGroup()
this.lxyHd = await getLxyHd(this.pageForm.year)
this.lxyHdCd = await getlxyHdCd()
this.pageData()
}
@@ -10,7 +10,13 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-date-picker placeholder="选择年度" type="year" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
<el-date-picker
@change="hdSearch"
placeholder="选择年度"
type="year"
v-model="pageForm.year"
value-format="yyyy"
></el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-select @change="pageData" clearable filterable placeholder="请选择活动" v-model="pageForm.hdid">
@@ -547,6 +553,11 @@ layout("/layouts/platform.html"){
this.pageForm.pageNumber = 1
this.pageData()
},
async hdSearch() {
this.lxyHd = await getLxyHd(this.pageForm.year)
this.pageForm.hdid = this.lxyHd.length > 0 ? this.lxyHd[0].id : ""
this.doSearch()
},
doSearchGh() {
this.tabKey = new Date().getTime()
this.pageForm.pageNumber = 1
@@ -593,8 +604,8 @@ layout("/layouts/platform.html"){
},
async created() {
this.unions = await getUnions()
this.lxyHd = await getLxyHd()
this.pageForm.hdid = this.lxyHd[0].id
this.lxyHd = await getLxyHd(this.pageForm.year)
this.pageForm.hdid = this.lxyHd.length > 0 ? this.lxyHd[0].id : ""
this.pageData()
}
})
@@ -99,14 +99,20 @@
var now = new Date().getTime()
var hdkssj = moment(row.hdkssj.valueOf())
var hdjssj = moment(row.hdjssj.valueOf())
var bmkssj = moment(row.bmkssj.valueOf())
var bmjzsj = moment(row.bmjzsj.valueOf())
if (now < bmjzsj) {
if (now < bmkssj) {
return {
class: 'text-info',
name: '报名未开始'
}
} else if (bmkssj <= now && now < bmjzsj) {
return {
class: 'text-success',
name: '活动报名中'
}
} else if (bmjzsj < now && now < hdkssj) {
} else if (bmjzsj <= now && now < hdkssj) {
return {
class: 'text-info',
name: '报名已截止'