diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java index 5da34115..b96c6be4 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java @@ -64,8 +64,8 @@ public class H5ActivitySportsApplyUserController { @At @SaCheckPermission("h5.activity.sports.applyUser") - public Result activityData(Integer year, Integer isActivity, Integer applyStatus) { - return Result.success(activitySportsApplyUserService.activityData(year, isActivity, applyStatus)); + public Result activityData(Integer year, Integer isActivity, Integer applyStatus, String searchKeyword) { + return Result.success(activitySportsApplyUserService.activityData(year, isActivity, applyStatus, searchKeyword)); } diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/service/ActivitySportsApplyUserService.java b/src/main/java/com/budwk/app/zhgh/activity/sports/service/ActivitySportsApplyUserService.java index 91995f46..23f9b5f8 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/service/ActivitySportsApplyUserService.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/service/ActivitySportsApplyUserService.java @@ -19,6 +19,17 @@ public interface ActivitySportsApplyUserService extends BaseService getEvents(String activityId); Object getUnionCoachLeaderHead(String activityId,String unionId); diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java index dbbb3e1e..8e6e1a43 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java @@ -144,6 +144,20 @@ public class ActivitySportsApplyUserServiceImpl extends BaseServiceImplapplyStartTime and now() < applyEndTime")); diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java index c875314d..2b5c931e 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java @@ -93,6 +93,9 @@ public class TrainSignUpApplyController { Cnd cnd = Cnd.NEW(); cnd.andEX("id", "=", id); cnd.andEX("`year`", "=", year); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + cnd.and(Cnd.likeEX("activityName", pageForm.getSearchKeyword())); + } //查询报名中 if (activityType == 2) { cnd.and(new Static("now() < activitySignUpEndTime")); diff --git a/src/main/java/com/budwk/app/zhgh/spread/h5controller/H5SpreadDisplayController.java b/src/main/java/com/budwk/app/zhgh/spread/h5controller/H5SpreadDisplayController.java index 7ad9990e..aebc11ff 100644 --- a/src/main/java/com/budwk/app/zhgh/spread/h5controller/H5SpreadDisplayController.java +++ b/src/main/java/com/budwk/app/zhgh/spread/h5controller/H5SpreadDisplayController.java @@ -34,6 +34,15 @@ public class H5SpreadDisplayController { public void index() { } + /** + * 打开工会动态 H5 详情页面。 + */ + @At("/detail") + @Ok("beetl:/platform/zhghh5/spread/display/detail.html") + @SaCheckLogin + public void detail() { + } + /** * 查询 H5 端可见栏目树。 * @@ -52,13 +61,18 @@ public class H5SpreadDisplayController { * @param pageForm 分页参数 * @param categoryId 栏目 ID * @param title 标题模糊查询条件 + * @param sortType 排序方式 + * @param publishDays 发布时间范围天数 + * @param contentFlag 内容属性筛选 * @return 已发布内容分页数据 */ @At @SaCheckLogin @ApiOperation("H5已发布内容分页") - public Result pageData(PageForm pageForm, String categoryId, String title) { - return Result.success(contentService.pagePublished(pageForm, categoryId, title)); + public Result pageData(PageForm pageForm, String categoryId, String title, + String sortType, Integer publishDays, String contentFlag) { + return Result.success(contentService.pagePublished(pageForm, categoryId, title, + sortType, publishDays, contentFlag)); } /** diff --git a/src/main/java/com/budwk/app/zhgh/spread/service/SpreadContentService.java b/src/main/java/com/budwk/app/zhgh/spread/service/SpreadContentService.java index e61d1e80..d99f5641 100644 --- a/src/main/java/com/budwk/app/zhgh/spread/service/SpreadContentService.java +++ b/src/main/java/com/budwk/app/zhgh/spread/service/SpreadContentService.java @@ -26,6 +26,20 @@ public interface SpreadContentService extends BaseService { */ Pagination pagePublished(PageForm pageForm, String categoryId, String title); + /** + * 按 H5 筛选条件分页查询已发布内容。 + * + * @param pageForm 分页参数 + * @param categoryId 栏目 ID,查询时包含该栏目的直接子栏目 + * @param title 标题模糊查询条件 + * @param sortType 排序方式:comprehensive、latest、views + * @param publishDays 发布时间范围天数,空或 0 表示不限 + * @param contentFlag 内容属性:all、recommend、headline、top + * @return 已发布内容分页数据 + */ + Pagination pagePublished(PageForm pageForm, String categoryId, String title, + String sortType, Integer publishDays, String contentFlag); + SpreadContent getContent(String id); void saveContent(SpreadContent content); diff --git a/src/main/java/com/budwk/app/zhgh/spread/service/impl/SpreadContentServiceImpl.java b/src/main/java/com/budwk/app/zhgh/spread/service/impl/SpreadContentServiceImpl.java index e71339ef..c1f806e5 100644 --- a/src/main/java/com/budwk/app/zhgh/spread/service/impl/SpreadContentServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/spread/service/impl/SpreadContentServiceImpl.java @@ -62,7 +62,7 @@ public class SpreadContentServiceImpl extends BaseServiceImpl imp @Override public Pagination pagePublished(PageForm pageForm, String categoryId) { - return pagePublished(pageForm, categoryId, null); + return pagePublished(pageForm, categoryId, null, null, null, null); } /** @@ -75,22 +75,54 @@ public class SpreadContentServiceImpl extends BaseServiceImpl imp */ @Override public Pagination pagePublished(PageForm pageForm, String categoryId, String title) { + return pagePublished(pageForm, categoryId, title, null, null, null); + } + + /** + * 按 H5 筛选条件分页查询已发布内容。 + * + * @param pageForm 分页参数 + * @param categoryId 栏目 ID,查询时包含该栏目的直接子栏目 + * @param title 标题模糊查询条件 + * @param sortType 排序方式 + * @param publishDays 发布时间范围天数 + * @param contentFlag 内容属性筛选 + * @return 已发布内容分页数据 + */ + @Override + public Pagination pagePublished(PageForm pageForm, String categoryId, String title, + String sortType, Integer publishDays, String contentFlag) { SpreadContentQuery query = new SpreadContentQuery(); query.setCategoryId(categoryId); query.setTitle(title); query.setIsPublished(1); Cnd cnd = buildCondition(query); + if (publishDays != null && publishDays > 0) { + cnd.and("c.publishedAt", ">=", System.currentTimeMillis() - publishDays * 24L * 60L * 60L * 1000L); + } + if ("recommend".equals(contentFlag)) { + cnd.and("c.isRecommend", "=", 1); + } else if ("headline".equals(contentFlag)) { + cnd.and("c.isHeadline", "=", 1); + } else if ("top".equals(contentFlag)) { + cnd.and("c.isTop", "=", 1); + } Sql countSql = Sqls.create("SELECT COUNT(1) FROM spread_content c $condition"); countSql.setCondition(cnd); countSql.setCallback(Sqls.callback.integer()); dao().execute(countSql); + String orderBy = resolvePublishedOrder(sortType); Sql listSql = Sqls.create(""" - SELECT c.* + SELECT c.*, + CASE WHEN child.parentId = '0' OR parent.id IS NULL THEN child.name ELSE parent.name END AS parentCategoryName, + CASE WHEN child.parentId = '0' OR parent.id IS NULL THEN NULL ELSE child.name END AS childCategoryName FROM spread_content c + LEFT JOIN spread_category child ON child.id = c.categoryId AND child.delFlag = 0 + LEFT JOIN spread_category parent ON parent.id = child.parentId AND parent.delFlag = 0 $condition - ORDER BY c.isTop DESC, c.publishedAt DESC, c.sortOrder ASC, c.createdAt DESC - """); + ORDER BY + """ + orderBy); listSql.setCondition(cnd); listSql.setPager(dao().createPager(pageForm.getPageNumber(), pageForm.getPageSize())); listSql.setCallback(Sqls.callback.maps()); @@ -99,6 +131,19 @@ public class SpreadContentServiceImpl extends BaseServiceImpl imp countSql.getInt(), listSql.getList(NutMap.class)); } + /** + * 将前端排序标识转换为固定 SQL 排序片段,避免客户端直接控制排序字段。 + */ + private String resolvePublishedOrder(String sortType) { + if ("latest".equals(sortType)) { + return "c.publishedAt DESC, c.createdAt DESC"; + } + if ("views".equals(sortType)) { + return "c.viewCount DESC, c.publishedAt DESC, c.createdAt DESC"; + } + return "c.isTop DESC, c.publishedAt DESC, c.sortOrder ASC, c.createdAt DESC"; + } + @Override public SpreadContent getContent(String id) { if (StrUtil.isBlank(id)) { diff --git a/src/main/resources/static/assets/mobile/img/activity/culture-empty.png b/src/main/resources/static/assets/mobile/img/activity/culture-empty.png new file mode 100644 index 00000000..7363ec6f Binary files /dev/null and b/src/main/resources/static/assets/mobile/img/activity/culture-empty.png differ diff --git a/src/main/resources/static/assets/mobile/img/activity/sports-empty.png b/src/main/resources/static/assets/mobile/img/activity/sports-empty.png new file mode 100644 index 00000000..dd556d04 Binary files /dev/null and b/src/main/resources/static/assets/mobile/img/activity/sports-empty.png differ diff --git a/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v2.png b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v2.png new file mode 100644 index 00000000..821a1060 Binary files /dev/null and b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v2.png differ diff --git a/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v3.png b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v3.png new file mode 100644 index 00000000..1fe8c2c9 Binary files /dev/null and b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v3.png differ diff --git a/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v4.png b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v4.png new file mode 100644 index 00000000..3bcbbf79 Binary files /dev/null and b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty-v4.png differ diff --git a/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty.png b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty.png new file mode 100644 index 00000000..2b6e9a76 Binary files /dev/null and b/src/main/resources/static/assets/mobile/img/home/v4/union-news-empty.png differ diff --git a/src/main/resources/static/components/plugins/h5/TableList.vue b/src/main/resources/static/components/plugins/h5/TableList.vue index 1de02401..a1eab21f 100644 --- a/src/main/resources/static/components/plugins/h5/TableList.vue +++ b/src/main/resources/static/components/plugins/h5/TableList.vue @@ -66,6 +66,10 @@ module.exports = { img: { type: String, default: "" + }, + show_loading_overlay: { + type: Boolean, + default: true } }, watch: { @@ -111,9 +115,15 @@ module.exports = { pageData() { this.tableLoading = true + const isInitialLoad = this.tableData.length === 0 + this.$emit("loading-change", {loading: true, initial: isInitialLoad}) - const loading = createListLoading() - this.$axios.post(this.api, this.json ? ({pageForm: JSON.stringify(this.localPageForm)}) : this.localPageForm).then((res) => { + const loading = this.show_loading_overlay ? createListLoading() : null + this.$axios.post( + this.api, + this.json ? ({pageForm: JSON.stringify(this.localPageForm)}) : this.localPageForm, + {h5SkeletonLoading: !this.show_loading_overlay} + ).then((res) => { if (res.code === 0) { this.tableData = this.tableData.concat(res.data.list) this.localPageForm.totalCount = res.data.totalCount @@ -123,11 +133,10 @@ module.exports = { this.$emit("update:page_form", {...this.localPageForm}) } }).finally(() => { - loading.close() - console.log(this.tableLoading) + if (loading) loading.close() this.tableLoading = false - console.log(this.tableLoading) this.tableRefreshing = false + this.$emit("loading-change", {loading: false, initial: isInitialLoad}) }) }, doSearch() { diff --git a/src/main/resources/static/components/plugins/vantMore/yearVanDropDownItem.vue b/src/main/resources/static/components/plugins/vantMore/yearVanDropDownItem.vue index 62ff48a4..e7d8a981 100644 --- a/src/main/resources/static/components/plugins/vantMore/yearVanDropDownItem.vue +++ b/src/main/resources/static/components/plugins/vantMore/yearVanDropDownItem.vue @@ -1,5 +1,11 @@ diff --git a/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html b/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html index 91e19367..21781d06 100644 --- a/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html +++ b/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html @@ -1,8 +1,259 @@ +
+
+
+
+ +
+
+
体育活动项目
+
选择适合的项目,参与健康运动
+
+
+ +
+
可报名项目
+
共 {{ pageForm.totalCount }} 项
+
+
@@ -28,14 +294,14 @@ layout("/layouts/platform_h5.html"){ @@ -75,28 +341,30 @@ layout("/layouts/platform_h5.html"){
- - 报 名 + + 我要报名 - + 取消报名
- - 报 名 + + 我要报名 - + 取消报名
@@ -104,8 +372,12 @@ layout("/layouts/platform_h5.html"){
- +
+ 体育活动项目空状态插画 +
暂无可报名项目
+
当前活动暂未发布可报名项目
+
+
diff --git a/src/main/resources/views/platform/zhghh5/activity/sports/eventNotification.js b/src/main/resources/views/platform/zhghh5/activity/sports/eventNotification.js index 013de8f0..f1687d71 100644 --- a/src/main/resources/views/platform/zhghh5/activity/sports/eventNotification.js +++ b/src/main/resources/views/platform/zhghh5/activity/sports/eventNotification.js @@ -1,16 +1,47 @@ let ACTIVITY_EVENT_NOTIFICATION = { template: ` -
- - - - -
-
-
暂无
- 进入报名 - +
+ +
+ + + + +
+
+
+ +
+
+
活动报名须知
+
请仔细阅读活动安排与报名要求
+
+
+ +
+
+
+
+ + 暂无活动通知 +
+
+ +
@@ -21,6 +52,12 @@ let ACTIVITY_EVENT_NOTIFICATION = { }, id: { value: { type: String, default: "暂无" } + }, + apply_start_time: { + value: { type: String, default: "" } + }, + apply_end_time: { + value: { type: String, default: "" } } }, data() { @@ -28,9 +65,189 @@ let ACTIVITY_EVENT_NOTIFICATION = { viewShow: false } }, + computed: { + // 详情页统一控制报名入口状态,活动列表仅负责进入详情。 + inApplyTime() { + if (!this.apply_start_time || !this.apply_end_time) return false + const now = Date.now() + return now >= this.$moment(this.apply_start_time).valueOf() + && now <= this.$moment(this.apply_end_time).valueOf() + }, + applyStatusText() { + if (!this.apply_start_time || !this.apply_end_time) return "当前不可报名" + if (Date.now() < this.$moment(this.apply_start_time).valueOf()) return "报名未开始" + return "已过报名时间" + } + }, methods: { openReg() { this.$pjaxReplace("/platform/activity/apply/h5/eventList?activityId=" + this.id) } - } + }, + style: /*language=CSS*/ ` + .activity-notification-popup { + background-color: #f3f7fd; + } + + .activity-notification-page { + position: relative; + min-height: 100vh; + background-color: #f3f7fd; + } + + .activity-notification-page /deep/ .van-nav-bar { + background-color: #fff; + } + + .activity-notification-page /deep/ .van-nav-bar__title { + color: #1f2937; + font-size: 16px; + } + + .activity-notification-page /deep/ .van-nav-bar .van-icon, + .activity-notification-page /deep/ .van-nav-bar__text { + color: #397fbd; + } + + .activity-notification-scroll { + height: calc(100vh - 46px); + padding: 12px 12px calc(92px + env(safe-area-inset-bottom)); + overflow-x: hidden; + overflow-y: auto; + box-sizing: border-box; + } + + .activity-notification-hero { + display: flex; + min-height: 82px; + padding: 16px; + align-items: center; + box-sizing: border-box; + border-radius: 12px; + color: #fff; + background: linear-gradient(120deg, #2d7eea 0%, #5ba6f7 100%); + box-shadow: 0 8px 20px rgba(45, 126, 234, .18); + } + + .activity-notification-hero__icon { + display: flex; + width: 44px; + height: 44px; + margin-right: 12px; + flex: 0 0 44px; + align-items: center; + justify-content: center; + border-radius: 11px; + color: #2d7eea; + background-color: rgba(255, 255, 255, .92); + font-size: 25px; + } + + .activity-notification-hero__title { + font-size: 17px; + line-height: 24px; + font-weight: 600; + } + + .activity-notification-hero__subtitle { + margin-top: 3px; + font-size: 12px; + line-height: 18px; + opacity: .9; + } + + .activity-notification-card { + margin-top: 12px; + padding: 18px 16px; + overflow: hidden; + border-radius: 12px; + background-color: #fff; + box-shadow: 0 7px 20px rgba(55, 85, 126, .08); + } + + .activity-notification-content { + color: #3f4c5e; + font-size: 14px; + line-height: 1.8; + white-space: normal; + word-break: break-word; + } + + .activity-notification-content /deep/ h1, + .activity-notification-content /deep/ h2, + .activity-notification-content /deep/ h3 { + margin: 0 0 12px !important; + color: #1f2f43 !important; + font-size: 20px !important; + line-height: 1.5 !important; + font-weight: 600 !important; + } + + .activity-notification-content /deep/ p { + margin: 0 0 8px !important; + font-size: 14px !important; + line-height: 1.8 !important; + } + + .activity-notification-content /deep/ img { + max-width: 100% !important; + height: auto !important; + border-radius: 8px; + } + + .activity-notification-content /deep/ table { + display: block; + max-width: 100%; + overflow-x: auto; + border-collapse: collapse; + } + + .activity-notification-empty { + display: flex; + min-height: 180px; + margin-top: 12px; + align-items: center; + justify-content: center; + flex-direction: column; + row-gap: 10px; + border-radius: 12px; + color: #9aa7b8; + background-color: #fff; + box-shadow: 0 7px 20px rgba(55, 85, 126, .08); + font-size: 14px; + } + + .activity-notification-empty /deep/ .van-icon { + color: #83b5f4; + font-size: 36px; + } + + .activity-notification-footer { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 5; + padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); + border-top: 1px solid #edf1f6; + background-color: rgba(255, 255, 255, .96); + box-sizing: border-box; + } + + .activity-notification-footer /deep/ .van-button { + height: 42px; + border: 0; + font-size: 15px; + background-color: #1989fa; + box-shadow: 0 6px 16px rgba(25, 137, 250, .22); + } + + .activity-notification-footer /deep/ .van-button.is-disabled, + .activity-notification-footer /deep/ .van-button--disabled { + color: #8b98aa !important; + background-color: #eef2f7 !important; + opacity: 1; + box-shadow: none; + } + ` } diff --git a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html index d2ee2ee7..a516c6bd 100644 --- a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html +++ b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html @@ -2,93 +2,621 @@ layout("/layouts/platform_h5.html"){ #--> - -
- +
+
+ - - - - - - - - - - - + - + + +
+
+ +
+ + {{ hasCover(row) ? '图片加载失败' : '暂无图片' }} +
+
+
{{ row.activityName }}
+
+ 报名时间:{{ $moment(row.activitySignUpStartTime).format('MM/DD HH:mm') }}~{{ $moment(row.activitySignUpEndTime).format('MM/DD HH:mm') }} +
+
+ 活动时间:{{ $moment(row.activityStartTime).format('MM/DD HH:mm') }}~{{ $moment(row.activityEndTime).format('MM/DD HH:mm') }} +
+
+ + 面向对象{{ row.activityGroupName }} + + + 活动类型{{ row.trainType }} + +
+
+ +
+
+
+
+ 品牌活动空状态插画 +
暂无品牌活动
+
当前筛选条件下暂时没有可展示的活动
+
+
+
+
-
-
- -
{{infoRow.activityName}}
- + +
+ + + +
+
+
+ +
+
+
活动报名须知
+
请仔细阅读活动安排与报名要求
+
+
+
+
+
+
+ + 暂无活动介绍 +
-
- - - 去报名 - - +
- - +
diff --git a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/common/times.js b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/common/times.js index 60d1dd7e..8d725a8e 100644 --- a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/common/times.js +++ b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/common/times.js @@ -3,9 +3,10 @@ const times = { /*language=HTML*/ `
- -
- +
- + @@ -150,10 +150,90 @@ const applyForm = { }, }, style: /*language=CSS*/ ` - /deep/ .button { - position: fixed; + .brand-course-form-sheet { + overflow: hidden; + border-radius: 16px 16px 0 0; + background-color: #f3f7fd; + } + + .brand-course-form-sheet /deep/ .van-action-sheet__header { + height: 48px; + color: #1f2f43; + background-color: #fff; + font-size: 16px; + line-height: 48px; + } + + .brand-course-form-sheet /deep/ .van-action-sheet__close { + top: 13px; + color: #b5bdc9; + font-size: 20px; + } + + .brand-course-form-sheet /deep/ .form-container { + height: calc(100% - 48px); + padding: 10px 12px 72px; + overflow-y: auto; + background-color: #f3f7fd; + box-sizing: border-box; + } + + .brand-course-form-sheet /deep/ .form-section { + margin-bottom: 10px; + overflow: hidden; + border-radius: 10px; + background-color: #fff; + box-shadow: 0 6px 18px rgba(55, 85, 126, .07); + } + + .brand-course-form-sheet /deep/ .van-cell-group__title { + padding: 12px 14px 8px; + color: #263548; + background-color: #fff; + font-size: 14px; + line-height: 20px; + font-weight: 600; + } + + .brand-course-form-sheet /deep/ .van-cell-group__title::before { + width: 3px; + top: 12px; + bottom: 8px; + border-radius: 2px; + background-color: #1989fa; + } + + .brand-course-form-sheet /deep/ .van-cell { + padding: 11px 14px; + color: #263548; + font-size: 13px; + } + + .brand-course-form-sheet /deep/ .van-field__label { + color: #66758a; + font-size: 13px; + } + + .brand-course-form-sheet /deep/ .button { + position: absolute; + right: 0; bottom: 0; - width: 100%; + left: 0; + z-index: 2; + padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); + border-top: 1px solid #edf1f6; + background-color: rgba(255, 255, 255, .96); + box-sizing: border-box; + } + + .brand-course-form-sheet /deep/ .button .van-button { + height: 42px; + border: 0; + border-radius: 21px; + color: #fff; + background-color: #1989fa; + font-size: 15px; + box-shadow: 0 6px 16px rgba(25, 137, 250, .22); } ` } diff --git a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/list/index.html b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/list/index.html index 8e3d5aef..014cf257 100644 --- a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/list/index.html +++ b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/list/index.html @@ -2,33 +2,535 @@ layout("/layouts/platform_h5.html"){ #--> - -
+
+
+
+
+ +
+
+
品牌活动项目
+
选择适合的课程,参与品牌活动
+
+
+ - - - +
+ + + +
+ +
+
- - - - +
+
可报名课程
+
共 {{ pageForm.totalCount }} 项
+
+
- - + +
+ +
@@ -127,12 +632,15 @@ layout("/layouts/platform_h5.html"){ introduceRow: {}, activity: {}, assortList: [], + activeAssort: '', + filterOpened: false, weekdayCNMap: {0: '周日', 1: '周一', 2: '周二', 3: '周三', 4: '周四', 5: '周五', 6: '周六'}, } }, methods: { tabClick(name) { + this.activeAssort = name this.pageForm.assortTypes = [] this.pageForm.assortTypes.push(name) this.pageForm.assortTypes = JSON.stringify(this.pageForm.assortTypes) @@ -236,6 +744,7 @@ layout("/layouts/platform_h5.html"){ .then((resp) => { this.assortList = resp.data if(this.assortList.length > 0) { + this.activeAssort = this.assortList[0] this.pageForm.assortTypes = JSON.stringify([this.assortList[0]]) } }) diff --git a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/mine/index.html b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/mine/index.html index 62ef2fd9..533b7437 100644 --- a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/mine/index.html +++ b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/mine/index.html @@ -2,91 +2,475 @@ layout("/layouts/platform_h5.html"){ #--> - -
- +
+
+ - - - - - - +
+
+ 品牌活动插画 +
+
我的报名
+
品牌活动 · 报名记录
+
+
- - - - + +
+ + + + + +
+
- + + +
+
+ +
+ + {{ hasCover(row) ? '图片加载失败' : '暂无图片' }} +
+
+
{{ row.activityName }}
+
+ 报名时间:{{ $moment(row.activitySignUpStartTime).format('MM/DD HH:mm') }}~{{ $moment(row.activitySignUpEndTime).format('MM/DD HH:mm') }} +
+
+ 活动时间:{{ $moment(row.activityStartTime).format('MM/DD HH:mm') }}~{{ $moment(row.activityEndTime).format('MM/DD HH:mm') }} +
+
+ 面向对象{{ row.activityGroupName }} + 活动类型{{ row.trainType }} +
+
+
+ + +
+
+
+
+
+ 品牌活动报名空状态插画 +
暂无报名记录
+
当前筛选条件下暂时没有已报名活动
+
+
+
+
-
-
- -
{{infoRow.activityName}}
- + +
+ +
+
+
+
+
活动报名须知
+
请仔细阅读活动安排与报名要求
+
+
+
+
暂无活动介绍
- - +
diff --git a/src/main/resources/views/platform/zhghh5/spread/display/detail.html b/src/main/resources/views/platform/zhghh5/spread/display/detail.html new file mode 100644 index 00000000..c59b0db5 --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/spread/display/detail.html @@ -0,0 +1,145 @@ + + + +
+ + +
+ + + +
+ +
+

{{detail.title}}

+
+ {{formatDate(detail.publishedAt || detail.createdAt)}} {{detail.categoryName}}  + {{detail.viewCount || 0}} +
+ +
{{detail.summary}}
+ + +
+ +
{{slide.title}}
+
+
+
+
+
+ +
动态不存在或已下架
+
+ + + diff --git a/src/main/resources/views/platform/zhghh5/spread/display/index.html b/src/main/resources/views/platform/zhghh5/spread/display/index.html index 9673d147..e6d49949 100644 --- a/src/main/resources/views/platform/zhghh5/spread/display/index.html +++ b/src/main/resources/views/platform/zhghh5/spread/display/index.html @@ -7,15 +7,24 @@ layout("/layouts/platform_h5.html"){ .spread-h5__toolbar { position: sticky; top: 46px; z-index: 15; background: #fff; box-shadow: 0 3px 10px rgba(31,72,122,.06); } .spread-h5__search { padding: 8px 12px 2px; background: #fff; } .spread-h5__search .van-search { padding: 0; } - .spread-h5__categories { padding: 2px 12px 10px; background: #fff; } + .spread-h5__categories { padding: 2px 12px 8px; background: #fff; } + .spread-h5__tabs-nav { display: flex; align-items: center; border-bottom: 1px solid #edf1f6; } .spread-h5__tabs { height: 36px; padding: 0; display: flex; gap: 0; overflow-x: auto; overflow-y: hidden; border-bottom: 1px solid #edf1f6; border-radius: 0; background: transparent; box-sizing: border-box; scrollbar-width: none; -webkit-overflow-scrolling: touch; } + .spread-h5__tabs-nav .spread-h5__tabs { min-width: 0; flex: 1; border-bottom: 0; } + .spread-h5__tabs-arrow { width: 26px; height: 30px; padding: 0; flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: #8d98a8; font-size: 14px; line-height: 1; border: 0; background: transparent; } + .spread-h5__tabs-arrow .van-icon { display: block; line-height: 1; } + .spread-h5__tabs-arrow:active { color: #087af4; background: #f3f8ff; } .spread-h5__tabs::-webkit-scrollbar { display: none; } .spread-h5__tab { position: relative; min-width: 92px; height: 30px; padding: 0 8px; flex: 1 0 calc((100% - 8px) / 3); display: flex; align-items: center; justify-content: center; color: #7d8797; font-size: 13px; white-space: nowrap; border-radius: 6px; box-sizing: border-box; } .spread-h5__tab--active { color: #087af4; font-weight: 600; background: transparent; box-shadow: none; } .spread-h5__tabs:not(.spread-h5__tabs--secondary) .spread-h5__tab--active::after { content: ""; position: absolute; left: 50%; bottom: -1px; width: 26px; height: 2px; border-radius: 2px; background: #087af4; transform: translateX(-50%); } - .spread-h5__tabs--secondary { height: 30px; margin-top: 7px; padding: 1px 0; gap: 6px; border-bottom: 0; border-radius: 0; background: transparent; } - .spread-h5__tabs--secondary .spread-h5__tab { min-width: 84px; height: 26px; padding: 0 10px; flex: 1 0 calc((100% - 12px) / 3); color: #969daa; font-size: 11px; border: 1px solid #e7ecf3; border-radius: 999px; background: #fafbfd; box-shadow: none; } - .spread-h5__tabs--secondary .spread-h5__tab--active { color: #087af4; border-color: #b9d8ff; background: #edf6ff; } + .spread-h5__filters { height: 42px; margin-top: 8px; display: flex; overflow: hidden; border-radius: 10px; box-sizing: border-box; } + .spread-h5__filter-menu { min-width: 0; flex: 1; background: transparent; } + .spread-h5__filter-menu .van-dropdown-menu__bar { height: 40px; background: transparent; box-shadow: none; } + .spread-h5__filter-menu .van-dropdown-menu__item { position: relative; min-width: 0; } + .spread-h5__filter-menu .van-dropdown-menu__title { max-width: 100%; padding: 0 16px 0 8px; color: #5f6978; font-size: 12px; line-height: 28px; box-sizing: border-box; } + .spread-h5__filter-menu .van-dropdown-menu__title::after { right: 6px; border-color: transparent transparent #8d98a8 #8d98a8; } + .spread-h5__filter-menu .van-dropdown-menu__title--active::after { border-color: transparent transparent currentColor currentColor; } .spread-h5__list { margin: 10px 12px 20px; padding: 0 12px; border-radius: 10px; background: #fff; } .spread-h5__item { min-height: 82px; padding: 11px 0; display: flex; align-items: center; box-sizing: border-box; } .spread-h5__item + .spread-h5__item { border-top: 1px solid #f0f2f5; } @@ -26,27 +35,23 @@ layout("/layouts/platform_h5.html"){ .spread-h5__item-meta { margin-top: 6px; display: flex; align-items: center; justify-content: space-between; color: #9aa2af; font-size: 10px; line-height: 14px; } .spread-h5__views { display: inline-flex; align-items: center; } .spread-h5__views .van-icon { margin-right: 3px; } + .spread-h5__skeleton-list { margin: 10px 12px 20px; padding: 0 12px; border-radius: 10px; background: #fff; } + .spread-h5__skeleton-item { min-height: 82px; padding: 11px 0; box-sizing: border-box; } + .spread-h5__skeleton-item + .spread-h5__skeleton-item { border-top: 1px solid #f0f2f5; } + .spread-h5__skeleton-item .van-skeleton { padding: 0; } + .spread-h5__skeleton-item .van-skeleton__avatar { width: 96px; height: 60px; margin-right: 11px; border-radius: 5px; } .spread-h5__loading { padding: 35px 0; text-align: center; } .spread-h5__finished { padding: 10px 0 18px; color: #b0b6c0; font-size: 11px; line-height: 16px; text-align: center; } - .spread-h5__empty { padding: 36px 0; color: #9aa2af; font-size: 13px; line-height: 20px; text-align: center; } - .spread-h5__detail { margin: 10px 12px 24px; padding: 18px 15px 24px; border-radius: 10px; background: #fff; } - .spread-h5__detail-title { margin: 0; color: #202124; font-size: 20px; line-height: 29px; text-align: center; word-break: break-word; } - .spread-h5__detail-meta { margin-top: 10px; padding-bottom: 14px; color: #9aa2af; font-size: 11px; line-height: 17px; text-align: center; border-bottom: 1px solid #edf1f6; } - .spread-h5__detail-summary { margin: 15px 0 0; padding: 10px 12px; color: #697386; font-size: 14px; line-height: 22px; border-radius: 6px; background: #f7f9fc; } - .spread-h5__detail-cover { width: 100%; max-height: 240px; margin: 16px 0 0; display: block; border-radius: 6px; object-fit: contain; } - .spread-h5__slider { height: 220px; margin-top: 16px; overflow: hidden; border-radius: 6px; background: #eef2f7; } - .spread-h5__slide { position: relative; height: 220px; } - .spread-h5__slide img { width: 100%; height: 100%; display: block; object-fit: contain; } - .spread-h5__slide-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 24px 12px 10px; overflow: hidden; color: #fff; font-size: 12px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap; background: linear-gradient(to top, rgba(15,23,42,.72), transparent); box-sizing: border-box; } - .spread-h5__detail-body { margin-top: 16px; overflow: hidden; color: #323233; font-size: 15px; line-height: 1.8; word-break: break-word; } - .spread-h5__detail-body img, .spread-h5__detail-body video { max-width: 100% !important; height: auto !important; } - .spread-h5__detail-body table { max-width: 100% !important; } + .spread-h5__empty { min-height: 250px; padding: 28px 18px 36px; display: flex; align-items: center; justify-content: center; flex-direction: column; box-sizing: border-box; text-align: center; } + .spread-h5__empty-image { display: block; width: 82%; max-width: 280px; height: auto; object-fit: contain; } + .spread-h5__empty-title { margin-top: 8px; color: #50627a; font-size: 15px; line-height: 22px; font-weight: 500; } + .spread-h5__empty-hint { margin-top: 5px; color: #9aa7b8; font-size: 12px; line-height: 18px; }
- + -