diff --git a/src/components/home/Banner.vue b/src/components/home/Banner.vue index d5724ef..154db35 100644 --- a/src/components/home/Banner.vue +++ b/src/components/home/Banner.vue @@ -18,6 +18,7 @@ @@ -39,4 +40,10 @@ const navigatorTo = () => { url: '/pages-sub/home/autoFill/index', }) } + +const navigatorToAi = () => { + uni.navigateTo({ + url: '/pages-evaluation-sub/aiAutoFill/index', + }) +} diff --git a/src/hooks/useFilterSchool.ts b/src/hooks/useFilterSchool.ts index 9325737..362fa9e 100644 --- a/src/hooks/useFilterSchool.ts +++ b/src/hooks/useFilterSchool.ts @@ -1,20 +1,4 @@ -import { - getUniversityType, - getRegionInfo, - getUniversityLevel, - getNature, -} from '@/service/index/api' - -export const useUniversityLevel = () => { - const phaseList = ref([]) - getUniversityLevel().then((res) => { - if (res.code === 200) { - phaseList.value = res.result as { code: number; name: string }[] - } - }) - - return { phaseList } -} +import { getUniversityType, getRegionInfo, getNature } from '@/service/index/api' interface Region { code: string diff --git a/src/pages-evaluation-sub/aiAutoFill/echartRender.ts b/src/pages-evaluation-sub/aiAutoFill/echartRender.ts new file mode 100644 index 0000000..c81fb6d --- /dev/null +++ b/src/pages-evaluation-sub/aiAutoFill/echartRender.ts @@ -0,0 +1,82 @@ +export const renderEchart = ({ echart, echarts, pieChartData }) => { + const typeColorMap = { + 需冲刺: { color: '#EB5241', simpleName: '冲' }, + 较稳妥: { color: '#F0BA16', simpleName: '稳' }, + 可保底: { color: '#15C496', simpleName: '保' }, + } + const formattedData = pieChartData.value.map((item) => ({ + ...item, + + itemStyle: { + color: typeColorMap[item.name]?.color, + }, + label: { + formatter: (params) => typeColorMap[params.name]?.simpleName || params.name, + }, + })) + echart.value.init(echarts, (chart) => { + let option = { + tooltip: { + trigger: 'item', + formatter: '{b}: {c} ({d}%)', + }, + legend: { + orient: 'horizontal', + bottom: 0, + left: 'center', + icon: 'circle', + itemWidth: 10, + itemHeight: 10, + itemGap: 20, + }, + series: [ + { + type: 'pie', + radius: ['40%', '70%'], + data: formattedData, + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)', + }, + }, + label: { + formatter: (params) => typeColorMap[params.name]?.simpleName || params.name, + }, + }, + ], + graphic: { + elements: [ + { + type: 'text', + left: 'center', + top: '40%', + + style: { + text: '适合的大学', + fontSize: 12, + fill: '#1F2329', + textAlign: 'center', + textVerticalAlign: 'middle', + }, + }, + { + type: 'text', + left: 'center', + top: '50%', + style: { + text: formattedData.reduce((acc, curr) => acc + curr.value, 0), + fontSize: 24, + fill: '#1F2329', + textAlign: 'center', + textVerticalAlign: 'middle', + }, + }, + ], + }, + } + + chart.setOption(option) + }) +} diff --git a/src/pages-evaluation-sub/aiAutoFill/index.vue b/src/pages-evaluation-sub/aiAutoFill/index.vue new file mode 100644 index 0000000..8a419a9 --- /dev/null +++ b/src/pages-evaluation-sub/aiAutoFill/index.vue @@ -0,0 +1,105 @@ + +{ + style: { + navigationBarTitleText: 'AI智能填报', + }, + needLogin: true, +} + + + + + + diff --git a/src/pages-evaluation-sub/index.vue b/src/pages-evaluation-sub/index.vue index fb9a991..265fd66 100644 --- a/src/pages-evaluation-sub/index.vue +++ b/src/pages-evaluation-sub/index.vue @@ -11,8 +11,6 @@ const echarts = require('./uni_modules/lime-echart/static/echarts.min') const echart = ref(null) onMounted(() => { - console.log(echarts, echart.value) - echart.value.init(echarts, (chart) => { let option = { title: { diff --git a/src/pages-sub/components/ActionSheet.vue b/src/pages-sub/components/ActionSheet.vue index 035b713..fedf479 100644 --- a/src/pages-sub/components/ActionSheet.vue +++ b/src/pages-sub/components/ActionSheet.vue @@ -10,9 +10,9 @@ {{ title }} - + - + diff --git a/src/pages-sub/components/Slider.vue b/src/pages-sub/components/Slider.vue index 28a86c8..249caf6 100644 --- a/src/pages-sub/components/Slider.vue +++ b/src/pages-sub/components/Slider.vue @@ -358,7 +358,7 @@ const emitValueChange = () => { border: 2px solid v-bind('activeColor'); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); - z-index: 1; + z-index: 0; top: 50%; transition: transform 0.2s, diff --git a/src/pages-sub/components/table/WXXTable.vue b/src/pages-sub/components/table/WXXTable.vue index 6c6caba..71917bf 100644 --- a/src/pages-sub/components/table/WXXTable.vue +++ b/src/pages-sub/components/table/WXXTable.vue @@ -14,6 +14,7 @@ + {{ $slots.value }} {{ row }} diff --git a/src/pages-sub/home/aiAutoFill/index.vue b/src/pages-sub/home/aiAutoFill/index.vue deleted file mode 100644 index 0661cf7..0000000 --- a/src/pages-sub/home/aiAutoFill/index.vue +++ /dev/null @@ -1,10 +0,0 @@ - -{ - style: { - navigationStyle: 'custom', - }, -} - - - - diff --git a/src/pages-sub/home/autoFill/index.vue b/src/pages-sub/home/autoFill/index.vue index 9343874..0b1cfca 100644 --- a/src/pages-sub/home/autoFill/index.vue +++ b/src/pages-sub/home/autoFill/index.vue @@ -40,6 +40,23 @@ custom-header-class="text-[36rpx]! text-[#303030]! font-medium!" > + @@ -61,6 +78,12 @@ const badgeValue = ref(12) const close = () => { show.value = false } + +const handleResult = () => { + uni.navigateTo({ + url: `/pages-sub/home/wishesList/index`, + }) +} diff --git a/src/pages-sub/home/wishesList/index.vue b/src/pages-sub/home/wishesList/index.vue index 05a1450..b91afec 100644 --- a/src/pages-sub/home/wishesList/index.vue +++ b/src/pages-sub/home/wishesList/index.vue @@ -59,11 +59,8 @@ - - 全部(15) + + 全部({{ total }}) @@ -88,10 +85,72 @@ :key="item.zp_index" v-for="(item, index) in schoolList" @click="itemClick(item, item.zp_index)" - > + > + + + + + {{ calcTypeName(item.type).text }} + + + {{ + Math.round( + item.items.reduce((a, b) => a + Number(b.percentAge.replace('%', '')), 0) / + item.items.length, + ) + }} + % + + + + + + {{ item.name }} + + {{ item.city }}·{{ item.educationCategory }} + + + + {{ item.features.slice(0, 3).join('/') }}/ + + 排名{{ item.rank }} + + + 代码{{ item.collegeCode }} + + {{ item.year }}计划{{ item.items.reduce((a, b) => a + b.planCount, 0) }}人 + + + + + + + 专业{{ item.items.length }} + + 已填 1 + + + + + + + + + + + + + + + - + - - - - 取消 - 确认 + + @@ -115,18 +181,67 @@ import ActionSheet from '@/pages-sub/components/ActionSheet.vue' import Region from '@/pages-sub/home/components/Region.vue' import FilterMenu from '@/pages-sub/home/components/FilterMenu.vue' import Slider from '@/pages-sub/components/Slider.vue' +import { getPlanProListByFilter } from '@/service/index/api' +import WXXTable from '@/pages-sub/components/table/Table.vue' +import WXXTableCol from '@/pages-sub/components/table/TableCol.vue' +// import DataTable from './DataTable.vue' import { useUserStore } from '@/store/user' +const columns = ref([ + { + label: '年份', + prop: 'year', + }, + { + label: '录取', + prop: 'planCount', + }, + { + label: '线差', + prop: 'lineDiff', + }, + { + label: '最低分', + prop: 'score', + }, + { + label: '最低位次', + prop: 'rankLine', + }, + { + label: '位次差', + prop: 'rankLine', + }, +]) + const userStore = useUserStore() const sliderValue = ref([550, 590]) const schoolList = ref([]) const paging = ref(null) +const filterMenuRef = ref(null) + +const location = ref(userStore.userInfo.estimatedAchievement.provinceCode) + +const total = ref(0) const queryList = (page: number, pageSize: number) => { - paging.value.complete([]) + getPlanProListByFilter({ + pageIndex: page, + pageSize: pageSize, + location: userStore.userInfo.estimatedAchievement.provinceCode, + p: userStore.userInfo.estimatedAchievement.sp, + subjects: userStore.userInfo.estimatedAchievement.subjectGroup.split(','), + score: +userStore.userInfo.estimatedAchievement.expectedScore, + batchName: userStore.userInfo.batchName, + }).then((resp) => { + if (resp.code === 200) { + paging.value.complete((resp.result as { rows: any[] }).rows) + total.value = (resp.result as { totalRows: number }).totalRows + } + }) } const virtualListChange = (_vList) => { schoolList.value = _vList @@ -146,6 +261,9 @@ const show = ref(false) const actionTitle = ref('') const handleConfirm = () => { show.value = false + if (actionTitle.value === '院校') { + filterMenuRef.value.handleConfirm() + } } const handleShow = (type: number) => { @@ -165,6 +283,34 @@ const handleRegionName = (val: string[]) => { const handleSliderChange = (val) => { console.log('滑块值变化:', val) } + +const calcTypeName = (type: number) => { + const style = { + 0: { + text: '冲', + color: '#EB5241', + bgColor: 'rgba(235,82,65,0.15)', + }, + 1: { + text: '稳', + color: '#FA8E23', + bgColor: 'rgba(250,142,35,0.15)', + }, + 2: { + text: '保', + color: '#15C496', + bgColor: 'rgba(21,196,150,0.15)', + }, + }[type] || { text: '保', color: '#15C496', bgColor: 'rgba(21,196,150,0.15)' } + + return { + text: style.text, + style: { + color: style.color, + backgroundColor: style.bgColor, + }, + } +}