移动系统liao
4 天以前 a737f5caf67b75abec3e89296c4321ea6d31bd9b
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
140
141
142
143
<template>
    <div class="sysLdap-container">
        <el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="900px">
            <template #header>
                <div style="color: #fff">
                    <el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
                    <span> {{ props.title }} </span>
                </div>
            </template>
            <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
                <el-row :gutter="35">
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="主机" prop="host">
                            <el-input v-model="state.ruleForm.host" placeholder="请输入主机" maxlength="128" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="端口" prop="port">
                            <el-input v-model="state.ruleForm.port" type="number" placeholder="请输入端口" maxlength="5" clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="搜索基准" prop="baseDn">
                            <el-input v-model="state.ruleForm.baseDn" placeholder="请输入用户搜索基准" maxlength="128" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="过滤规则" prop="authFilter">
                            <el-input v-model="state.ruleForm.authFilter" placeholder="请输入用户过滤规则" maxlength="128" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="绑定DN" prop="bindDn">
                            <el-input v-model="state.ruleForm.bindDn" placeholder="请输入有域管理权限的账户" maxlength="128" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="绑定密码" prop="bindPass">
                            <el-input v-model="state.ruleForm.bindPass" placeholder="请输入有域管理权限的密码" maxlength="512" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="字段属性" prop="bindAttrAccount">
                            <el-input v-model="state.ruleForm.bindAttrAccount" placeholder="请输入域账号字段属性值" maxlength="24" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="用户属性" prop="bindAttrEmployeeId">
                            <el-input v-model="state.ruleForm.bindAttrEmployeeId" placeholder="请输入绑定用户EmployeeId属性!" maxlength="24" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="绑定Code属性" prop="bindAttrCode">
                            <el-input v-model="state.ruleForm.bindAttrCode" placeholder="请输入绑定Code属性!" maxlength="64" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="Ldap版本" prop="version">
                            <el-input v-model="state.ruleForm.version" type="number" placeholder="请输入Ldap版本" maxlength="4" clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                        <el-form-item label="状态" prop="status">
                            <el-switch v-model="state.ruleForm.status" active-text="是" inactive-text="否" />
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="cancel">取 消</el-button>
                    <el-button type="primary" @click="submit">确 定</el-button>
                </span>
            </template>
        </el-dialog>
    </div>
</template>
 
<script lang="ts" setup>
import { ref, reactive } from 'vue';
import type { FormRules } from 'element-plus';
 
import { getAPI } from '/@/utils/axios-utils';
import { SysLdapApi } from '/@/api-services/api';
 
const props = defineProps({
    title: String,
});
const emits = defineEmits(['handleQuery']);
const ruleFormRef = ref();
const state = reactive({
    isShowDialog: false,
    ruleForm: {} as any,
});
 
// 打开弹窗
const openDialog = (row: any) => {
    state.ruleForm = JSON.parse(JSON.stringify(row));
    state.isShowDialog = true;
    ruleFormRef.value?.resetFields();
};
 
// 关闭弹窗
const closeDialog = () => {
    emits('handleQuery');
    state.isShowDialog = false;
};
 
// 取消
const cancel = () => {
    state.isShowDialog = false;
};
 
// 提交
const submit = () => {
    ruleFormRef.value.validate(async (valid: boolean) => {
        if (!valid) return;
        if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
            await getAPI(SysLdapApi).apiSysLdapUpdatePost(state.ruleForm);
        } else {
            await getAPI(SysLdapApi).apiSysLdapAddPost(state.ruleForm);
        }
        closeDialog();
    });
};
 
// 验证规则
const rules = ref<FormRules>({
    host: [{ required: true, message: '请输入主机!', trigger: 'blur' }],
    port: [{ required: true, message: '请输入端口!', trigger: 'blur' }],
    baseDn: [{ required: true, message: '请输入用户搜索基准!', trigger: 'blur' }],
    bindDn: [{ required: true, message: '请输入绑定DN!', trigger: 'blur' }],
    bindPass: [{ required: true, message: '请输入绑定密码!', trigger: 'blur' }],
    authFilter: [{ required: true, message: '请输入用户过滤规则!', trigger: 'blur' }],
    version: [{ required: true, message: '请输入Ldap版本!', trigger: 'blur' }],
    bindAttrAccount: [{ required: true, message: '请输入账号绑定字段!', trigger: 'blur' }],
    bindAttrEmployeeId: [{ required: true, message: '绑定用户EmployeeId属性!', trigger: 'blur' }],
    bindAttrCode: [{ required: true, message: '绑定Code属性!', trigger: 'blur' }],
});
 
// 导出对象
defineExpose({ openDialog });
</script>