master
xy 1 year ago
parent 4cf6c4f706
commit 67e25f7cdb

File diff suppressed because one or more lines are too long

@ -25,4 +25,10 @@ Vue.use(httpInterceptor, app)
import httpApi from '@/common/http.api.js'
Vue.use(httpApi, app)
import moment from '@/libs/moment.min.js'
Vue.prototype.$moment = moment
let mpShare = require('uview-ui/libs/mixin/mpShare.js');
Vue.mixin(mpShare)
app.$mount()

@ -0,0 +1,175 @@
<template>
<view class="container safe-area-inset-bottom">
<view class="search-bar">
<view class="search-bar__input">
<u-input
v-model="select.keyword"
:height="26"
placeholder="请输入学校名称"
style="flex: 1; margin-right: 40rpx"
></u-input>
<u-icon name="search" color="#333" :size="30"></u-icon>
</view>
</view>
<u-dropdown ref="uDropdown" inactive-color="#333" :height="80" menu-icon="arrow-down-fill">
<u-dropdown-item v-model="select.year" title="年份">
<view class="slot-content">
<u-picker
:has-popup="false"
mode="time"
:default-time="defaultTime"
:start-year="new Date().getFullYear() - 30"
:end-year="new Date().getFullYear() + 30"
:params="{
year: true,
month: false,
day: false,
hour: false,
minute: false,
second: false,
}"
@cancel="closeDropdown"
@confirm="({ year }) => {
select.year = year
closeDropdown()
}"
></u-picker>
</view>
</u-dropdown-item>
<u-dropdown-item
v-model="select.area_id"
title="区域"
:options="options1"
></u-dropdown-item>
</u-dropdown>
<view class="wrap">
<view class="table">
<view class="table__header">
<text class="table__header-item">星级</text>
<text class="table__header-item">学校</text>
<text class="table__header-item">分数</text>
</view>
<view
class="table__row"
v-for="(item, index) in tableData"
:key="index"
>
<text class="table__row-item">{{ item.star }}</text>
<text class="table__row-item">{{ item.school }}</text>
<text class="table__row-item">{{ item.score }}</text>
</view>
</view>
</view>
<u-back-top :scroll-top="scrollTop"></u-back-top>
</view>
</template>
<script>
export default {
data() {
return {
defaultTime: '',
select: {
keyword: "",
year: new Date().getFullYear().toString(),
area_id: "",
},
scrollTop: 0,
tableData: [
{ star: "四星", school: "苏州中学园区", score: "680>" },
{ star: "四星", school: "苏州中学园区", score: "142" },
{ star: "四星", school: "苏州中学园区", score: "959" },
// ...
],
options1: [
{
label: "默认排序",
value: 1,
},
{
label: "距离优先",
value: 2,
},
{
label: "价格优先",
value: 3,
},
],
};
},
methods: {
closeDropdown() {
this.$refs.uDropdown.close();
}
},
onReady() {
this.defaultTime = this.$moment().format('YYYY-MM-DD HH:mm:ss')
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
},
};
</script>
<style lang="scss">
.u-dropdown {
background: #fff;
}
.container {
min-height: 100vh;
background: #eaf8fe;
}
.search-bar {
display: flex;
align-items: center;
background-color: #fff;
padding: 20rpx 25rpx;
&__input {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 80rpx;
background: rgba(51, 51, 51, 0.1);
padding: 18rpx 40rpx 18rpx 46rpx;
}
}
.wrap {
padding: 50rpx 24rpx;
.table {
width: 100%;
border-radius: 20px;
overflow: hidden;
background-color: #f0f8ff;
filter: drop-shadow(-2.179px 3.355px 2.5px rgba(208,209,209,0.3));
&__header,
&__row {
display: flex;
padding: 28rpx 0;
justify-content: space-between;
border-bottom: 1px solid #ccc;
}
&__header-item,
&__row-item {
flex-basis: calc(100% / 3);
text-align: center;
}
&__header {
background-color: #4693d4;
color: #fff;
}
&__row:nth-child(even) {
background-color: #f9f9f9;
}
&__row:nth-last-child(1) {
border-bottom: none;
}
}
}
</style>

@ -0,0 +1,184 @@
<template>
<view class="container safe-area-inset-bottom">
<view class="search-bar">
<view class="search-bar__input">
<u-input
v-model="select.keyword"
:height="26"
placeholder="请输入学校名称"
style="flex: 1; margin-right: 40rpx"
></u-input>
<u-icon name="search" color="#333" :size="30"></u-icon>
</view>
</view>
<u-dropdown ref="uDropdown" inactive-color="#333" :height="80" menu-icon="arrow-down-fill">
<u-dropdown-item v-model="select.year" title="年份">
<view class="slot-content">
<u-picker
:has-popup="false"
mode="time"
:default-time="defaultTime"
:start-year="new Date().getFullYear() - 30"
:end-year="new Date().getFullYear() + 30"
:params="{
year: true,
month: false,
day: false,
hour: false,
minute: false,
second: false,
}"
@cancel="closeDropdown"
@confirm="({ year }) => {
select.year = year
closeDropdown()
}"
></u-picker>
</view>
</u-dropdown-item>
</u-dropdown>
<view class="wrap">
<view class="table">
<view class="table__header">
<text class="table__header-item">学校</text>
<text class="table__header-item">名额</text>
</view>
<view
class="table__row"
v-for="(item, index) in tableData"
:key="index"
>
<text class="table__row-item">{{ item.school }}</text>
<text class="table__row-item">{{ item.count }}</text>
</view>
</view>
</view>
<u-back-top :scroll-top="scrollTop"></u-back-top>
</view>
</template>
<script>
export default {
data() {
return {
defaultTime: '',
select: {
keyword: "",
year: new Date().getFullYear().toString(),
area_id: "",
},
scrollTop: 0,
tableData: [
{ school: "苏州中学园区", count: "680" },
{ school: "苏州中学园区", count: "142" },
{ school: "苏州中学园区", count: "959" },
// ...
],
options1: [
{
label: "默认排序",
value: 1,
},
{
label: "距离优先",
value: 2,
},
{
label: "价格优先",
value: 3,
},
],
};
},
methods: {
closeDropdown() {
this.$refs.uDropdown.close();
}
},
onReady() {
this.defaultTime = this.$moment().format('YYYY-MM-DD HH:mm:ss')
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
},
};
</script>
<style lang="scss">
.u-dropdown__menu__item {
justify-content: flex-end !important;
padding: 0 26rpx;
position: relative;
&::after {
content: '各高中给苏州中学的名额';
font-size: 24rpx;
text-transform: uppercase;
color: #333333;
position: absolute;
top: 50%;
left: 26rpx;
transform: translateY(-50%);
}
}
.u-dropdown {
background: #fff;
}
.container {
min-height: 100vh;
background: #eaf8fe;
}
.search-bar {
display: flex;
align-items: center;
background-color: #fff;
padding: 20rpx 25rpx;
&__input {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 80rpx;
background: rgba(51, 51, 51, 0.1);
padding: 18rpx 40rpx 18rpx 46rpx;
}
}
.wrap {
padding: 50rpx 24rpx;
.table {
width: 100%;
border-radius: 20px;
overflow: hidden;
background-color: #f0f8ff;
filter: drop-shadow(-2.179px 3.355px 2.5px rgba(208,209,209,0.3));
&__header,
&__row {
display: flex;
padding: 28rpx 0;
justify-content: space-between;
border-bottom: 1px solid #ccc;
}
&__header-item,
&__row-item {
flex-basis: calc(100% / 3);
text-align: center;
}
&__header {
background-color: #4693d4;
color: #fff;
}
&__row:nth-child(even) {
background-color: #f9f9f9;
}
&__row:nth-last-child(1) {
border-bottom: none;
}
}
}
</style>

@ -0,0 +1,173 @@
<template>
<view class="container safe-area-inset-bottom">
<view class="top-panel">
<view class="left">
<image class="top-panel__img" :src="vuex_default_icon" mode="aspectFill"></image>
</view>
<view class="right">
<view class="top-panel__name">
苏州中学
</view>
<view class="top-panel__tags">
<view class="top-panel__tags--area">姑苏区</view>
<view class="top-panel__tags--type">初中</view>
</view>
<view class="top-panel__info">
办学性质公办
</view>
</view>
</view>
<view class="card">
<view class="card__title">
概况
</view>
<view class="card__content paragraph">
学校是江苏省重点中学江苏省四星级普通高中江苏省高品质示范高中建设立项学校
</view>
</view>
<view class="card">
<view class="card__title">
分数线
</view>
<view class="card__content">
<view class="card__content--row">
<text>2024</text><text>680</text>
</view>
<view class="card__content--row">
<text>2024</text><text>680</text>
</view>
</view>
</view>
<view class="card">
<view class="card__title">
介绍
</view>
<view class="card__content paragraph">
江苏省苏州中学校Suzhou High School of Jiangsu Province简称苏州中学苏中位于江苏省苏州市是由苏州市教育局主管的一所公办普通高级中学学校是江苏省重点中学江苏省四星级普通高中江苏省高品质示范高中建设立项学校 学校前身可以追溯到北宋景祐二年创建的苏州府学其后更名紫阳书院校士馆江苏师范学堂江苏省立第一师范学校江苏省立苏州中学私立弘毅中学私立青云中学苏南苏州中学江苏省苏州高级中学东方红战校东方红丝织厂战校苏州市第九中学1978正式更名为江苏省苏州中学
</view>
</view>
<view class="card">
<view class="card__title">
师资力量
</view>
<view class="card__content paragraph">
2024年12月江苏省苏州中学公布其赴高校招聘2025年应届高层次优秀毕业生录用名单名单显示苏州中学录用的13名毕业生中清华大学毕业生6人北京大学毕业生4人博士毕业生8人硕士毕业生5人并无一人是师范专业毕业 [49] 截至2022年12月学校有教职员工300多人 [43]截至2016年5月学校有教育名家2人省人民教育家培养对象1人教育领军人才1人教授级高级教师8人特级教师16人名教师18人学科带头人79人
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
}
</script>
<style lang="scss">
.container {
min-height: 100vh;
background: #eaf8fe;
}
.top-panel {
display: flex;
align-items: center;
padding: 40rpx 58rpx 32rpx;
border-radius: 0 0 20rpx 20rpx;
background-image: linear-gradient(to right, #2e63ef, #3d7ff1 68%, #4186f2);
.left {
}
.right {
margin-left: 28rpx;
}
&__img {
width: 150rpx;
height: 150rpx;
border-radius: 100%;
}
&__name {
text-transform: uppercase;
color: #ffffff;
font-weight: 500;
}
&__tags {
padding-top: 18rpx;
display: flex;
align-items: center;
&--area {
color: #146ff9;
font-size: 24rpx;
border-radius: 20rpx;
background-color: #fff;
padding: 8rpx 18rpx;
}
&--type {
color: #fff;
font-size: 24rpx;
border-radius: 20rpx;
background-color: #dd9447;
padding: 6rpx 18rpx;
}
& > view + view {
margin-left: 10rpx;
}
}
&__info {
padding-top: 20rpx;
font-size: 24rpx;
text-transform: uppercase;
color: #ffffff;
}
}
.card {
margin: 20rpx 24rpx 0;
border-radius: 20rpx;
filter: drop-shadow(-2.179rpx 3.355rpx 2.5rpx rgba(208,209,209,0.3));
background-color: #ffffff;
padding: 32rpx 36rpx 40rpx 40rpx;
&__title {
display: inline-block;
font-size: 30rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
padding: 0 10rpx;
z-index: 3;
position: relative;
&::after {
content: '';
background: linear-gradient(to right, #2e63ef, #4187f2);
height: 6rpx;
border-radius: 4rpx;
z-index: 0;
position: absolute;
bottom: 4rpx;
left: 0;
right: 0;
}
}
.paragraph {
text-indent: 48rpx;
}
&__content {
margin-top: 32rpx;
font-size: 24rpx;
line-height: 2;
text-transform: uppercase;
color: #333333;
}
}
</style>

@ -0,0 +1,207 @@
<template>
<view class="container safe-area-inset-bottom">
<view class="search-bar">
<view class="search-bar__input">
<u-input
v-model="select.keyword"
:height="26"
placeholder="请输入学校名称"
style="flex: 1; margin-right: 40rpx"
></u-input>
<u-icon name="search" color="#333" :size="30"></u-icon>
</view>
</view>
<u-dropdown ref="uDropdown" inactive-color="#333" :height="80">
<u-dropdown-item
v-model="select.year"
title="学段"
:options="options1">
</u-dropdown-item>
<u-dropdown-item
v-model="select.year"
title="区域"
:options="options1"
></u-dropdown-item>
<u-dropdown-item
v-model="select.year"
title="性质"
:options="options1"
></u-dropdown-item>
</u-dropdown>
<view class="wrap">
<view class="list">
<view
class="list-item"
v-for="i in 20"
:key="i"
@click="$u.route({
url: '/package_sub/pages/SchoolDetail/SchoolDetail',
params: {
id: ''
}
})">
<view class="left">
<image mode="aspectFill" class="list-item__img" :src="vuex_default_icon"></image>
</view>
<view class="right">
<view class="list-item__title">
<text>苏州中学</text>
<u-icon name="arrow-right" color="#333" :size="30"></u-icon>
</view>
<view class="list-item__tags">
<view class="list-item__tags--area">
姑苏区
</view>
<view class="list-item__tags--type">
初中
</view>
</view>
<view class="list-item__info">
办学性质公办
</view>
</view>
</view>
</view>
</view>
<u-back-top :scroll-top="scrollTop"></u-back-top>
</view>
</template>
<script>
export default {
data() {
return {
defaultTime: '',
select: {
keyword: "",
year: new Date().getFullYear().toString(),
},
scrollTop: 0,
tableData: [
],
options1: [
{
label: "默认排序",
value: 1,
},
{
label: "距离优先",
value: 2,
},
{
label: "价格优先",
value: 3,
},
],
};
},
methods: {
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
},
};
</script>
<style lang="scss">
.u-dropdown {
background: #fff;
}
.container {
min-height: 100vh;
background: #eaf8fe;
}
.search-bar {
display: flex;
align-items: center;
background-color: #fff;
padding: 20rpx 25rpx;
&__input {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 80rpx;
background: rgba(51, 51, 51, 0.1);
padding: 18rpx 40rpx 18rpx 46rpx;
}
}
.wrap {
padding: 30rpx 24rpx;
.list {
&-item {
padding: 24rpx 28rpx 24rpx 32rpx;
border-radius: 20rpx;
filter: drop-shadow(-2.179px 3.355px 2.5px rgba(208,209,209,0.3));
background-color: #ffffff;
display: flex;
justify-content: space-between;
align-items: center;
.left {
.list-item__img {
border-radius: 100%;
height: 150rpx;
width: 150rpx;
}
}
.right {
flex: 1;
margin-left: 34rpx;
.list-item__title {
display: flex;
align-items: center;
justify-content: space-between;
text {
max-width: 300rpx;
text-overflow: ellipsis;
overflow: hidden;
font-size: 30rpx;
color: #333333;
font-weight: 500;
}
}
.list-item__tags {
display: flex;
align-items: center;
padding-top: 20rpx;
&--area {
color: #1a95da;
font-size: 24rpx;
border-radius: 20rpx;
background-color: rgba(26, 149, 218, 0.2);
padding: 8rpx 18rpx;
}
&--type {
color: #dd9447;
font-size: 24rpx;
border-radius: 20rpx;
background-color: rgba(233, 144, 50, 0.2);
padding: 6rpx 18rpx;
}
& > view + view {
margin-left: 10rpx;
}
}
.list-item__info {
padding-top: 20rpx;
font-size: 24rpx;
text-transform: uppercase;
color: rgba(51, 51, 51, 0.8);
}
}
}
.list-item + .list-item {
margin-top: 24rpx;
}
}
}
</style>

@ -0,0 +1,28 @@
<template>
<view class="container">
<image class="bkg" src="~@/static/me/wave.png" mode="widthFix"></image>
</view>
</template>
<script>
export default {
data() {
return {};
}
}
</script>
<style lang="scss">
.container {
position: relative;
min-height: 100vh;
width: 100vw;
background: #eaf8fe;
}
.bkg {
width: 100vw;
position: fixed;
top: 0;
left: 0;
}
</style>

@ -0,0 +1,194 @@
<template>
<view class="container safe-area-inset-bottom">
<view class="search-bar">
<view class="search-bar__input">
<u-input
v-model="select.keyword"
:height="26"
placeholder="请输入学校名称"
style="flex: 1; margin-right: 40rpx"
></u-input>
<u-icon name="search" color="#333" :size="30"></u-icon>
</view>
</view>
<u-dropdown ref="uDropdown" inactive-color="#333" :height="80" menu-icon="arrow-down-fill">
<u-dropdown-item v-model="select.year" title="年份">
<view class="slot-content">
<u-picker
:has-popup="false"
mode="time"
:default-time="defaultTime"
:start-year="new Date().getFullYear() - 30"
:end-year="new Date().getFullYear() + 30"
:params="{
year: true,
month: false,
day: false,
hour: false,
minute: false,
second: false,
}"
@cancel="closeDropdown"
@confirm="({ year }) => {
select.year = year
closeDropdown()
}"
></u-picker>
</view>
</u-dropdown-item>
<u-dropdown-item
v-model="select.area_id"
title="区域"
:options="options1"
></u-dropdown-item>
</u-dropdown>
<view class="wrap">
<view class="table">
<view class="table__header">
<text class="table__header-item">学校</text>
<text class="table__header-item">名额</text>
<text class="table__header-arrow"></text>
</view>
<view
class="table__row"
v-for="(item, index) in tableData"
:key="index"
@click="$u.route({
url: '/package_sub/pages/SchoolCount/SchoolCount',
params: {
}
})"
>
<text class="table__row-item">{{ item.school }}</text>
<text class="table__row-item">{{ item.count }}</text>
<u-icon class="table__row-arrow" name="arrow-right" color="#333" :size="30"></u-icon>
</view>
</view>
</view>
<u-back-top :scroll-top="scrollTop"></u-back-top>
</view>
</template>
<script>
export default {
data() {
return {
defaultTime: '',
select: {
keyword: "",
year: new Date().getFullYear().toString(),
area_id: "",
},
scrollTop: 0,
tableData: [
{ school: "苏州中学园区", count: "680" },
{ school: "苏州中学园区", count: "142" },
{ school: "苏州中学园区", count: "959" },
// ...
],
options1: [
{
label: "默认排序",
value: 1,
},
{
label: "距离优先",
value: 2,
},
{
label: "价格优先",
value: 3,
},
],
};
},
methods: {
closeDropdown() {
this.$refs.uDropdown.close();
}
},
onReady() {
this.defaultTime = this.$moment().format('YYYY-MM-DD HH:mm:ss')
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
},
};
</script>
<style lang="scss">
.u-dropdown {
background: #fff;
}
.container {
min-height: 100vh;
background: #eaf8fe;
}
.search-bar {
display: flex;
align-items: center;
background-color: #fff;
padding: 20rpx 25rpx;
&__input {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 80rpx;
background: rgba(51, 51, 51, 0.1);
padding: 18rpx 40rpx 18rpx 46rpx;
}
}
.wrap {
padding: 50rpx 24rpx;
.table {
width: 100%;
border-radius: 20px;
overflow: hidden;
background-color: #f0f8ff;
filter: drop-shadow(-2.179px 3.355px 2.5px rgba(208,209,209,0.3));
&__header,
&__row {
display: flex;
padding: 28rpx 0;
justify-content: space-between;
border-bottom: 1px solid #ccc;
}
$arrow-width: 80rpx;
&__header-item:nth-child(1),
&__row-item:nth-child(1) {
flex-basis: calc((100% - #{$arrow-width}) * (2 / 3));
text-align: center;
}
&__header-item,
&__row-item {
flex-basis: calc((100% - #{$arrow-width}) / 3);
text-align: center;
}
&__header-arrow,
&__row-arrow {
flex-basis: $arrow-width;
text-align: center;
display: flex;
justify-content: center;
}
&__header {
background-color: #4693d4;
color: #fff;
}
&__row:nth-child(even) {
background-color: #f9f9f9;
}
&__row:nth-last-child(1) {
border-bottom: none;
}
}
}
</style>

@ -1,24 +0,0 @@
<template>
<view class="content">
</view>
</template>
<script>
export default {
data() {
return {
}
},
onLoad() {
},
methods: {
}
}
</script>
<style lang="scss">
</style>

@ -10,7 +10,7 @@
}
},
{
"path": "pages/login",
"path": "pages/login/login",
"style": {
"navigationStyle": "custom"
}
@ -34,21 +34,50 @@
"root": "package_sub",
"pages": [
{
"path": "pages/index/index",
"path": "pages/HistoryScore/HistoryScore",
"style": {
"navigationBarTitleText": "分包页面sub_index"
"navigationBarTitleText": "历年分数"
}
},
{
"path": "pages/SchoolList/SchoolList",
"style": {
"navigationBarTitleText": "学校查询",
"enablePullDownRefresh": true
}
},
{
"path": "pages/SchoolDetail/SchoolDetail",
"style": {
"navigationBarTitleText": "学校详情",
"enablePullDownRefresh": true
}
},
{
"path": "pages/TargetCount/TargetCount",
"style": {
"navigationBarTitleText": "历年各初中指标生",
"enablePullDownRefresh": true
}
},
{
"path": "pages/SchoolCount/SchoolCount",
"style": {
"navigationBarTitleText": "历年各初中指标生",
"enablePullDownRefresh": true
}
},
{
"path": "pages/StudentInfo/StudentInfo",
"style": {
"navigationBarTitleText": "个人中心",
"enablePullDownRefresh": true
}
}
]
}
],
"preloadRule": {
"package_sub/pages/index/index": {
"network": "all",
"packages": [
"__APP__"
]
}
},
"globalStyle": {
"navigationBarTextStyle": "black",
@ -61,21 +90,25 @@
"selectedColor": "#666",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/index/index",
"iconPath": "static/tabbar/home.png",
"selectedIconPath": "static/tabbar/home-active.png",
"text": "首页"
}, {
"pagePath": "pages/list/list",
"iconPath": "static/tabbar/list.png",
"selectedIconPath": "static/tabbar/list-active.png",
"text": "模拟填报"
}, {
"pagePath": "pages/me/me",
"iconPath": "static/tabbar/me.png",
"selectedIconPath": "static/tabbar/me-active.png",
"text": "我的"
}]
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "static/tabbar/home.png",
"selectedIconPath": "static/tabbar/home-active.png",
"text": "首页"
},
{
"pagePath": "pages/list/list",
"iconPath": "static/tabbar/list.png",
"selectedIconPath": "static/tabbar/list-active.png",
"text": "模拟填报"
},
{
"pagePath": "pages/me/me",
"iconPath": "static/tabbar/me.png",
"selectedIconPath": "static/tabbar/me-active.png",
"text": "我的"
}
]
}
}

@ -4,7 +4,42 @@
<view class="wrap">
<image class="title" src="~@/static/index/title.png" mode="aspectFit"></image>
<view class="grid">
<view class="grid1 grid-item">
<image class="grid-item__icon" src="~@/static/index/zhinengtuijian.png" mode="aspectFit"></image>
<view class="grid-item__name">智能推荐</view>
<view class="grid-item__subname">保学校</view>
</view>
<view class="grid2 grid-item">
<image class="grid-item__icon" src="~@/static/index/monitianbao.png" mode="aspectFit"></image>
<view class="grid-item__name">苏州中考志愿<br>模拟填报</view>
</view>
<view class="grid3 grid-item" @click="$u.route({ url: '/package_sub/pages/HistoryScore/HistoryScore' })">
<view class="grid-item__name">
历年录取<br>分数线
</view>
</view>
<view class="grid4 grid-item" @click="$u.route({ url: '/package_sub/pages/TargetCount/TargetCount' })">
<view class="grid-item__name">
历年各初中<br>指标生
</view>
</view>
<view class="grid5 grid-item" @click="$u.route({ url: '/package_sub/pages/SchoolList/SchoolList' })">
<view class="grid-item__name">学校库</view>
</view>
</view>
<view class="list">
<view class="list-item" v-for="i in 5" :key="i">
<image class="list-item__img" mode="aspectFill" src="~@/static/index/template1.png"></image>
<view class="list-item__name">中考升学规划讲座</view>
<view v-if="i === 2" class="list-item__subname">--</view>
</view>
</view>
</view>
<image class="online-service" src="~@/static/index/online-service.png" mode="aspectFit"></image>
</view>
</template>
@ -29,6 +64,7 @@
<style lang="scss">
.content {
padding-bottom: 40rpx;
position: relative;
min-height: 100vh;
background: #dff2fe;
@ -52,6 +88,123 @@
display: block;
margin: 0 auto;
}
.grid {
padding: 0 26rpx;
margin-top: 44rpx;
display: grid;
grid-gap: 26rpx;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: 323rpx 176rpx;
grid-template-areas:
"grid1 grid1 grid1 grid2 grid2 grid2"
"grid3 grid3 grid4 grid4 grid5 grid5";
$grid-colors: linear-gradient(0deg, #c2e0fc 0%, #c2e0fc 8%, #fcfcfe 70%, #fcfcfe 100%), linear-gradient(0deg, #f5ddc5 0%, #f5ddc5 1%, #fcfcfe 74%, #fcfcfe 100%), linear-gradient(-37deg, #ee6734 0%, #f7915b 100%), linear-gradient(-37deg, #8773e9 0%, #c39df5 100%), linear-gradient(-37deg, #4f83f9 0%, #a3b9fd 100%);
$font-colors: #1989fa, #ea9332, #fff, #fff, #fff;
@for $i from 1 through length($grid-colors) {
.grid#{$i} {
grid-area: grid#{$i};
background: nth($grid-colors, $i);
border-radius: 15px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.grid-item__name {
color: nth($font-colors, $i);
}
}
}
&-item {
&__icon {
width: 80rpx;
height: 89rpx;
}
&__name {
font-size: 32rpx;
line-height: 50rpx;
text-transform: uppercase;
font-weight: 500;
text-align: center;
}
}
.grid1 {
.grid-item__name {
padding: 46rpx 0 14rpx;
}
.grid-item__subname {
font-size: 24rpx;
color: rgba(0, 0, 0, 0.7);
}
}
.grid2 {
.grid-item__name {
padding: 46rpx 0 0;
}
.grid-item__subname {
font-size: 24rpx;
color: rgba(0, 0, 0, 0.7);
}
}
}
}
.list {
margin-top: 25rpx;
padding: 26rpx;
&-item {
border-radius: 15rpx;
filter: drop-shadow(3.993rpx 3.009rpx 5rpx rgba(81,158,236,0.6));
background-color: #f7f6f7;
position: relative;
height: 172rpx;
padding: 0 44rpx 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
overflow: hidden;
&__img {
position: absolute;
z-index: 1;
width: 100%;
height: 100%;
top: 0;
right: 0;
mask-image: linear-gradient(to right, transparent, #f7f6f7);
}
&__name {
font-size: 40rpx;
color: #e47829;
font-weight: 500;
position: relative;
z-index: 2;
}
&__subname {
font-size: 24rpx;
color: rgba(0, 0, 0, 0.7);
font-weight: 500;
margin-top: 16rpx;
}
}
.list-item + .list-item {
margin-top: 22rpx;
}
}
}
.online-service {
position: fixed;
bottom: 56rpx;
right: 2rpx;
width: 142rpx;
height: 140rpx;
z-index: 10;
}
</style>

@ -1,17 +1,133 @@
<template>
<view>
<view class="container">
<view class="wrap">
<view class="list">
<view class="list-item">
<view class="list-item__title">
<view class="list-item__title--time">
填报时间2025-02-06 18:00
</view>
<view class="list-item__title--tag">
规划师已查看
</view>
</view>
<view class="list-item__body">
<view class="list-item__body--row">
所属区域吴中区
</view>
<view class="list-item__body--row">
填报年份2025
</view>
</view>
<view class="list-item__footer">
<u-button
shape="circle"
ripple
:hair-line="false"
:custom-style="{
'background': '#1989f9',
'color': '#f6f8f7',
'width': '120rpx',
'height': '42rpx',
'line-height': '42rpx',
'font-size': '24rpx'
}">查看</u-button>
</view>
</view>
</view>
<u-loadmore :status="status" :margin-top="40" />
</view>
</view>
</template>
<script>
export default {
data() {
return {};
}
return {
select: {
page: 1,
page_size: 10
},
total: 0,
list: [],
status: 'loadmore',
};
},
methods: {
async getList(refresh=false) {
try {
if (refresh) {
this.select.page = 1
this.list.length = 0
}
} catch (err) {
console.error(err)
}
}
},
onPullDownRefresh() {
this.getList(true)
},
}
</script>
<style lang="scss">
<style lang="scss" scoped>
.container {
background: #eaf8fe;
min-height: 100vh;
}
.wrap {
padding: 24rpx 24rpx;
.list {
&-item {
overflow: hidden;
filter: drop-shadow(-2.179px 3.355px 2.5px rgba(208,209,209,0.3));
border-radius: 20rpx;
&__title {
display: flex;
align-items: center;
justify-content: space-between;
padding: 22rpx 28rpx;
background-color: #f6f8f7;
&--time {
font-size: 28rpx;
color: #333333;
}
&--tag {
font-size: 24rpx;
color: #e77817;
border-radius: 40rpx;
background-color: rgba(236, 138, 51, 0.2);
padding: 10rpx 30rpx;
}
}
&__body {
background: #fff;
padding: 0 28rpx;
&--row {
font-size: 24rpx;
color: #333333;
padding: 20rpx 22rpx;
border-bottom: 1rpx solid rgba(152, 152, 152, 0.3);
}
}
&__footer {
background: #fff;
display: flex;
justify-content: flex-end;
padding: 26rpx 28rpx;
}
}
&-item + &-item {
margin-top: 24rpx;
}
}
}
</style>

@ -5,25 +5,28 @@
<view class="wrap">
<view class="info">
<image class="info__avatar" :src="vuex_user.avatar || vuex_default_icon" mode="aspectFill"></image>
<view class="info__name">张三</view>
<view class="info__name">
<text v-if="vuex_token">{{ vuex_user.name }}</text>
<u-button v-else shape="circle" size="mini" plain type="primary" @click="$u.route({ url: '/pages/login/login' })">去登录</u-button>
</view>
</view>
<view class="panel">
<view class="row">
<view class="row" v-if="vuex_token">
<image class="row__icon" src="~@/static/me/ico1.png" mode="aspectFill"></image>
<view class="row__text">我的模拟填报</view>
<view class="row__arrow">
<u-icon name="arrow-right" :size="38" color="#a7a7a7"></u-icon>
</view>
</view>
<view class="row">
<view class="row" v-if="vuex_token">
<image class="row__icon" src="~@/static/me/ico2.png" mode="aspectFit"></image>
<view class="row__text">自主招生</view>
<view class="row__arrow">
<u-icon name="arrow-right" :size="38" color="#a7a7a7"></u-icon>
</view>
</view>
<view class="row">
<view class="row" v-if="vuex_token" @click="$u.route({ url: '/package_sub/pages/StudentInfo/StudentInfo' })">
<image class="row__icon" src="~@/static/me/ico3.png" mode="aspectFit"></image>
<view class="row__text">个人资料</view>
<view class="row__arrow">
@ -37,7 +40,7 @@
<u-icon name="arrow-right" :size="38" color="#a7a7a7"></u-icon>
</view>
</view>
<view class="row">
<view class="row" v-if="vuex_token">
<image class="row__icon" src="~@/static/me/ico5.png" mode="aspectFit"></image>
<view class="row__text">退出登录</view>
<view class="row__arrow">

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

@ -33,7 +33,7 @@ const store = new Vuex.Store({
// 如果上面从本地获取的lifeData对象下有对应的属性就赋值给state中对应的变量
// 加上vuex_前缀是防止变量名冲突也让人一目了然
vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '123',
// 如果vuex_version无需保存到本地永久存储无需lifeData.vuex_version方式
vuex_version: '1.0.1',
vuex_default_icon: '/static/logo.png'

@ -1,98 +1,196 @@
<template>
<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
<view class="u-datetime-picker">
<view class="u-picker-header" @touchmove.stop.prevent="">
<view class="u-btn-picker u-btn-picker--tips"
:style="{ color: cancelColor }"
hover-class="u-opacity"
:hover-stay-time="150"
@tap="getResult('cancel')"
>{{cancelText}}</view>
<view class="u-picker__title">{{ title }}</view>
<view
class="u-btn-picker u-btn-picker--primary"
:style="{ color: moving ? cancelColor : confirmColor }"
hover-class="u-opacity"
:hover-stay-time="150"
@touchmove.stop=""
@tap.stop="getResult('confirm')"
>
{{confirmText}}
</view>
</view>
<view class="u-picker-body">
<picker-view v-if="mode == 'region'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset && params.province">
<view class="u-column-item" v-for="(item, index) in provinces" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.city">
<view class="u-column-item" v-for="(item, index) in citys" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.area">
<view class="u-column-item" v-for="(item, index) in areas" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'time'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset && params.year">
<view class="u-column-item" v-for="(item, index) in years" :key="index">
{{ item }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.month">
<view class="u-column-item" v-for="(item, index) in months" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.day">
<view class="u-column-item" v-for="(item, index) in days" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.hour">
<view class="u-column-item" v-for="(item, index) in hours" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.minute">
<view class="u-column-item" v-for="(item, index) in minutes" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.second">
<view class="u-column-item" v-for="(item, index) in seconds" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'selector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset">
<view class="u-column-item" v-for="(item, index) in range" :key="index">
<view class="u-line-1">{{ getItemValue(item, 'selector') }}</view>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'multiSelector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset" v-for="(item, index) in range" :key="index">
<view class="u-column-item" v-for="(item1, index1) in item" :key="index1">
<view class="u-line-1">{{ getItemValue(item1, 'multiSelector') }}</view>
</view>
</picker-view-column>
</picker-view>
</view>
</view>
</u-popup>
<view>
<template v-if="hasPopup">
<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
<view class="u-datetime-picker">
<view class="u-picker-header" @touchmove.stop.prevent="">
<view class="u-btn-picker u-btn-picker--tips"
:style="{ color: cancelColor }"
hover-class="u-opacity"
:hover-stay-time="150"
@tap="getResult('cancel')"
>{{cancelText}}</view>
<view class="u-picker__title">{{ title }}</view>
<view
class="u-btn-picker u-btn-picker--primary"
:style="{ color: moving ? cancelColor : confirmColor }"
hover-class="u-opacity"
:hover-stay-time="150"
@touchmove.stop=""
@tap.stop="getResult('confirm')"
>
{{confirmText}}
</view>
</view>
<view class="u-picker-body">
<picker-view v-if="mode == 'region'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset && params.province">
<view class="u-column-item" v-for="(item, index) in provinces" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.city">
<view class="u-column-item" v-for="(item, index) in citys" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.area">
<view class="u-column-item" v-for="(item, index) in areas" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'time'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset && params.year">
<view class="u-column-item" v-for="(item, index) in years" :key="index">
{{ item }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.month">
<view class="u-column-item" v-for="(item, index) in months" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.day">
<view class="u-column-item" v-for="(item, index) in days" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.hour">
<view class="u-column-item" v-for="(item, index) in hours" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.minute">
<view class="u-column-item" v-for="(item, index) in minutes" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.second">
<view class="u-column-item" v-for="(item, index) in seconds" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'selector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset">
<view class="u-column-item" v-for="(item, index) in range" :key="index">
<view class="u-line-1">{{ getItemValue(item, 'selector') }}</view>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'multiSelector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset" v-for="(item, index) in range" :key="index">
<view class="u-column-item" v-for="(item1, index1) in item" :key="index1">
<view class="u-line-1">{{ getItemValue(item1, 'multiSelector') }}</view>
</view>
</picker-view-column>
</picker-view>
</view>
</view>
</u-popup>
</template>
<template v-else>
<view class="u-datetime-picker">
<view class="u-picker-body">
<picker-view v-if="mode == 'region'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset && params.province">
<view class="u-column-item" v-for="(item, index) in provinces" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.city">
<view class="u-column-item" v-for="(item, index) in citys" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.area">
<view class="u-column-item" v-for="(item, index) in areas" :key="index">
<view class="u-line-1">{{ item.label }}</view>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'time'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset && params.year">
<view class="u-column-item" v-for="(item, index) in years" :key="index">
{{ item }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.month">
<view class="u-column-item" v-for="(item, index) in months" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.day">
<view class="u-column-item" v-for="(item, index) in days" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.hour">
<view class="u-column-item" v-for="(item, index) in hours" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.minute">
<view class="u-column-item" v-for="(item, index) in minutes" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
<picker-view-column v-if="!reset && params.second">
<view class="u-column-item" v-for="(item, index) in seconds" :key="index">
{{ formatNumber(item) }}
<text class="u-text" v-if="showTimeTag"></text>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'selector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset">
<view class="u-column-item" v-for="(item, index) in range" :key="index">
<view class="u-line-1">{{ getItemValue(item, 'selector') }}</view>
</view>
</picker-view-column>
</picker-view>
<picker-view v-else-if="mode == 'multiSelector'" :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-if="!reset" v-for="(item, index) in range" :key="index">
<view class="u-column-item" v-for="(item1, index1) in item" :key="index1">
<view class="u-line-1">{{ getItemValue(item1, 'multiSelector') }}</view>
</view>
</picker-view-column>
</picker-view>
</view>
<view class="u-picker-header" @touchmove.stop.prevent="">
<view class="u-btn-picker u-btn-picker--tips"
:style="{ color: cancelColor }"
hover-class="u-opacity"
:hover-stay-time="150"
@tap="getResult('cancel')"
>{{cancelText}}</view>
<view class="u-picker__title">{{ title }}</view>
<view
class="u-btn-picker u-btn-picker--primary"
:style="{ color: moving ? cancelColor : confirmColor }"
hover-class="u-opacity"
:hover-stay-time="150"
@touchmove.stop=""
@tap.stop="getResult('confirm')"
>
{{confirmText}}
</view>
</view>
</view>
</template>
</view>
</template>
<script>
@ -104,6 +202,7 @@ import areas from '../../libs/util/area.js';
* picker picker弹出选择器
* @description 此选择器有两种弹出模式一是时间模式可以配置年秒参数 二是地区模式可以配置省区参数
* @tutorial https://www.uviewui.com/components/picker.html
* @property {Boolean} hasPopup 是否弹出层
* @property {Object} params 需要显示的参数见官网说明
* @property {String} mode 模式选择region-地区类型time-时间类型默认time
* @property {String Number} start-year 可选的开始年份mode=time时有效默认1950
@ -129,6 +228,10 @@ import areas from '../../libs/util/area.js';
export default {
name: 'u-picker',
props: {
hasPopup: {
type: Boolean,
default: true
},
// picker
params: {
type: Object,

Loading…
Cancel
Save