shmily1213 há 1 mês atrás
pai
commit
5fd08bf88b

+ 7 - 6
src/composables/useCalendar.ts

@@ -85,15 +85,16 @@ export function useCalendar() {
       year,
       month
     });
-    practiceData.list = data.list.map(item => ({
-      date: item.date,
-      info: item.rate ? Number(item.rate) : 0,
-      questionNum: item.study ? Number(item.study) : 0
-    })).sort((a, b) => a.date.localeCompare(b.date));
+    if (data && Array.isArray(data.list)) {
+      practiceData.list = data.list.map(item => ({
+        date: item.date,
+        info: item.rate ? Number(item.rate) : 0,
+        questionNum: item.study ? Number(item.study) : 0
+      })).sort((a, b) => a.date.localeCompare(b.date));
+    }
     practiceData.rate = data.rate ? Number(data.rate) : 0;
     practiceData.studyDays = data.studyDays ? Number(data.studyDays) : 0;
     practiceData.total = data.total ? Number(data.total) : 0;
-    console.log('response', practiceData)
     return practiceData;
   };
 

+ 10 - 5
src/pagesOther/pages/personal-center/setting/setting.vue

@@ -2,7 +2,7 @@
   <view class="page-content">
     <mx-nav-bar title="关于" />
     <view class="fx-col fx-cen-cen py-80">
-      <uv-image src="/static/logo.png" width="80" height="auto" mode="widthFix" />
+      <ie-image src="/static/logo.png" custom-class="w-160 h-160" mode="widthFix" />
     </view>
     <uv-cell-group class="bg-white !flex-none">
       <uv-cell v-for="s in settings" v-bind="s" @click="s.handler()" />
@@ -25,7 +25,7 @@ const { getSize: getCacheSize, gcCache } = useCacheStore()
 const { systemInfo } = useEnvStore()
 const { LogoutPhysical, GetInfo, isLogin } = useUserStore()
 const { orgInfo } = newUserStore()
-
+const cacheSize = ref(0)
 const settings = computed(() => [
   {
     title: '服务协议',
@@ -44,10 +44,12 @@ const settings = computed(() => [
     icon: '/static/personal/icon_cache.png',
     rightIcon: 'reload',
     isLink: true,
-    value: calculateCacheSize(),
+    value: cacheSize.value,
     handler: () => {
       cleanAllTransferCacheData() // 清理页面大对象
-      GetInfo() // GetInfo也会清除缓存,借机也更新一下用户信息
+      if (isLogin.value) {
+        GetInfo() // GetInfo也会清除缓存,借机也更新一下用户信息
+      }
       calculateCacheSize()
     }
   },
@@ -93,8 +95,11 @@ const settings = computed(() => [
 const calculateCacheSize = function () {
   gcCache()
   const size = getCacheSize()
-  return sizeFormat(size)
+  cacheSize.value = sizeFormat(size)
 }
+onMounted(() => {
+  calculateCacheSize()
+});
 </script>
 
 <style scoped>

+ 1 - 1
src/pagesStudy/components/knowledge-tree-node.vue

@@ -27,7 +27,7 @@
 
     <!-- 子节点容器 -->
     <view v-if="nodeData.children && nodeData.children.length > 0" :id="`knowledge-children-${nodeData.id}`"
-      :class="['ml-40 overflow-hidden transition-all duration-300', { 'is-measuring': isMeasuringHeight }]"
+      :class="['ml-80 overflow-hidden transition-all duration-300', { 'is-measuring': isMeasuringHeight }]"
       :style="{ height: measuredHeight + 'px' }">
       <knowledge-tree-node v-for="child in nodeData.children" :key="child.name" :node-data="child"
         :parent-data="nodeData" @node-click="handleNodeClick" @start-practice="handleChildStartPractice">

+ 2 - 0
src/pagesStudy/components/practice-table.vue

@@ -242,6 +242,7 @@ const options1 = computed(() => {
         type: 'pie',
         radius: ['60%', '80%'],
         startAngle: 90,
+        silent: true,
         label: { show: false },
         data: [
           {
@@ -300,6 +301,7 @@ const options2 = computed(() => {
         type: 'pie',
         radius: ['60%', '80%'],
         startAngle: 90,
+        silent: true,
         label: { show: false },
         data: [
           {

+ 5 - 9
src/pagesStudy/pages/exam-start/components/question-options.vue

@@ -32,7 +32,7 @@
       <ie-button type="primary" size="mini" :round="4" :shadow="false" custom-class="w-160"
         @click="handleSubmit">提交</ie-button>
     </view>
-    <view v-if="!isReadOnly && isOnlySubjective" class="mt-40 bg-[#EBF9FF] p-12 rounded-8">
+    <view v-if="showParseTip" class="mt-40 bg-[#EBF9FF] p-12 rounded-8">
       <view class="rounded-8 bg-white px-10 py-20 text-primary text-24 flex gap-x-6 items-center">
         <uv-icon name="info-circle" color="#31A0FC" size="16" />
         <text>请线下答题,查看解析对比后,选“会”或“不会”</text>
@@ -77,6 +77,10 @@ const isMultipleChoice = computed(() => {
   return props.question.typeId === EnumQuestionType.MULTIPLE_CHOICE;
 });
 
+const showParseTip = computed(() => {
+  return !isReadOnly.value && isOnlySubjective.value && !(props.question.subQuestions && props.question.subQuestions.length > 0);
+});
+
 const getStyleClass = (option: Study.QuestionOption) => {
   if (!isReadOnly.value) {
     return option.isSelected ? 'question-option-selected' : '';
@@ -110,14 +114,6 @@ const getStyleClass = (option: Study.QuestionOption) => {
   return customClass;
 };
 
-/**
- * 获取选项内容
- * HTML 实体解码已在 useExam 的 setQuestionList 中统一处理
- */
-const getOptionContent = (optionContent: string) => {
-  return optionContent || '';
-}
-
 // 多选题要手动提交才能认为是作答结束
 const handleSubmit = () => {
   props.question.hasParsed = true;

+ 1 - 1
src/pagesStudy/pages/simulation-start/simulation-start.vue

@@ -33,7 +33,7 @@
             </view>
             <view class="mt-40 flex items-center justify-between">
               <text class="text-28 text-fore-light">考试题型</text>
-              <text class="text-28 text-fore-title">{{ questionTypes }}</text>
+              <text class="text-28 text-fore-title">{{ questionTypes || '--' }}</text>
             </view>
           </view>
           <view class="mt-36 rounded-15 bg-back px-40 py-36 flex">

+ 0 - 345
src/pagesSystem/pages/bind-profile/bind-profile copy.vue

@@ -1,345 +0,0 @@
-<template>
-  <ie-page bg-color="#F6F8FA" :safeAreaInsetBottom="false">
-    <ie-navbar title="完善信息"></ie-navbar>
-    <uv-form labelPosition="left" :model="form" labelWidth="70px" ref="formRef">
-      <content-card title="考生信息">
-        <uv-form-item label="学生姓名" prop="name" borderBottom required>
-          <uv-input v-model="form.nickName" border="none" placeholder="请输入姓名" placeholderClass="text-30"
-            font-size="30rpx" :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-        <uv-form-item label="所在省份" prop="location" borderBottom required>
-          <ie-picker ref="pickerRef" v-model="examTypeForm.location" :list="provinceList" placeholder="选择省份"
-            :custom-style="customStyle" key-label="dictLabel" key-value="dictValue" :disabled="isProvinceDisabled"
-            :show-arrow="!isProvinceDisabled" @change="handleProvinceChange"></ie-picker>
-        </uv-form-item>
-        <uv-form-item label="考生类别" prop="examType" borderBottom required>
-          <ie-picker ref="pickerRef" v-model="examTypeForm.examType" :list="examTypeList" :disabled="isExamTypeDisabled"
-            placeholder="选择考生类别" :custom-style="customStyle" key-label="dictLabel" key-value="dictValue"
-            :show-arrow="!isExamTypeDisabled"></ie-picker>
-        </uv-form-item>
-        <uv-form-item v-if="examTypeForm.examType === 'VHS'" label="专业类别" prop="majorType" borderBottom required>
-          <ie-picker ref="pickerRef" v-model="examTypeForm.majorType" :list="examMajorList"
-            :disabled="!examTypeForm.examType" placeholder="选择专业类别" :custom-style="customStyle" key-label="dictLabel"
-            key-value="dictValue"></ie-picker>
-        </uv-form-item>
-        <uv-form-item label="毕业年份" prop="year" required>
-          <ie-picker ref="pickerRef" v-model="examTypeForm.endYear" :list="endYearList"
-            :disabled="!examTypeForm.examType" placeholder="选择毕业年份" :custom-style="customStyle" key-label="dictLabel"
-            key-value="dictValue"></ie-picker>
-        </uv-form-item>
-
-      </content-card>
-      <content-card title="邀请信息">
-        <uv-form-item label="邀请码" prop="form.inviteCode">
-          <uv-input v-model="form.inviteCode" border="none" placeholder="请输入邀请码(非必填)" font-size="30rpx"
-            :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-      </content-card>
-      <content-card v-if="showCulture" title="文化素质">
-        <uv-form-item label="语文" prop="form.scores.chinese" borderBottom :required="isImproveMode">
-          <uv-input v-model="scoresForm.chinese" border="none" type="number" placeholder="请输入" font-size="30rpx"
-            :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-        <uv-form-item label="数学" prop="form.score.mathematics" borderBottom :required="isImproveMode">
-          <uv-input v-model="scoresForm.mathematics" border="none" type="number" placeholder="请输入" font-size="30rpx"
-            :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-        <uv-form-item label="外语" prop="form.scores.foreign" borderBottom :required="isImproveMode">
-          <uv-input v-model="scoresForm.foreign" border="none" type="number" placeholder="请输入" font-size="30rpx"
-            :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-        <uv-form-item label="物理" prop="form.scores.physics" borderBottom :required="isImproveMode">
-          <uv-input v-model="scoresForm.physics" border="none" type="number" placeholder="请输入" font-size="30rpx"
-            :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-        <uv-form-item label="政治" prop="form.scores.political" :required="isImproveMode">
-          <uv-input v-model="scoresForm.political" border="none" type="number" placeholder="请输入" font-size="30rpx"
-            :custom-style="customStyle">
-          </uv-input>
-        </uv-form-item>
-      </content-card>
-      <content-card v-if="isImproveMode" title="学校信息">
-        <uv-form-item label="学校名称" prop="form.name" borderBottom :required="isImproveMode">
-          <ie-picker ref="pickerRef" v-model="form.schoolName" disabled placeholder="请选择就读学校"
-            :custom-style="customStyle" :custom-label="form.schoolName" @click="handleSchoolSelect"
-            :show-arrow="!isSchoolDisabled"></ie-picker>
-        </uv-form-item>
-        <uv-form-item label="所在班级" prop="form.name" :required="isImproveMode">
-          <ie-picker ref="pickerRef" v-model="form.classId" :list="classList" :disabled="!form.schoolId" title="选择班级"
-            placeholder="请选择所在班级" :custom-style="customStyle" key-label="name" key-value="classId"></ie-picker>
-        </uv-form-item>
-      </content-card>
-    </uv-form>
-    <ie-safe-toolbar :height="84" :shadow="false">
-      <view class="px-30 py-16">
-        <ie-button @click="handleSubmit">确认提交</ie-button>
-      </view>
-    </ie-safe-toolbar>
-  </ie-page>
-</template>
-
-<script lang="ts" setup>
-import ContentCard from '../../components/content-card.vue';
-import { useUserStore } from '@/store/userStore';
-import { registry, improve } from '@/api/modules/login';
-import { useTransferPage } from '@/hooks/useTransferPage';
-import { useExamType } from '@/composables/useExamType';
-import { useAppStore } from '@/store/appStore';
-import { BindCardInfo, ClassItem, SchoolItem, Scores } from '@/types/user';
-
-import { getClassList } from '@/api/modules/user';
-const { form: examTypeForm, examTypeList, examMajorList, provinceList, endYearList } = useExamType();
-const userStore = useUserStore();
-const appStore = useAppStore();
-const { prevData, transferTo, transferBack } = useTransferPage();
-
-const form = ref<Partial<BindCardInfo>>({});
-const scoresForm = ref<Scores>({})
-const formRef = ref();
-const customStyle = {
-  paddingLeft: '26px'
-};
-
-const isImproveMode = computed(() => prevData.value.scene === 'phone_improve' || prevData.value.scene === 'card_improve');
-const isSchoolDisabled = computed(() => prevData.value.scene === 'card_improve' && prevData.value.card.assignSchoolId);
-const isProvinceDisabled = computed(() => prevData.value.scene === 'card_improve' && prevData.value.card.assignLocation);
-const isExamTypeDisabled = computed(() => (prevData.value.scene === 'card_improve' && prevData.value.card.assignExamType) || !examTypeForm.value.location);
-const handleProvinceChange = (val: string) => {
-  if (isProvinceDisabled.value) {
-    return;
-  }
-  form.value.examType = '';
-  form.value.majorType = '';
-}
-
-const classList = ref<ClassItem[]>([]);
-const showCulture = computed(() => {
-  return examTypeForm.value.examType === 'OHS';
-});
-const handleSchoolSelect = () => {
-  if (isSchoolDisabled.value) {
-    return;
-  }
-  transferTo('/pagesSystem/pages/school-select/school-select', {
-    data: form.value
-  }).then(res => {
-    const school = res as SchoolItem;
-    form.value.schoolId = school.id;
-    form.value.schoolName = school.name;
-    console.log(form.value)
-    form.value.classId = undefined;
-    classList.value = [];
-    handleGetClassList();
-  });
-}
-const handleGetClassList = () => {
-  if (!form.value.schoolId) {
-    return;
-  }
-  getClassList({ schoolId: form.value.schoolId }).then(res => {
-    classList.value = res.data;
-    console.log(classList.value)
-  });
-}
-
-
-const loginValidate = () => {
-  form.value = {
-    ...form.value,
-    ...examTypeForm.value,
-  }
-  const { nickName, location, examType, endYear } = form.value;
-  if (!nickName || nickName.trim() === '') {
-    uni.$ie.showToast('请输入姓名');
-    return false;
-  }
-  if (!location || location.trim() === '') {
-    uni.$ie.showToast('请选择省份');
-    return false;
-  }
-  if (!examType || examType.trim() === '') {
-    uni.$ie.showToast('请选择考生类别');
-    return false;
-  }
-  if (examType === 'VHS') {
-    if (!form.value.majorType) {
-      uni.$ie.showToast('请选择专业类别');
-      return false;
-    }
-  }
-  if (!endYear) {
-    uni.$ie.showToast('请选择毕业年份');
-    return false;
-  }
-  if (showCulture.value) {
-    if (isImproveMode.value) {
-      if (!scoresForm.value.chinese || scoresForm.value.chinese < 0 || scoresForm.value.chinese > 100) {
-        uni.$ie.showToast('请输入正确的语文成绩');
-        return false;
-      }
-    }
-    if (isImproveMode.value) {
-      if (!scoresForm.value.mathematics || scoresForm.value.mathematics < 0 || scoresForm.value.mathematics > 100) {
-        uni.$ie.showToast('请输入正确的数学成绩');
-        return false;
-      }
-    }
-    if (isImproveMode.value) {
-      if (!scoresForm.value.foreign || scoresForm.value.foreign < 0 || scoresForm.value.foreign > 100) {
-        uni.$ie.showToast('请输入正确的外语成绩');
-        return false;
-      }
-    }
-    if (isImproveMode.value) {
-      if (!scoresForm.value.physics || scoresForm.value.physics < 0 || scoresForm.value.physics > 100) {
-        uni.$ie.showToast('请输入正确的物理成绩');
-        return false;
-      }
-    }
-    if (isImproveMode.value) {
-      if (!scoresForm.value.political || scoresForm.value.political < 0 || scoresForm.value.political > 100) {
-        uni.$ie.showToast('请输入正确的政治成绩');
-        return false;
-      }
-    }
-  }
-  if (isImproveMode.value) {
-    if (!form.value.schoolId) {
-      uni.$ie.showToast('请选择学校');
-      return false;
-    }
-  }
-  if (isImproveMode.value) {
-    if (!form.value.classId) {
-      uni.$ie.showToast('请选择班级');
-      return false;
-    }
-  }
-  return true;
-}
-const handleSubmit = async () => {
-  const valid = loginValidate();
-  if (valid) {
-    let params = {
-      ...form.value,
-      scores: scoresForm.value,
-    };
-    try {
-      if (isImproveMode.value) {
-        const { cardNo, password } = prevData.value;
-        params = {
-          ...params,
-          username: cardNo,
-          password,
-        }
-        console.log('params', params)
-        if (prevData.value.scene === 'card_improve') {
-          startLogin(params as BindCardInfo);
-        } else {
-          startBind(params as BindCardInfo)
-        }
-      } else {
-        const { mobile, password, code, uuid } = prevData.value;
-        params = {
-          ...params,
-          mobile,
-          password,
-          code,
-          uuid,
-        }
-        startLogin(params as BindCardInfo);
-      }
-    } catch (error) {
-      console.error(error)
-    }
-  }
-}
-
-const startBind = async (params: BindCardInfo) => {
-  uni.$ie.showLoading();
-  await improve(params);
-  uni.$ie.hideLoading();
-  uni.$ie.showSuccess('绑定成功');
-  userStore.getUserInfo();
-  goHome();
-}
-
-const startLogin = async (params: BindCardInfo) => {
-  uni.$ie.showLoading();
-  const { token } = await registry(params);
-  if (token) {
-    const isLogin = await userStore.login(token);
-    uni.$ie.hideLoading();
-    uni.$ie.showSuccess('登录成功');
-    if (isLogin) {
-      goHome();
-    }
-  }
-}
-
-const goHome = () => {
-  setTimeout(() => {
-    transferTo('/pagesMain/pages/index/index', {
-      type: 'reLaunch'
-    });
-  }, 600);
-}
-
-const gatherInfo = () => {
-  // const { scene, card, phone, code, uuid } = prevData.value;
-  const { cardInfo, userInfo, loginInfo } = prevData.value;
-  console.log('prevData.value', prevData.value)
-  if (userStore.tempInfo?.location) {
-    examTypeForm.value.location = userStore.tempInfo?.location;
-    setTimeout(() => {
-      examTypeForm.value.examType = userStore.tempInfo!.examType;
-    }, 0)
-  }
-  console.log('examTypeForm', examTypeForm)
-  const { scene, phone } = loginInfo;
-  const { nickName, location, examType, majorType: userMajorType, endYear: userEndYear, scores } = userInfo;
-  const { assignLocation, assignExamType, majorType, endYear: cardEndYear, assignSchoolId, assignSchoolName, classId, } = cardInfo;
-  if (scene === 'card_improve') {
-    // 未登录用户卡注册登录
-    form.value = {
-      nickName,
-      scores,
-      // 下面 3 个属性卡的优先级更高
-      location: assignLocation || location,
-      examType: assignExamType || examType,
-      endYear: cardEndYear || userEndYear,
-      majorType: majorType || userMajorType,
-      schoolId: assignSchoolId,
-      schoolName: assignSchoolName,
-      classId: classId,
-      mobile: phone
-      // code
-    };
-    handleGetClassList();
-  } else if (scene === 'phone_improve') {
-    // 已登录用户绑卡
-    // const { nickName, location, examType, endYear, scores } = userStore.userInfo;
-    // const { nickName, location, examType, endYear, scores } = prevData.value.userInfo;
-    form.value = {
-      nickName,
-      location,
-      examType,
-      // endYear,
-      scores
-    };
-    scoresForm.value = scores;
-  }
-}
-
-onLoad(() => {
-  gatherInfo();
-});
-</script>
-
-<style lang="scss" scoped></style>

+ 3 - 3
src/pagesSystem/pages/bind-profile/bind-profile.vue

@@ -2,8 +2,8 @@
   <ie-page bg-color="#F6F8FA" :safeAreaInsetBottom="false">
     <ie-navbar title="完善信息"></ie-navbar>
     <uv-form labelPosition="left" :model="form" labelWidth="70px" ref="formRef">
-      <content-card title="考生信息">
-        <uv-form-item label="学生姓名" prop="name" borderBottom required>
+      <content-card title="个人信息">
+        <uv-form-item label="姓名" prop="name" borderBottom required>
           <uv-input v-model="form.nickName" border="none" placeholder="请输入姓名" placeholderClass="text-30"
             font-size="30rpx" :custom-style="customStyle">
           </uv-input>
@@ -30,7 +30,7 @@
             :disabled="!examTypeForm.examType" :placeholder="pickerPlaceholder" :custom-style="customStyle"
             key-label="dictLabel" key-value="dictValue"></ie-picker>
         </uv-form-item>
-        <uv-form-item label="毕业年份" prop="year" required>
+        <uv-form-item label="单招年份" prop="year" required>
           <ie-picker ref="pickerRef" v-model="examTypeForm.endYear" :list="endYearList"
             :disabled="!examTypeForm.examType" :placeholder="pickerPlaceholder" :custom-style="customStyle"
             key-label="dictLabel" key-value="dictValue"></ie-picker>

+ 3 - 4
src/pagesSystem/pages/edit-student-profile/edit-student-profile.vue

@@ -3,8 +3,8 @@
     <ie-navbar title="基本信息" />
     <view class="">
       <uv-form labelPosition="left" :model="form" labelWidth="70px" ref="formRef">
-        <content-card :title="userStore.isStudent ? '考生信息' : '个人信息'">
-          <uv-form-item :label="nameLabel" prop="name" borderBottom>
+        <content-card title="个人信息">
+          <uv-form-item label="姓名" prop="name" borderBottom>
             <uv-input v-model="form.nickName" border="none" :readonly="!userStore.isStudent" placeholder="请输入姓名"
               placeholderClass="text-30" font-size="30rpx" :custom-style="customStyle">
             </uv-input>
@@ -29,7 +29,7 @@
             <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30"
               mode="aspectFill" />
           </uv-form-item>
-          <uv-form-item label="毕业年份" prop="name">
+          <uv-form-item label="单招年份" prop="name">
             <uv-input v-model="form.endYear" border="none" placeholder="" placeholderClass="text-30" font-size="30rpx"
               :custom-style="customStyle" readonly>
             </uv-input>
@@ -153,7 +153,6 @@ const form = ref<UserProfile>({
 const scores = ref({
   ...userInfo.value.scores
 })
-const nameLabel = computed(() => userStore.isStudent ? '学生姓名' : '姓名');
 const customStyle = {
   paddingLeft: '26px'
 };