3 files modified
1 files added
| | |
| | | ids, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getFinallyResult = (params) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateTaskSet/page', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | type: 2, |
| | | descs: 'vote_num' |
| | | } |
| | | }) |
| | | } |
| | |
| | | searchMenuSpan: 6, |
| | | border: true, |
| | | index: true, |
| | | viewBtn: true, |
| | | viewBtn: false, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | selection: true, |
| | |
| | | searchMenuSpan: 6, |
| | | border: true, |
| | | index: true, |
| | | viewBtn: true, |
| | | viewBtn: false, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | selection: true, |
| New file |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <addDialog :params="addParams" @refreshTable="this.onLoad" /> |
| | | <!-- 新增候选人 --> |
| | | <addCandidate :params="addCandidateParams" @refreshTable="this.onLoad" /> |
| | | <!-- 预览弹窗 --> |
| | | <viewEvaluateDetail :params="viewEvaluateDetailParams" /> |
| | | </basic-container> |
| | | </template> |
| | | |
| | |
| | | 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 { |
| | |
| | | }, |
| | | // 新增候选人params |
| | | addCandidateParams: {}, |
| | | // 信息预览弹窗 |
| | | viewEvaluateDetailParams: {}, |
| | | }; |
| | | }, |
| | | watch: { |
| | |
| | | }, |
| | | }; |
| | | }, |
| | | viewDateilDialog(row) { |
| | | this.viewEvaluateDetailParams = { |
| | | visible: true, |
| | | data: row |
| | | } |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | update(row).then( |
| | | () => { |