马宇豪
2025-03-04 1b9fea7d4af68d8f933b2dc42bf6084b9646f64c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<template>
    <div class="system-add-user-container">
        <el-dialog :title="title" v-model="isShowUserDialog" width="769px">
            <el-form :model="dutyForm" size="default" ref="dutyRef" :rules="dutyFormRules" label-width="90px">
                <el-row :gutter="35">
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="职务名称" prop="positionName">
                            <el-input v-model.trim="dutyForm.positionName" placeholder="请输入职务名称" clearable></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="职务编号" prop="positionCode">
                            <el-input v-model.trim="dutyForm.positionCode" placeholder="请输入职务编号" clearable></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="isShowUserDialog = !isShowUserDialog" size="default">取 消</el-button>
                    <el-button type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button>
                </span>
            </template>
        </el-dialog>
    </div>
</template>
 
<script lang="ts">
import { reactive, toRefs, onMounted, defineComponent, ref } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import { dutyApi } from '/@/api/systemManage/duty';
 
// 定义接口来定义对象的类型
interface DeptData {}
interface roleData {}
interface sexData {}
interface UserState {
    title: string;
    disabled: boolean;
    isShowUserDialog: boolean;
    dutyForm: {
      positionName:string;
      positionCode:string
    };
    dutyFormRules:{}
}
 
export default defineComponent({
    name: 'dutyDialog',
    setup(props, context) {
        const dutyRef = ref()
        const state = reactive<UserState>({
            title: '',
            disabled: false,
            isShowUserDialog: false,
            dutyForm: {
              positionName: '',
              positionCode: ''
            },
            dutyFormRules:{
              positionName: [{ required: true, message: '请填写职务名称', trigger: 'blur' }],
              positionCode: [{ required: true, message: '请填写职务编号', trigger: 'blur' }]
            }
        });
        // 打开弹窗
        const openDialog = (type: string, value: any) => {
            state.isShowUserDialog = true;
            if (type === '新增') {
                state.disabled = false
                state.title = '新增职务';
                state.dutyForm = {
                  positionName: '',
                  positionCode: ''
                };
            } else {
                state.disabled = true
                state.title = '修改职务';
                state.dutyForm = JSON.parse(JSON.stringify(value));
            }
        };
 
        // 新增修改
        const onSubmit = async () => {
            dutyRef.value.validate(async (valid:Boolean) => {
                if(valid){
                    if (state.title === '新增职务') {
                        let res = await dutyApi().addDuty(state.dutyForm);
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '职务新增成功',
                                duration: 2000
                            });
                            state.isShowUserDialog = false;
                            context.emit('getDutyList')
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    } else {
                        let res = await dutyApi().modDuty(state.dutyForm);
                        if (res.data.code === '200') {
                            ElMessage({
                                type: 'success',
                                message: '职务修改成功',
                                duration: 2000
                            });
                            state.isShowUserDialog = false;
                            context.emit('getDutyList')
                        } else {
                            ElMessage({
                                type: 'warning',
                                message: res.data.msg
                            });
                        }
                    }
                }else{
                    ElMessage({
                        type:'warning',
                        message:'请完善基本信息'
                    })
                }
            })
 
        };
 
        // 页面加载时
        onMounted(() => {});
        return {
            dutyRef,
            openDialog,
            onSubmit,
            ...toRefs(state)
        };
    }
});
</script>