<script lang="ts" setup>
|
import type { FormSchema } from '@jnpf/ui/form';
|
|
import { useMessage } from '@jnpf/hooks';
|
import { BasicForm, useForm } from '@jnpf/ui/form';
|
import { BasicModal, useModalInner } from '@jnpf/ui/modal';
|
import { AesEncryption, encryptByMd5 } from '@jnpf/utils';
|
|
import { useUserStore } from '@vben/stores';
|
|
import { getCompanyName, joinSaas } from '#/api/permission/userSetting';
|
|
const emit = defineEmits(['register', 'reload']);
|
|
const schemas: FormSchema[] = [
|
{
|
field: 'tenantId',
|
label: '租户号',
|
component: 'Input',
|
componentProps: { placeholder: '请输入租户号', onBlur: handleCompanyName },
|
rules: [{ required: true, trigger: 'blur', message: '必填' }],
|
},
|
{
|
field: 'companyName',
|
label: '企业名称',
|
component: 'Input',
|
componentProps: { placeholder: '输入租户号带入', disabled: true },
|
},
|
{
|
field: 'appId',
|
label: '应用编码',
|
component: 'Input',
|
componentProps: { placeholder: '打开时带入,APP ID就是当前应用的APP ID', disabled: true },
|
rules: [{ required: true, trigger: 'blur', message: '必填' }],
|
},
|
{
|
field: 'appName',
|
label: '应用名称',
|
component: 'Input',
|
componentProps: { placeholder: '打开时带入,应用名称就是当前应用名称', disabled: true },
|
},
|
{
|
field: 'account',
|
label: '您在该应用下的账号及密码',
|
component: 'Input',
|
componentProps: { placeholder: '请输入账号' },
|
rules: [{ required: true, trigger: 'blur', message: '必填' }],
|
},
|
{
|
field: 'password',
|
label: '',
|
component: 'InputPassword',
|
componentProps: { placeholder: '请输入密码' },
|
rules: [{ required: true, trigger: 'blur', message: '必填' }],
|
},
|
];
|
const { createMessage } = useMessage();
|
const userStore = useUserStore();
|
const aesEncryption = new AesEncryption();
|
const [registerForm, { setFieldsValue, validate, resetFields }] = useForm({ labelWidth: 130, schemas, layout: 'vertical' });
|
const [registerModal, { closeModal, changeOkLoading }] = useModalInner(init);
|
|
function init() {
|
resetFields();
|
const data = {
|
appId: userStore.userInfo?.saasAppId || '',
|
appName: userStore.userInfo?.saasAppName || '',
|
};
|
setFieldsValue(data);
|
}
|
async function handleCompanyName() {
|
const values = await validate(['tenantId']);
|
if (!values) return;
|
getCompanyName(values.tenantId)
|
.then((res) => {
|
setFieldsValue({ companyName: res.data || '' });
|
})
|
.catch(() => {
|
setFieldsValue({ companyName: '' });
|
});
|
}
|
async function handleSubmit() {
|
const values = await validate();
|
if (!values) return;
|
changeOkLoading(true);
|
const password = encryptByMd5(values.password);
|
const encryptPassword = aesEncryption.encryptByAES(password);
|
const query = { ...values, password: encryptPassword };
|
joinSaas(query)
|
.then((res) => {
|
createMessage.success(res.msg);
|
changeOkLoading(false);
|
emit('reload');
|
closeModal();
|
})
|
.catch(() => {
|
changeOkLoading(false);
|
});
|
}
|
</script>
|
<template>
|
<BasicModal v-bind="$attrs" @register="registerModal" title="加入企业" @ok="handleSubmit">
|
<BasicForm @register="registerForm" />
|
</BasicModal>
|
</template>
|