From d3cb9dc762b0bd5acbaa59d146afb2cb9f2017e4 Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Sat, 23 Dec 2023 18:32:06 +0800
Subject: [PATCH] 页面修改提交
---
src/option/evaluate/evaluateTask.js | 4
src/views/evaluate/components/viewEvaluateDetail.vue | 233 ++++++++++++++++++++++++++++++++++++++++++++++
src/api/evaluate/evaluateTask.js | 12 ++
src/views/evaluate/evaluateTask.vue | 15 ++
4 files changed, 261 insertions(+), 3 deletions(-)
diff --git a/src/api/evaluate/evaluateTask.js b/src/api/evaluate/evaluateTask.js
index 2b63fd9..b0e8f3c 100644
--- a/src/api/evaluate/evaluateTask.js
+++ b/src/api/evaluate/evaluateTask.js
@@ -77,4 +77,16 @@
ids,
}
})
+}
+
+export const getFinallyResult = (params) => {
+ return request({
+ url: '/evaluate/evaluateTaskSet/page',
+ method: 'get',
+ params: {
+ ...params,
+ type: 2,
+ descs: 'vote_num'
+ }
+ })
}
\ No newline at end of file
diff --git a/src/option/evaluate/evaluateTask.js b/src/option/evaluate/evaluateTask.js
index 3c1f268..3262348 100644
--- a/src/option/evaluate/evaluateTask.js
+++ b/src/option/evaluate/evaluateTask.js
@@ -12,7 +12,7 @@
searchMenuSpan: 6,
border: true,
index: true,
- viewBtn: true,
+ viewBtn: false,
addBtn: false,
editBtn: false,
selection: true,
@@ -218,7 +218,7 @@
searchMenuSpan: 6,
border: true,
index: true,
- viewBtn: true,
+ viewBtn: false,
addBtn: false,
editBtn: false,
selection: true,
diff --git a/src/views/evaluate/components/viewEvaluateDetail.vue b/src/views/evaluate/components/viewEvaluateDetail.vue
new file mode 100644
index 0000000..53203bd
--- /dev/null
+++ b/src/views/evaluate/components/viewEvaluateDetail.vue
@@ -0,0 +1,233 @@
+<template>
+ <el-dialog title="信息预览" v-model="params.visible" width="800px">
+ <div class="descriptions">
+ <div class="descriptions-item" v-for="item in taskDateil" :key="item.prop" :style="{ width: item.width }">
+ <div class="label">{{ item.title }}</div>
+ <div class="value" v-if="!item.isSlot">{{ item.value }}</div>
+ <div class="table" v-else>
+ <avue-crud :option="item.option" :data="item.data" ref="crud" @current-change="currentChange"
+ @size-change="sizeChange" @refresh-change="refreshChange"></avue-crud>
+ </div>
+ </div>
+ </div>
+ </el-dialog>
+</template>
+
+<script setup>
+import { reactive, watch } from 'vue';
+import {
+ getCandidateList,
+ getFinallyResult
+} from '@/api/evaluate/evaluateTask'
+
+const props = defineProps({
+ params: {
+ type: Object,
+ default: () => ({
+ visible: false,
+ data: {},
+ }),
+ }
+})
+
+const page = reactive({
+ current: 1,
+ size: 10,
+ total: 0
+})
+
+const taskDateil = reactive([
+ {
+ title: '任务名称',
+ prop: 'taskName',
+ value: '',
+ width: 'calc(100% / 3)'
+ },
+ {
+ title: '任务类别',
+ prop: 'taskType',
+ value: '',
+ width: 'calc(100% / 3)'
+ },
+ {
+ title: '评定标准',
+ prop: 'remark',
+ value: '',
+ width: 'calc(100% / 3)'
+ },
+ {
+ title: '候选人截止日期',
+ prop: 'candidateCutoffTime',
+ value: '',
+ width: '50%'
+ },
+ {
+ title: '评优截止日期',
+ prop: 'evaluateCutoffTime',
+ value: '',
+ width: '50%'
+ },
+ {
+ title: '候选人状态',
+ prop: 'candidateState',
+ value: '',
+ width: '50%'
+ },
+ {
+ title: '评优评先状态',
+ prop: 'evaluateState',
+ value: '',
+ width: '50%'
+ },
+ {
+ title: '候选结果',
+ prop: 'candidateResult',
+ value: '',
+ width: '100%'
+ },
+ {
+ title: '最终评定结果',
+ prop: 'finallyResult',
+ isSlot: true,
+ width: '100%',
+ data: [],
+ option: {
+ height: '200',
+ calcHeight: 30,
+ tip: false,
+ searchShow: true,
+ border: true,
+ index: true,
+ viewBtn: false,
+ addBtn: false,
+ editBtn: false,
+ selection: false,
+ dialogClickModal: false,
+ menu: false,
+ menuLeft: false,
+ header: false,
+ menuFixed: 'right',
+ labelWidth: '120',
+ span: 1,
+ colums: [
+ {
+ lable: '评优项目',
+ prop: '',
+ type: 'input',
+ },
+ {
+ lable: '名称',
+ prop: '',
+ type: 'input',
+ },
+ {
+ lable: '候选人',
+ prop: '',
+ type: 'input',
+ },
+ {
+ lable: '部门',
+ prop: '',
+ type: 'input'
+ },
+ {
+ lable: '票数',
+ prop: '',
+ type: 'input'
+ }
+ ]
+ }
+ }
+])
+
+watch(() => props.params.visible, (val) => {
+ val && initData()
+}, {
+ deep: true
+})
+
+const candidateList = () => {
+ let values = {
+ evaluateTaskId: props.params.data.id
+ };
+ return getCandidateList(1, 99999, values).then(res => {
+ const candidateRes = res.data.data.records;
+ return candidateRes
+ });
+}
+
+const getFinallyList = () => {
+ const params = {
+ evaluateTaskId: props.params.data.id,
+ current: page.current,
+ size: page.size
+ }
+ return getFinallyResult(params).then(res => {
+ return res.data.data.records
+ })
+}
+
+const initData = async () => {
+ const data = props.params.data
+ for (const item of taskDateil) {
+ item.value = data[item.prop] || '暂未完善'
+
+ if (item.prop === 'candidateResult') {
+ const res = await candidateList()
+ if (res.length == 0) {
+ item.value = '暂无候选人'
+ }
+ }
+
+ if (item.prop === 'finallyResult') {
+ const res = await getFinallyList()
+ item.data = res
+ }
+ }
+
+ // 获取当前数据
+}
+</script>
+
+<style lang="scss" scoped>
+.descriptions {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+
+ border: {
+ top: 1px solid #eeeded;
+ right: 1px solid #eeeded;
+ }
+
+ ;
+
+ .descriptions-item {
+ display: flex;
+ box-sizing: border-box;
+ border: {
+ bottom: 1px solid #eeeded;
+ left: 1px solid #eeeded;
+ }
+
+ .label,
+ .value {
+ flex-shrink: 0;
+ padding: 10px 5px;
+ }
+
+ .label {
+ width: 100px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ background-color: aliceblue;
+ border-right: 1px solid #eeeded;
+ }
+
+ .table {
+ width: 100%;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/evaluate/evaluateTask.vue b/src/views/evaluate/evaluateTask.vue
index ba5437d..7eb8338 100644
--- a/src/views/evaluate/evaluateTask.vue
+++ b/src/views/evaluate/evaluateTask.vue
@@ -13,6 +13,7 @@
<el-button type="warning" plain icon="el-icon-download" @click="handleExport">导出</el-button>
</template>
<template #menu="{ size, row, index }">
+ <el-button type="primary" text plain icon="el-icon-view" @click="viewDateilDialog(row)">详情</el-button>
<el-button type="primary" text plain icon="el-icon-edit" @click="editDialog(row)">编辑</el-button>
<el-button type="primary" text plain icon="el-icon-position" @click="publicTimeBtn(row)"
v-if="row.candidateState === 2">发布</el-button>
@@ -39,6 +40,8 @@
<addDialog :params="addParams" @refreshTable="this.onLoad" />
<!-- 新增候选人 -->
<addCandidate :params="addCandidateParams" @refreshTable="this.onLoad" />
+ <!-- 预览弹窗 -->
+ <viewEvaluateDetail :params="viewEvaluateDetailParams" />
</basic-container>
</template>
@@ -54,12 +57,14 @@
import 'nprogress/nprogress.css';
import addDialog from './components/addDialog.vue';
import addCandidate from './components/addCandidate.vue';
+import viewEvaluateDetail from './components/viewEvaluateDetail.vue';
import { getDeptTree } from '@/api/system/dept';
export default {
components: {
addDialog,
- addCandidate
+ addCandidate,
+ viewEvaluateDetail
},
data() {
return {
@@ -101,6 +106,8 @@
},
// 新增候选人params
addCandidateParams: {},
+ // 信息预览弹窗
+ viewEvaluateDetailParams: {},
};
},
watch: {
@@ -174,6 +181,12 @@
},
};
},
+ viewDateilDialog(row) {
+ this.viewEvaluateDetailParams = {
+ visible: true,
+ data: row
+ }
+ },
rowUpdate(row, index, done, loading) {
update(row).then(
() => {
--
Gitblit v1.9.3