From 2324d4d572882e139360a8bafdc85b467d5469e9 Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Sat, 09 Dec 2023 16:29:29 +0800
Subject: [PATCH] 评优任务、考核权重设置页面修改

---
 src/views/evaluate/components/addDialog.vue |  169 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 137 insertions(+), 32 deletions(-)

diff --git a/src/views/evaluate/components/addDialog.vue b/src/views/evaluate/components/addDialog.vue
index ad11f95..ee611e9 100644
--- a/src/views/evaluate/components/addDialog.vue
+++ b/src/views/evaluate/components/addDialog.vue
@@ -1,42 +1,51 @@
 <template>
-    <el-dialog v-model="params.visible"  :title="params.title" width="600px" :destroy-on-close="true">
-        <el-form :model="addForm" label-width="120px">
-            <el-form-item label="任务名称:">
+    <el-dialog v-model="params.visible" :title="params.title" width="600px" destroyOnClose>
+        <el-form :model="addForm" label-width="130px" :rules="rules" ref="addFormRef">
+            <el-form-item label="任务名称:" prop="taskName">
                 <el-input v-model="addForm.taskName" placeholder="请输入任务名称"></el-input>
             </el-form-item>
-            <el-form-item label="任务类别:">
+            <el-form-item label="任务类别:" prop="taskType">
                 <el-input v-model="addForm.taskType" placeholder="请输入任务类别"></el-input>
             </el-form-item>
-            <el-form-item label="认定标准描述:">
+            <el-form-item label="认定标准描述:" prop="remark">
                 <el-input v-model="addForm.remark" placeholder="请输入任务名称"></el-input>
             </el-form-item>
-            <el-form-item label="候选人数量:">
+            <el-form-item label="候选人数量:" prop="candidateNum">
                 <ul class="select-group">
-                    <li>技术部:<el-select placeholder="请设置该部门的评选人数"></el-select></li>
-                    <li>财务部:<el-select placeholder="请设置该部门的评选人数"></el-select></li>
-                    <li>人事部:<el-select placeholder="请设置该部门的评选人数"></el-select></li>
+                    <li v-for="(dept, index) in depts" :key="dept.id">
+                        <el-form-item :label="`${dept.title}:`">
+                            <el-input-number v-model="addForm.candidateNum[index].val" placeholder="请输入当前部门评优人数"
+                                controls-position="right" class="input-number" />
+                        </el-form-item>
+                    </li>
                 </ul>
             </el-form-item>
-            <el-form-item label="候选人截止日期:">
-                <el-date-picker v-model="addForm.candidateCutoffTime" type="datetime" placeholder="请选择截止时间" style="width: 100%;" />
+            <el-form-item label="候选人截止日期:" prop="candidateCutoffTime">
+                <el-date-picker v-model="addForm.candidateCutoffTime" type="datetime" placeholder="请选择截止时间"
+                    format="YYYY-MM-DD HH:mm:ss" valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
             </el-form-item>
-            <el-form-item label="候选人截止日期:">
-                <el-date-picker v-model="addForm.evaluateCutoffTime" type="datetime" placeholder="请选择截止时间" style="width: 100%;" />
-            </el-form-item>
-            <el-form-item label="评优数量:">
+            <el-form-item label="评优数量:" prop="evaluateNum">
                 <el-input v-model="addForm.evaluateNum" placeholder="请输入评优数量"></el-input>
+            </el-form-item>
+            <el-form-item label="候选人截止日期:" prop="evaluateCutoffTime">
+                <el-date-picker v-model="addForm.evaluateCutoffTime" type="datetime" placeholder="请选择截止时间"
+                    format="YYYY-MM-DD HH:mm:ss" valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
             </el-form-item>
         </el-form>
         <template #footer>
             <span class="dialog-footer">
-                <el-button @click="addParams.visible = false">取消</el-button>
-                <el-button type="primary" @click="dialogVisible = false">确认</el-button>
+                <el-button @click="params.visible = false">取消</el-button>
+                <el-button type="primary" @click="params.isEdit ? handleEdit() : handleSubmit()">确认</el-button>
             </span>
         </template>
     </el-dialog>
 </template>
 
 <script>
+import website from '@/config/website';
+import { getDeptTree } from '@/api/system/dept';
+import { add, update } from "@/api/evaluate/evaluateTask";
+
 export default {
     props: {
         params: {
@@ -44,7 +53,8 @@
             default: () => {
                 return {
                     visible: false,
-                    title: '',
+                    title: '新增',
+                    isEdit: false,
                     addForm: {}
                 };
             }
@@ -52,14 +62,14 @@
     },
     data() {
         return {
-            title: '新增',
+            depts: [],
             addForm: {
                 id: "",
                 tenantId: "",
                 taskName: "",
                 taskType: "",
                 remark: "",
-                candidateNum: "",
+                candidateNum: [],
                 candidateCutoffTime: "",
                 candidateState: "",
                 evaluateNum: "",
@@ -73,36 +83,131 @@
                 status: "",
                 isDeleted: ""
             },
+            rules: {
+                taskName: [
+                    { required: true, message: '请输入任务名称', trigger: 'blur' },
+                ],
+                taskType: [
+                    { required: true, message: '请输入任务类别', trigger: 'blur' },
+                ],
+                remark: [
+                    { required: true, message: '请输入认定标准描述', trigger: 'blur' },
+                ],
+                candidateNum: [
+                    { required: true, message: '请选择候选人截止日期', trigger: 'click' },
+                ],
+                candidateCutoffTime: [
+                    { required: true, message: '请选择候选人截止日期', trigger: 'click' },
+                ],
+                evaluateNum: [
+                    { required: true, message: 'Please input Activity name', trigger: 'click' },
+                ],
+                evaluateCutoffTime: [
+                    { required: true, message: 'Please input Activity name', trigger: 'click' },
+                ],
+            }
         }
     },
     watch: {
         'params.addForm': {
             handler(val) {
-                this.addForm = val;
+                this.addForm = val
             },
             deep: true
-        }
+        },
+        'params.visible': {
+            handler(val) {
+                val && this.initData(website.tenantId);
+            },
+            deep: true,
+            immediate: true
+        },
     },
     methods: {
-
+        handleSubmit() {
+            this.$refs.addFormRef.validate((valid) => {
+                add(this.addForm).then(() => {
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                    this.refreshTable()
+                }, () => {
+                    this.$message({
+                        type: "error",
+                        message: "操作失败!"
+                    });
+                });
+            });
+        },
+        handleEdit() {
+            this.$refs.addFormRef.validate((valid) => {
+                update(this.addForm).then(() => {
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                    this.refreshTable()
+                }, error => {
+                    this.$message({
+                        type: "error",
+                        message: error
+                    });
+                });
+            })
+        },
+        refreshTable() {
+            this.$emit('refreshTable', {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            })
+            this.params.visible = false
+        },
+        initData(tenantId) {
+            getDeptTree(tenantId).then(res => {
+                const result = res.data.data;
+                this.depts = []
+                result.forEach(item => {
+                    if (item.children) {
+                        this.depts = result.concat(item.children)
+                        delete item.children
+                    }
+                })
+                if (this.params.isEdit) return
+                this.addForm.candidateNum = []
+                this.depts.forEach(dept => {
+                    this.addForm.candidateNum.push({
+                        deptId: dept.id,
+                        val: 0
+                    })
+                })
+            })
+        }
+    },
+    mounted() {
+        // this.initData(website.tenantId);
     }
 }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 .select-group {
     list-style: none;
     margin: 0;
     padding: 0;
     width: 100%;
-}
-.select-group li {
-    margin-top: 15px;
-}
 
-.select-group li:first-child {
-    margin-top: 0;
+    li {
+        margin-top: 20px;
+
+        &:first-child {
+            margin-top: 0;
+        }
+
+        .input-number {
+            width: 100%;
+        }
+    }
 }
-
-
 </style>
\ No newline at end of file

--
Gitblit v1.9.3