Compare commits
No commits in common. "6950ec7ed22e4863697ec06d05e1f5eecad539a1" and "a53bb0789a4eebc870dc516367cd3f3e3fd29f34" have entirely different histories.
6950ec7ed2
...
a53bb0789a
|
|
@ -121,8 +121,6 @@
|
||||||
"newDetail": true,
|
"newDetail": true,
|
||||||
"newsDetail": true,
|
"newsDetail": true,
|
||||||
"useNewsList": true,
|
"useNewsList": true,
|
||||||
"newsList": true,
|
"newsList": true
|
||||||
"useLogin": true,
|
|
||||||
"useWxInfo": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ VITE_APP_TITLE = '六维志愿'
|
||||||
VITE_APP_PORT = 9000
|
VITE_APP_PORT = 9000
|
||||||
|
|
||||||
VITE_UNI_APPID = 'H57F2ACE4'
|
VITE_UNI_APPID = 'H57F2ACE4'
|
||||||
VITE_WX_APPID = '__UNI__7AE2402'
|
VITE_WX_APPID = 'wxa2abb91f64032a2b'
|
||||||
|
|
||||||
# h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base
|
# h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base
|
||||||
VITE_APP_PUBLIC_BASE=
|
VITE_APP_PUBLIC_BASE=
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<view
|
<view
|
||||||
class="tabbar-item h-[100rpx] flex flex-col justify-center w-full items-center text-center"
|
class="tabbar-item h-[100rpx] flex flex-col justify-center w-full items-center text-center"
|
||||||
v-for="(item, index) in tabbarList"
|
v-for="(item, index) in tabbarList"
|
||||||
:key="item.id"
|
:key="index"
|
||||||
:class="[item.centerItem ? 'center-item' : '']"
|
:class="[item.centerItem ? 'center-item' : '']"
|
||||||
@click="changeItem(item)"
|
@click="changeItem(item)"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
class="truncate flex flex-col py-[32rpx]"
|
class="truncate flex flex-col py-[32rpx]"
|
||||||
style="border-bottom: 2rpx solid #eee"
|
style="border-bottom: 2rpx solid #eee"
|
||||||
v-for="item in newsList"
|
v-for="item in newsList"
|
||||||
:key="item.id"
|
:key="item"
|
||||||
@click="handleClick(item)"
|
@click="handleClick(item)"
|
||||||
>
|
>
|
||||||
<text class="truncate text-[28rpx] text-[#333333] font-normal mb-[16rpx] max-w-[80%]">
|
<text class="truncate text-[28rpx] text-[#333333] font-normal mb-[16rpx] max-w-[80%]">
|
||||||
|
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
||||||
<template>
|
|
||||||
<wd-overlay :show="show" @click="handleClose">
|
|
||||||
<view
|
|
||||||
class="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-[10071] flex flex-col items-center bg-white p-[40rpx] rounded-[32rpx]"
|
|
||||||
>
|
|
||||||
<image
|
|
||||||
class="w-[200rpx] h-[200rpx]"
|
|
||||||
src="https://api.static.ycymedu.com/images/logo.png"
|
|
||||||
mode="aspectFit"
|
|
||||||
></image>
|
|
||||||
<view class="flex flex-col items-center">
|
|
||||||
<text class="text-[26rpx] mt-[20rpx] mb-[40rpx]" :selectable="false">
|
|
||||||
{{ phone ? '申请使用您的手机号' : '申请获取您的个人信息' }}
|
|
||||||
</text>
|
|
||||||
<wd-button
|
|
||||||
size="large"
|
|
||||||
custom-class="w-[493rpx] mb-[40rpx]"
|
|
||||||
@click="handleClick"
|
|
||||||
open-type="getPhoneNumber"
|
|
||||||
@getphonenumber="getPhoneNumber"
|
|
||||||
>
|
|
||||||
手机号快捷登录
|
|
||||||
</wd-button>
|
|
||||||
|
|
||||||
<view class="flex items-center flex-nowrap" @click="checked = true">
|
|
||||||
<wd-radio-group v-model="checked" custom-class="mr-10rpx">
|
|
||||||
<wd-radio :value="true" shape="dot"></wd-radio>
|
|
||||||
</wd-radio-group>
|
|
||||||
<view class="flex items-center">
|
|
||||||
<text class="text-[24rpx]">已阅读并同意《服务条款》和《隐私条款》</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<wd-toast />
|
|
||||||
</view>
|
|
||||||
</wd-overlay>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { useToast } from 'wot-design-uni'
|
|
||||||
import { useLogin, useWxInfo } from '@/hooks/useUserInfo'
|
|
||||||
import { getSessionKey } from '@/service/index/api'
|
|
||||||
import { useUserStore } from '@/store'
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
show: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
defineOptions({
|
|
||||||
options: {
|
|
||||||
styleIsolation: 'shared',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
const emits = defineEmits(['update:close'])
|
|
||||||
const toast = useToast()
|
|
||||||
const userStore = useUserStore()
|
|
||||||
|
|
||||||
const handleClose = () => {
|
|
||||||
emits('update:close', false)
|
|
||||||
}
|
|
||||||
|
|
||||||
const phone = ref(true) // 手机号登陆
|
|
||||||
const checked = ref(false) // 是否同意条款
|
|
||||||
const getPhoneInfo = ref(null)
|
|
||||||
|
|
||||||
const getPhoneNumber = async (e: any) => {
|
|
||||||
if (e.errMsg == 'getPhoneNumber:ok') {
|
|
||||||
let _getPhoneInfo = {
|
|
||||||
iv: e.iv,
|
|
||||||
encryptedData: e.encryptedData,
|
|
||||||
code: e.code,
|
|
||||||
}
|
|
||||||
getPhoneInfo.value = _getPhoneInfo
|
|
||||||
getUserInfo(e.code)
|
|
||||||
// this.phone = false
|
|
||||||
} else if (e.errMsg == 'getPhoneNumber:fail not login') {
|
|
||||||
toast.warning('请先登录')
|
|
||||||
} else {
|
|
||||||
toast.warning('获取手机号失败')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleClick = () => {
|
|
||||||
if (!checked.value) {
|
|
||||||
toast.warning('您需先同意《服务条款》和《隐私条款》')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const getUserInfo = async (code: string) => {
|
|
||||||
let userInfo = (await useLogin()) as { code: string; errMsg: string }
|
|
||||||
console.log(userInfo)
|
|
||||||
|
|
||||||
if (userInfo.errMsg == 'login:ok') {
|
|
||||||
const resp = await getSessionKey({ JsCode: userInfo.code })
|
|
||||||
if (resp.code == 200) {
|
|
||||||
}
|
|
||||||
// useWxInfo({ code, OpenId: (resp.result as { openId: string }).openId })
|
|
||||||
} else {
|
|
||||||
toast.warning('您需先授权')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const parsePhoneNumber = (code: string, openId: string) => {
|
|
||||||
// 解析手机号
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
:deep(.wd-radio) {
|
|
||||||
--wot-radio-margin: 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
import { getWxInfo } from '@/service/index/api'
|
|
||||||
|
|
||||||
//uniapp 登陆获取用户信息
|
|
||||||
export const useLogin = () => {
|
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
uni.login({
|
|
||||||
success: function (res) {
|
|
||||||
if (res.code) {
|
|
||||||
resolve(res)
|
|
||||||
} else {
|
|
||||||
reject(res)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
fail: function (err) {
|
|
||||||
reject(err)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useWxInfo = ({ code, OpenId }) => {
|
|
||||||
getWxInfo({ code, OpenId }).then((res) => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
console.log(res.result)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
},
|
},
|
||||||
"quickapp": {},
|
"quickapp": {},
|
||||||
"mp-weixin": {
|
"mp-weixin": {
|
||||||
"appid": "__UNI__7AE2402",
|
"appid": "wxa2abb91f64032a2b",
|
||||||
"setting": {
|
"setting": {
|
||||||
"urlCheck": false
|
"urlCheck": false
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -60,10 +60,7 @@
|
||||||
{
|
{
|
||||||
"path": "pages/login/index",
|
"path": "pages/login/index",
|
||||||
"type": "page",
|
"type": "page",
|
||||||
"style": {
|
"style": {}
|
||||||
"navigationStyle": "custom",
|
|
||||||
"navigationBarTitleText": "新高考选科"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/aiService/index/index",
|
"path": "pages/aiService/index/index",
|
||||||
|
|
@ -73,6 +70,7 @@
|
||||||
{
|
{
|
||||||
"path": "pages/evaluation/index/index",
|
"path": "pages/evaluation/index/index",
|
||||||
"type": "page",
|
"type": "page",
|
||||||
|
"layout": "demo",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "测评师"
|
"navigationBarTitleText": "测评师"
|
||||||
},
|
},
|
||||||
|
|
@ -81,7 +79,7 @@
|
||||||
{
|
{
|
||||||
"path": "pages/expert/index/index",
|
"path": "pages/expert/index/index",
|
||||||
"type": "page",
|
"type": "page",
|
||||||
"layout": "pages",
|
"layout": "demo",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "测评师"
|
"navigationBarTitleText": "测评师"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<route lang="json5" type="page">
|
<route lang="json5" type="page">
|
||||||
{
|
{
|
||||||
|
layout: 'demo',
|
||||||
style: {
|
style: {
|
||||||
navigationBarTitleText: '测评师',
|
navigationBarTitleText: '测评师',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<route lang="json5" type="page">
|
<route lang="json5" type="page">
|
||||||
{
|
{
|
||||||
layout: 'pages',
|
layout: 'demo',
|
||||||
style: {
|
style: {
|
||||||
navigationBarTitleText: '测评师',
|
navigationBarTitleText: '测评师',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,12 @@
|
||||||
<route lang="json5" type="page">
|
|
||||||
{
|
|
||||||
style: {
|
|
||||||
navigationStyle: 'custom',
|
|
||||||
navigationBarTitleText: '新高考选科',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</route>
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view class="h-screen flex flex-col">
|
<view class="login">
|
||||||
<wd-navbar safeAreaInsetTop custom-class="bg-transparent!" :bordered="false" fixed>
|
<view class="logo">
|
||||||
<template #title>
|
|
||||||
<text class="text-[#1F2329] text-[36rpx] font-medium">新高考选科</text>
|
|
||||||
</template>
|
|
||||||
</wd-navbar>
|
|
||||||
<view class="flex flex-col justify-center items-center flex-1 pb-safe">
|
|
||||||
<image
|
<image
|
||||||
class="w-[424rpx] h-[424rpx]"
|
class="pic"
|
||||||
src="https://api.static.ycymedu.com/images/logo.png"
|
src="https://api.static.ycymedu.com/images/logo.png"
|
||||||
mode="aspectFit"
|
mode="aspectFit"
|
||||||
></image>
|
></image>
|
||||||
<wd-button @click="handleLogin">立即登陆</wd-button>
|
|
||||||
</view>
|
</view>
|
||||||
<LoginMask v-bind:show="show" />
|
<view style="width: 360rpx" class="w-[360rpx]">登陆</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { useUserStore } from '@/store/user'
|
|
||||||
import LoginMask from '@/components/login/LoginMask.vue'
|
|
||||||
|
|
||||||
const userStore = useUserStore()
|
|
||||||
const { token } = userStore.userInfo as unknown as IUserInfo
|
|
||||||
const show = ref(false)
|
|
||||||
|
|
||||||
const handleLogin = () => {
|
|
||||||
show.value = true
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
|
||||||
|
|
@ -64,11 +64,3 @@ export const getNewsList = (params: {
|
||||||
}) => {
|
}) => {
|
||||||
return http.get('/api/ZyNews/newsPage', params)
|
return http.get('/api/ZyNews/newsPage', params)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getSessionKey = (params: { JsCode: string }) => {
|
|
||||||
return http.get('/api/sysWxOpen/wxOpenId', params)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getWxInfo = (params: { code: string; OpenId: string }) => {
|
|
||||||
return http.get('/api/weChatUserEx/wxInfo', params)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,6 @@ declare global {
|
||||||
const useCssModule: typeof import('vue')['useCssModule']
|
const useCssModule: typeof import('vue')['useCssModule']
|
||||||
const useCssVars: typeof import('vue')['useCssVars']
|
const useCssVars: typeof import('vue')['useCssVars']
|
||||||
const useId: typeof import('vue')['useId']
|
const useId: typeof import('vue')['useId']
|
||||||
const useLogin: typeof import('../hooks/useUserInfo')['useLogin']
|
|
||||||
const useModel: typeof import('vue')['useModel']
|
const useModel: typeof import('vue')['useModel']
|
||||||
const useNatureList: typeof import('../hooks/useFilterSchool')['useNatureList']
|
const useNatureList: typeof import('../hooks/useFilterSchool')['useNatureList']
|
||||||
const useNavbarWeixin: typeof import('../hooks/useNavbarWeixin')['default']
|
const useNavbarWeixin: typeof import('../hooks/useNavbarWeixin')['default']
|
||||||
|
|
@ -110,7 +109,6 @@ declare global {
|
||||||
const useUniversityType: typeof import('../hooks/useFilterSchool')['useUniversityType']
|
const useUniversityType: typeof import('../hooks/useFilterSchool')['useUniversityType']
|
||||||
const useUpload: typeof import('../hooks/useUpload')['default']
|
const useUpload: typeof import('../hooks/useUpload')['default']
|
||||||
const useUpload2: typeof import('../hooks/useUpload2')['default']
|
const useUpload2: typeof import('../hooks/useUpload2')['default']
|
||||||
const useWxInfo: typeof import('../hooks/useUserInfo')['useWxInfo']
|
|
||||||
const watch: typeof import('vue')['watch']
|
const watch: typeof import('vue')['watch']
|
||||||
const watchEffect: typeof import('vue')['watchEffect']
|
const watchEffect: typeof import('vue')['watchEffect']
|
||||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||||
|
|
@ -212,7 +210,6 @@ declare module 'vue' {
|
||||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||||
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||||
readonly useId: UnwrapRef<typeof import('vue')['useId']>
|
readonly useId: UnwrapRef<typeof import('vue')['useId']>
|
||||||
readonly useLogin: UnwrapRef<typeof import('../hooks/useUserInfo')['useLogin']>
|
|
||||||
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
|
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
|
||||||
readonly useNatureList: UnwrapRef<typeof import('../hooks/useFilterSchool')['useNatureList']>
|
readonly useNatureList: UnwrapRef<typeof import('../hooks/useFilterSchool')['useNatureList']>
|
||||||
readonly useNavbarWeixin: UnwrapRef<typeof import('../hooks/useNavbarWeixin')['default']>
|
readonly useNavbarWeixin: UnwrapRef<typeof import('../hooks/useNavbarWeixin')['default']>
|
||||||
|
|
@ -226,7 +223,6 @@ declare module 'vue' {
|
||||||
readonly useUniversityRank: UnwrapRef<typeof import('../hooks/useUnSortType')['useUniversityRank']>
|
readonly useUniversityRank: UnwrapRef<typeof import('../hooks/useUnSortType')['useUniversityRank']>
|
||||||
readonly useUniversityType: UnwrapRef<typeof import('../hooks/useFilterSchool')['useUniversityType']>
|
readonly useUniversityType: UnwrapRef<typeof import('../hooks/useFilterSchool')['useUniversityType']>
|
||||||
readonly useUpload: UnwrapRef<typeof import('../hooks/useUpload')['default']>
|
readonly useUpload: UnwrapRef<typeof import('../hooks/useUpload')['default']>
|
||||||
readonly useWxInfo: UnwrapRef<typeof import('../hooks/useUserInfo')['useWxInfo']>
|
|
||||||
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
||||||
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||||
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue