feat: 钉钉适配

dingtalk
Mu Yi 2025-09-01 11:54:24 +08:00
parent 26d29fa646
commit 4bcb347d4a
63 changed files with 1274 additions and 695 deletions

View File

@ -2,7 +2,7 @@
// prettier // prettier
"editor.defaultFormatter": "esbenp.prettier-vscode", "editor.defaultFormatter": "esbenp.prettier-vscode",
// //
"editor.formatOnSave": true, "editor.formatOnSave": false,
// //
"editor.codeActionsOnSave": { "editor.codeActionsOnSave": {
"source.fixAll": "explicit", "source.fixAll": "explicit",
@ -10,8 +10,8 @@
"source.fixAll.stylelint": "explicit" "source.fixAll.stylelint": "explicit"
}, },
// stylelint // stylelint
"stylelint.validate": ["css", "scss", "vue", "html"], // package.jsonscripts "stylelint.validate": ["css", "vue", "html"], // package.jsonscripts
"stylelint.enable": true, "stylelint.enable": false,
"css.validate": false, "css.validate": false,
"less.validate": false, "less.validate": false,
"scss.validate": false, "scss.validate": false,
@ -22,7 +22,7 @@
"editor.defaultFormatter": "foxundermoon.shell-format" "editor.defaultFormatter": "foxundermoon.shell-format"
}, },
"[vue]": { "[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "Vue.volar"
}, },
"[typescript]": { "[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"

View File

@ -87,11 +87,22 @@
"bin-wrapper": "npm:bin-wrapper-china" "bin-wrapper": "npm:bin-wrapper-china"
}, },
"dependencies": { "dependencies": {
"@dcloudio/uni-app": "3.0.0-4020920240930001", "@dcloudio/uni-app": "3.0.0-4070520250711001",
"@dcloudio/uni-app-plus": "3.0.0-4020920240930001", "@dcloudio/uni-app-harmony": "3.0.0-4070520250711001",
"@dcloudio/uni-components": "3.0.0-4020920240930001", "@dcloudio/uni-app-plus": "3.0.0-4070520250711001",
"@dcloudio/uni-h5": "3.0.0-4020920240930001", "@dcloudio/uni-components": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-weixin": "3.0.0-4020920240930001", "@dcloudio/uni-h5": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-alipay": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-baidu": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-harmony": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-jd": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-lark": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-qq": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-toutiao": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-weixin": "3.0.0-4070520250711001",
"@dcloudio/uni-mp-xhs": "3.0.0-4070520250711001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4070520250711001",
"@tanstack/vue-query": "^5.62.16", "@tanstack/vue-query": "^5.62.16",
"abortcontroller-polyfill": "^1.7.8", "abortcontroller-polyfill": "^1.7.8",
"dayjs": "1.11.10", "dayjs": "1.11.10",
@ -99,17 +110,18 @@
"pinia-plugin-persistedstate": "3.2.1", "pinia-plugin-persistedstate": "3.2.1",
"pinyin-pro": "^3.26.0", "pinyin-pro": "^3.26.0",
"qs": "6.5.3", "qs": "6.5.3",
"vue": "3.4.21", "vue": "^3.4.21",
"vue-i18n": "^9.14.5",
"wot-design-uni": "^1.4.0" "wot-design-uni": "^1.4.0"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^18.6.1", "@commitlint/cli": "^18.6.1",
"@commitlint/config-conventional": "^18.6.3", "@commitlint/config-conventional": "^18.6.3",
"@dcloudio/types": "^3.4.14", "@dcloudio/types": "^3.4.8",
"@dcloudio/uni-automator": "3.0.0-4020920240930001", "@dcloudio/uni-automator": "3.0.0-4070520250711001",
"@dcloudio/uni-cli-shared": "3.0.0-4020920240930001", "@dcloudio/uni-cli-shared": "3.0.0-4070520250711001",
"@dcloudio/uni-stacktracey": "3.0.0-4020920240930001", "@dcloudio/uni-stacktracey": "3.0.0-4070520250711001",
"@dcloudio/vite-plugin-uni": "3.0.0-4020920240930001", "@dcloudio/vite-plugin-uni": "3.0.0-4070520250711001",
"@esbuild/darwin-arm64": "0.20.2", "@esbuild/darwin-arm64": "0.20.2",
"@esbuild/darwin-x64": "0.20.2", "@esbuild/darwin-x64": "0.20.2",
"@iconify-json/carbon": "^1.2.4", "@iconify-json/carbon": "^1.2.4",
@ -124,7 +136,7 @@
"@uni-helper/vite-plugin-uni-pages": "0.2.20", "@uni-helper/vite-plugin-uni-pages": "0.2.20",
"@uni-helper/vite-plugin-uni-platform": "^0.0.4", "@uni-helper/vite-plugin-uni-platform": "^0.0.4",
"@unocss/preset-legacy-compat": "^0.59.4", "@unocss/preset-legacy-compat": "^0.59.4",
"@vue/runtime-core": "^3.5.13", "@vue/runtime-core": "^3.4.21",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"commitlint": "^18.6.1", "commitlint": "^18.6.1",
@ -163,5 +175,8 @@
}, },
"minimize": { "minimize": {
"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize" "dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"
},
"volta": {
"node": "23.8.0"
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -14,6 +14,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { getWindowInfo } from '@/utils/tools'
import { ref } from 'vue' import { ref } from 'vue'
const props = defineProps({ const props = defineProps({
@ -27,7 +28,7 @@ const props = defineProps({
}, },
}) })
const systemInfo = uni.getWindowInfo() const systemInfo = getWindowInfo()
const position = ref({ x: props.initialX, y: props.initialY }) const position = ref({ x: props.initialX, y: props.initialY })
const startPosition = ref({ x: 0, y: 0 }) const startPosition = ref({ x: 0, y: 0 })
@ -110,11 +111,11 @@ const handleClick = () => {
<style scoped> <style scoped>
.fab-button { .fab-button {
position: fixed; position: fixed;
display: flex;
align-items: center;
justify-content: center;
width: 128rpx; width: 128rpx;
height: 128rpx; height: 128rpx;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer; cursor: pointer;
} }
</style> </style>

View File

@ -15,10 +15,12 @@
: '输入模考/高考成绩' : '输入模考/高考成绩'
}} }}
</text> </text>
<image <view class="w-[42rpx] h-[39rpx]">
class="w-[42rpx] h-[39rpx]" <image
src="https://api.static.ycymedu.com/src/images/home/pen.svg" class="w-[42rpx] h-[39rpx]"
></image> src="https://api.static.ycymedu.com/src/images/home/pen.svg"
></image>
</view>
</view> </view>
<view class="flex items-center justify-center" v-else> <view class="flex items-center justify-center" v-else>
<image <image

View File

@ -5,12 +5,13 @@
hover-class="none" hover-class="none"
:hover-stop-propagation="false" :hover-stop-propagation="false"
> >
<text class="text-[32rpx] text-[#333333] font-semibold">高考资讯</text> <text class="text-[32rpx] text-[#333333] font-semibold w-max">高考资讯</text>
<image <view class="w-[40rpx] h-[40rpx]">
class="w-[40rpx] h-[40rpx]" <image
src="https://api.static.ycymedu.com/src/images/home/right.svg" src="https://api.static.ycymedu.com/src/images/home/right.svg"
@click="toNewsPage" @click="toNewsPage"
></image> ></image>
</view>
</view> </view>
<view <view

View File

@ -5,12 +5,14 @@
hover-class="none" hover-class="none"
:hover-stop-propagation="false" :hover-stop-propagation="false"
> >
<text class="text-[32rpx] text-[#333333] font-semibold">热门排行榜</text> <text class="text-[32rpx] text-[#333333] font-semibold w-max">热门排行榜</text>
<image
class="w-[40rpx] h-[40rpx]" <view class="w-[40rpx] h-[40rpx]">
src="https://api.static.ycymedu.com/src/images/home/right.svg" <image
@click="toSchool('0')" src="https://api.static.ycymedu.com/src/images/home/right.svg"
></image> @click="toSchool('0')"
></image>
</view>
</view> </view>
<view <view
@ -19,63 +21,75 @@
:hover-stop-propagation="false" :hover-stop-propagation="false"
> >
<!-- 骨架屏 --> <!-- 骨架屏 -->
<view <template v-if="isLoading">
v-if="isLoading" <view
v-for="(_skeleton, index) in skeletonItems" v-for="(_skeleton, index) in skeletonItems"
:key="'skeleton-' + index" :key="'skeleton-' + index"
:class="`hot-rank-item flex-none skeleton-item`" :class="`hot-rank-item flex-none skeleton-item`"
hover-class="none" hover-class="none"
:hover-stop-propagation="false" :hover-stop-propagation="false"
> >
<view class="skeleton-text mx-[32rpx] mt-[32rpx] h-[40rpx] w-[120rpx] rounded"></view> <view class="skeleton-text mx-[32rpx] mt-[32rpx] h-[40rpx] w-[120rpx] rounded"></view>
<view class="flex items-center justify-left mt-[30rpx] mx-[32rpx]" v-for="i in 3" :key="i"> <view
<view class="skeleton-text w-[20rpx] h-[28rpx] mr-[10rpx] rounded"></view> class="flex items-center justify-left mt-[30rpx] mx-[32rpx]"
<view class="skeleton-image w-[80rpx] h-[80rpx] rounded-full flex-none mr-[16rpx]"></view> v-for="i in 3"
<view class="flex flex-col w-full"> :key="i"
<view class="skeleton-text h-[28rpx] w-[120rpx] rounded"></view> >
<view class="skeleton-text h-[22rpx] w-[100rpx] mt-[10rpx] rounded"></view> <view class="skeleton-text w-[20rpx] h-[28rpx] mr-[10rpx] rounded"></view>
<view
class="skeleton-image w-[80rpx] h-[80rpx] rounded-full flex-none mr-[16rpx]"
></view>
<view class="flex flex-col w-full">
<view class="skeleton-text h-[28rpx] w-[120rpx] rounded"></view>
<view class="skeleton-text h-[22rpx] w-[100rpx] mt-[10rpx] rounded"></view>
</view>
</view> </view>
</view> </view>
</view> </template>
<!-- 真实数据 --> <!-- 真实数据 -->
<view <template v-else>
v-else
:class="`hot-rank-item flex-none`"
hover-class="none"
:hover-stop-propagation="false"
v-for="typeWrap in universityTypeRankList"
:key="typeWrap.type"
@click="toSchool(typeWrap.type)"
v-show="typeWrap.rows.length > 0"
>
<text class="font-semibold text-[#303030] text-[32rpx] inline-block mx-[32rpx] mt-[32rpx]">
{{ typeWrap.name }}
</text>
<view <view
class="flex items-center justify-left mt-[30rpx] mx-[32rpx]" :class="`hot-rank-item flex-none`"
v-for="(item, index) in typeWrap.rows" hover-class="none"
:key="index" :hover-stop-propagation="false"
v-for="typeWrap in universityTypeRankList"
:key="typeWrap.type"
@click="toSchool(typeWrap.type)"
v-show="typeWrap.rows.length > 0"
> >
<text class="font-[28rpx] text-[#999999] font-normal mr-[10rpx]"> <text
{{ item.rank }} class="font-semibold text-[#303030] text-[32rpx] inline-block mx-[32rpx] mt-[32rpx]"
>
{{ typeWrap.name }}
</text> </text>
<image
class="w-[80rpx] h-[80rpx] rounded-full flex-none mr-[16rpx]" <view
:src="item.logo" class="flex items-center justify-left mt-[30rpx] mx-[32rpx]"
></image> v-for="(item, index) in typeWrap.rows"
<view class="truncate flex flex-col" hover-class="none"> :key="index"
<text class="font-normal text-[#333333] text-[28rpx] truncate"> >
{{ item.universityName }} <text class="font-[28rpx] text-[#999999] font-normal mr-[10rpx]">
</text> {{ item.rank }}
<text class="text-[22rpx] text-[#999999] font-normal mt-[10rpx]">
{{ item.cityName }}.{{ item.uType }}
</text> </text>
<view class="w-[80rpx] h-[80rpx] rounded-full">
<image
class="flex-none mr-[16rpx] w-full h-full rounded-full"
:src="item.logo"
></image>
</view>
<view class="truncate flex flex-col" hover-class="none">
<text class="font-normal text-[#333333] text-[28rpx] truncate">
{{ item.universityName }}
</text>
<text class="text-[22rpx] text-[#999999] font-normal mt-[10rpx]">
{{ item.cityName }}.{{ item.uType }}
</text>
</view>
</view> </view>
</view> </view>
</view> </template>
</view> </view>
</view> </view>
</template> </template>
@ -91,7 +105,7 @@ const toSchool = (id: string) => {
} }
const { unSortTypeList } = useUnSortType() const { unSortTypeList } = useUnSortType()
let universityTypeRankList = ref([]) const universityTypeRankList = ref([])
const isLoading = ref(true) const isLoading = ref(true)
// //
@ -138,22 +152,22 @@ watch(
<style lang="scss" scoped> <style lang="scss" scoped>
.hot-rank-item { .hot-rank-item {
position: relative;
width: 356rpx; width: 356rpx;
height: 452rpx; height: 452rpx;
position: relative;
background: #fff; background: #fff;
border-radius: 8px; border-radius: 8px;
} }
.hot-rank-item::before { .hot-rank-item::before {
content: '';
width: 360rpx;
height: 456rpx;
position: absolute; position: absolute;
border-radius: 8px;
top: -2rpx; top: -2rpx;
left: -2rpx; left: -2rpx;
z-index: -1; z-index: -1;
width: 360rpx;
height: 456rpx;
content: '';
border-radius: 8px;
} }
.hot-rank-outer .hot-rank-item:nth-child(1) { .hot-rank-outer .hot-rank-item:nth-child(1) {
@ -198,7 +212,6 @@ watch(
.hot-rank-outer .hot-rank-item:nth-child(5) { .hot-rank-outer .hot-rank-item:nth-child(5) {
background: linear-gradient(180deg, #e5ffc4 0%, rgba(213, 255, 196, 0) 23%, #fff 100%); background: linear-gradient(180deg, #e5ffc4 0%, rgba(213, 255, 196, 0) 23%, #fff 100%);
} }
/* 骨架屏样式 */ /* 骨架屏样式 */
.skeleton-text, .skeleton-text,
.skeleton-image { .skeleton-image {

View File

@ -51,6 +51,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { getDeviceInfo, getWindowInfo } from '@/utils/tools'
import { computed } from 'vue' import { computed } from 'vue'
defineProps({ defineProps({
@ -91,8 +92,9 @@ defineProps({
const emit = defineEmits(['clickLeft']) const emit = defineEmits(['clickLeft'])
// //
const systemInfo = uni.getWindowInfo() const systemInfo = getWindowInfo()
const deviceInfo = uni.getDeviceInfo() const deviceInfo = getDeviceInfo()
const statusBarHeight = systemInfo.statusBarHeight || 0 const statusBarHeight = systemInfo.statusBarHeight || 0
@ -131,20 +133,20 @@ const handleClickLeft = () => {
} }
.navbar-content { .navbar-content {
width: 100%; box-sizing: border-box;
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%;
/* justify-content: space-between; */ /* justify-content: space-between; */
padding: 0 16rpx; padding: 0 16rpx;
box-sizing: border-box;
background-color: #fff; background-color: #fff;
} }
.navbar-fixed { .navbar-fixed {
position: fixed; position: fixed;
left: 0; left: 0;
width: 100%;
z-index: 999; z-index: 999;
width: 100%;
} }
.navbar-border { .navbar-border {
@ -154,8 +156,8 @@ const handleClickLeft = () => {
.navbar-left { .navbar-left {
display: flex; display: flex;
align-items: center; align-items: center;
height: 100%;
min-width: 100rpx; min-width: 100rpx;
height: 100%;
} }
.back-icon { .back-icon {
@ -166,20 +168,20 @@ const handleClickLeft = () => {
} }
.navbar-title { .navbar-title {
/* flex: 1; */
text-align: center;
overflow: hidden;
height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 100%;
overflow: hidden;
/* flex: 1; */
text-align: center;
} }
.title-text { .title-text {
font-size: 34rpx;
color: #333;
font-weight: 500;
overflow: hidden; overflow: hidden;
font-size: 34rpx;
font-weight: 500;
color: #333;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
@ -187,8 +189,8 @@ const handleClickLeft = () => {
.navbar-right { .navbar-right {
display: flex; display: flex;
align-items: center; align-items: center;
min-width: 52rpx;
justify-content: flex-end; justify-content: flex-end;
min-width: 52rpx;
height: 100%; height: 100%;
} }

View File

@ -1,5 +1,6 @@
import { onReady } from '@dcloudio/uni-app' import { onReady } from '@dcloudio/uni-app'
import { getIsTabbar, getLastItem } from '@/utils/index' import { getIsTabbar, getLastItem } from '@/utils/index'
import { getWindowInfo } from '@/utils/tools'
export default () => { export default () => {
// 获取页面栈 // 获取页面栈
@ -9,7 +10,7 @@ export default () => {
// 页面滚动到底部时的操作,通常用于加载更多数据 // 页面滚动到底部时的操作,通常用于加载更多数据
const onScrollToLower = () => {} const onScrollToLower = () => {}
// 获取屏幕边界到安全区域距离 // 获取屏幕边界到安全区域距离
const { safeAreaInsets } = uni.getWindowInfo() const { safeAreaInsets } = getWindowInfo()
// #ifdef MP-WEIXIN // #ifdef MP-WEIXIN
// 基于小程序的 Page 类型扩展 uni-app 的 Page // 基于小程序的 Page 类型扩展 uni-app 的 Page

View File

@ -4,11 +4,13 @@
class="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col items-center bg-white p-[40rpx] rounded-[32rpx]" class="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col items-center bg-white p-[40rpx] rounded-[32rpx]"
@click.stop @click.stop
> >
<image <view class="w-[200rpx] h-[200rpx]">
class="w-[200rpx] h-[200rpx]" <image
src="https://api.static.ycymedu.com/images/logo.png" class="w-[200rpx] h-[200rpx]"
mode="aspectFit" src="https://api.static.ycymedu.com/images/logo.png"
></image> mode="aspectFit"
></image>
</view>
<view class="flex flex-col items-center"> <view class="flex flex-col items-center">
<text class="text-[26rpx] mt-[20rpx] mb-[40rpx]" :selectable="false"> <text class="text-[26rpx] mt-[20rpx] mb-[40rpx]" :selectable="false">
{{ phone ? '申请使用您的手机号' : '申请获取您的个人信息' }} {{ phone ? '申请使用您的手机号' : '申请获取您的个人信息' }}
@ -99,6 +101,8 @@ const handleClickPrivacyPolicy = () => {
} }
const getPhoneNumber = async (e: any) => { const getPhoneNumber = async (e: any) => {
console.log(e);
if (e.detail.errMsg == 'getPhoneNumber:ok') { if (e.detail.errMsg == 'getPhoneNumber:ok') {
const detail = e.detail const detail = e.detail
let _getPhoneInfo = { let _getPhoneInfo = {

View File

@ -51,6 +51,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { getDeviceInfo, getWindowInfo } from '@/utils/tools'
import { computed } from 'vue' import { computed } from 'vue'
defineProps({ defineProps({
@ -91,8 +92,8 @@ defineProps({
const emit = defineEmits(['clickLeft']) const emit = defineEmits(['clickLeft'])
// //
const systemInfo = uni.getWindowInfo() const systemInfo = getWindowInfo()
const deviceInfo = uni.getDeviceInfo() const deviceInfo = getDeviceInfo()
const statusBarHeight = systemInfo.statusBarHeight || 0 const statusBarHeight = systemInfo.statusBarHeight || 0
@ -131,20 +132,20 @@ const handleClickLeft = () => {
} }
.navbar-content { .navbar-content {
width: 100%; box-sizing: border-box;
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%;
/* justify-content: space-between; */ /* justify-content: space-between; */
padding: 0 16rpx; padding: 0 16rpx;
box-sizing: border-box;
background-color: #fff; background-color: #fff;
} }
.navbar-fixed { .navbar-fixed {
position: fixed; position: fixed;
left: 0; left: 0;
width: 100%;
z-index: 999; z-index: 999;
width: 100%;
} }
.navbar-border { .navbar-border {
@ -154,8 +155,8 @@ const handleClickLeft = () => {
.navbar-left { .navbar-left {
display: flex; display: flex;
align-items: center; align-items: center;
height: 100%;
min-width: 100rpx; min-width: 100rpx;
height: 100%;
} }
.back-icon { .back-icon {
@ -166,20 +167,20 @@ const handleClickLeft = () => {
} }
.navbar-title { .navbar-title {
/* flex: 1; */
text-align: center;
overflow: hidden;
height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 100%;
overflow: hidden;
/* flex: 1; */
text-align: center;
} }
.title-text { .title-text {
font-size: 34rpx;
color: #333;
font-weight: 500;
overflow: hidden; overflow: hidden;
font-size: 34rpx;
font-weight: 500;
color: #333;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
@ -187,8 +188,8 @@ const handleClickLeft = () => {
.navbar-right { .navbar-right {
display: flex; display: flex;
align-items: center; align-items: center;
min-width: 52rpx;
justify-content: flex-end; justify-content: flex-end;
min-width: 52rpx;
height: 100%; height: 100%;
} }

View File

@ -1,32 +1,22 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '新高考选科'
}, },
} }
</route> </route>
<template> <template>
<view class="h-screen flex flex-col"> <view class="h-screen flex flex-col bg-white">
<Navbar
safeAreaInsetTop
:bordered="false"
:fixed="true"
:placeholder="true"
left-arrow
bgColor="transparent"
@click-left="handleClickLeft"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium">新高考选科</text>
</template>
</Navbar>
<view class="flex flex-col justify-center items-center flex-1 pb-safe mt-[-100px]"> <view class="flex flex-col justify-center items-center flex-1 pb-safe mt-[-100px]">
<image <view class="w-[424rpx] h-[424rpx]">
class="w-[424rpx] h-[424rpx]" <image
src="https://api.static.ycymedu.com/images/logo.png" class="w-[424rpx] h-[424rpx]"
mode="aspectFit" src="https://api.static.ycymedu.com/images/logo.png"
></image> mode="aspectFit"
></image>
</view>
<button <button
class="w-[493rpx]! mb-[40rpx] h-[88rpx]! rounded-[44rpx] text-[32rpx] text-white flex items-center justify-center" 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]'" :class="checked.length > 0 ? 'bg-[#1580FF]' : 'bg-[#BFBFBF]'"
@ -82,6 +72,8 @@ const checked = ref([]) // 是否同意条款
const getPhoneInfo = ref(null) const getPhoneInfo = ref(null)
const getPhoneNumber = async (e: any) => { const getPhoneNumber = async (e: any) => {
console.log(e.detail);
if (e.detail.errMsg == 'getPhoneNumber:ok') { if (e.detail.errMsg == 'getPhoneNumber:ok') {
const detail = e.detail const detail = e.detail
let _getPhoneInfo = { let _getPhoneInfo = {

View File

@ -51,6 +51,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { getDeviceInfo, getWindowInfo } from '@/utils/tools'
import { computed } from 'vue' import { computed } from 'vue'
const props = defineProps({ const props = defineProps({
@ -91,8 +92,8 @@ const props = defineProps({
const emit = defineEmits(['clickLeft']) const emit = defineEmits(['clickLeft'])
// //
const systemInfo = uni.getWindowInfo() const systemInfo = getWindowInfo()
const deviceInfo = uni.getDeviceInfo() const deviceInfo = getDeviceInfo()
const statusBarHeight = systemInfo.statusBarHeight || 0 const statusBarHeight = systemInfo.statusBarHeight || 0
// //
@ -130,20 +131,20 @@ const handleClickLeft = () => {
} }
.navbar-content { .navbar-content {
width: 100%; box-sizing: border-box;
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%;
/* justify-content: space-between; */ /* justify-content: space-between; */
padding: 0 16rpx; padding: 0 16rpx;
box-sizing: border-box;
background-color: #fff; background-color: #fff;
} }
.navbar-fixed { .navbar-fixed {
position: fixed; position: fixed;
left: 0; left: 0;
width: 100%;
z-index: 99; z-index: 99;
width: 100%;
} }
.navbar-border { .navbar-border {
@ -164,20 +165,20 @@ const handleClickLeft = () => {
} }
.navbar-title { .navbar-title {
/* flex: 1; */
text-align: center;
overflow: hidden;
height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 100%;
overflow: hidden;
/* flex: 1; */
text-align: center;
} }
.title-text { .title-text {
font-size: 34rpx;
color: #333;
font-weight: 500;
overflow: hidden; overflow: hidden;
font-size: 34rpx;
font-weight: 500;
color: #333;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
@ -185,8 +186,8 @@ const handleClickLeft = () => {
.navbar-right { .navbar-right {
display: flex; display: flex;
align-items: center; align-items: center;
min-width: 52rpx;
justify-content: flex-end; justify-content: flex-end;
min-width: 52rpx;
height: 100%; height: 100%;
} }

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -1,24 +1,13 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '兴趣测评报告'
}, },
} }
</route> </route>
<template> <template>
<view class="flex flex-col h-screen relative custom-bg"> <view class="flex flex-col h-screen relative custom-bg">
<Navbar
safeAreaInsetTop
:bordered="false"
leftArrow
@clickLeft="handleBack"
bg-color="transparent"
>
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">兴趣测评报告</text>
</template>
</Navbar>
<view class="flex-1 overflow-auto relative mt-[40rpx]"> <view class="flex-1 overflow-auto relative mt-[40rpx]">
<view class="overflow-auto relative mt-[40rpx] flex-1 pb-[20rpx]"> <view class="overflow-auto relative mt-[40rpx] flex-1 pb-[20rpx]">

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,19 +2,15 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
<template> <template>
<view :scroll-y="true" class="flex flex-col h-screen relative custom-bg"> <view :scroll-y="true" class="flex flex-col h-screen relative custom-bg">
<Navbar <Navbar safeAreaInsetTop :bordered="false" leftArrow @clickLeft="handleBack" bg-color="transparent">
safeAreaInsetTop
:bordered="false"
leftArrow
@clickLeft="handleBack"
bg-color="transparent"
>
<template #title> <template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">MHT心理健康自评</text> <text class="text-[#1F2329] text-[36rpx] font-medium text-[#fff]">MHT心理健康自评</text>
</template> </template>
@ -68,6 +64,7 @@ onLoad((options) => {
.custom-bg { .custom-bg {
background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%); background: linear-gradient(184deg, #0d79fc 0%, #2186fc 100%);
} }
:deep(.icon-class) { :deep(.icon-class) {
color: #fff !important; color: #fff !important;
} }

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -1,28 +1,35 @@
<template> <template>
<CheckboxGroup <view class="custom-checkbox">
v-model="defValue"
checked-color="#1580FF" <CheckboxGroup v-model="defValue" checked-color="#1580FF" @change="handleChange" v-bind="$attrs" :default-cols="4">
@change="handleChange"
v-bind="$attrs" <Checkbox v-for="item in list" :key="item[valueKey]" :name="item[valueKey]" cell shape="button" :default-style="`
:style="{ '--default-cols': defaultCols }" ${checkboxStyle}
> --checkbox-bg: #f7f8fa;
<Checkbox --checkbox-radius: 8rpx;
v-for="item in list" --checkbox-active-border: 2rpx solid #1580ff;
:key="item[valueKey]" --checkbox-active-color: #1580ff;
:name="item[valueKey]"
cell height: var(--checkbox-height);
shape="button"
class="custom-checkbox" background-color: var(--checkbox-bg);
:style="checkboxStyle" border-radius: var(--checkbox-radius);
> display: flex;
{{ item[labelKey] }} align-items: center;
</Checkbox> justify-content: center;
</CheckboxGroup> `">
{{ item[labelKey] }}
</Checkbox>
</CheckboxGroup>
</view>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import Checkbox from './Checkbox.vue' import Checkbox from './Checkbox.vue'
import CheckboxGroup from './CheckboxGroup.vue' import CheckboxGroup from './CheckboxGroup.vue'
const props = defineProps({ const props = defineProps({
list: { list: {
type: Array, type: Array,
@ -84,15 +91,13 @@ watch(
const checkboxStyle = computed(() => { const checkboxStyle = computed(() => {
const width = typeof props.width === 'number' ? `${props.width}rpx` : props.width const width = typeof props.width === 'number' ? `${props.width}rpx` : props.width
const height = typeof props.height === 'number' ? `${props.height}rpx` : props.height const height = typeof props.height === 'number' ? `${props.height}rpx` : props.height
return { return `--checkbox-width: ${width};--checkbox-height: ${height};`
'--checkbox-width': width,
'--checkbox-height': height,
}
}) })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.custom-checkbox) { .custom-checkbox {
// //
--checkbox-width: 216rpx; --checkbox-width: 216rpx;
--checkbox-height: 60rpx; --checkbox-height: 60rpx;
@ -100,30 +105,29 @@ const checkboxStyle = computed(() => {
--checkbox-radius: 8rpx; --checkbox-radius: 8rpx;
color: #333; color: #333;
.checkbox {
width: var(--checkbox-width);
height: var(--checkbox-height);
min-width: var(--checkbox-width);
background-color: var(--checkbox-bg);
border-radius: var(--checkbox-radius);
display: flex;
align-items: center;
justify-content: center;
border: 2rpx solid var(--checkbox-bg);
}
.checkbox__icon {
display: none;
}
} }
:deep(.checkbox-group) { :deep(.ycym-checkbox) {
display: grid; width: var(--checkbox-width);
grid-template-columns: repeat(var(--default-cols), 1fr); height: var(--checkbox-height);
gap: 16rpx; min-width: var(--checkbox-width);
background-color: var(--checkbox-bg);
border-radius: var(--checkbox-radius);
display: flex;
align-items: center;
justify-content: center;
border: 2rpx solid var(--checkbox-bg);
} }
:deep(.checkbox__icon) {
display: none;
}
:deep(.checkbox-active) { :deep(.checkbox-active) {
border-color: #1580ff !important; border-color: #1580ff !important;
.checkbox__label { .checkbox__label {
color: #1580ff !important; color: #1580ff !important;
} }

View File

@ -1,6 +1,6 @@
<template> <template>
<view <view
class="checkbox" :style="`${defaultStyle}`"
:class="{ :class="{
'checkbox--disabled': isDisabled, 'checkbox--disabled': isDisabled,
'checkbox-active': isChecked, 'checkbox-active': isChecked,
@ -8,7 +8,7 @@
}" }"
@click="handleClick" @click="handleClick"
> >
<view class="checkbox__icon" :class="{ 'checkbox__icon--checked': isChecked }"> <view class="checkbox__icon" :class="{ 'checkbox__icon--checked': isChecked }" v-if="showIcon">
<text v-if="isChecked" class="i-carbon-checkmark checkbox__icon-check"></text> <text v-if="isChecked" class="i-carbon-checkmark checkbox__icon-check"></text>
</view> </view>
<view class="checkbox__label"> <view class="checkbox__label">
@ -33,6 +33,16 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: false, default: false,
}, },
showIcon:{
default:false
},
defaultStyle:{
type:String,
default: 'display: inline-flex;align-items: center;cursor: pointer;font-size: 28rpx;'
},
checkboxActive:{
default:'background-color: #0083ff;border-color: #0083ff;'
}
}) })
const emit = defineEmits(['change']) const emit = defineEmits(['change'])
@ -83,12 +93,6 @@ const handleClick = () => {
</script> </script>
<style scoped> <style scoped>
.checkbox {
display: inline-flex;
align-items: center;
cursor: pointer;
font-size: 28rpx;
}
.checkbox--disabled { .checkbox--disabled {
cursor: not-allowed; cursor: not-allowed;
@ -108,7 +112,6 @@ const handleClick = () => {
} }
.checkbox__icon--checked { .checkbox__icon--checked {
background-color: #0083ff;
border-color: #0083ff; border-color: #0083ff;
} }
@ -122,8 +125,8 @@ const handleClick = () => {
} }
.checkbox-active { .checkbox-active {
background-color: #0083ff; border:var(--checkbox-active-border);
border-color: #0083ff; color: var(--checkbox-active-color)
} }
.checkbox-disabled { .checkbox-disabled {

View File

@ -1,5 +1,5 @@
<template> <template>
<view class="checkbox-group"> <view class="checkbox-group" :style="`${checkgroupStyle}`">
<slot></slot> <slot></slot>
</view> </view>
</template> </template>
@ -20,6 +20,10 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: false, default: false,
}, },
checkgroupStyle:{
type:String,
default:'grid-template-columns: repeat(3, 1fr);'
}
}) })
const emit = defineEmits(['update:modelValue', 'change']) const emit = defineEmits(['update:modelValue', 'change'])
@ -64,9 +68,9 @@ provide('checkboxGroup', {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.checkbox-group {
display: flex; .checkbox-group{
flex-wrap: wrap; display: grid;
gap: 20rpx; gap: 16rpx;
} }
</style> </style>

View File

@ -1,12 +1,12 @@
<template> <template>
<view class="flex items-center rounded-[48rpx] bg-[#F7F7F7]! px-[24rpx] py-[12rpx] ml-[32rpx]"> <view class="flex items-center rounded-[48rpx] bg-[#F7F7F7] px-[24rpx] py-[12rpx] ml-[32rpx]">
<view class="i-carbon-search text-[#999]"></view> <view class="i-carbon-search text-[#999]"></view>
<input <input
v-model="searchValue" v-model="searchValue"
:placeholder="placeholder" :placeholder="placeholder"
confirm-type="search" confirm-type="search"
placeholder-style="color:#999" placeholder-style="color:#999"
class="text-start ml-20rpx" class="text-start ml-20rpx bg-transparent"
@confirm="handleConfirm" @confirm="handleConfirm"
@input="handleInput" @input="handleInput"
/> />

View File

@ -13,7 +13,7 @@
:class="[contentClass, fixed ? 'navbar-fixed' : '', bordered ? 'navbar-border' : '']" :class="[contentClass, fixed ? 'navbar-fixed' : '', bordered ? 'navbar-border' : '']"
:style="{ :style="{
backgroundColor: bgColor, backgroundColor: bgColor,
height: navHeight + 'px', height: `${navHeight}px`,
top: fixed ? (safeAreaInsetTop ? statusBarHeight : 0) + 'px' : '0', top: fixed ? (safeAreaInsetTop ? statusBarHeight : 0) + 'px' : '0',
}" }"
> >
@ -51,7 +51,8 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from 'vue' import { getDeviceInfo, getWindowInfo } from '@/utils/tools'
defineProps({ defineProps({
title: { title: {
@ -95,8 +96,9 @@ defineProps({
const emit = defineEmits(['clickLeft']) const emit = defineEmits(['clickLeft'])
// //
const systemInfo = uni.getWindowInfo() const deviceInfo = getDeviceInfo()
const deviceInfo = uni.getDeviceInfo() const systemInfo = getWindowInfo()
const statusBarHeight = systemInfo.statusBarHeight || 0 const statusBarHeight = systemInfo.statusBarHeight || 0
// //
@ -134,20 +136,20 @@ const handleClickLeft = () => {
} }
.navbar-content { .navbar-content {
width: 100%; box-sizing: border-box;
display: flex; display: flex;
align-items: center; align-items: center;
width: 100%;
/* justify-content: space-between; */ /* justify-content: space-between; */
padding: 0 16rpx; padding: 0 16rpx;
box-sizing: border-box;
background-color: #fff; background-color: #fff;
} }
.navbar-fixed { .navbar-fixed {
position: fixed; position: fixed;
left: 0; left: 0;
width: 100%;
z-index: 99; z-index: 99;
width: 100%;
} }
.navbar-border { .navbar-border {
@ -168,20 +170,20 @@ const handleClickLeft = () => {
} }
.navbar-title { .navbar-title {
/* flex: 1; */
text-align: center;
overflow: hidden;
height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 100%;
overflow: hidden;
/* flex: 1; */
text-align: center;
} }
.title-text { .title-text {
font-size: 34rpx;
color: #333;
font-weight: 500;
overflow: hidden; overflow: hidden;
font-size: 34rpx;
font-weight: 500;
color: #333;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
@ -189,8 +191,8 @@ const handleClickLeft = () => {
.navbar-right { .navbar-right {
display: flex; display: flex;
align-items: center; align-items: center;
min-width: 52rpx;
justify-content: flex-end; justify-content: flex-end;
min-width: 52rpx;
height: 100%; height: 100%;
} }

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
<template> <template>
<view v-if="slot.default"> <view>
<slot></slot> <slot></slot>
</view> </view>
</template> </template>

View File

@ -22,7 +22,6 @@ export function useTable() {
const addColumn = (column: Column) => { const addColumn = (column: Column) => {
columns.value.push(column) columns.value.push(column)
} }
provide(key, { provide(key, {
columns, columns,
addColumn, addColumn,

View File

@ -1,26 +1,23 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '在线客服'
}, },
} }
</route> </route>
<template> <template>
<view class="bg-[#fff] h-[100vh] flex flex-col"> <view class="bg-[#fff] h-[100vh] flex flex-col">
<Navbar safeAreaInsetTop :bordered="false" title="在线客服" leftArrow @clickLeft="handleBack">
<template #title>
<text class="text-[#1F2329] text-[36rpx] font-medium">在线客服</text>
</template>
</Navbar>
<view class="flex-1 bg-[#F8F8F8] px-[32rpx] pb-safe"> <view class="flex-1 bg-[#F8F8F8] px-[32rpx] pb-safe">
<view class="mt-[84rpx] h-[754rpx] rounded-[16rpx] bg-[#fff]"> <view class="mt-[84rpx] h-[754rpx] rounded-[16rpx] bg-[#fff]">
<view class="py-[48rpx] mx-[48rpx] avatar-border flex justify-center items-center"> <view class="py-[48rpx] mx-[48rpx] avatar-border flex justify-center items-center">
<image <view class="min-w-[144rpx] min-h-[144rpx] w-[144rpx] h-[144rpx]">
class="min-w-[144rpx] min-h-[144rpx] w-[144rpx] h-[144rpx] rounded-full" <image
src="https://api.static.ycymedu.com/sub/images/customerService/avatar.jpg" class=" rounded-full"
></image> src="https://api.static.ycymedu.com/sub/images/customerService/avatar.jpg"
></image>
</view>
<view class="flex flex-col text-[#000] ml-[32rpx]"> <view class="flex flex-col text-[#000] ml-[32rpx]">
<text class="mb-[12rpx] font-normal text-[28rpx]">专属客服为您服务</text> <text class="mb-[12rpx] font-normal text-[28rpx]">专属客服为您服务</text>
<view class="flex items-center"> <view class="flex items-center">
@ -55,7 +52,6 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import Navbar from '@/pages-sub/components/navbar/Navbar.vue'
import { useUserStore } from '@/store' import { useUserStore } from '@/store'
const userStore = useUserStore() const userStore = useUserStore()
@ -84,10 +80,6 @@ const makePhoneCall = () => {
}) })
} }
const handleBack = () => {
uni.navigateBack()
}
onBeforeMount(() => { onBeforeMount(() => {
phoneNumber.value = contact[userStore.userInfo.city.code]?.phone || phoneNumber.value phoneNumber.value = contact[userStore.userInfo.city.code]?.phone || phoneNumber.value
qrCodeUrl.value = contact[userStore.userInfo.city.code]?.qrCode || qrCodeUrl.value qrCodeUrl.value = contact[userStore.userInfo.city.code]?.qrCode || qrCodeUrl.value

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
needLogin: true, needLogin: true,
} }

View File

@ -1,13 +1,12 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '城市列表'
}, },
} }
</route> </route>
<template> <template>
<view class="wraper overflow-hidden flex flex-col" :bordered="false"> <view class="wraper overflow-hidden flex flex-col" :bordered="false">
<Navbar title="城市列表" left-arrow @click-left="navigatorBack" safeAreaInsetTop />
<wd-index-bar sticky class="overflow-y h-0 flex-auto"> <wd-index-bar sticky class="overflow-y h-0 flex-auto">
<view v-for="item in cities" :key="item.letter"> <view v-for="item in cities" :key="item.letter">
<wd-index-anchor :index="item.letter" /> <wd-index-anchor :index="item.letter" />
@ -28,7 +27,6 @@
import { useCityStore } from '@/store/city' import { useCityStore } from '@/store/city'
import { useUserStore } from '@/store/user' import { useUserStore } from '@/store/user'
import { City } from '@/types/app-type' import { City } from '@/types/app-type'
import Navbar from '@/pages-sub/components/navbar/Navbar.vue'
import { getUserCity } from '@/service/index/api' import { getUserCity } from '@/service/index/api'
const cityStore = useCityStore() const cityStore = useCityStore()

View File

@ -56,7 +56,7 @@
@change-name="handleRegionChangeName" @change-name="handleRegionChangeName"
:defaultValue="provinceCode" :defaultValue="provinceCode"
:max="1" :max="1"
class="custom-check-group w-full" class="w-full"
:defaultCols="4" :defaultCols="4"
/> />
</view> </view>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -49,21 +51,21 @@
v-if="currentMenu === 1" v-if="currentMenu === 1"
@changeName="handleRegionChange" @changeName="handleRegionChange"
@change="handleRegionIdChange" @change="handleRegionIdChange"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
/> />
<Nature <Nature
v-if="currentMenu === 2" v-if="currentMenu === 2"
:defaultValue="natureKeyInfo" :defaultValue="natureKeyInfo"
@changeName="handleNatureChange" @changeName="handleNatureChange"
@change="handleNatureIdChange" @change="handleNatureIdChange"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
/> />
<UniType <UniType
v-if="currentMenu === 3" v-if="currentMenu === 3"
:defaultValue="uniTypeKeyInfo" :defaultValue="uniTypeKeyInfo"
@changeName="handleUniTypeChange" @changeName="handleUniTypeChange"
@change="handleUniTypeIdChange" @change="handleUniTypeIdChange"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
/> />
<view class="flex items-center justify-between px-[32rpx] pb-[32rpx] gap-[20rpx]"> <view class="flex items-center justify-between px-[32rpx] pb-[32rpx] gap-[20rpx]">
<view class="cancel-btn" @click="handleClear(index)"></view> <view class="cancel-btn" @click="handleClear(index)"></view>
@ -80,8 +82,10 @@
v-for="item in schoolList" v-for="item in schoolList"
@click="itemClick(item, item.zp_index)" @click="itemClick(item, item.zp_index)"
> >
<view class="flex items-center p-[32rpx] w-full"> <view class="flex items-center p-[32rpx]">
<image class="w-[80rpx] h-[80rpx] ml-[18rpx] mr-[24rpx]" :src="item.logo"></image> <view class="w-[80rpx] h-[80rpx] ml-[18rpx] mr-[24rpx]">
<image class="w-[80rpx] h-[80rpx]" :src="item.logo"></image>
</view>
<view class="flex justify-between items-center flex-1 overflow-y-hidden"> <view class="flex justify-between items-center flex-1 overflow-y-hidden">
<view class="flex flex-col w-full" hover-class="none"> <view class="flex flex-col w-full" hover-class="none">
<text class="text-[28rpx] text-[#333] font-semibold mb-[6rpx]"> <text class="text-[28rpx] text-[#333] font-semibold mb-[6rpx]">

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
needLogin: true, needLogin: true,
} }

View File

@ -4,6 +4,7 @@
@change="handleChange" @change="handleChange"
label-key="simplename" label-key="simplename"
v-bind="$attrs" v-bind="$attrs"
:defaultCols="4"
width="100%" width="100%"
/> />
</template> </template>
@ -12,6 +13,10 @@
import { getRegionInfo } from '@/service/index/api' import { getRegionInfo } from '@/service/index/api'
import CheckGroup from '@/pages-sub/components/check-group/CheckGroup.vue' import CheckGroup from '@/pages-sub/components/check-group/CheckGroup.vue'
defineOptions({
inheritAttrs:true
})
interface Region { interface Region {
code: string code: string
name: string name: string

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText:'查扩缩招'
}, },
} }
</route> </route>
@ -18,17 +18,6 @@
:safe-area-inset-bottom="true" :safe-area-inset-bottom="true"
> >
<template #top> <template #top>
<view class="relative">
<Navbar
safeAreaInsetTop
bg-color="transparent"
:bordered="false"
left-arrow
title="查扩缩招"
@click-left="navigatorBack"
/>
<view class="custom-background h-[200rpx] w-full absolute top-0 left-0 z-[-1]"></view>
</view>
<drop-menu ref="dropMenuRef"> <drop-menu ref="dropMenuRef">
<drop-menu-item <drop-menu-item
:key="item.id" :key="item.id"
@ -41,21 +30,21 @@
:defaultValue="regionKeyInfo" :defaultValue="regionKeyInfo"
@changeName="handleRegionChange" @changeName="handleRegionChange"
@change="handleRegionChangeCode" @change="handleRegionChangeCode"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
v-if="item.id === 1" v-if="item.id === 1"
/> />
<Nature <Nature
:defaultValue="natureKeyInfo" :defaultValue="natureKeyInfo"
@changeName="handleNatureChange" @changeName="handleNatureChange"
@change="handleNatureChangeCode" @change="handleNatureChangeCode"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
v-if="item.id === 2" v-if="item.id === 2"
/> />
<UniType <UniType
:defaultValue="uniTypeKeyInfo" :defaultValue="uniTypeKeyInfo"
@change-name="handleUniTypeChange" @change-name="handleUniTypeChange"
@change="handleUniTypeChangeCode" @change="handleUniTypeChangeCode"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
v-if="item.id === 3" v-if="item.id === 3"
/> />
<view class="flex items-center justify-between px-[32rpx] pb-[32rpx] gap-[20rpx]"> <view class="flex items-center justify-between px-[32rpx] pb-[32rpx] gap-[20rpx]">
@ -101,7 +90,9 @@
> >
<view class="flex items-center justify-between text-[20rpx] text-[#333] py-[16rpx]"> <view class="flex items-center justify-between text-[20rpx] text-[#333] py-[16rpx]">
<view class="flex-1 flex items-center"> <view class="flex-1 flex items-center">
<image :src="item.logo" mode="scaleToFill" class="w-[72rpx] h-[72rpx] mr-[6rpx]" /> <view class="w-[72rpx] h-[72rpx] mr-[6rpx]">
<image :src="item.logo" mode="scaleToFill" class="w-full h-full" />
</view>
<view class="ml-[6rpx]"> <view class="ml-[6rpx]">
<view class="text-[32rpx] font-semibold text-wrap max-w-[200rpx]"> <view class="text-[32rpx] font-semibold text-wrap max-w-[200rpx]">
{{ item.name }} {{ item.name }}
@ -139,7 +130,6 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import Navbar from '@/pages-sub/components/navbar/Navbar.vue'
import { useUserStore } from '@/store' import { useUserStore } from '@/store'
import DropMenu from '@/pages-sub/components/drop-menu/DropMenu.vue' import DropMenu from '@/pages-sub/components/drop-menu/DropMenu.vue'
import DropMenuItem from '@/pages-sub/components/drop-menu/DropMenuItem.vue' import DropMenuItem from '@/pages-sub/components/drop-menu/DropMenuItem.vue'
@ -199,7 +189,7 @@ const queryList = (page: number, pageSize: number) => {
getAdmissionTrends({ getAdmissionTrends({
pageIndex: page, pageIndex: page,
pageSize, pageSize,
locationCode: userStore.userInfo.estimatedAchievement.provinceCode, locationCode: userStore.userInfo.estimatedAchievement.provinceCode || '370000',
provinceName: searchParams.value.locationName, provinceName: searchParams.value.locationName,
utype: searchParams.value.type, utype: searchParams.value.type,
nature: searchParams.value.searchNature, nature: searchParams.value.searchNature,

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
needLogin: true, needLogin: true,
} }

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -28,7 +30,7 @@
<Region <Region
:defaultValue="searchParams.locationCode ? [searchParams.locationCode] : []" :defaultValue="searchParams.locationCode ? [searchParams.locationCode] : []"
:max="1" :max="1"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
@changeName="handleRegionChange" @changeName="handleRegionChange"
@change="handleRegionChangeCode" @change="handleRegionChangeCode"
/> />
@ -46,18 +48,20 @@
labelKey="year" labelKey="year"
valueKey="year" valueKey="year"
:max="1" :max="1"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
width="100%" width="100%"
/> />
</drop-menu-item> </drop-menu-item>
</drop-menu> </drop-menu>
<WXXTable :data="lineList" class="px-[32rpx] mt-[16rpx] pb-safe flex-1"> <view class="px-[32rpx] mt-[16rpx] pb-safe flex-1">
<WXXTableCol prop="province_name" label="地区" width="14%"></WXXTableCol> <WXXTable :data="lineList">
<WXXTableCol prop="year" label="年份" width="23%"></WXXTableCol> <WXXTableCol prop="province_name" label="地区" width="14%"></WXXTableCol>
<WXXTableCol prop="subject_name" label="类别" width="23%"></WXXTableCol> <WXXTableCol prop="year" label="年份" width="23%"></WXXTableCol>
<WXXTableCol prop="batch_name" label="批次" width="23%"></WXXTableCol> <WXXTableCol prop="subject_name" label="类别" width="23%"></WXXTableCol>
<WXXTableCol prop="score" label="分数线" width="17%"></WXXTableCol> <WXXTableCol prop="batch_name" label="批次" width="23%"></WXXTableCol>
</WXXTable> <WXXTableCol prop="score" label="分数线" width="17%"></WXXTableCol>
</WXXTable>
</view>
</view> </view>
</template> </template>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -9,7 +11,7 @@
<view class="flex flex-col h-screen"> <view class="flex flex-col h-screen">
<Navbar <Navbar
safeAreaInsetTop safeAreaInsetTop
bg-color="transparent" bg-color="#fff"
:bordered="false" :bordered="false"
left-arrow left-arrow
@click-left="navigatorBack" @click-left="navigatorBack"
@ -36,19 +38,19 @@
class="h-full" class="h-full"
:type="1050" :type="1050"
:keyword="searchValue" :keyword="searchValue"
v-show="currentTab === 0" v-if="currentTab === 0"
></MajorList> ></MajorList>
<MajorList <MajorList
class="h-full" class="h-full"
:type="1070" :type="1070"
:keyword="searchValue" :keyword="searchValue"
v-show="currentTab === 1" v-if="currentTab === 1"
></MajorList> ></MajorList>
<MajorList <MajorList
class="h-full" class="h-full"
:type="1060" :type="1060"
:keyword="searchValue" :keyword="searchValue"
v-show="currentTab === 2" v-if="currentTab === 2"
></MajorList> ></MajorList>
</view> </view>
</view> </view>

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>

View File

@ -1,21 +1,13 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '详细信息'
}, },
} }
</route> </route>
<template> <template>
<view class="flex flex-col h-screen"> <view class="flex flex-col h-screen">
<Navbar
title="详细信息"
left-arrow
@click-left="navigatorBack"
safeAreaInsetTop
:bordered="false"
custom-class="bg-transparent! z-[99]"
/>
<view class="flex-1 overflow-auto pb-safe"> <view class="flex-1 overflow-auto pb-safe">
<view class="flex flex-col px-[32rpx]"> <view class="flex flex-col px-[32rpx]">
<text class="font-semibold text-[28rpx] text-[#1F2329]"> <text class="font-semibold text-[28rpx] text-[#1F2329]">
@ -37,12 +29,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useCityNewDetail, newsDetail } from '@/hooks/useCityInfoHook' import { useCityNewDetail, newsDetail } from '@/hooks/useCityInfoHook'
import Navbar from '@/pages-sub/components/navbar/Navbar.vue'
const navigatorBack = () => {
uni.navigateBack()
}
onLoad((option) => { onLoad((option) => {
let newsId = option.newsId let newsId = option.newsId
useCityNewDetail(newsId) useCityNewDetail(newsId)

View File

@ -1,7 +1,7 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '高考头条'
}, },
} }
</route> </route>
@ -16,19 +16,6 @@
@virtualListChange="virtualListChange" @virtualListChange="virtualListChange"
@query="queryList" @query="queryList"
> >
<!-- 需要固定在顶部不滚动的view放在slot="top"的view中如果需要跟着滚动则不要设置slot="top" -->
<template #top>
<view class="relative h-max" hover-class="none" :hover-stop-propagation="false">
<Navbar
title="高考头条"
left-arrow
@click-left="navigatorBack"
safeAreaInsetTop
:bordered="false"
custom-class="bg-transparent! z-[99]"
/>
</view>
</template>
<view <view
class="item-wrapper" class="item-wrapper"
:id="`zp-id-${item.zp_index}`" :id="`zp-id-${item.zp_index}`"
@ -58,11 +45,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { getNewsList } from '@/service/index/api' import { getNewsList } from '@/service/index/api'
import { useUserStore } from '@/store/user' import { useUserStore } from '@/store/user'
import Navbar from '@/pages-sub/components/navbar/Navbar.vue'
const navigatorBack = () => {
uni.navigateBack()
}
const userStore = useUserStore() const userStore = useUserStore()

View File

@ -1,7 +1,7 @@
<route lang="json5" type="page"> <route lang="json5" type="page">
{ {
style: { style: {
navigationStyle: 'custom', navigationBarTitleText: '院校排行榜'
}, },
} }
</route> </route>
@ -18,26 +18,24 @@
<!-- 需要固定在顶部不滚动的view放在slot="top"的view中如果需要跟着滚动则不要设置slot="top" --> <!-- 需要固定在顶部不滚动的view放在slot="top"的view中如果需要跟着滚动则不要设置slot="top" -->
<template #top> <template #top>
<view class="relative h-[400rpx]" hover-class="none" :hover-stop-propagation="false"> <view class="relative h-[400rpx]" hover-class="none" :hover-stop-propagation="false">
<Navbar <view class="absolute top-0 z-[-1]">
title="院校排行榜" <image
left-arrow class=""
@click-left="navigatorBack" src="https://api.static.ycymedu.com/sub/images/schoolRank/background.svg"
safeAreaInsetTop />
:bordered="false" </view>
bgColor="transparent" <view class="h-[78rpx] w-[270rpx] absolute top-[249rpx] left-[102rpx] z-[-1]">
/> <image
<image class=""
class="absolute top-0 z-[-1]" src="https://api.static.ycymedu.com/sub/images/schoolRank/title.svg"
src="https://api.static.ycymedu.com/sub/images/schoolRank/background.svg" />
/> </view>
<image <view class="h-[190rpx] w-[190rpx] absolute top-[194rpx] left-[460rpx] mix-blend-multiply z-[-1]">
class="h-[78rpx] w-[270rpx] absolute top-[249rpx] left-[102rpx] z-[-1]" <image
src="https://api.static.ycymedu.com/sub/images/schoolRank/title.svg" class=""
/> src="https://api.static.ycymedu.com/sub/images/schoolRank/trophy.png"
<image />
class="h-[190rpx] w-[190rpx] absolute top-[194rpx] left-[460rpx] mix-blend-multiply z-[-1]" </view>
src="https://api.static.ycymedu.com/sub/images/schoolRank/trophy.png"
/>
</view> </view>
<view class="my-[24rpx]"> <view class="my-[24rpx]">
<z-tabs <z-tabs
@ -55,7 +53,7 @@
top: '0', top: '0',
zIndex: '99', zIndex: '99',
height: '52rpx', height: '52rpx',
gap: '16rpx', background:'transparent'
}" }"
:active-style="{ :active-style="{
background: 'linear-gradient( 270deg, #F2CE95 0%, #F8DEBA 100%)', background: 'linear-gradient( 270deg, #F2CE95 0%, #F8DEBA 100%)',
@ -74,7 +72,9 @@
> >
<view class="flex items-center py-[32rpx] w-full"> <view class="flex items-center py-[32rpx] w-full">
<text class="text-[28rpx] text-[#999] font-normal">{{ item.rank }}</text> <text class="text-[28rpx] text-[#999] font-normal">{{ item.rank }}</text>
<image class="w-[80rpx] h-[80rpx] ml-[18rpx] mr-[24rpx]" :src="item.logo"></image> <view class="w-[80rpx] h-[80rpx] ml-[18rpx] mr-[24rpx]">
<image class="" :src="item.logo"></image>
</view>
<view class="flex justify-between items-center flex-1"> <view class="flex justify-between items-center flex-1">
<view class="flex flex-col" hover-class="none"> <view class="flex flex-col" hover-class="none">
<text class="text-[28rpx] text-[#333] font-medium mb-[10rpx]"> <text class="text-[28rpx] text-[#333] font-medium mb-[10rpx]">
@ -99,7 +99,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { getUniversityRank, getUnSortType } from '@/service/index/api' import { getUniversityRank, getUnSortType } from '@/service/index/api'
import zTabs from '@/pages-sub/uni_modules/z-tabs/components/z-tabs/z-tabs.vue' import zTabs from '@/pages-sub/uni_modules/z-tabs/components/z-tabs/z-tabs.vue'
import Navbar from '@/pages-sub/components/navbar/Navbar.vue'
type UnSortType = { type: number; name: string }[] type UnSortType = { type: number; name: string }[]
@ -108,9 +108,7 @@ getUnSortType().then((res) => {
unSortTypeList.value = res.result as UnSortType unSortTypeList.value = res.result as UnSortType
}) })
const navigatorBack = () => {
uni.navigateBack()
}
const tabIndex = ref<number>(0) const tabIndex = ref<number>(0)
const tabsRef = ref(null) const tabsRef = ref(null)
@ -188,22 +186,29 @@ const handleTabChange = (index: number) => {
:deep(.z-tabs-item) { :deep(.z-tabs-item) {
width: 160rpx; width: 160rpx;
font-size: 28rpx; font-size: 28rpx;
font-weight: 500; font-weight: 500;
color: #a28c6c; color: #a28c6c;
background-color: #f5efe1; background-color: #f5efe1;
border-radius: 8rpx; border-radius: 8rpx;
padding: 0 !important; padding: 0 !important;
} }
:deep(.z-tabs-item):not(:last-child){
margin-right: 16rpx;
}
:deep(.z-tabs-list.tabs--z-tabs-list) { :deep(.z-tabs-list.tabs--z-tabs-list) {
margin-top: 0 !important; margin-top: 0 !important;
display: flex; display: flex;
gap: 16rpx; gap: 16rpx;
} }
:deep(.z-tabs-list){
margin-top: 0 !important;
}
:deep(.z-tabs-item-title-container) { :deep(.z-tabs-item-title-container) {
height: 100%; height: 100%;
flex: 1 1 auto; flex: 1 1 auto;

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -117,7 +119,7 @@
v-show="actionType === 2" v-show="actionType === 2"
width="210rpx" width="210rpx"
height="60rpx" height="60rpx"
class="custom-check-group" checkgroupStyle="display: grid;grid-template-columns: repeat(4, 1fr);gap: 16rpx;padding: 24rpx 24rpx 36rpx;"
@change-name="handleRegionName" @change-name="handleRegionName"
/> />

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -20,24 +22,29 @@
></Navbar> ></Navbar>
<view class="bg-[#fff] rounded-[8rpx] px-[46rpx] pt-[40rpx] pb-[30rpx] mx-[30rpx] mt-[40rpx]"> <view class="bg-[#fff] rounded-[8rpx] px-[46rpx] pt-[40rpx] pb-[30rpx] mx-[30rpx] mt-[40rpx]">
<view class="flex items-center gap-[12rpx]"> <view class="flex items-center gap-[12rpx]">
<image <view class="w-[60rpx] h-[60rpx]">
:src="userStore.userInfo?.avatar" <image
mode="scaleToFill" :src="userStore.userInfo?.avatar"
class="w-[60rpx] h-[60rpx] rounded-full" mode="scaleToFill"
/> class="rounded-full"
/>
</view>
<text class="text-[#000] text-[36rpx] font-bold">{{ userStore.userInfo?.nickname }}</text> <text class="text-[#000] text-[36rpx] font-bold">{{ userStore.userInfo?.nickname }}</text>
<image <view class="w-[120rpx] h-[28rpx]" v-if="isVIP">
src="https://api.static.ycymedu.com/sub/images/ucenter/vip-flag.png" <image
mode="scaleToFill" src="https://api.static.ycymedu.com/sub/images/ucenter/vip-flag.png"
class="w-[120rpx] h-[28rpx]" mode="scaleToFill"
v-if="isVIP" class="w-full h-full"
/>
<image />
v-else </view>
src="https://api.static.ycymedu.com/sub/images/ucenter/no-vip.png" <view v-else class="w-[120rpx] h-[28rpx]">
mode="scaleToFill" <image
class="w-[120rpx] h-[28rpx]" src="https://api.static.ycymedu.com/sub/images/ucenter/no-vip.png"
/> mode="scaleToFill"
class="w-full h-full"
/>
</view>
</view> </view>
<view class="mt-[40rpx]"> <view class="mt-[40rpx]">
@ -137,8 +144,6 @@ const isVIP = computed(() => {
}) })
const handleClickLeft = () => { const handleClickLeft = () => {
console.log(123)
uni.navigateBack() uni.navigateBack()
} }

View File

@ -55,7 +55,9 @@
"style": { "style": {
"navigationStyle": "custom", "navigationStyle": "custom",
"enableShareAppMessage": true, "enableShareAppMessage": true,
"enableShareTimeline": true "enableShareTimeline": true,
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
@ -84,7 +86,9 @@
"path": "pages/ucenter/index/index", "path": "pages/ucenter/index/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
} }
], ],
@ -123,14 +127,16 @@
"path": "evaluation/assessmentPage", "path": "evaluation/assessmentPage",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "customerService/index/index", "path": "customerService/index/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "在线客服"
} }
}, },
{ {
@ -163,14 +169,18 @@
"path": "home/career/index", "path": "home/career/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "home/career/info", "path": "home/career/info",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
}, },
"needLogin": true "needLogin": true
}, },
@ -178,28 +188,34 @@
"path": "home/city/index", "path": "home/city/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "城市列表"
} }
}, },
{ {
"path": "home/college/enrollmentIntroDetail", "path": "home/college/enrollmentIntroDetail",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "home/college/index", "path": "home/college/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "home/college/info", "path": "home/college/info",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
}, },
"needLogin": true "needLogin": true
}, },
@ -207,21 +223,23 @@
"path": "home/distinguish/index", "path": "home/distinguish/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "大学甄别"
} }
}, },
{ {
"path": "home/expand/index", "path": "home/expand/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "查扩缩招"
} }
}, },
{ {
"path": "home/inputScore/index", "path": "home/inputScore/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
}, },
"needLogin": true "needLogin": true
}, },
@ -229,49 +247,57 @@
"path": "home/line/index", "path": "home/line/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "home/major/index", "path": "home/major/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "home/major/info", "path": "home/major/info",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "home/news/index", "path": "home/news/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "详细信息"
} }
}, },
{ {
"path": "home/news/newsList", "path": "home/news/newsList",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "高考头条"
} }
}, },
{ {
"path": "home/schoolRank/index", "path": "home/schoolRank/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "院校排行榜"
} }
}, },
{ {
"path": "home/wishesList/index", "path": "home/wishesList/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
@ -285,7 +311,9 @@
"path": "ucenter/active/activePage", "path": "ucenter/active/activePage",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
@ -350,7 +378,7 @@
"path": "index", "path": "index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "新高考选科"
} }
}, },
{ {
@ -385,77 +413,97 @@
"path": "rank/index", "path": "rank/index",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/academicReport/capabilityReport", "path": "evaluate/academicReport/CapabilityReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/academicReport/characterReport", "path": "evaluate/academicReport/CharacterReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/academicReport/interestReport", "path": "evaluate/academicReport/InterestReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationBarTitleText": "兴趣测评报告"
} }
}, },
{ {
"path": "evaluate/academicReport/opinionAboutReport", "path": "evaluate/academicReport/opinionAboutReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/psychologicalReport/mhtReport", "path": "evaluate/psychologicalReport/mhtReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/psychologicalReport/sasReport", "path": "evaluate/psychologicalReport/sasReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/psychologicalReport/sdsReport", "path": "evaluate/psychologicalReport/sdsReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
}
},
{
"path": "evaluate/studyReport/LearnSkillReport",
"type": "page",
"style": {
"navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
}
},
{
"path": "evaluate/studyReport/LearnStudyReport",
"type": "page",
"style": {
"navigationStyle": "custom",
"transparentTitle": "always",
"navigationBarTitleText": ""
} }
}, },
{ {
"path": "evaluate/studyReport/anxietyReport", "path": "evaluate/studyReport/anxietyReport",
"type": "page", "type": "page",
"style": { "style": {
"navigationStyle": "custom" "navigationStyle": "custom",
} "transparentTitle": "always",
}, "navigationBarTitleText": ""
{
"path": "evaluate/studyReport/learnSkillReport",
"type": "page",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "evaluate/studyReport/learnStudyReport",
"type": "page",
"style": {
"navigationStyle": "custom"
} }
} }
] ]

View File

@ -14,7 +14,9 @@
:key="item.id" :key="item.id"
> >
<view class="flex flex-col gap-[24rpx]"> <view class="flex flex-col gap-[24rpx]">
<image :src="item.pic" mode="aspectFit" class="w-[112rpx] h-[112rpx] rounded-full" /> <view class="w-[112rpx] h-[112rpx] rounded-full">
<image :src="item.pic" mode="aspectFit" class="w-[112rpx] h-[112rpx] rounded-full" />
</view>
<button <button
:class="`appointment-btn ${item.isAppointment ? 'bg-[#1580ff]!' : ''}`" :class="`appointment-btn ${item.isAppointment ? 'bg-[#1580ff]!' : ''}`"
@click="handleAppointment(item, index)" @click="handleAppointment(item, index)"

View File

@ -3,7 +3,7 @@
class="w-full h-[184rpx] my-[32rpx]" class="w-full h-[184rpx] my-[32rpx]"
circular circular
:indicator-dots="true" :indicator-dots="true"
:autoplay="true" :autoplay="false"
:interval="3000" :interval="3000"
:duration="200" :duration="200"
> >
@ -12,7 +12,7 @@
<image <image
:src="item.img" :src="item.img"
mode="scaleToFill" mode="scaleToFill"
class="w-full rounded-[20rpx]" class="h-[184rpx] rounded-[20rpx] w-full"
@click.stop="handleRouter(item)" @click.stop="handleRouter(item)"
/> />
</view> </view>

View File

@ -4,6 +4,8 @@
navigationStyle: 'custom', navigationStyle: 'custom',
enableShareAppMessage: true, enableShareAppMessage: true,
enableShareTimeline: true, enableShareTimeline: true,
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -32,7 +34,7 @@
</navigator> </navigator>
</template> </template>
<template #title> <template #title>
<view class="title"> <view class="flex items-center justify-center w-[198rpx] h-[88rpx] text-[32rpx]">
<image <image
class="w-[198rpx] h-[32rpx]" class="w-[198rpx] h-[32rpx]"
src="https://api.static.ycymedu.com/src/images/home/app-logo.svg" src="https://api.static.ycymedu.com/src/images/home/app-logo.svg"
@ -162,14 +164,6 @@ onLoad(() => {
color: #000; color: #000;
} }
.title {
display: flex;
align-items: center;
justify-content: center;
height: 44px;
font-size: 32rpx;
color: #000;
}
.custom-background { .custom-background {
background-image: linear-gradient( background-image: linear-gradient(

View File

@ -2,6 +2,8 @@
{ {
style: { style: {
navigationStyle: 'custom', navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: '',
}, },
} }
</route> </route>
@ -10,14 +12,16 @@
<view class="background-wrapper"> <view class="background-wrapper">
<Navbar safeAreaInsetTop bg-color="transparent" placeholder :bordered="false"></Navbar> <Navbar safeAreaInsetTop bg-color="transparent" placeholder :bordered="false"></Navbar>
<view class="flex px-[32rpx] gap-[24rpx] custom-user-info" @click.stop="goLogin"> <view class="flex px-[32rpx] gap-[24rpx] custom-user-info" @click.stop="goLogin">
<image <view class="w-[112rpx] h-[112rpx] rounded-full">
:src=" <image
userStore.userInfo.avatar || :src="
'https://private-zhiyuan.oss-cn-beijing.aliyuncs.com/avatar.png' userStore.userInfo.avatar ||
" 'https://private-zhiyuan.oss-cn-beijing.aliyuncs.com/avatar.png'
class="w-[112rpx] h-[112rpx] rounded-full z-[1]" "
mode="scaleToFill" class="w-[112rpx] h-[112rpx] rounded-full z-[1]"
/> mode="scaleToFill"
/>
</view>
<view class="flex flex-col gap-[6rpx] py-[8rpx] z-[1] text-white"> <view class="flex flex-col gap-[6rpx] py-[8rpx] z-[1] text-white">
<view class="text-[32rpx] font-semibold flex items-center"> <view class="text-[32rpx] font-semibold flex items-center">
<view> <view>
@ -65,27 +69,33 @@
class="mx-[32rpx] flex items-center justify-center text-[#303030] text-[24rpx] bg-[#fff] pt-[24rpx] pb-[18rpx] gap-[144rpx] rounded-[8rpx]" class="mx-[32rpx] flex items-center justify-center text-[#303030] text-[24rpx] bg-[#fff] pt-[24rpx] pb-[18rpx] gap-[144rpx] rounded-[8rpx]"
> >
<view class="flex flex-col items-center gap-[16rpx]" @click="goWishList"> <view class="flex flex-col items-center gap-[16rpx]" @click="goWishList">
<image <view class="w-[51rpx] h-[51rpx]">
src="https://api.static.ycymedu.com/src/images/ucenter/wish-list.png" <image
class="w-[51rpx] h-[51rpx]" src="https://api.static.ycymedu.com/src/images/ucenter/wish-list.png"
mode="scaleToFill" class="w-[51rpx] h-[51rpx]"
/> mode="scaleToFill"
/>
</view>
<text>志愿表</text> <text>志愿表</text>
</view> </view>
<view class="flex flex-col items-center gap-[16rpx]" @click="goEvaluate"> <view class="flex flex-col items-center gap-[16rpx]" @click="goEvaluate">
<image <view class="w-[51rpx] h-[51rpx]">
src="https://api.static.ycymedu.com/src/images/ucenter/evaluation-list.png" <image
class="w-[51rpx] h-[51rpx]" src="https://api.static.ycymedu.com/src/images/ucenter/evaluation-list.png"
mode="scaleToFill" class="w-[51rpx] h-[51rpx]"
/> mode="scaleToFill"
/>
</view>
<text>测评结果</text> <text>测评结果</text>
</view> </view>
<view class="flex flex-col items-center gap-[16rpx]" @click="goStar"> <view class="flex flex-col items-center gap-[16rpx]" @click="goStar">
<image <view class="w-[51rpx] h-[51rpx]">
src="https://api.static.ycymedu.com/src/images/ucenter/star.png" <image
class="w-[51rpx] h-[51rpx]" src="https://api.static.ycymedu.com/src/images/ucenter/star.png"
mode="scaleToFill" class="w-[51rpx] h-[51rpx]"
/> mode="scaleToFill"
/>
</view>
<text>收藏</text> <text>收藏</text>
</view> </view>
</view> </view>

View File

@ -137,7 +137,7 @@ export const getUnCollectionList = (params: {
Page?: number Page?: number
PageSize?: number PageSize?: number
}) => { }) => {
//获取用户院校收藏表列表 // 获取用户院校收藏表列表
return http.get('/api/unCollection/list', params) return http.get('/api/unCollection/list', params)
} }
@ -499,7 +499,7 @@ export const authQrCode = ({
return http.post( return http.post(
'https://api.sso.ycymedu.com/api/syswxopen/hookscuess', 'https://api.sso.ycymedu.com/api/syswxopen/hookscuess',
{ {
userCode: userCode, userCode,
messageType, messageType,
weChat, weChat,
tpkey: '9k1cbc3f546eda35168c3aa3cb91780fbe703f0996c6d123ea96dc85c70bbc0a', tpkey: '9k1cbc3f546eda35168c3aa3cb91780fbe703f0996c6d123ea96dc85c70bbc0a',

View File

@ -47,16 +47,16 @@ interface NavigateToOptions {
"/login-sub/userAgreement" | "/login-sub/userAgreement" |
"/pages-evaluation-sub/aiAutoFill/index" | "/pages-evaluation-sub/aiAutoFill/index" |
"/pages-evaluation-sub/rank/index" | "/pages-evaluation-sub/rank/index" |
"/pages-evaluation-sub/evaluate/academicReport/capabilityReport" | "/pages-evaluation-sub/evaluate/academicReport/CapabilityReport" |
"/pages-evaluation-sub/evaluate/academicReport/characterReport" | "/pages-evaluation-sub/evaluate/academicReport/CharacterReport" |
"/pages-evaluation-sub/evaluate/academicReport/interestReport" | "/pages-evaluation-sub/evaluate/academicReport/InterestReport" |
"/pages-evaluation-sub/evaluate/academicReport/opinionAboutReport" | "/pages-evaluation-sub/evaluate/academicReport/opinionAboutReport" |
"/pages-evaluation-sub/evaluate/psychologicalReport/mhtReport" | "/pages-evaluation-sub/evaluate/psychologicalReport/mhtReport" |
"/pages-evaluation-sub/evaluate/psychologicalReport/sasReport" | "/pages-evaluation-sub/evaluate/psychologicalReport/sasReport" |
"/pages-evaluation-sub/evaluate/psychologicalReport/sdsReport" | "/pages-evaluation-sub/evaluate/psychologicalReport/sdsReport" |
"/pages-evaluation-sub/evaluate/studyReport/LearnSkillReport" |
"/pages-evaluation-sub/evaluate/studyReport/LearnStudyReport" |
"/pages-evaluation-sub/evaluate/studyReport/anxietyReport" | "/pages-evaluation-sub/evaluate/studyReport/anxietyReport" |
"/pages-evaluation-sub/evaluate/studyReport/learnSkillReport" |
"/pages-evaluation-sub/evaluate/studyReport/learnStudyReport" |
"/aiService-sub/index/index"; "/aiService-sub/index/index";
} }
interface RedirectToOptions extends NavigateToOptions {} interface RedirectToOptions extends NavigateToOptions {}

View File

@ -1,5 +1,6 @@
import { CustomRequestOptions } from '@/interceptors/request' import { CustomRequestOptions } from '@/interceptors/request'
import { staticBaseUrl, baseUrl } from '@/utils/index' import { staticBaseUrl, baseUrl } from '@/utils/index'
import { getDeviceInfo } from './tools'
export const http = <T>(options: CustomRequestOptions) => { export const http = <T>(options: CustomRequestOptions) => {
// 1. 返回 Promise 对象 // 1. 返回 Promise 对象
@ -7,16 +8,16 @@ export const http = <T>(options: CustomRequestOptions) => {
if (options.query?.staticType === 'static') { if (options.query?.staticType === 'static') {
options.url = `${staticBaseUrl}${options.url}` options.url = `${staticBaseUrl}${options.url}`
} else if (options.query?.hasPrefix) { } else if (options.query?.hasPrefix) {
console.log('hasPrefix', options.url)
} else { } else {
options.url = `${baseUrl}${options.url}` options.url = `${baseUrl}${options.url}`
} }
// options.url = `${options.query?.staticType === 'static' ? staticBaseUrl : baseUrl}${options.url}` // // #ifndef MP-WEIXIN
options.responseType = 'json'
// // #endif
uni.request({ uni.request({
...options, ...options,
dataType: 'json', dataType: 'json',
// #ifndef MP-WEIXIN
responseType: 'json',
// #endif
// 响应成功 // 响应成功
success(res) { success(res) {
// 状态码 2xx参考 axios 的设计 // 状态码 2xx参考 axios 的设计

View File

@ -7,13 +7,13 @@ import { CustomRequestOptions } from '@/interceptors/request'
*/ */
const http = <T>(options: CustomRequestOptions) => { const http = <T>(options: CustomRequestOptions) => {
// 1. 返回 Promise 对象 // 1. 返回 Promise 对象
// #ifndef MP-WEIXIN
options.responseType = 'json'
// #endif
return new Promise<T>((resolve, reject) => { return new Promise<T>((resolve, reject) => {
uni.request({ uni.request({
...options, ...options,
dataType: 'json', dataType: 'json',
// #ifndef MP-WEIXIN
responseType: 'json',
// #endif
// 响应成功 // 响应成功
success(res) { success(res) {
// 状态码 2xx参考 axios 的设计 // 状态码 2xx参考 axios 的设计

25
src/utils/tools.ts Normal file
View File

@ -0,0 +1,25 @@
/**
*
*
* @see [uni.getDeviceInfo](https://uniapp.dcloud.net.cn/api/system/getDeviceInfo.html)
*/
export function getDeviceInfo() {
if(uni.getSystemInfoSync || uni.canIUse("getSystemInfoSync")){
return uni.getSystemInfoSync()
} else {
return uni.getDeviceInfo()
}
}
/**
*
*
* @see [uni.getWindowInfo](https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html)
*/
export function getWindowInfo() {
if (uni.getWindowInfo || uni.canIUse('getWindowInfo')) {
return uni.getWindowInfo()
} else {
return uni.getSystemInfoSync()
}
}