| | |
| | | <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> |