From 42dfeb9667d4f367f1bd8cc1e01e00f3173c8418 Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Thu, 04 Jan 2024 17:33:42 +0800
Subject: [PATCH] 新增弹窗
---
src/views/evaluate/components/IndividualTaskPublic.vue | 188 +++++++++++++++++++++++++++++++++++++++++++++++
src/views/evaluate/evaluateTask.vue | 24 ++++-
src/views/evaluate/components/addSectionTask.vue | 8 +-
3 files changed, 209 insertions(+), 11 deletions(-)
diff --git a/src/views/evaluate/components/IndividualTaskPublic.vue b/src/views/evaluate/components/IndividualTaskPublic.vue
new file mode 100644
index 0000000..fe04100
--- /dev/null
+++ b/src/views/evaluate/components/IndividualTaskPublic.vue
@@ -0,0 +1,188 @@
+<template>
+ <el-dialog v-model="params.visible" title="评优任务发布" width="50%" @open="openDialog" @close="dialogClose">
+ <div class="content">
+ <el-form :model="form" ref="formRef" :rules="rules" label-position="top">
+ <el-form-item label="任务类别" prop="taskType">
+ <ul class="type-list">
+ <li class="type-item">
+ <div class="title">类别</div>
+ <div class="introduction">认定标准</div>
+ <div class="number">名额</div>
+ <div class="tool">操作</div>
+ </li>
+ <li class="type-item" v-for="(item, index) in form.taskType" :key="index">
+ <div class="title">{{ item.title }}</div>
+ <el-tooltip effect="dark" placement="top">
+ <template #content>
+ <p style="width: 500px;">{{ item.introduction }}</p>
+ </template>
+ <div class="introduction">
+ {{ item.introduction }}
+ </div>
+ </el-tooltip>
+
+ <div class="number">{{ item.number }}</div>
+ <div class="tool">
+ <el-button type="primary" icon="el-icon-plus" text>添加候选人</el-button>
+ </div>
+ </li>
+ </ul>
+ </el-form-item>
+ <el-form-item label="投票人员" prop="employees">
+ <el-checkbox-group v-model="form.employees">
+ <el-checkbox v-for="item in employeeDict" :key="item.id" :label="item.dictKey">
+ {{ item.dictValue }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="第二轮任务结束时间" required>
+ <el-form-item class="time-box" prop="candidateCutoffTimeStart">
+ <el-date-picker v-model="form.candidateCutoffTimeStart" type="datetime" placeholder="请选择任务开始时间"
+ value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
+ </el-form-item>
+ <span class="time-span">至</span>
+ <el-form-item class="time-box" prop="candidateCutoffTimeEnd">
+ <el-date-picker v-model="form.candidateCutoffTimeEnd" type="datetime" placeholder="请选择任务结束时间"
+ value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
+ </el-form-item>
+ </el-form-item>
+ </el-form>
+ </div>
+ <template #footer>
+ <el-button @click="() => params.visible = false">取消</el-button>
+ <el-button type="primary">确定发布</el-button>
+ </template>
+ </el-dialog>
+</template>
+
+<script>
+import _ from 'lodash';
+import { getDict } from '@/api/dict'
+
+export default {
+ props: {
+ params: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ data: {}
+ };
+ },
+ },
+ },
+ data() {
+ return {
+ employeeDict: [],
+ form: {
+ taskType: [],
+ employees: [],
+ candidateCutoffTimeStart: '',
+ candidateCutoffTimeEnd: ''
+ },
+ rules: {
+ taskType: [
+ { required: true, message: '任务类别不可为空', trigger: 'click' },
+ ],
+ employees: [
+ { required: true, message: '请选择评定人员', trigger: 'click' },
+ ],
+ candidateCutoffTimeStart: [
+ { required: true, message: '请选择任务开始时间', trigger: 'click' },
+ ],
+ candidateCutoffTimeEnd: [
+ { required: true, message: '请选择任务开始时间', trigger: 'click' },
+ ]
+ }
+ }
+ },
+ methods: {
+ dialogClose() {
+ this.$refs.formRef.resetFields()
+ },
+ openDialog() {
+ this.initDict()
+ },
+ initDict() {
+ getDict('employee_type').then(res => {
+ const { code, data } = res.data
+ if (code !== 200) {
+ return this.$message.error('人员类型字典加载失败')
+ }
+ this.employeeDict = data
+ })
+ }
+ }
+};
+</script>
+
+<style lang="scss" scoped>
+$borderColor: var(--el-border-color);
+
+.content {
+ max-height: 400px;
+ overflow-y: auto;
+
+ .time-span {
+ margin: 0 10px;
+ }
+
+ .time-box {
+ width: calc(100% / 2 - 20px);
+ }
+
+ .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
diff --git a/src/views/evaluate/components/addSectionTask.vue b/src/views/evaluate/components/addSectionTask.vue
index 54669e0..6e61728 100644
--- a/src/views/evaluate/components/addSectionTask.vue
+++ b/src/views/evaluate/components/addSectionTask.vue
@@ -1,5 +1,5 @@
<template>
- <el-dialog v-model="params.visible" :title="params.title" width="50%" @close="dialogClose">
+ <el-dialog v-model="params.visible" :title="params.title" width="50%" @open="openDialog" @close="dialogClose">
<div class="content">
<el-form :model="form" ref="formRef" :rules="rules" label-width="130px">
<el-form-item label="任务名称" prop="taskName">
@@ -93,6 +93,9 @@
dialogClose() {
this.$refs.formRef.resetFields()
},
+ openDialog() {
+ this.initDict()
+ },
submit() {
this.$refs.formRef.validate(vaild => {
console.log(this.form);
@@ -107,9 +110,6 @@
this.employeeDict = data
})
}
- },
- mounted() {
- this.initDict()
}
};
</script>
diff --git a/src/views/evaluate/evaluateTask.vue b/src/views/evaluate/evaluateTask.vue
index e932947..36e4c07 100644
--- a/src/views/evaluate/evaluateTask.vue
+++ b/src/views/evaluate/evaluateTask.vue
@@ -5,17 +5,16 @@
:data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
@row-save="rowSave" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
- @refresh-change="refreshChange" >
- <!-- @on-load="onLoad" -->
+ @refresh-change="refreshChange" @on-load="onLoad">
<template #candidateCutoffTimeEnd="{ row }">
- {{ row.candidateCutoffTimeStart || '开始时间未完善' }}
+ {{ row.candidateCutoffTimeStart}}
<div style="text-align: center;">-</div>
- {{ row.candidateCutoffTimeEnd || '结束时间未完善' }}
+ {{ row.candidateCutoffTimeEnd}}
</template>
<template #evaluateCutoffTimeEnd="{ row }">
- {{ row.evaluateCutoffTimeStart || '开始时间未完善' }}
+ {{ row.evaluateCutoffTimeStart}}
<div style="text-align: center;">-</div>
- {{ row.candidateCutoffTimeEnd || '结束时间未完善' }}
+ {{ row.candidateCutoffTimeEnd}}
</template>
<template #menu-left>
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增评优任务</el-button>
@@ -25,12 +24,15 @@
</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-send" @click="taskPublicDialog(row)">发布</el-button>
<el-button type="danger" text plain icon="el-icon-delete" @click="rowDel(row)">删除</el-button>
</template>
</avue-crud>
<!-- 新增个人评优任务弹窗 -->
<addIndividualTask :params="addIndividualParams" @refreshTable="this.onLoad" />
<addSectionTask :params="addSectionParams" @refreshTable="this.onLoad" />
+ <!-- 发布 -->
+ <individualTaskPublic :params="taskPublicParams" @refreshTable="this.onLoad" />
<!-- 预览 -->
<viewEvaluateDetail :params="viewEvaluateDetailParams" />
</basic-container>
@@ -49,11 +51,13 @@
import addIndividualTask from './components/addIndividualTask.vue';
import addSectionTask from './components/addSectionTask.vue';
import viewEvaluateDetail from './components/viewEvaluateDetail.vue';
+import individualTaskPublic from './components/IndividualTaskPublic.vue';
export default {
components: {
addIndividualTask,
addSectionTask,
+ individualTaskPublic,
viewEvaluateDetail
},
data() {
@@ -74,7 +78,6 @@
addIndividualParams: {},
addSectionParams: {},
viewParams: {},
- depts: [],
// 考核结果参数
defaultTaskType: 0,
taskTypeList: {
@@ -91,6 +94,7 @@
},
// 信息预览弹窗
viewEvaluateDetailParams: {},
+ taskPublicParams: {}
};
},
watch: {
@@ -164,6 +168,12 @@
data: row
}
},
+ taskPublicDialog(row) {
+ this.taskPublicParams = {
+ visible: true,
+ data: row
+ }
+ },
rowUpdate(row, index, done, loading) {
update(row).then(
() => {
--
Gitblit v1.9.3