xieb
2025-01-21 d13cebe7fbadd396e91a989af331df8a8e7b40f8
src/views/evaluate/components/addIndividualTask.vue
@@ -5,26 +5,26 @@
                <el-form-item label="任务名称" prop="taskName">
                    <el-input v-model="form.taskName" placeholder="请输入任务名称"></el-input>
                </el-form-item>
                <el-form-item label="任务类别" prop="taskType">
                <el-form-item label="评优奖项" prop="categoryEntities">
                    <ul class="type-list">
                        <li class="type-item">
                            <div class="title">类别</div>
                            <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>
                        <li class="type-item" v-for="(item, index) in form.categoryEntities" :key="index">
                            <div class="title">{{ item.categoryName }}</div>
                            <el-tooltip effect="dark" placement="top">
                                <template #content>
                                    <p style="width: 500px;">{{ item.introduction }}</p>
                                    <p style="max-width: 500px;">{{ item.standard }}</p>
                                </template>
                                <div class="introduction">
                                    {{ item.introduction }}
                                    {{ item.standard }}
                                </div>
                            </el-tooltip>
                            <div class="number">{{ item.number }}</div>
                            <div class="number">{{ item.peopleNum }}</div>
                            <div class="tool">
                                <el-popconfirm title="是否确认删除当前评优类别?" @confirm="deleteTaskType(index)">
                                    <template #reference>
@@ -53,14 +53,14 @@
            <!-- 添加类别弹窗 -->
            <el-dialog v-model="innerVisible" width="40%" title="添加评优类别" append-to-body @close="innerDialogClose">
                <el-form :model="taskTypeForm" :rules="taskTypeRules" ref="taskTypeFormRef" label-width="80px">
                    <el-form-item label="类别" prop="title">
                        <el-input v-model="taskTypeForm.title" placeholder="请输入类别名称"></el-input>
                    <el-form-item label="类别" prop="categoryName">
                        <el-input v-model="taskTypeForm.categoryName" placeholder="请输入类别名称"></el-input>
                    </el-form-item>
                    <el-form-item label="认定标准" prop="introduction">
                        <el-input type="textarea" v-model="taskTypeForm.introduction" placeholder="请输入认定标准"></el-input>
                    <el-form-item label="认定标准" prop="standard">
                        <el-input type="textarea" v-model="taskTypeForm.standard" placeholder="请输入认定标准"></el-input>
                    </el-form-item>
                    <el-form-item label="名额" prop="number">
                        <el-input v-model="taskTypeForm.number" placeholder="请输入名额数量"></el-input>
                    <el-form-item label="名额" prop="peopleNum">
                        <el-input-number :min="1" v-model="taskTypeForm.peopleNum" placeholder="请输入名额数量" controls-position="right" style="width: 100%;"></el-input-number>
                    </el-form-item>
                </el-form>
                <template #footer>
@@ -71,15 +71,17 @@
        </div>
        <template #footer>
            <el-button @click="() => params.visible = false">取消</el-button>
            <el-button type="primary">确定</el-button>
            <el-button type="primary" @click="addEvaluateTask">确定</el-button>
        </template>
    </el-dialog>
</template>
<script>
import _ from 'lodash';
import { add } from '@/api/evaluate/evaluateTask'
export default {
    inject: ['type'],
    props: {
        params: {
            type: Object,
@@ -87,8 +89,6 @@
                return {
                    visible: false,
                    title: '添加个人评优任务',
                    isEdit: false,
                    addForm: {},
                };
            },
        },
@@ -97,37 +97,71 @@
        return {
            form: {
                taskName: '',
                taskType: [],
                categoryEntities: [],
                candidateCutoffTimeStart: '',
                candidateCutoffTimeEnd: ''
            },
            taskTypeForm: {
                title: '',
                introduction: '',
                number: ''
                categoryName: '',
                standard: '',
                peopleNum: ''
            },
            rules: {
                taskName: [
                    { required: true, message: '请输入任务名称', trigger: 'click' },
                ],
                taskType: [
                categoryEntities: [
                    { required: true, message: '任务类别不可为空', trigger: 'click' },
                ],
                candidateCutoffTimeStart: [
                    { required: true, message: '请选择任务开始时间', trigger: 'click' },
                    {
                        validator: (rule, value, callback) => {
                            if (value) {
                                const startTime = new Date(value).getTime()
                                const endTime = new Date(this.form.candidateCutoffTimeEnd).getTime()
                                const nowTime = new Date().getTime()
                                // if (nowTime > startTime) {
                                //     callback(new Error('开始时间不能早于当前时间'))
                                // } else
                                if (startTime >= endTime) {
                                    callback(new Error('结束时间不能早于等于开始时间'))
                                } else {
                                    callback()
                                }
                            }
                        }, trigger: 'click'
                    }
                ],
                candidateCutoffTimeEnd: [
                    { required: true, message: '请选择任务开始时间', trigger: 'click' },
                    {
                        validator: (rule, value, callback) => {
                            if (value) {
                                const startTime = new Date(this.form.candidateCutoffTimeStart).getTime()
                                const endTime = new Date(value).getTime()
                                const nowTime = new Date().getTime()
                                // if (nowTime > endTime) {
                                //     callback(new Error('结束时间不能早于等于当前时间'))
                                // } else
                                if (startTime >= endTime) {
                                    callback(new Error('结束时间不能早于等于开始时间'))
                                } else {
                                    callback()
                                }
                            }
                        }, trigger: 'click'
                    }
                ]
            },
            taskTypeRules: {
                title: [
                categoryName: [
                    { required: true, message: '请输入类别', trigger: 'click' }
                ],
                introduction: [
                standard: [
                    { required: true, message: '请输入认定标准', trigger: 'click' }
                ],
                number: [
                peopleNum: [
                    { required: true, message: '请输入名额', trigger: 'click' }
                ]
            },
@@ -143,7 +177,7 @@
        },
        deleteTaskType(index) {
            try {
                this.form.taskType.splice(index, 1)
                this.form.categoryEntities.splice(index, 1)
                this.$message.success('删除当前评优类别成功')
            } catch (error) {
                this.$message.error('删除当前评优类别失败')
@@ -156,9 +190,20 @@
            this.$refs.taskTypeFormRef.validate(vaild => {
                if (!vaild) return
                const curValue = _.cloneDeep(this.taskTypeForm)
                this.form.taskType.push(curValue)
                this.form.categoryEntities.push(curValue)
                this.innerVisible = false
            })
        },
        addEvaluateTask() {
            this.$refs.formRef.validate(valid => {
                if (!valid) return
                add(this.form).then(res => {
                    if (res.data.code !== 200) return
                    this.$emit('refreshTable', { currentPage: 1, pageSize: 10 })
                    this.$message.success('添加成功')
                    this.params.visible = false
                })
            })
        }
    }
};