From d13cebe7fbadd396e91a989af331df8a8e7b40f8 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 21 Jan 2025 11:40:42 +0800
Subject: [PATCH] 考核结果查看详情

---
 src/views/evaluate/components/viewEvaluateDetail.vue |  170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 170 insertions(+), 0 deletions(-)

diff --git a/src/views/evaluate/components/viewEvaluateDetail.vue b/src/views/evaluate/components/viewEvaluateDetail.vue
index d22cf1e..fa20021 100644
--- a/src/views/evaluate/components/viewEvaluateDetail.vue
+++ b/src/views/evaluate/components/viewEvaluateDetail.vue
@@ -1,10 +1,180 @@
 <template>
+    <el-drawer v-model="props.params.visible" @open="openDrawer" direction="rtl" size="50%">
+        <template #header>
+            <div class="drawer-title">{{ props.params.data?.taskName || '评优任务详情' }}</div>
+        </template>
+        <el-collapse v-model="collapseParams.activeNames">
+            <el-collapse-item v-if="!type()" title="当前任务评优奖项" name="1">
+                <ul class="type-list">
+                    <li class="type-item">
+                        <div class="title">奖项</div>
+                        <div class="introduction">认定标准</div>
+                        <div class="number">名额</div>
+                    </li>
+                    <li class="type-item" v-for="(item, index) in collapseParams.categoryEntities" :key="index">
+                        <div class="title">{{ item.categoryName }}</div>
+                        <el-tooltip effect="dark" placement="top">
+                            <template #content>
+                                <p style="max-width: 500px;">{{ item.standard }}</p>
+                            </template>
+                            <div class="introduction">
+                                {{ item.standard }}
+                            </div>
+                        </el-tooltip>
 
+                        <div class="number">{{ item.peopleNum }}人</div>
+                    </li>
+                </ul>
+            </el-collapse-item>
+            <el-collapse-item v-if="!type()" name="2">
+                <template #title>
+                    第一轮候选结果
+                    <el-tag 
+                        style="margin-left: 10px;" 
+                        :type="status[props.params.data.candidateState].type">
+                        当前状态:{{ status[props.params.data.candidateState].text }}
+                    </el-tag>
+                </template>
+                <firstRoundResult :params="{ data: props.params.data }" />
+            </el-collapse-item>
+            <el-collapse-item name="3">
+                <template #title>
+                    最终评优结果
+                    <el-tag 
+                        style="margin-left: 10px;" 
+                        :type="status[props.params.data.evaluateState].type">
+                        当前状态:{{ status[props.params.data.evaluateState].text }}
+                    </el-tag>
+                </template>
+                <secondRoundResult :params="{ data: props.params.data }" />
+            </el-collapse-item>
+        </el-collapse>
+    </el-drawer>
 </template>
 
 <script setup>
+import firstRoundResult from './firstRoundResult.vue';
+import secondRoundResult from './secondRoundResult.vue';
+import { inject, markRaw, onMounted, reactive } from 'vue';
+import { getEcList } from '@/api/evaluate/evaluateTask'
+
+const props = defineProps({
+    params: {
+        type: Object,
+        default: () => {
+            return {
+                visible: false,
+                data: {}
+            }
+        }
+    }
+})
+
+const type = inject('type')
+
+const status = markRaw({
+    0: {
+        text: '未开始',
+        type: 'warning'
+    },
+    1: {
+        text: '进行中',
+        type: 'success'
+    },
+    2: {
+        text: '已完成',
+        type: 'primary'
+    },
+})
+
+const collapseParams = reactive({
+    activeNames: ['1'],
+    categoryEntities: []
+})
+
+const pageParams = reactive({
+    current: 1,
+    size: 10,
+    total: 0
+})
+
+const currentTaskParams = reactive({
+    data: {}
+})
+
+const openDrawer = () => {
+    const { id } = props.params.data
+    const { current, size } = pageParams
+    getEcList(current, size, id).then(ecResult => {
+        const { code, data: { records } } = ecResult.data
+        if (code !== 200) return this.$message.error('评优类别加载失败')
+        collapseParams.categoryEntities = records
+    })
+    currentTaskParams.data = props.params.data
+    collapseParams.activeNames = !type() ? ['1'] : ['3']
+}
 
 </script>
 
 <style lang="scss" scoped>
+$borderColor: var(--el-border-color);
+
+.drawer-title {
+    border-left: 3px solid #409eff;
+    padding-left: 10px;
+}
+
+.type-list {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    width: 100%;
+    border: 1px solid $borderColor;
+    border-radius: var(--el-border-radius-base);
+    box-sizing: border-box;
+
+    .type-item {
+        display: flex;
+        height: 40px;
+        line-height: 40px;
+        text-align: center;
+
+        div {
+            border-bottom: 1px solid $borderColor;
+            flex-shrink: 0;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
+
+        .title {
+            flex: 2;
+        }
+
+        .introduction {
+            flex: 5;
+            flex-shrink: 0;
+
+            border: {
+                right: 1px solid $borderColor;
+                left: 1px solid $borderColor;
+            }
+        }
+
+        .number {
+            flex: 1;
+        }
+
+        .tool {
+            flex: 2;
+            border-left: 1px solid $borderColor;
+        }
+
+        &:last-child {
+            div {
+                border-bottom: 0;
+            }
+        }
+    }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3