From 737179a0ce34147269cccf288fecd0e7bb4c309b Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期三, 11 二月 2026 10:42:19 +0800
Subject: [PATCH] 成绩查询+个人中心

---
 src/views/main/appraisalPlan/index.vue |  143 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 130 insertions(+), 13 deletions(-)

diff --git a/src/views/main/appraisalPlan/index.vue b/src/views/main/appraisalPlan/index.vue
index 6624bc0..b7f0a51 100644
--- a/src/views/main/appraisalPlan/index.vue
+++ b/src/views/main/appraisalPlan/index.vue
@@ -8,7 +8,7 @@
           <el-text class="text-title">璇勪环璁″垝</el-text>
         </el-row>
 
-        <el-row class="mt-5">
+        <el-row class="mt-5 custom-input">
           <el-input 
             v-model="filter.keyword" 
             style="width: 739px;height: 70px;"
@@ -24,7 +24,7 @@
       </div>
     </div>
     <div class="main-content py-4">
-      <el-form-item label="绛夌骇锛�" class="mb-6">
+      <el-form-item label="绛夌骇锛�" class="mb-4">
         <el-radio-group  v-model="filter.level">
           <el-radio
             v-for="(item,index) in levelItems"
@@ -35,7 +35,7 @@
           </el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item label="鑰冪偣锛�" class="mb-6">
+      <el-form-item label="鑰冪偣锛�" class="mb-4">
         <el-select v-model="filter.area" placeholder="绛涢�夊湴甯�" style="width: 240px">
           <el-option
             v-for="item in areaItems"
@@ -46,6 +46,38 @@
         </el-select>
       </el-form-item>
 
+      <div v-if="calendarFlag">
+        <el-row>
+          <el-text class="text-lg ">璇勪环璁″垝鏈堝巻</el-text>
+        </el-row>
+        <el-form-item class="my-2">
+          <el-select v-model="year" placeholder="绛涢�夊勾浠�" style="width: 240px">
+            <el-option
+              v-for="item in yearItems"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-table :data="monthList" border style="width: 100%" class="mb-6">
+          <el-table-column 
+            v-for="(item,index) in monthHeaders" 
+            :prop="item.value" 
+            :label="item.label" 
+            :key="`month${index}`" 
+            align="center"
+          >
+            <template #default="{ row }">
+              <div v-if="row[item.value]">
+                <Icon icon="iconamoon:check-duotone" width="22" height="22"  style="color: var(--el-color-primary)" />
+              </div>
+              <span v-else></span>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      
       <el-table 
         :data="filterList" 
         table-layout="auto" 
@@ -61,8 +93,24 @@
           :align="item.align || 'start'"
           :sortable="item.sortable"
         >
-          <template #signupTime="{ row }">
-            {{ row }}
+          <template #default="{ row }">
+            <div v-if="item.value=='signupTime'">
+              <el-row>鎶ュ悕寮�濮嬫椂闂达細{{ row.startTime }}</el-row>
+              <el-row>鎶ュ悕缁撴潫鏃堕棿锛歿{ row.endTime }}</el-row>
+            </div>
+            <div v-if="item.value=='orgInfo'">
+              <el-row>鏈烘瀯鍚嶇О锛歿{ row.orgInfo.name }}</el-row>
+              <el-row>鏈烘瀯鑱旂郴浜猴細{{ row.orgInfo.concatName }}</el-row>
+              <el-row>鏈烘瀯鑱旂郴鏂瑰紡锛歿{ row.orgInfo.mobile }}</el-row>
+            </div>
+            <div v-if="item.value=='operation'">
+              <el-row @click="signup(row)">
+                <el-text v-if="row.signupFlag && userInfo.id">宸叉姤鍚�</el-text>
+                <el-text v-else tag="ins" class="text-primary cursor-p">
+                  鎶ュ悕鑰冭瘯
+                </el-text>
+              </el-row>
+            </div>
           </template>
         </el-table-column>
       </el-table>
@@ -78,12 +126,38 @@
         />
       </el-row>
     </div>
+
+    <signupDialog 
+      v-model="signupDialogVisible" 
+      :currentPlan="currentPlan" 
+      @signupSuccess="signupSuccessDialogVisible=true"
+    >
+    </signupDialog>
+
+    <signupSuccessDialog 
+      v-model="signupSuccessDialogVisible"
+    ></signupSuccessDialog>
+
   </div>
   
 </template>
 
 <script>
+import { useLoginStore } from '@/stores/login.js'
+import { useSessionStore } from '@/stores/session.js'
+import { storeToRefs } from 'pinia';
+import signupDialog from '@/views/main/appraisalPlan/components/signupDialog.vue'
+import signupSuccessDialog from '@/views/main/appraisalPlan/components/signupSuccessDialog.vue'
 export default {
+  components: {
+    signupDialog,
+    signupSuccessDialog
+  },
+  setup() {
+    const { userInfo } = storeToRefs(useSessionStore())
+    const { loginDialogVisible } = storeToRefs(useLoginStore())
+    return { userInfo, loginDialogVisible }
+  },
   data() {
     return {
       page: 1,
@@ -110,7 +184,7 @@
       ],
       noticeList: [],
       headers: [
-        { label: '鑱屼笟锛堝伐绉嶏級鍚嶇О', value: 'occupationJob' },
+        { label: '鑱屼笟锛堝伐绉嶏級鍚嶇О', value: 'occupationJob'},
         { label: '绛夌骇', value: 'level' },
         { label: '鑰冪偣', value: 'examAddress' },
         { label: '璇勪环璁″垝鍚嶇О', value: 'planName', width: 150 },
@@ -118,7 +192,36 @@
         { label: '璇勪环鏈烘瀯淇℃伅', value: 'orgInfo' },
         { label: '鎿嶄綔', value: 'operation', align: 'center' },
       ],
-      planList: []
+      planList: [],
+      calendarFlag: true,
+      year: '2025',
+      yearItems: [
+        { label: '2022骞�', value: '2022' },
+        { label: '2023骞�', value: '2023' },
+        { label: '2024骞�', value: '2024' },
+        { label: '2025骞�', value: '2025' },
+        { label: '2026骞�', value: '2026' },
+      ],
+      monthHeaders: [
+        { label: '1鏈�', value: '1' },
+        { label: '2鏈�', value: '2' },
+        { label: '3鏈�', value: '3' },
+        { label: '4鏈�', value: '4' },
+        { label: '5鏈�', value: '5' },
+        { label: '6鏈�', value: '6' },
+        { label: '7鏈�', value: '7' },
+        { label: '8鏈�', value: '8' },
+        { label: '9鏈�', value: '9' },
+        { label: '10鏈�', value: '10' },
+        { label: '11鏈�', value: '11' },
+        { label: '12鏈�', value: '12' },
+      ],
+      monthList: [
+        { 1: false, 2: false, 3: true, 4: true, 5: false, 6: false, 7: true, 8: false, 9: false, 10: true, 11: true, 12: false, }
+      ],
+      signupDialogVisible: false,
+      currentPlan: {},
+      signupSuccessDialogVisible: false
     }
   },
   computed: {
@@ -146,7 +249,8 @@
               name: '涓北甯傛妧甯堝闄�',
               concatName: '鍚�*瀹�',
               mobile: '13424571164'
-            }
+            },
+            signupFlag: false
           },
           {
             id: '2',
@@ -160,7 +264,8 @@
               name: '涓北甯傛妧甯堝闄�',
               concatName: '鍚�*瀹�',
               mobile: '13424571164'
-            }
+            },
+            signupFlag: true
           },
           {
             id: '3',
@@ -188,7 +293,8 @@
               name: '涓北甯傛妧甯堝闄�',
               concatName: '鍚�*瀹�',
               mobile: '13424571164'
-            }
+            },
+            signupFlag: false
           },
           {
             id: '5',
@@ -202,7 +308,8 @@
               name: '涓北甯傛妧甯堝闄�',
               concatName: '鍚�*瀹�',
               mobile: '13424571164'
-            }
+            },
+            signupFlag: false
           },
           {
             id: '6',
@@ -216,12 +323,22 @@
               name: '涓北甯傛妧甯堝闄�',
               concatName: '鍚�*瀹�',
               mobile: '13424571164'
-            }
+            },
+            signupFlag: false
           },
         ]
         this.totalCount = 6
       }, 400)
     },
+    signup(item) {
+      if (this.userInfo.id) {
+        this.signupDialogVisible = true
+        this.currentPlan = item
+      } else {
+        this.loginDialogVisible = true
+        this.$message.primary('璇峰厛鐧诲綍')
+      }
+    }
   }
 }
 
@@ -233,7 +350,7 @@
   background-repeat: no-repeat, no-repeat, repeat; /* 鍒嗗埆璁剧疆 */
   background-size: cover;
 }
-:deep(.el-input__inner) {
+.custom-input :deep(.el-input__inner) {
   padding-left: 10px;
   font-size: 18px;
 }

--
Gitblit v1.8.0