123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- <template>
- <view class="result-header">
- <college-item :item="detail.baseInfo">
- <template #address>
- <uv-tags size="mini" type="primary" shape="circle" :text="major.name" class="!items-start"
- @click="goMajorDetail(major)"/>
- </template>
- </college-item>
- <view class="entry-result rounded-lg">
- <view class="fx-row">
- <view class="entry-result-txt h-full text-2xs">
- <view>结果:</view>
- <view class="indent-txt">您测试录取率的院校为
- <text class="underline-txt">{{ universityName }}</text>
- ,专业为
- <text class="underline-txt">{{ result.majorName }}</text>
- <text v-if="result.majorDirection" class="underline-txt text-primary-light">
- ({{ result.majorDirection }})
- </text>
- 。
- <template v-if="result.enrollRate===null">
- 因为缺少关键数据,你被该校录取的概率无法计算!
- </template>
- <template v-else>
- 您被该校录取的概率为
- <text class="underline-txt">{{ result.enrollRate }}%</text>
- !
- </template>
- </view>
- </view>
- <view class="entry-result-chart min-w-1 ml-10">
- <mx-echarts :option="chartOption" canvas-id="dashboard" style="height: 100%"/>
- </view>
- </view>
- <enroll-table v-if="enrollRules.length" :headers="enrollHeader" :data="enrollRules" compact>
- <template #cell="{item}">
- <enroll-status :rule="item" @tip="handleShowTip"/>
- </template>
- </enroll-table>
- <enroll-table v-if="otherRules.length" :headers="otherHeader" :data="otherRules" compact>
- <template #cell="{item}">
- <enroll-status :rule="item" @tip="handleShowTip"/>
- </template>
- </enroll-table>
- <uv-text v-if="result.tips" size="11" type="warning" prefix-icon="info-circle" :text="result.tips"
- :icon-style="{color: 'var(--warning-color)', fontSize: '12px'}" margin="5px 0 0 0"/>
- <view class="mt-10 text-2xs">
- 录取概率说明:
- <uv-text size="12"
- text="1.成绩合格,但是学校的附加录取条件没有达标,会显示零概率(如身高,视力等要求,具体看系统的院校招生要求)"/>
- <uv-text size="12"
- text="2.成绩合格,考生没有完整填写学校招生附加要求,会显示无概率(如身高,视力等要求,具体看系统的院校招生要求)"
- margin="3px 0"/>
- <uv-text size="12"
- text="3.规则中的`自行参考`项由于官方未公布具体标准,系统无法将其纳入概率计算,考生根据自身情况自行参考"/>
- </view>
- </view>
- <uv-popup ref="popup" mode="center" :safe-area-inset-bottom="false" round="8" closeable close-on-click-overlay>
- <view class="fx-col p-30" style="width: 80vw">
- <uv-text type="content" size="14" :text="showContent" align="center" margin="20px 0"/>
- <uv-button type="primary" shape="circle" :custom-style="{width: '30vw'}" text="我知道了"
- class="self-center" @click="$refs.popup.close()"/>
- </view>
- </uv-popup>
- </view>
- </template>
- <script>
- import MxConst from "@/common/MxConst";
- import InjectAISingleDataMixin from "@/pages/ie/entry-single-result/components/InjectAISingleDataMixin";
- import CollegeItem from "@/pages/college-library/components/college-item.vue";
- import IndexTitleWrap from "@/pages/index/components/index-title-wrap.vue";
- import EnrollTable from "@/pages/ie/entry-single-result/components/enroll-table.vue";
- import EnrollStatus from "@/pages/ie/entry-single-result/components/enroll-status.vue";
- import {defaultTheme} from "@/hooks/useTheme";
- import {useTransfer} from "@/hooks/useTransfer";
- export default {
- components: {EnrollStatus, EnrollTable, IndexTitleWrap, CollegeItem},
- mixins: [InjectAISingleDataMixin],
- computed: {
- chartOption() {
- if (!this.result || !Object.hasOwnProperty.call(this.result, 'enrollRate')) return {}
- return this.createRateChartOption()
- },
- universityName() {
- return this.detail?.baseInfo?.name || ''
- },
- enrollRules() {
- return this.result.rules?.filter(r => r.category == MxConst.enum.ai.ruleCategory.enroll.value) || []
- },
- otherRules() {
- return this.result.rules?.filter(r => r.category != MxConst.enum.ai.ruleCategory.enroll.value) || []
- }
- },
- data() {
- return {
- enrollHeader: [{prop: 'content', label: '录取规则', clazz: 'flex-4'},
- {prop: 'value', label: '计分', clazz: 'flex-1'},
- {prop: 'valid', label: '状态', clazz: 'flex-2', slotBody: 'cell'}],
- otherHeader: [{prop: 'content', label: '其它要求', clazz: 'flex-5'},
- {prop: 'valid', label: '状态', slotBody: 'cell', clazz: 'flex-2'}],
- showContent: ''
- }
- },
- setup() {
- const {transferTo} = useTransfer()
- const goMajorDetail = (major) => {
- transferTo('/pages/major-library/detail/detail', ['code'], major)
- }
- return {
- goMajorDetail
- }
- },
- methods: {
- createRateChartOption() {
- const rate = this.result.enrollRate
- return {
- grid: {
- left: 0,
- right: 0
- },
- series: [
- {
- type: 'gauge',
- center: ['50%', '75%'],
- startAngle: 180,
- endAngle: 0,
- min: 0,
- max: 100,
- radius: '120%',
- itemStyle: {
- color: {
- type: 'linear',
- x: 0,
- y: 0,
- x2: 1,
- y2: 0,
- colorStops: [{
- offset: 0, color: defaultTheme.colors["primary-deep"]
- }, {
- offset: 1, color: defaultTheme.colors["primary-light"]
- }]
- }
- },
- progress: {
- show: true,
- roundCap: true,
- width: 10,
- },
- pointer: {
- show: false,
- },
- anchor: {
- show: false
- },
- axisLine: {
- roundCap: true,
- lineStyle: {
- color: [[1, '#e2e2e2']],
- width: 10
- }
- },
- axisTick: {
- show: false
- },
- splitLine: {
- show: false
- },
- axisLabel: {
- show: false,
- },
- detail: {
- show: true,
- formatter: v => {
- return isNaN(v) ? '--' : (v + '%');
- },
- color: '#333',
- fontSize: 20,
- fontWeight: 'bold',
- offsetCenter: [0, '-20%']
- },
- title: {
- show: true,
- color: defaultTheme.brands.primary,
- fontSize: 10,
- offsetCenter: [0, '20%'],
- },
- data: [
- {
- value: rate,
- name: rate === null ? '无概率' : '录取概率'
- }
- ]
- },
- {
- type: 'gauge',
- center: ['50%', '75%'],
- startAngle: 180,
- endAngle: 0,
- min: 0,
- max: 100,
- radius: '120%',
- z: 3,
- progress: {
- show: false,
- },
- pointer: {
- showAbove: true,
- icon: 'circle',
- width: 7,
- offsetCenter: [0, '-61%'],
- itemStyle: {
- color: '#fff'
- }
- },
- anchor: {
- show: false
- },
- axisLine: {
- roundCap: true,
- lineStyle: {
- color: [[1, 'transparent']],
- width: 10
- }
- },
- axisTick: {
- show: false
- },
- splitLine: {
- show: false
- },
- axisLabel: {
- show: false,
- },
- detail: {
- show: false,
- },
- title: {
- show: false,
- },
- data: [
- {
- value: rate
- }
- ]
- }
- ]
- }
- },
- handleShowTip(content) {
- if (!content) return
- this.showContent = content
- this.$refs.popup.open()
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .result-header {
- border-radius: 24rpx 24rpx 0 0;
- }
- .entry-result {
- background-color: #E9EDF6;
- margin: 0 15rpx 26rpx 15rpx;
- padding: 34rpx 17rpx 34rpx 34rpx;
- &-txt {
- flex: 0.6;
- .indent-txt {
- text-indent: 2em;
- text-align: justify;
- }
- .underline-txt {
- text-decoration: underline;
- }
- }
- &-chart {
- flex: 0.4;
- height: 180rpx;
- }
- }
- .rate-tips {
- height: 70px;
- }
- </style>
|