This commit is contained in:
=
2025-10-19 18:46:32 +08:00
52 changed files with 413 additions and 136 deletions
@@ -30,6 +30,12 @@ layout("/layouts/platform_h5.html"){
</van-dropdown-menu>
</van-sticky>
<van-tabs v-if="assortList.length > 0" type="card" color="#1867B0"
style="margin-top: 10px" @click="tabClick">
<van-tab v-for="item in assortList" :name="item" :title="item">
</van-tab>
</van-tabs>
<table-list api="/platform/family/apply/pageData"
:page_form.sync="pageForm"
ref="tableListRef"
@@ -117,6 +123,7 @@ layout("/layouts/platform_h5.html"){
courseTypeId: null,
activityId: GetQueryString('id'),
dataType: GetQueryString('dataType'),
assortTypes: [],
},
typeOptions: [],
assortOptions: [],
@@ -125,10 +132,18 @@ layout("/layouts/platform_h5.html"){
introduceRow: {},
activity: {},
assortList: [],
weekdayCNMap: {0: '周日', 1: '周一', 2: '周二', 3: '周三', 4: '周四', 5: '周五', 6: '周六'},
}
},
methods: {
tabClick(name) {
this.pageForm.assortTypes = []
this.pageForm.assortTypes.push(name)
this.pageForm.assortTypes = JSON.stringify(this.pageForm.assortTypes)
this.doSearch()
},
refresh() {
this.doSearch()
},
@@ -197,6 +212,7 @@ layout("/layouts/platform_h5.html"){
}
},
async onReady() {
this.queryCourseAssort()
const typeList = await this.getCourseTypeList()
this.sourceTypeOptions = clone(typeList)
this.typeOptions = [
@@ -221,6 +237,15 @@ layout("/layouts/platform_h5.html"){
const resp = await this.$axios.post("/platform/family/type/getAllType")
return resp.data
},
queryCourseAssort() {
this.$axios.post("/platform/family/apply/queryCourseAssort", {activityId: this.pageForm.activityId})
.then((resp) => {
this.assortList = resp.data
if(this.assortList.length > 0) {
this.pageForm.assortTypes = JSON.stringify([this.assortList[0]])
}
})
},
doSearch() {
this.$nextTick(() => {
this.pageForm.pageNumber = 1
@@ -24,6 +24,12 @@ layout("/layouts/platform_h5.html"){
</van-dropdown-menu>
</van-sticky>
<van-tabs v-if="assortList.length > 0" type="card" color="#1867B0"
style="margin-top: 10px" @click="tabClick">
<van-tab v-for="item in assortList" :name="item" :title="item">
</van-tab>
</van-tabs>
<table-list api="/platform/trainSignUp/apply/pageData"
:page_form.sync="pageForm"
ref="tableListRef"
@@ -110,6 +116,7 @@ layout("/layouts/platform_h5.html"){
courseTypeId: null,
activityId: GetQueryString('id'),
dataType: GetQueryString('dataType'),
assortTypes: [],
},
typeOptions: [],
assortOptions: [],
@@ -118,11 +125,18 @@ layout("/layouts/platform_h5.html"){
introduceRow: {},
activity: {},
assortList: [],
weekdayCNMap: {0: '周日', 1: '周一', 2: '周二', 3: '周三', 4: '周四', 5: '周五', 6: '周六'},
}
},
methods: {
tabClick(name) {
this.pageForm.assortTypes = []
this.pageForm.assortTypes.push(name)
this.pageForm.assortTypes = JSON.stringify(this.pageForm.assortTypes)
this.doSearch()
},
refresh() {
this.doSearch()
},
@@ -191,6 +205,7 @@ layout("/layouts/platform_h5.html"){
}
},
async onReady() {
this.queryCourseAssort()
const typeList = await this.getCourseTypeList()
this.sourceTypeOptions = clone(typeList)
this.typeOptions = [
@@ -215,6 +230,15 @@ layout("/layouts/platform_h5.html"){
const resp = await this.$axios.post("/platform/trainSignUp/type/getAllType")
return resp.data
},
queryCourseAssort() {
this.$axios.post("/platform/trainSignUp/apply/queryCourseAssort", {activityId: this.pageForm.activityId})
.then((resp) => {
this.assortList = resp.data
if(this.assortList.length > 0) {
this.pageForm.assortTypes = JSON.stringify([this.assortList[0]])
}
})
},
doSearch() {
this.$nextTick(() => {
this.pageForm.pageNumber = 1
@@ -24,6 +24,12 @@ layout("/layouts/platform_h5.html"){
</van-dropdown-menu>
</van-sticky>
<van-tabs v-if="assortList.length > 0" type="card" color="#1867B0"
style="margin-top: 10px" @click="tabClick">
<van-tab v-for="item in assortList" :name="item" :title="item">
</van-tab>
</van-tabs>
<table-list api="/platform/literacy/apply/pageData"
:page_form.sync="pageForm"
ref="tableListRef"
@@ -110,6 +116,7 @@ layout("/layouts/platform_h5.html"){
courseTypeId: null,
activityId: GetQueryString('id'),
dataType: GetQueryString('dataType'),
assortTypes: [],
},
typeOptions: [],
assortOptions: [],
@@ -118,11 +125,18 @@ layout("/layouts/platform_h5.html"){
introduceRow: {},
activity: {},
assortList: [],
weekdayCNMap: {0: '周日', 1: '周一', 2: '周二', 3: '周三', 4: '周四', 5: '周五', 6: '周六'},
}
},
methods: {
tabClick(name) {
this.pageForm.assortTypes = []
this.pageForm.assortTypes.push(name)
this.pageForm.assortTypes = JSON.stringify(this.pageForm.assortTypes)
this.doSearch()
},
refresh() {
this.doSearch()
},
@@ -191,6 +205,7 @@ layout("/layouts/platform_h5.html"){
}
},
async onReady() {
this.queryCourseAssort()
const typeList = await this.getCourseTypeList()
this.sourceTypeOptions = clone(typeList)
this.typeOptions = [
@@ -215,6 +230,15 @@ layout("/layouts/platform_h5.html"){
const resp = await this.$axios.post("/platform/literacy/type/getAllType")
return resp.data
},
queryCourseAssort() {
this.$axios.post("/platform/literacy/apply/queryCourseAssort", {activityId: this.pageForm.activityId})
.then((resp) => {
this.assortList = resp.data
if(this.assortList.length > 0) {
this.pageForm.assortTypes = JSON.stringify([this.assortList[0]])
}
})
},
doSearch() {
this.$nextTick(() => {
this.pageForm.pageNumber = 1
@@ -258,34 +258,34 @@ const selectView = {
}
},
style: /*language=CSS*/ `
.welfare-view {
/deep/ .welfare-view {
background: #f7f8fa;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* 内容区域样式 */
.welfare-view__content {
/deep/ .welfare-view__content {
padding: 16px;
height: 100%;
}
/* 卡片通用样式 */
.welfare-card {
/deep/ .welfare-card {
background: #fff;
border-radius: 8px;
margin-bottom: 12px;
overflow: hidden;
}
.welfare-card__header {
/deep/ .welfare-card__header {
display: flex;
align-items: center;
padding: 16px;
position: relative;
}
.welfare-card__header::after {
/deep/ .welfare-card__header::after {
content: '';
position: absolute;
left: 16px;
@@ -296,64 +296,64 @@ const selectView = {
transform: scaleY(0.5);
}
.welfare-card__header i {
/deep/ .welfare-card__header i {
font-size: 16px;
margin-right: 6px;
color: var(--color-primary);
}
.welfare-card__header span {
/deep/ .welfare-card__header span {
font-size: 15px;
font-weight: 500;
color: #323233;
}
.welfare-card__content {
/deep/ .welfare-card__content {
padding: 16px;
}
/* 信息行样式 */
.info-row {
/deep/ .info-row {
display: flex;
margin-bottom: 12px;
align-items: center;
}
.info-row:last-child {
/deep/ .info-row:last-child {
margin-bottom: 0;
}
.info-row__label {
/deep/ .info-row__label {
width: 70px;
color: #969799;
font-size: 14px;
flex-shrink: 0;
}
.info-row__value {
/deep/ .info-row__value {
flex: 1;
color: #323233;
font-size: 14px;
min-width: 0;
}
.info-row--time {
/deep/ .info-row--time {
align-items: flex-start;
}
.info-row--time .info-row__value {
/deep/ .info-row--time .info-row__value {
display: flex;
flex-direction: column;
gap: 4px;
}
.time-item {
/deep/ .time-item {
position: relative;
padding-left: 42px;
line-height: 20px;
}
.time-item--start::before {
/deep/ .time-item--start::before {
content: "开始:";
position: absolute;
left: 0;
@@ -361,7 +361,7 @@ const selectView = {
font-size: 12px;
}
.time-item--end::before {
/deep/ .time-item--end::before {
content: "结束:";
position: absolute;
left: 0;
@@ -370,15 +370,15 @@ const selectView = {
}
/* 选择列表样式 */
.selections-container {
/deep/ .selections-container {
margin-bottom: 12px;
}
.selection-list {
/deep/ .selection-list {
padding: 8px 16px;
}
.selection-item {
/deep/ .selection-item {
display: flex;
align-items: center;
padding: 12px;
@@ -389,15 +389,15 @@ const selectView = {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02);
}
.selection-item:active {
/deep/ .selection-item:active {
background: #f8f9fa;
}
.selection-item:last-child {
/deep/ .selection-item:last-child {
margin-bottom: 0;
}
.selection-item__image {
/deep/ .selection-item__image {
width: 72px;
height: 72px;
margin-right: 12px;
@@ -407,19 +407,19 @@ const selectView = {
flex-shrink: 0;
}
.selection-item__image img {
/deep/ .selection-item__image img {
width: 100%;
height: 100%;
object-fit: cover;
}
.selection-item__content {
/deep/ .selection-item__content {
flex: 1;
min-width: 0;
padding: 4px 0;
}
.selection-item__name {
/deep/ .selection-item__name {
font-size: 15px;
font-weight: 500;
color: #323233;
@@ -429,7 +429,7 @@ const selectView = {
white-space: nowrap;
}
.selection-item__meta {
/deep/ .selection-item__meta {
display: flex;
align-items: center;
font-size: 13px;
@@ -437,7 +437,7 @@ const selectView = {
line-height: 1.4;
}
.selection-item__count {
/deep/ .selection-item__count {
display: flex;
align-items: center;
margin-right: 16px;
@@ -446,7 +446,7 @@ const selectView = {
border-radius: 4px;
}
.selection-item__time {
/deep/ .selection-item__time {
display: flex;
align-items: center;
background: #f7f8fa;
@@ -454,19 +454,19 @@ const selectView = {
border-radius: 4px;
}
.selection-item__meta i {
/deep/ .selection-item__meta i {
margin-right: 4px;
font-size: 14px;
}
.selection-item__arrow {
/deep/ .selection-item__arrow {
color: #c8c9cc;
font-size: 16px;
padding: 0 0 0 12px;
}
/* 空状态样式 */
.empty-state {
/deep/ .empty-state {
display: flex;
flex-direction: column;
align-items: center;
@@ -474,42 +474,42 @@ const selectView = {
color: #969799;
}
.empty-state__icon {
/deep/ .empty-state__icon {
font-size: 48px;
margin-bottom: 8px;
}
/* 详情弹窗样式 */
.welfare-detail {
/deep/ .welfare-detail {
padding: 20px 16px;
max-height: 60vh;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.welfare-detail__content {
/deep/ .welfare-detail__content {
font-size: 14px;
line-height: 1.6;
color: #323233;
}
.rich-text {
/deep/ .rich-text {
overflow-x: hidden;
}
.rich-text img {
/deep/ .rich-text img {
max-width: 100%;
height: auto;
margin: 8px 0;
border-radius: 4px;
}
.rich-text p {
/deep/ .rich-text p {
margin: 8px 0;
}
/* 阻止嵌套 action-sheet 时的背景重叠 */
.no-overlay {
/deep/ .no-overlay {
background-color: transparent !important;
}
`