fix: 样式更新

master
xjs 2025-11-26 14:19:36 +08:00
parent 6a463f08fd
commit dfb0661831
40 changed files with 355 additions and 277 deletions

2
env/.env vendored
View File

@ -1,4 +1,4 @@
VITE_APP_TITLE = '六择校'
VITE_APP_TITLE = '六择校'
VITE_APP_PORT = 9000
VITE_UNI_APPID = 'H57F2ACE4'

View File

@ -4,8 +4,8 @@ import { tabBar } from './src/tabbar/config'
export default defineUniPages({
globalStyle: {
navigationStyle: 'default',
navigationBarTitleText: '六择校',
navigationBarBackgroundColor: '#f8f8f8',
navigationBarTitleText: '六择校',
navigationBarBackgroundColor: '#FFFFFF',
navigationBarTextStyle: 'black',
backgroundColor: '#FFFFFF',
},

View File

@ -57,7 +57,7 @@
</view>
</view>
<MessageBox v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%">
<MessageBox v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%">
<template>
<view class="custom-background">
<view class="px-[32rpx] pt-[48rpx]">

View File

@ -118,7 +118,7 @@ const getUserInfo = async (_code: string) => {
</view>
<!-- #ifdef MP-WEIXIN -->
<button
class="w-[493rpx]! mb-[40rpx] h-[88rpx]! rounded-[44rpx] text-[32rpx] text-white flex items-center justify-center border-1 border-solid border-[#BFBFBF]"
class="w-[493rpx]! mb-[40rpx] h-[88rpx]! rounded-[44rpx] text-[32rpx] text-white flex items-center justify-center "
:class="checked.length > 0 ? 'bg-[#1580FF]' : 'bg-[#BFBFBF]'" @click.stop="handleClick"
open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" :disabled="checked.length === 0">
一键登录
@ -127,7 +127,7 @@ const getUserInfo = async (_code: string) => {
<!-- #ifdef MP-ALIPAY -->
<button
class="w-[493rpx]! mb-[40rpx] h-[88rpx]! rounded-[44rpx] text-[32rpx] text-white flex items-center justify-center border-1 border-solid border-[#BFBFBF]"
class="w-[493rpx]! mb-[40rpx] h-[88rpx]! rounded-[44rpx] text-[32rpx] text-white flex items-center justify-center "
:class="checked.length > 0 ? 'bg-[#1580FF]' : 'bg-[#BFBFBF]'" @click.stop="handleClick">
一键登录
</button>

View File

@ -91,14 +91,17 @@ onShow(() => {
<view class="mx-[32rpx] bg-[#fff] rounded-[20rpx] mt-[32rpx] text-[28rpx] text-[#303030] font-bold">
<view class="flex items-center justify-between mr-[16rpx] ml-[32rpx] py-[28rpx] not-last-child">
<text class="text-[30rpx] text-[#404142] font-400">头像</text>
<MxUpload :custom-upload="true" :hiddenPreview="true" @change="handleChange" :signal="true"
:outer-file-list="[{ url: `${userInfo.avatar}` }]">
<MxUpload :custom-upload="true" root-class="w-[98rpx] h-[98rpx]" :hiddenPreview="true" @change="handleChange"
:signal="true" :outer-file-list="[{ url: `${userInfo.avatar}` }]">
<template #default="{ fileList }">
<view class="flex items-center gap-[16rpx]">
<view class="w-[96rpx] h-[96rpx] rounded-full">
<image :src="fileList[0].url" mode="scaleToFill" class="w-[96rpx] h-[96rpx] rounded-full" />
</view>
<view class="i-carbon-chevron-down rotate-270 text-[#BFBFBF]"></view>
<view class="w-[18rpx] h-[36rpx] flex items-center ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png" mode="scaleToFill"
class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</template>
</MxUpload>
@ -114,23 +117,32 @@ onShow(() => {
<text class="text-[30rpx] text-[#404142] font-400">性别</text>
<view class="flex items-center" @click="handleOpenPopup('gender')">
<text>{{ formData.genderLabel }}</text>
<view class="i-carbon-chevron-down rotate-270 text-[#BFBFBF]"></view>
<view class="w-[18rpx] h-[36rpx] flex items-center ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png" mode="scaleToFill"
class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</view>
<view class="flex items-center justify-between mx-[32rpx] py-[28rpx]">
<view class="flex items-center justify-between mx-[32rpx] py-[28rpx] not-last-child">
<text class="text-[30rpx] text-[#404142] font-400">年级</text>
<view class="flex items-center" @click="handleOpenPopup('grade')">
<text>{{ userInfo.userExtend.gradeName }}</text>
<view class="i-carbon-chevron-down rotate-270 text-[#BFBFBF]"></view>
<view class="w-[18rpx] h-[36rpx] flex items-center ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png" mode="scaleToFill"
class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</view>
<view class="flex items-center justify-between mx-[32rpx] py-[28rpx]">
<view class="flex items-center justify-between mx-[32rpx] py-[28rpx] not-last-child">
<text class="text-[30rpx] text-[#404142] font-400">就读学校</text>
<view class="flex items-center" @click="navigateToSchool">
<text>{{ userInfo.userExtend.schoolName }}</text>
<view class="i-carbon-chevron-down rotate-270 text-[#BFBFBF]"></view>
<view class="w-[18rpx] h-[36rpx] flex items-center ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png" mode="scaleToFill"
class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</view>
@ -138,7 +150,10 @@ onShow(() => {
<text class="text-[30rpx] text-[#404142] font-400">中考所在区</text>
<view class="flex items-center" @click="handleOpenPopup('area')">
<text>{{ userInfo.userExtend.area }}</text>
<view class="i-carbon-chevron-down rotate-270 text-[#BFBFBF]"></view>
<view class="w-[18rpx] h-[36rpx] flex items-center ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png" mode="scaleToFill"
class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</view>
</view>

View File

@ -1,11 +1,11 @@
<template>
<sar-upload v-model="fileList" :after-read="afterRead" :multiple="multiple" :max-count="multiple ? 99 : 1"
:root-style="`${customUpload ? '--sar-upload-select-width: min-content;--sar-upload-select-height: min-content;--sar-upload-select-color: transparent;--sar-upload-select-bg: transparent;--sar-upload-select-border-radius: 0;' : ''} ${hiddenPreview ? '--sar-upload-preview-width: 0;--sar-upload-preview-height: 0;' : ''}`">
<sar-upload v-model="fileList" :root-class="rootClass" :after-read="afterRead" :multiple="multiple"
:max-count="multiple ? 99 : 1"
:root-style="`--sar-upload-select-bg:#f7f7f7;--sar-upload-close-size:32rpx;${customUpload ? '--sar-upload-select-width: min-content;--sar-upload-select-height: min-content;--sar-upload-select-color: transparent;--sar-upload-select-bg: transparent;--sar-upload-select-border-radius: 0;' : ''} ${hiddenPreview ? '--sar-upload-preview-width: 0;--sar-upload-preview-height: 0;' : ''}`">
<template #select>
<view style="display: flex; flex-direction: column; align-items: center" v-if="!customUpload">
<view class="w-[60rpx] h-[60rpx]">
<image src="https://lwzk.ycymedu.com/img/cpgx/cp_shangchuan.png"
mode="scaleToFill" />
<image src="https://lwzk.ycymedu.com/img/cpgx/cp_shangchuan.png" mode="scaleToFill" />
</view>
<view class="text-[30rpx] text-[#333] mt-[10rpx]">上传图片</view>
</view>
@ -40,6 +40,10 @@ const props = defineProps({
signal: {
type: Boolean,
default: false
},
rootClass: {
type: String,
default: ''
}
})

View File

@ -26,6 +26,21 @@ const processList = ref([])
const nativeBack = () => {
uni.navigateBack();
}
const opacity = ref(0)
onPageScroll((e) => {
const scrollTop = e.scrollTop
opacity.value = Math.min(scrollTop / 100, 1)
})
const computeColor = computed(() => {
const alpha = opacity.value
const red = Math.round(255 + (0 - 255) * alpha)
const green = Math.round(255 + (0 - 255) * alpha)
const blue = Math.round(255 + (0 - 255) * alpha)
return `rgba(${red}, ${green}, ${blue}, ${alpha === 0 ? 1 : alpha})`
})
const countdown = ref(0)
onShow(() => {
getCountdown().then(resp => {
@ -44,11 +59,15 @@ onShow(() => {
<template>
<view class="relative">
<sar-navbar root-class="bg-transparent" :fixed="true" fixation-style="top:unset;"
:root-style="{ '--sar-navbar-bg': `transparent`, '--sar-navbar-height': `${safeAreaInsets?.top + 44}px` }">
:root-style="{ '--sar-navbar-bg': `rgba(255, 255, 255, ${opacity})`, '--sar-navbar-height': `${safeAreaInsets?.top + 44}px` }">
<template #title>
<view class="flex justify-center text-white mix-blend-difference" :style="{ 'padding-top': `${safeAreaInsets?.top}px` }">
中考倒计时</view>
</template>
<template #left>
<view class="flex items-center justify-center text-white text-[32rpx] ml-[32rpx]"
<view class="flex items-center justify-center text-[32rpx] ml-[32rpx]"
:style="{ 'padding-top': `${safeAreaInsets?.top}px` }" @click="nativeBack">
<sar-icon name="left" size="48rpx" />
<sar-icon name="left" size="48rpx" :color="computeColor"/>
</view>
</template>
</sar-navbar>
@ -62,7 +81,7 @@ onShow(() => {
<view class="text-[72rpx]"></view>
</view>
<view
class="mt-[-14rpx] rounded-[40rpx_40rpx_0_0] min-h-[550rpx] relative z-[1] bg-white bg-opacity-70 backdrop-blur-[5px] pt-[38rpx] flex flex-col">
class="mt-[-14rpx] rounded-[40rpx_40rpx_0_0] min-h-[550rpx] relative z-[1] bg-white pt-[38rpx] flex flex-col">
<view class="flex items-center justify-center">
<view class="w-[48rpx] h-[48rpx] mr-[16rpx]">
<image src="https://lwzk.ycymedu.com/img/home/sy_riqi.png" mode="scaleToFill"

View File

@ -44,7 +44,7 @@ const starSchool = () => {
<view class="flex flex-col">
<text class="font-600 text-[40rpx] text-[#000]">{{ schoolDetail.schoolName }}</text>
<view class="flex items-center gap-[10rpx] my-[14rpx] flex-wrap" v-if="schoolDetail.tags">
<view class="rounded-[8rpx] bg-[#F8F8F8] px-[10rpx] py-[4rpx] text-[24rpx] text-[#666]"
<view class="rounded-[8rpx] bg-[#F8F8F8] px-[10rpx] py-[4rpx] text-[24rpx] text-[#666] first:border-solid border-red border-[1rpx]"
v-for="feature in schoolDetail.tags.split('、')" :key="feature">{{ feature }}</view>
</view>
<view class="text-[#303030] text-[24rpx] mb-[10rpx]">{{schoolDetail.region}}·{{ schoolDetail.schoolNature }}</view>

View File

@ -45,7 +45,9 @@ const navigateToDetail = (id:number) => {
uni.navigateTo({ url: `/pages-sub/information/highSchoolDetail?id=${id}` })
}
const visibleFlag1 = ref(false)
const visibleFlag2 = ref(false)
const visibleFlag3 = ref(false)
onLoad(() => {
getAreaList().then(resp => {
@ -89,6 +91,9 @@ const virtualListChange = (_vList) => {
}
const handleComplete = () => {
visibleFlag1.value = false;
visibleFlag2.value = false;
visibleFlag3.value = false;
paging.value.reload()
}
@ -111,28 +116,28 @@ const handleComplete = () => {
<sar-dropdown
root-style="--sar-dropdown-placeholder-color:#666;--sar-dropdown-value-font-size:28rpx;--sar-dropdown-option-active-color:#1580FF;--sar-dropdown-bg:transparent;--sar-dropdown-box-shadow:0rpx 6rpx 8rpx 0rpx rgba(0,0,0,0.04);">
<sar-dropdown-item :title="searchParams.region || '区域'" :before-close="handleComplete">
<sar-dropdown-item :title="searchParams.region || '区域'" v-model:visible="visibleFlag1">
<mx-radio-group v-model:value="searchParams.region" :options="regions" label-key="label" value-key="value"
custom-root-class="px-[32rpx] pt-[30rpx] pb-[40rpx]"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]"
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" />
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" @change="handleComplete"/>
</sar-dropdown-item>
<sar-dropdown-item :title="searchParams.natureLabel || '办学性质'" :before-close="handleComplete">
<sar-dropdown-item :title="searchParams.natureLabel || '办学性质'" v-model:visible="visibleFlag2">
<mx-radio-group v-model:value="searchParams.nature" v-model:label="searchParams.natureLabel"
:options="natureList" label-key="label" value-key="value"
custom-root-class="px-[32rpx] pt-[30rpx] pb-[40rpx]"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]"
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" />
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" @change="handleComplete" />
</sar-dropdown-item>
<sar-dropdown-item v-model="searchParams.schoolType" :title="searchParams.schoolTypeLabel || '类型'" :before-close="handleComplete">
<sar-dropdown-item v-model="searchParams.schoolType" :title="searchParams.schoolTypeLabel || '类型'" v-model:visible="visibleFlag3">
<mx-radio-group v-model:value="searchParams.schoolType" v-model:label="searchParams.schoolTypeLabel"
:options="schoolTypeList" label-key="label" value-key="value"
custom-root-class="px-[32rpx] pt-[30rpx] pb-[40rpx]"
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]" />
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]" @change="handleComplete" />
</sar-dropdown-item>
</sar-dropdown>
</view>

View File

@ -1,60 +1,13 @@
<script lang="ts" setup>
import { getNewsDetail } from "@/service"
import { DomHandler, Parser } from 'htmlparser2'
type RichTextNode =
| { type: 'text'; text: string }
| { type: 'element'; name: string; attrs: Record<string, any>; children: RichTextNode[] }
const newsDetail = ref({ title: '', publishTime: "", remark: "",content:"" })
const nodes = ref<any[]>([])
const parseHTMLToObject = (htmlString) => {
const handler = new DomHandler((error, dom) => {
if (error) {
console.error('Error parsing HTML:', error)
} else {
console.log('Parsed DOM:', dom)
}
})
const parser = new Parser(handler)
parser.write(htmlString)
parser.end()
return handler.dom
}
function traverseNodes(nodes: any[]): RichTextNode[] {
return nodes.flatMap((node) => {
if (node.type === 'text') {
const parts = node.data.split('\n')
return parts.flatMap((text, index) => {
const result: RichTextNode[] = [{ type: 'text', text }]
if (index < parts.length - 1) {
result.push({ type: 'element', name: 'br', attrs: {}, children: [] })
}
return result
})
} else if (node.type === 'tag') {
return [{
type: 'element',
name: node.name,
attrs: node.attribs,
children: traverseNodes(node.children || [])
}]
} else {
return []
}
})
}
onLoad(options => {
if (options.id) {
getNewsDetail({ query: { id: options.id } }).then(resp => {
if (resp.code == 200) {
newsDetail.value = resp.result
// const _nodes = parseHTMLToObject(resp.result.remark)
// nodes.value = traverseNodes(_nodes)
}
})
} else {
@ -73,7 +26,6 @@ const navigateToCustom = () => {
<view class="text-[#999] text-[28rpx] mt-[8rpx]">发布时间: {{ newsDetail.publishTime }}</view>
<view class="border-b-[2rpx] border-b-dashed border-b-[#D8D8D8] mt-[20rpx] mb-[30rpx]"></view>
<view class="pt-[30rpx]">
<!-- <rich-text :nodes="nodes"></rich-text> -->
<view v-html="newsDetail.content"></view>
</view>

View File

@ -109,8 +109,8 @@ const handleComplete = () => {
<text class="text-[30rpx] text-[#333]">{{ item.title }}</text>
<text class="text-[#999999] text-[26rpx]">{{ item.publishTime }}</text>
</view>
<view class="w-[216rpx] h-[144rpx]">
<image :src="item.coverImage" mode="scaleToFill" class="w-[216rpx] h-[144rpx]" />
<view class="w-[216rpx] h-[144rpx] rounded-[16rpx]">
<image :src="item.coverImage" mode="scaleToFill" class="w-[216rpx] h-[144rpx] rounded-[16rpx]" />
</view>
</view>
</view>

View File

@ -76,10 +76,16 @@ const partialColumns = [
},
] as const
const visibleFlag1 = ref(false)
const visibleFlag2 = ref(false)
const visibleFlag3 = ref(false)
const partialData = ref([])
const handleChange = () => {
visibleFlag1.value = false;
visibleFlag2.value = false;
visibleFlag3.value = false;
getSchoolHistoricalScores({
query: {
SchoolName: searchParams.value.keyword,
@ -117,26 +123,26 @@ onShow(() => {
<mx-search v-model:searchText="searchParams.keyword" rootStyle="margin: 16rpx 30rpx 0;" @complete="handleChange"/>
<sar-dropdown
root-style="--sar-dropdown-placeholder-color:#666;--sar-dropdown-value-font-size:28rpx;--sar-dropdown-option-active-color:#1580FF;--sar-dropdown-box-shadow:0rpx 6rpx 8rpx 0rpx rgba(0,0,0,0.04);">
<sar-dropdown-item :title="searchParams.region || '区域'" :before-close="handleChange">
<sar-dropdown-item v-model:visible="visibleFlag1" :title="searchParams.region || '区域'" >
<mx-radio-group v-model:value="searchParams.region" :options="areaList" label-key="label" value-key="value"
custom-root-class="px-[32rpx] pt-[30rpx] pb-[40rpx]"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]"
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" />
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" @change="handleChange"/>
</sar-dropdown-item>
<sar-dropdown-item :title="searchParams.natureLabel || '办学性质'" :before-close="handleChange">
<sar-dropdown-item v-model:visible="visibleFlag2" :title="searchParams.natureLabel || '办学性质'" >
<mx-radio-group v-model:value="searchParams.nature" v-model:label="searchParams.natureLabel"
:options="natureList" label-key="label" value-key="value" custom-root-class="px-[32rpx] pt-[30rpx] pb-[40rpx]"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]"
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" />
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid" @change="handleChange"/>
</sar-dropdown-item>
<sar-dropdown-item v-model="searchParams.year" :title="searchParams.year || '年份'" :before-close="handleChange">
<sar-dropdown-item v-model:visible="visibleFlag3" v-model="searchParams.year" :title="searchParams.year || '年份'">
<mx-radio-group v-model:value="searchParams.year" :options="years" label-key="label" value-key="value"
custom-root-class="px-[32rpx] pt-[30rpx] pb-[40rpx]"
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]" />
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]" @change="handleChange" />
</sar-dropdown-item>
</sar-dropdown>

View File

@ -83,7 +83,7 @@ onLoad(() => {
<scroll-view scroll-y class="flex-1">
<view v-for="(val, index) in schools" :key="index"
class="flex items-center justify-between py-[28rpx] mx-[30rpx] border-b-1 border-b-solid border-[#f5f5f5] last:pb-safe"
class="flex items-center justify-between py-[28rpx] mx-[30rpx] border-b-1 border-b-solid border-[#f5f5f5]"
@click="navigateToDetail(val.schoolName)">
<view class="text-[#333] text-[30rpx]">{{ val.schoolName }}</view>
<view class="w-[18rpx] h-[36rpx]">
@ -91,9 +91,10 @@ onLoad(() => {
class="w-[18rpx] h-[36rpx]" />
</view>
</view>
<view class="pb-safe"></view>
</scroll-view>
<sar-popout :show-close="false" :show-footer="false" v-model:visible="regionVisible" :before-close="handleChange"
<sar-popout :show-close="false" :show-footer="false" v-model:visible="regionVisible" @leave="handleChange"
root-style="--sar-popout-header-loose-padding-x:30rpx;">
<template #title>
<view class="flex items-center justify-between w-full">
@ -105,12 +106,12 @@ onLoad(() => {
</view>
</template>
<view style="padding-left: 32rpx; padding-right: 32rpx">
<view class="px-[32rpx]">
<MxRadioGroup v-model:value="searchParams.region" v-model:label="searchParams.regionLabel" :options="regions"
label-key="label" value-key="value" custom-root-class=""
custom-item-class="w-full py-[16rpx] text-center border-[1rpx] border-solid"
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-[#1580FF]"
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]" />
default-item-class="bg-[#F3F4F8] border-[#F3F4F8]" @change="regionVisible = false"/>
</view>
</sar-popout>
</view>

View File

@ -22,8 +22,8 @@ onShow(() => {
</script>
<template>
<view class="bg-[#F8F8F8] h-screen px-[30rpx]">
<view v-for="(val, index) in list" :key="index" class="flex mb-[18rpx]" v-if="list.length > 0" @click="useRouterDetail(val)">
<view class="bg-[#F8F8F8] h-screen px-[30rpx] overflow-hidden">
<view v-for="(val, index) in list" :key="index" class="flex first:mt-[30rpx]" v-if="list.length > 0" @click="useRouterDetail(val)">
<view
class="text-[30rpx] text-[#333] grid gap-[8rpx] bg-white px-[30rpx] py-[20rpx] not-last:mb-[30rpx] rounded-[16rpx] w-full flex items-center justify-between">

View File

@ -41,8 +41,8 @@ onLoad(() => {
</script>
<template>
<view class="bg-[#F8F8F8] h-screen px-[30rpx]">
<view v-for="(val, index) in schools" :key="index" class="flex items-center mb-[18rpx] px-[30rpx] py-[20rpx] bg-white"
<view class="bg-[#F8F8F8] h-screen px-[30rpx] overflow-hidden">
<view v-for="(val, index) in schools" :key="index" class="flex items-center mb-[18rpx] px-[30rpx] py-[20rpx] bg-white first:mt-[30rpx]"
v-if="schools.length > 0" @click.stop="navigateToDetail(val.id)">
<view class="text-[30rpx] text-[#333] grid gap-[8rpx] not-last:mb-[30rpx] rounded-[16rpx] flex-1">
<view class="text-[32rpx] font-600">{{ val.schoolName }}</view>

View File

@ -47,8 +47,8 @@ onShow(() => {
</script>
<template>
<view class="bg-[#F8F8F8] h-screen px-[30rpx]">
<view v-for="(val, index) in wishlist" :key="index" class="flex mb-[18rpx]" v-if="wishlist.length > 0" @click="navigateToDetail(val)">
<view class="bg-[#F8F8F8] h-screen px-[30rpx] overflow-hidden">
<view v-for="(val, index) in wishlist" :key="index" class="flex first:mt-[30rpx]" v-if="wishlist.length > 0" @click="navigateToDetail(val)">
<view
class="text-[30rpx] text-[#333] grid gap-[8rpx] bg-white px-[30rpx] py-[20rpx] not-last:mb-[30rpx] rounded-[16rpx] w-full">
<view class="text-[32rpx] font-600">{{ val.title }}</view>

View File

@ -131,7 +131,7 @@ onLoad(() => {
</template>
</sar-navbar>
<view class="flex items-center mx-[30rpx]">
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
<view class="w-[112rpx] h-[104rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_01.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />

View File

@ -153,7 +153,7 @@ onLoad(() => {
</view>
</view>
<view class="flex items-center text-[30rpx] mx-[40rpx] py-[34rpx]">
<view class="flex items-center text-[30rpx] mx-[40rpx] pt-[34rpx] mb-[20rpx]">
<view class="text-[#404142] text-left mr-[14rpx]">考级证书</view>
<view class="w-[32rpx] h-[32rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/cpgx/cp_jieshi.png"
@ -165,7 +165,7 @@ onLoad(() => {
<MxUpload :multiple="true" :outerFileList="defaultImgs" @change="handleAwardUploadChange" />
</view>
<view class="flex items-center text-[30rpx] mx-[40rpx] py-[34rpx]">
<view class="flex items-center text-[30rpx] mx-[40rpx] pt-[34rpx] mb-[20rpx]">
<view class="text-[#404142] text-left mr-[14rpx]">作品上传</view>
<view class="w-[32rpx] h-[32rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/cpgx/cp_jieshi.png"

View File

@ -107,6 +107,8 @@ onShow(() => {
userInfo.value.talentExtend = resp.result
} else {
userStore.initUserTalent()
console.log(userInfo.value.talentExtend);
}
}
userInfo.value.talentExtend.type = 1
@ -125,7 +127,7 @@ onShow(() => {
</template>
</sar-navbar>
<view class="flex items-center mx-[30rpx]">
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
<view class="w-[112rpx] h-[104rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_01.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />

View File

@ -116,7 +116,7 @@ onLoad(() => {
</template>
</sar-navbar>
<view class="flex items-center mx-[30rpx]">
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
<view class="w-[112rpx] h-[104rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_02.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />
@ -136,8 +136,7 @@ onLoad(() => {
<view class="flex flex-col h-full">
<view
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx]">体测成绩 <span
class="text-[#D42226]">*</span>
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx]">体测成绩<span class="text-[#D42226] text-[30rpx]">*</span>
</view>
<view class="flex-1">
<input type="number" input-mode="numeric" v-model="userInfo.talentExtend.fitnessResult"
@ -149,7 +148,7 @@ onLoad(() => {
<view
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">百米成绩<span
class="text-[#D42226]">*</span>
class="text-[#D42226] text-[30rpx]">*</span>
</view>
<view class="flex-1 flex items-center">
<view class="flex-1">
@ -166,7 +165,7 @@ onLoad(() => {
<view
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">立定跳远<span
class="text-[#D42226]">*</span>
class="text-[#D42226] text-[30rpx]">*</span>
</view>
<view class="flex-1 flex items-center">
<view class="flex-1">
@ -183,7 +182,7 @@ onLoad(() => {
<view
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx]">专项项目<span
class="text-[#D42226]">*</span>
class="text-[#D42226] text-[30rpx]">*</span>
</view>
<view class="flex-1 flex items-center" @click="handleOpenPopup('project')">
<view class="flex-1">
@ -214,7 +213,7 @@ onLoad(() => {
</view>
</view>
<view class="flex items-center text-[30rpx] mx-[40rpx] py-[34rpx]">
<view class="flex items-center text-[30rpx] mx-[40rpx] pt-[34rpx] mb-[20rpx]">
<view class="text-[#404142] text-left mr-[14rpx]">获奖经历</view>
<view class="w-[32rpx] h-[32rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/cpgx/cp_jieshi.png"

View File

@ -19,7 +19,7 @@ const handleChoose = (val) => {
chooseData.value.splice(0, 1, val.schoolId)
if(wishlistStore.getSchool()){
const exitsSchool = JSON.parse(wishlistStore.getSchool())
const willSchool = exitsSchool.filter((item)=>{item.type !== '指标生'})
const willSchool = exitsSchool.schools.filter((item)=>{item.type !== '指标生'})
wishlistStore.setSchool(JSON.stringify({schools:[{...val,type:'firstBatch'},...willSchool]}))
}else{
wishlistStore.setSchool(JSON.stringify({schools:[{...val,type:'firstBatch'}]}))
@ -169,7 +169,7 @@ onMounted(() => {
</view>
<sar-popout :show-close="false" :show-footer="false" v-model:visible="popVisible"
root-style="--sar-popout-header-loose-padding-x:30rpx;" @leave="handleChangeSchool">
root-style="--sar-popout-header-loose-padding-x:30rpx;" root-class="min-h-[560rpx]" @leave="handleChangeSchool">
<template #title>
<view class="flex items-center justify-between w-full">
<view class="text-[34rpx] font-500">{{ popType === 'school' ? '全部学校' : (popType ===
@ -178,7 +178,6 @@ onMounted(() => {
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_guanbi.png" mode="scaleToFill"
class="w-[36rpx] h-[36rpx]" />
</view>
</view>
</template>
<view>
@ -188,13 +187,13 @@ onMounted(() => {
custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!"
v-if="popType === 'school'" />
v-if="popType === 'school'" @change="popVisible = false"/>
<MxRadio v-model:value="searchParams.nature" v-model:label="searchParams.natureLabel" :options="natureList"
label-key="label" value-key="value" custom-root-cols-class="grid grid-cols-2 items-center gap-[16rpx]"
custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!"
v-if="popType === 'nature'" />
v-if="popType === 'nature'" @change="popVisible = false"/>
<MxCheckbox v-model:value="searchParams.region" :options="regions" label-key="label" value-key="value"
custom-root-class="pt-[30rpx] pb-[16rpx]" custom-item-class="w-full py-[16rpx] text-center"
v-if="popType === 'region'" />

View File

@ -1,5 +1,5 @@
<script lang="ts" setup>
// import MxSearch from "@/pages-sub/components/search/index.vue"
import MxSearch from "@/pages-sub/components/search/index.vue"
import MxCheckbox from "@/pages-sub/components/checkbox/index.vue?async"
import MxRadio from "@/pages-sub/components/radio/index.vue?async"
import { getAreaList, getBusSchoolAdmission, getSchoolNature } from "@/service"
@ -136,8 +136,9 @@ onBeforeMount(() => {
</view>
</view>
<!-- <MxSearch root-class="py-[14rpx]! px-[20rpx]! w-[166rpx] rounded-[12rpx]!" :clear-icon="false"
placeholder="请输入" /> -->
<MxSearch v-model:searchText="searchParams.keyword"
root-class="py-[14rpx]! px-[20rpx]! w-[166rpx] rounded-[12rpx]!" :clear-icon="false" placeholder="请输入"
@complete="handleChangeSchool" />
</view>
<view v-if="tableData.length === 0"
class="flex flex-col items-center justify-center bg-[#F7F7F7] min-h-[240rpx] rounded-[16rpx]">
@ -175,8 +176,8 @@ onBeforeMount(() => {
<view class="flex items-center justify-center" @click="handleChoose(record)">
<view class="w-[36rpx] h-[36rpx] flex items-center"
v-if="chooseData.includes(record.schoolId)">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_duoxuan.png"
mode="scaleToFill" class="w-[36rpx] h-[36rpx]" />
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_duoxuan.png" mode="scaleToFill"
class="w-[36rpx] h-[36rpx]" />
</view>
<sar-icon name="square" size="36rpx" color="#CCC" v-else></sar-icon>
</view>
@ -192,8 +193,8 @@ onBeforeMount(() => {
<view class="text-[34rpx] font-500">{{ popType === 'school' ? '全部学校' : (popType === 'nature' ?
'请选择办学性质' : '请选择所在区(可多选)') }}</view>
<view class="w-[36rpx] h-[36rpx] flex items-center" @click="popVisible = false">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_guanbi.png"
mode="scaleToFill" class="w-[36rpx] h-[36rpx]" />
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_guanbi.png" mode="scaleToFill"
class="w-[36rpx] h-[36rpx]" />
</view>
</view>
@ -206,14 +207,14 @@ onBeforeMount(() => {
custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!"
v-if="popType === 'school'" />
v-if="popType === 'school'" @change="popVisible = false"/>
<MxRadio v-model:value="searchParams.nature" v-model:label="searchParams.natureLabel"
:options="natureList" label-key="label" value-key="value"
custom-root-cols-class="grid grid-cols-2 items-center gap-[16rpx]"
custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!"
v-if="popType === 'nature'" />
v-if="popType === 'nature'" @change="popVisible = false"/>
<MxCheckbox v-model:value="searchParams.region" :options="regions" label-key="label"
value-key="value" custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="w-full py-[16rpx] text-center" v-if="popType === 'region'" />

View File

@ -82,6 +82,10 @@ const handleChangeSchool = () => {
totalCount.value = Number(resp.result.chongCount) + Number(resp.result.wenCount) + Number(resp.result.baoCount)
})
}
const handleCancel = () => {
searchParams.value.region = []
popVisible.value = false;
}
onBeforeMount(() => {
@ -185,7 +189,7 @@ onBeforeMount(() => {
</view>
<sar-popout :show-close="false" :show-footer="false" v-model:visible="popVisible"
root-style="--sar-popout-header-loose-padding-x:30rpx;">
root-style="--sar-popout-header-loose-padding-x:30rpx;" @leave="handleChangeSchool">
<template #title>
<view class="flex items-center justify-between w-full">
<view class="text-[34rpx] font-500">{{ popType === 'school' ? '全部学校' : (popType === 'nature' ?
@ -205,14 +209,14 @@ onBeforeMount(() => {
custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!"
v-if="popType === 'school'" />
v-if="popType === 'school'" @change="popVisible = false"/>
<MxRadio v-model:value="searchParams.nature" v-model:label="searchParams.natureLabel"
:options="natureList" label-key="label" value-key="value"
custom-root-cols-class="grid grid-cols-2 items-center gap-[16rpx]"
custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!"
v-if="popType === 'nature'" />
v-if="popType === 'nature'" @change="popVisible = false"/>
<MxCheckbox v-model:value="searchParams.region" :options="regions" label-key="label"
value-key="value" custom-root-class="pt-[30rpx] pb-[16rpx]"
custom-item-class="w-full py-[16rpx] text-center" v-if="popType === 'region'" />
@ -220,9 +224,9 @@ onBeforeMount(() => {
<view
class="grid grid-cols-2 gap-[20rpx] border-t-[1rpx] border-t-solid border-t-[#eee] pt-[16rpx] px-[30rpx]"
v-if="popType === 'region'">
<view class="text-[34rpx] font-500 text-[#333] bg-[#F5F5F5] rounded-[12rpx] py-[20rpx] text-center">
<view class="text-[34rpx] font-500 text-[#333] bg-[#F5F5F5] rounded-[12rpx] py-[20rpx] text-center" @click="handleCancel">
取消</view>
<view class="text-[34rpx] font-500 text-white bg-[#1580FF] rounded-[12rpx] py-[20rpx] text-center">
<view class="text-[34rpx] font-500 text-white bg-[#1580FF] rounded-[12rpx] py-[20rpx] text-center" @click="handleChangeSchool">
确定</view>
</view>
</view>

View File

@ -29,13 +29,16 @@ definePage({
// #endif
const handleBack = () => {
uni.navigateBack({ delta: 1 })
const pages = getCurrentPages()
if(pages.length <=1){
uni.switchTab({url:'/pages/index/index'})
return
}
uni.navigateBack()
}
const formData = ref({
genderLabel: '',
})
const userStore = useUserStore();
@ -69,7 +72,7 @@ const onOverlayClick = () => {
visible.value = false
}
const genderClassification = [{ label: '男', value: "1" }, { label: '女', value: "2" }]
const genderClassification = [{ label: '男', value: 1 }, { label: '女', value: 2 }]
const gradeClassification = ref([])
const areaList = ref([])
@ -113,7 +116,7 @@ onShow(() => {
</template>
</sar-navbar>
<view class="flex items-center mx-[30rpx]">
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
<view class="w-[112rpx] h-[104rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_01.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />
@ -226,22 +229,22 @@ onShow(() => {
</view>
<MxRadio v-model:value="userInfo.sex" v-model:label="formData.genderLabel" v-if="activeType == 'gender'"
:options="genderClassification" label-key="label" value-key="value"
custom-root-cols-class="grid grid-cols-2 items-center gap-[16rpx]"
custom-root-class="pt-[22rpx] pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-none" />
custom-root-cols-class="grid grid-cols-2 items-center gap-[20rpx]"
custom-root-class="pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
active-item-class="bg-white text-[#1580FF] border-[#1580FF] border-[2rpx] border-solid" @change="visible = false" />
<MxRadio v-model:value="userInfo.userExtend.gradeId" v-model:label="userInfo.userExtend.gradeName"
v-if="activeType == 'grade'" :options="gradeClassification" label-key="label" value-key="value"
custom-root-cols-class="grid grid-cols-3 items-center gap-[16rpx]"
custom-root-class="pt-[22rpx] pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-none" />
custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
custom-root-class="pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
active-item-class="bg-white text-[#1580FF] border-[#1580FF] border-[2rpx] border-solid" @change="visible = false"/>
<MxRadio v-model:value="userInfo.userExtend.area" v-if="activeType == 'examinationArea'"
:options="areaList" label-key="label" value-key="value"
custom-root-cols-class="grid grid-cols-3 items-center gap-[16rpx]"
custom-root-class="pt-[22rpx] pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
active-item-class="bg-[#e7f2ff] text-[#1580FF] border-none" />
custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
custom-root-class="pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
active-item-class="bg-white text-[#1580FF] border-[#1580FF] border-[2rpx] border-solid" @change="visible = false"/>
</view>
</sar-popup>
@ -250,7 +253,7 @@ onShow(() => {
<style lang="scss" scoped>
.custom-background {
background: linear-gradient(180deg, #D7E4FF 0%, #fff 556rpx);
background: linear-gradient( 177deg, #E4EDFF 0%, #F0F5FF 180rpx, #FEFEFF 360rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;

View File

@ -3,6 +3,8 @@ import { safeAreaInsets } from '@/utils/systemInfo'
import ScheduleQuota from './components/ScheduleQuota.vue'
import FirstBatchSchool from './components/FirstBatchSchool.vue'
import MxDialog from "@/pages-sub/components/dialog/index.vue"
import { useWishlistStore } from '@/store'
import { storeToRefs } from 'pinia'
// #ifdef MP-WEIXIN
definePage({
@ -24,7 +26,12 @@ definePage({
})
// #endif
const wishlistStore = useWishlistStore()
const {extendWishlist} = storeToRefs(wishlistStore)
const handleBack = () => {
wishlistStore.clearExtendWishlist()
uni.navigateBack({ delta: 1 })
}
@ -44,6 +51,7 @@ const show = ref(false)
<view class="flex justify-center">第一批次</view>
</template>
</sar-navbar>
<view class="flex-1 overflow-y-auto">
<view
class="bg-[#ddebfe] rounded-[16rpx] border-2rpx border-solid border-white flex items-center mx-[20rpx] py-[16rpx] px-[30rpx]"
@click="show = true">
@ -57,7 +65,6 @@ const show = ref(false)
class="w-[14rpx] h-[18rpx]" />
</view>
</view>
<view class="flex-1 overflow-y-auto">
<view class="text-[32rpx] font-500 m-[20rpx] ">名额到校</view>
<view class="px-[20rpx]">
<ScheduleQuota />
@ -71,11 +78,11 @@ const show = ref(false)
<view class="border-t border-t-solid border-t-[#ededed] px-[40rpx] py-[16rpx]">
<view class="pb-safe"
@click="navigateToList">
<button class="rounded-[16rpx] bg-[#1580FF] text-[#f7f7f7] submit-btn">确定</button>
<button :disabled="extendWishlist.contents.length === 0" class="rounded-[16rpx] bg-[#1580FF] text-[#f7f7f7] submit-btn">确定</button>
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" rootClass="rounded-[40rpx]"
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" rootClass="rounded-[40rpx]"
@overlay-click="show = false">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-dialog-background">
@ -98,7 +105,9 @@ const show = ref(false)
</view>
<view class="text-[#333]">本批次为顺序录取不实行平行志愿</view>
</view>
<view
class="text-[34rpx] font-500 text-white bg-[#1580FF] rounded-full py-[20rpx] text-center mx-[40rpx] mt-[40rpx]"
@click="show = false">我知道了</view>
</view>
</template>
</MxDialog>
@ -121,4 +130,9 @@ const show = ref(false)
background-clip: border-box;
background-size: auto auto;
}
.submit-btn[disabled] {
background-color: #73b3ff;
color: #fff;
}
</style>

View File

@ -23,11 +23,13 @@ const handleSubmit = () =>{
saveWishlist({data:{title:wishListName.value,contents:extendWishlist.value.contents,batchName:'第一批次',TotalScore:totalScore.value}}).then(resp => {
if(resp.code === 200){
show.value = false
wishlistStore.clearExtendWishlist();
uni.switchTab({url:"/pages/index/index"})
}
})
}
const navigateToHome = () => {
wishlistStore.clearExtendWishlist();
uni.switchTab({url:"/pages/index/index"})
}
@ -45,13 +47,17 @@ onShow(() => {
})
})
onBackPress(() => {
wishlistStore.clearExtendWishlist();
})
</script>
<template>
<view class="flex flex-col h-screen ">
<view class="pb-safe flex-1 flex flex-col overflow-hidden">
<view class="flex-1 overflow-y-auto px-[30rpx] bg-[#F8F8F8]">
<view v-for="(val, index) in schools" :key="index" class="flex">
<view v-for="(val, index) in schools" :key="index" class="flex first:mt-[30rpx]">
<view
class="text-[30rpx] text-[#333] grid gap-[8rpx] bg-white px-[30rpx] py-[20rpx] not-last:mb-[30rpx] rounded-[16rpx] w-full">
<view class="text-[32rpx] font-600">{{ val.schoolName }}</view>
@ -69,7 +75,7 @@ onShow(() => {
mode="scaleToFill" class="w-[86rpx] h-[56rpx]" />
</view>
</view>
<view class=" bg-[#FEF6F6] rounded-[16rpx] mt-20">
<view class=" bg-[#FEF6F6] rounded-[16rpx] mt-[30rpx]">
<view class="h-[52rpx] w-[178rpx] flex items-center m-[-8rpx] ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_shuoming.png"
mode="scaleToFill" class="h-[52rpx] w-[178rpx]" />
@ -95,7 +101,7 @@ onShow(() => {
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" rootClass="rounded-[40rpx]">
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" rootClass="rounded-[40rpx]">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-background"
style="--status-bar-height:56rpx; --start-color:#ebf1ff">
@ -103,7 +109,7 @@ onShow(() => {
<view class="rounded-full py-[20rpx] px-[30rpx] bg-[#F3F4F8] border-[#E5E5E5] border-solid border-[1rpx] flex items-center justify-between my-[60rpx]">
<input type="text" v-model="wishListName" placeholder="请输入名字" confirm-type="done"
placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;" class="text-left flex-1">
<view class="w-[40rpx] h-[40rpx] flex items-center" @click="wishListName = ''">
<view class="w-[40rpx] h-[40rpx] flex items-center" v-if="wishListName" @click="wishListName = ''">
<image
src="https://lwzk.ycymedu.com/img/tianbao/tb_shanchu.png"
mode="scaleToFill"

View File

@ -27,12 +27,14 @@ const handleSubmit = () =>{
saveWishlist({data:{title:wishListName.value,contents:extendWishlist.value.contents,batchName:'第二批次',TotalScore:totalScore.value}}).then(resp => {
if(resp.code === 200){
show.value = false
wishlistStore.clearExtendWishlist();
uni.switchTab({url:"/pages/index/index"})
}
})
}
const navigateToHome = () => {
wishlistStore.clearExtendWishlist();
uni.switchTab({url:"/pages/index/index"})
}
@ -43,6 +45,10 @@ onShow(() => {
}
})
})
onBackPress(() => {
wishlistStore.clearExtendWishlist();
})
</script>
<template>
@ -64,7 +70,7 @@ onShow(() => {
</view>
</view>
<view class=" bg-[#FEF6F6] rounded-[16rpx] mt-[26rpx]">
<view class=" bg-[#FEF6F6] rounded-[16rpx] mt-[30rpx]">
<view class="h-[52rpx] w-[178rpx] flex items-center m-[-8rpx] ml-[20rpx]">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_shuoming.png"
mode="scaleToFill" class="h-[52rpx] w-[178rpx]" />
@ -90,7 +96,7 @@ onShow(() => {
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" rootClass="rounded-[40rpx]">
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" rootClass="rounded-[40rpx]">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-background"
style="--status-bar-height:56rpx; --start-color:#ebf1ff">
@ -98,7 +104,7 @@ onShow(() => {
<view class="rounded-full py-[20rpx] px-[30rpx] bg-[#F3F4F8] border-[#E5E5E5] border-solid border-[1rpx] flex items-center justify-between my-[60rpx]">
<input type="text" v-model="wishListName" placeholder="请输入姓名" confirm-type="done"
placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;" class="text-left flex-1">
<view class="w-[40rpx] h-[40rpx] flex items-center" @click="wishListName = ''">
<view class="w-[40rpx] h-[40rpx] flex items-center" v-if="wishListName" @click="wishListName = ''">
<image
src="https://lwzk.ycymedu.com/img/tianbao/tb_shanchu.png"
mode="scaleToFill"

View File

@ -19,12 +19,14 @@ const handleSubmit = () =>{
saveWishlist({data:{title:wishListName.value,contents:extendWishlist.value.contents,batchName:'第三批次',TotalScore:totalScore.value}}).then(resp => {
if(resp.code === 200){
show.value = false
wishlistStore.clearExtendWishlist();
uni.switchTab({url:"/pages/index/index"})
}
})
}
const navigateToHome = () => {
wishlistStore.clearExtendWishlist();
uni.switchTab({url:"/pages/index/index"})
}
@ -42,6 +44,10 @@ onShow(() => {
}
})
})
onBackPress(() => {
wishlistStore.clearExtendWishlist();
})
</script>
<template>
@ -71,7 +77,7 @@ onShow(() => {
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" rootClass="rounded-[40rpx]">
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" rootClass="rounded-[40rpx]">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-background"
style="--status-bar-height:56rpx; --start-color:#ebf1ff">
@ -80,7 +86,7 @@ onShow(() => {
class="rounded-full py-[20rpx] px-[30rpx] bg-[#F3F4F8] border-[#E5E5E5] border-solid border-[1rpx] flex items-center justify-between my-[60rpx]">
<input type="text" v-model="wishListName" placeholder="请输入姓名" confirm-type="done"
placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;" class="text-left flex-1">
<view class="w-[40rpx] h-[40rpx] flex items-center" @click="wishListName = ''">
<view class="w-[40rpx] h-[40rpx] flex items-center" v-if="wishListName" @click="wishListName = ''">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_shanchu.png"
mode="scaleToFill" class="w-[40rpx] h-[40rpx]" />
</view>

View File

@ -132,7 +132,7 @@ onLoad(() => {
</template>
</sar-navbar>
<view class="flex items-center mx-[30rpx]">
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
<view class="w-[112rpx] h-[104rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_02.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />
@ -162,17 +162,17 @@ onLoad(() => {
</view>
</view>
<view class="text-[34rpx] mt-[40rpx] ml-[40rpx]">等级考成绩</view>
<view class="grid grid-cols-2 gap-[0_50rpx]">
<view class="text-[34rpx] mt-[40rpx] ml-[40rpx] font-700">等级考成绩</view>
<view class="grid grid-cols-2 gap-[0_50rpx] mx-[40rpx]">
<view
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid"
class="flex items-center text-[30rpx] justify-between py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid"
v-for="(val, key) of ctoEWithDegree" :key="key">
<view class="text-[#404142] text-left mr-[40rpx] ">{{ val }}</view>
<view class="text-[#404142] text-left mr-[34rpx] ">{{ val }}</view>
<view class="flex-1 flex items-center" @click="handleOpenPopup(key)">
<MxInput v-model:value="degreeFormData[key]" placeholder="请选择" root-class="text-left"
<MxInput v-model:value="degreeFormData[key]" placeholder="请选择" root-class="text-left w-[92rpx]!"
:readonly="true" />
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto">
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto mr-[30rpx]">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
</view>
@ -196,10 +196,10 @@ onLoad(() => {
</view>
</view>
<MxRadio v-model:value="degreeFormData[activeType]" :options="gradeClassification" label-key="label"
value-key="label" custom-root-cols-class="grid grid-cols-3 items-center gap-[16rpx]"
custom-root-class="px-[30rpx] pt-[22rpx] pb-[20rpx]"
value-key="label" custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
custom-root-class="pb-[20rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!" />
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!" @change="visible = false"/>
</view>
</sar-popup>
</view>
@ -207,7 +207,7 @@ onLoad(() => {
<style lang="scss" scoped>
.custom-background {
background: linear-gradient(180deg, #D7E4FF 0%, #fff 556rpx);
background: linear-gradient( 177deg, #E4EDFF 0%, #F0F5FF 180rpx, #FEFEFF 360rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;

View File

@ -2,6 +2,8 @@
import { safeAreaInsets } from '@/utils/systemInfo'
import SecondBatchSchool from './components/SecondBatchSchool.vue'
import MxDialog from "@/pages-sub/components/dialog/index.vue"
import { useWishlistStore } from '@/store'
import { storeToRefs } from 'pinia'
// #ifdef MP-WEIXIN
definePage({
@ -24,6 +26,7 @@ definePage({
// #endif
const handleBack = () => {
wishlistStore.clearExtendWishlist()
uni.navigateBack({ delta: 1 })
}
@ -33,6 +36,10 @@ const navigateToList = () => {
const show = ref(false)
const wishlistStore = useWishlistStore()
const {extendWishlist} = storeToRefs(wishlistStore)
</script>
<template>
@ -43,6 +50,7 @@ const show = ref(false)
<view class="flex justify-center">第二批次</view>
</template>
</sar-navbar>
<view class="flex-1 overflow-y-auto">
<view
class="bg-[#ddebfe] rounded-[16rpx] border-2rpx border-solid border-white flex items-center mx-[20rpx] py-[16rpx] px-[30rpx]"
@click="show = true">
@ -56,7 +64,6 @@ const show = ref(false)
class="w-[14rpx] h-[18rpx]" />
</view>
</view>
<view class="flex-1 overflow-y-auto">
<view class="px-[20rpx] pt-[20rpx]">
<SecondBatchSchool />
</view>
@ -64,11 +71,11 @@ const show = ref(false)
<view class="border-t border-t-solid border-t-[#ededed] px-[40rpx] py-[16rpx]">
<view class="pb-safe" @click="navigateToList">
<button form-type="submit" class="rounded-[16rpx] bg-[#1580FF] text-[#f7f7f7] submit-btn">确定</button>
<button :disabled="extendWishlist.contents.length === 0" form-type="submit" class="rounded-[16rpx] bg-[#1580FF] text-[#f7f7f7] submit-btn">确定</button>
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" rootClass="rounded-[40rpx]"
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" rootClass="rounded-[40rpx]"
@overlay-click="show = false">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-dialog-background">
@ -115,7 +122,7 @@ const show = ref(false)
}
.submit-btn[disabled] {
background-color: #a1cbff;
background-color: #73b3ff;
color: #fff;
}
</style>

View File

@ -1,6 +1,9 @@
<script lang="ts" setup>
import { safeAreaInsets } from '@/utils/systemInfo'
import MxDialog from "@/pages-sub/components/dialog/index.vue"
import { useUserStore } from '@/store'
import { storeToRefs } from 'pinia'
import { getMyScore } from '@/service'
// #ifdef MP-WEIXIN
definePage({
@ -28,6 +31,9 @@ const handleBack = () => {
const show = ref(false)
const userStore = useUserStore()
const {userInfo} = storeToRefs(userStore)
const activeIndex = ref(1)
const handleActiveIndex = (index: number) => {
activeIndex.value = index;
@ -42,17 +48,30 @@ const navigateToBatchPage = (index: number) => {
uni.navigateTo({ url: "/pages-sub/wishlist/create/thirdBatch" })
}
}
const navigateToFirst = () => {
uni.reLaunch({ url: '/pages-sub/wishlist/create/first' })
}
const totalScore = ref(0)
onLoad(()=>{
getMyScore().then(resp => {
if (resp.code === 200 && resp.result) {
totalScore.value = resp.result.totalScore
}
})
})
</script>
<template>
<view class="flex flex-col custom-background h-screen" style="--status-bar-height:556rpx;--start-color:#D7E4FF">
<view class="flex flex-col custom-background-bg h-screen" style="--status-bar-height:556rpx;--start-color:#D7E4FF">
<sar-navbar show-back @back="handleBack" :fixed="true" fixation-style="top:unset;"
:root-style="{ '--sar-navbar-bg': `transparent`, '--sar-navbar-item-color': 'black', 'padding-top': `${safeAreaInsets?.top}px` }">
<template #title>
<view class="flex justify-center">志愿填报</view>
</template>
</sar-navbar>
<view class="flex items-center mx-[30rpx]">
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
<view class="w-[112rpx] h-[104rpx] flex items-center">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_03.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />
@ -66,8 +85,9 @@ const navigateToBatchPage = (index: number) => {
class="w-[160rpx] h-[160rpx]" />
</view>
</view>
<view class="flex items-center text-[28rpx] text-[#666] mx-[30rpx] mb-[60rpx]">
<view>历下区 | 620 济南外国语学校</view>
<view class="flex items-center text-[28rpx] text-[#666] mx-[30rpx] mb-[60rpx]" @click="navigateToFirst">
<view>{{ userInfo.userExtend.area }} | {{ totalScore }} {{ userInfo.userExtend.schoolName }}</view>
<view class="w-[28rpx] h-[28rpx] flex items-center ml-[10rpx]">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_bianji.png" mode="scaleToFill"
class="w-[28rpx] h-[28rpx]" />
@ -121,7 +141,7 @@ const navigateToBatchPage = (index: number) => {
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" root-class="rounded-[40rpx]">
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" root-class="rounded-[40rpx]">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-background "
style="--status-bar-height:56rpx; --start-color:#ebf1ff">
@ -153,6 +173,13 @@ const navigateToBatchPage = (index: number) => {
</template>
<style lang="scss" scoped>
.custom-background-bg {
background: linear-gradient( 177deg, #E4EDFF 0%, #F0F5FF 180rpx, #FEFEFF 360rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;
background-size: auto auto;
}
.custom-background {
background: linear-gradient(180deg, var(--start-color) 0%, #fff var(--status-bar-height));
background-position: 50% 50%;

View File

@ -2,7 +2,11 @@
import { safeAreaInsets } from '@/utils/systemInfo'
import ThirdBatchSchool from './components/ThirdBatchSchool.vue'
import MxDialog from "@/pages-sub/components/dialog/index.vue"
import { useWishlistStore } from "@/store"
import { useWishlistStore } from '@/store'
import { storeToRefs } from 'pinia'
// #ifdef MP-WEIXIN
definePage({
style: {
@ -23,6 +27,8 @@ definePage({
})
// #endif
const wishlistStore = useWishlistStore()
const { extendWishlist } = storeToRefs(wishlistStore)
const handleBack = () => {
uni.navigateBack({ delta: 1 })
}
@ -35,7 +41,7 @@ const show = ref(false)
const handleSwitch = (event) => {
const content = JSON.parse(wishlistStore.getSchool())
wishlistStore.setSchool(JSON.stringify({adjust:event.detail.value,schools:content.school}))
wishlistStore.setSchool(JSON.stringify({adjust:event.detail.value,schools:content.schools}))
}
</script>
@ -48,6 +54,7 @@ const handleSwitch = (event) => {
<view class="flex justify-center">第三批次</view>
</template>
</sar-navbar>
<view class="flex-1 overflow-y-auto">
<view
class="bg-[#ddebfe] rounded-[16rpx] border-2rpx border-solid border-white flex items-center mx-[20rpx] py-[16rpx] px-[30rpx]"
@click="show = true">
@ -61,7 +68,6 @@ const handleSwitch = (event) => {
class="w-[14rpx] h-[18rpx]" />
</view>
</view>
<view class="flex-1 overflow-y-auto">
<view class="px-[20rpx] pt-[20rpx]">
<ThirdBatchSchool />
</view>
@ -73,12 +79,12 @@ const handleSwitch = (event) => {
<text>服从调剂:</text>
<switch @change="handleSwitch" color="#2F78FC" style="transform:scale(0.8)" />
</view>
<button form-type="submit" class="rounded-[16rpx] bg-[#1580FF] text-[#f7f7f7] submit-btn flex-1"
<button :disabled="extendWishlist.contents.length === 0" form-type="submit" class="rounded-[16rpx] bg-[#1580FF] text-[#f7f7f7] submit-btn flex-1"
@click="navigateToList">确定</button>
</view>
</view>
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="85%" rootClass="rounded-[40rpx]"
<MxDialog v-model:show="show" title="" :defaultPadding="false" defaultWidth="80%" rootClass="rounded-[40rpx]"
@overlay-click="show = false">
<template>
<view class="rounded-[40rpx] bg-white p-[40rpx] custom-dialog-background">
@ -125,7 +131,7 @@ const handleSwitch = (event) => {
}
.submit-btn[disabled] {
background-color: #a1cbff;
background-color: #73b3ff;
color: #fff;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<view
class="item-wrapper relative mt-[32rpx]"
class="item-wrapper relative mb-[20rpx]"
:style="`--start-color: ${startColor}; --end-color: ${endColor}`"
@click="toAssessmentPage"
>

View File

@ -10,7 +10,7 @@
</template>
</sar-navbar>
</view>
<view class="px-[32rpx]">
<view class="px-[32rpx] mt-[30rpx]">
<EvaluationItem :item="value"
v-for="value in evaluationList" :key="value.id" />
</view>
@ -59,7 +59,7 @@ onLoad(() => {
<style lang="scss" scoped>
.custom-background {
background: linear-gradient(180deg, #D7E4FF 0%, #fff 518rpx);
background: linear-gradient(180deg, #ecf2ff 0%,#f6f8ff 40rpx, #fff 128rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;

View File

@ -48,9 +48,9 @@ const subMenus = [{ name: '中考资讯', imgPath: 'https://lwzk.ycymedu.com/img
const notifies = ref([])
const opacity = ref(0)
const totalScore = ref("??")
const schoolCount = ref("??")
const wishlistCount = ref("??")
const totalScore = ref("0")
const schoolCount = ref("0")
const wishlistCount = ref("0")
const navigateToCreateWish = () => {
uni.navigateTo({ url: "/pages-sub/wishlist/create/first" })

View File

@ -57,8 +57,7 @@ const navigateToUserInfo = () => {
<view class="flex items-center justify-between px-[50rpx] my-[50rpx]">
<view class="flex">
<view class="w-[132rpx] h-[132rpx]">
<image :src="`${userInfo.avatar}`" mode="scaleToFill"
class="w-[132rpx] h-[132rpx] rounded-full" />
<image :src="`${userInfo.avatar}`" mode="scaleToFill" class="w-[132rpx] h-[132rpx] rounded-full" />
</view>
<view class="ml-[32rpx]">
<view class="text-[44rpx] font-500 mb-[10rpx]">{{ userInfo.nickName }}</view>
@ -67,8 +66,7 @@ const navigateToUserInfo = () => {
</view>
<view class="flex flex-col items-center" @click="navigateToUserInfo">
<view class="w-[48rpx] h-[48rpx]">
<image src="https://lwzk.ycymedu.com/img/qt/wd_bianji.png" mode="scaleToFill"
class="w-[48rpx] h-[48rpx]" />
<image src="https://lwzk.ycymedu.com/img/qt/wd_bianji.png" mode="scaleToFill" class="w-[48rpx] h-[48rpx]" />
</view>
<view class="text-[30rpx] text-[#333]">编辑</view>
</view>
@ -87,21 +85,15 @@ const navigateToUserInfo = () => {
<view class="p-[30rpx] mx-[30rpx] rounded-[20rpx] bg-white mt-[30rpx]">
<view class="text-[34rpx] font-500">其他功能</view>
<view class="flex items-center py-[34rpx] not-last:border-b-[2rpx] not-last:border-b-solid not-last:border-b-[#EDEDED]" v-for="(value,index) in bottomMenuList" :key="index" @click="navigateToUrl(value.url)">
<view
class="flex items-center py-[34rpx] not-last:border-b-[2rpx] not-last:border-b-solid not-last:border-b-[#EDEDED]"
v-for="(value, index) in bottomMenuList" :key="index" @click="navigateToUrl(value.url)">
<view class="w-[44rpx] h-[44rpx] flex items-center">
<image
:src="value.img"
mode="scaleToFill"
class="w-[44rpx] h-[44rpx]"
/>
<image :src="value.img" mode="scaleToFill" class="w-[44rpx] h-[44rpx]" />
</view>
<view class="text-[32rpx] ml-[16rpx]">{{ value.name }}</view>
<view class="w-[18rpx] h-[36rpx] ml-auto flex items-center">
<image
src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png"
mode="scaleToFill"
class="w-[18rpx] h-[36rpx]"
/>
<image src="https://lwzk.ycymedu.com/img/qt/tb_jiantou.png" mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</view>
@ -111,7 +103,7 @@ const navigateToUserInfo = () => {
<style lang="scss" scoped>
.custom-background {
background: linear-gradient(180deg, #C7E0FF 0%, #f8f8f8 530rpx);
background: linear-gradient(180deg, #ecf2ff 0%, #f6f8ff 40rpx, #fff 128rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;

View File

@ -49,7 +49,7 @@ const navigateToPage = (type: string) => {
</template>
</sar-navbar>
<view class="mt-[44rpx]">
<view class="mt-[30rpx]">
<view class="mx-[32rpx] rounded-[18rpx] mb-[20rpx] p-[32rpx] flex custom-item-bg"
v-for="(value, index) in testList" :key="index" @click="navigateToPage(value.type)">
<view class="flex flex-col justify-center">
@ -66,7 +66,7 @@ const navigateToPage = (type: string) => {
<style scoped>
.custom-background {
background: linear-gradient(180deg, #ebf1ff 0%, rgba(199, 224, 255, 0) 530rpx);
background: linear-gradient(180deg, #ecf2ff 0%, #f6f8ff 40rpx, #fff 128rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;

View File

@ -69,7 +69,7 @@ export const useUserStore = defineStore(
}
const initUserTalent = () => {
userInfo.value.talentExtend = userInfoState.talentExtend
userInfo.value.talentExtend = JSON.parse(JSON.stringify(userInfoState.talentExtend))
}
return {

View File

@ -1,3 +1,7 @@
.gradient-custom {
background: linear-gradient(to bottom, #D7E4FF 0%, #fff 110rpx);
background: linear-gradient(180deg, #ecf2ff 0%, #f6f8ff 40rpx, #fff 128rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;
background-size: auto auto;
}

View File

@ -101,11 +101,11 @@ function getImageByIndex(index: number, item: CustomTabBarItem) {
<view :class="item.icon" class="text-20px" />
</template>
<template v-if="item.iconType === 'image'">
<view class="h-20px w-20px">
<image :src="getImageByIndex(index, item)" mode="scaleToFill" class="h-20px w-20px" />
<view class="h-24px w-24px">
<image :src="getImageByIndex(index, item)" mode="scaleToFill" class="h-24px w-24px" />
</view>
</template>
<view class="mt-2px text-12px">
<view class="mt-2px text-14px">
{{ item.text }}
</view>
<!-- 角标显示 -->