支持通过用户账号邀请加入租户

pull/8722/head
JEECG 2025-08-12 18:18:34 +08:00
parent 3d9f59c69b
commit c5150baa69
4 changed files with 79 additions and 29 deletions

View File

@ -19,21 +19,43 @@ export default defineComponent({
const title = ref<string>('邀请成员'); const title = ref<string>('邀请成员');
const [registerForm, { resetFields, validate }] = useForm({ const [registerForm, { resetFields, validate }] = useForm({
schemas: [ schemas: [
{
label: '邀请方式',
field: 'invitedMode',
component: 'RadioButtonGroup',
defaultValue: 1,
componentProps: {
options: [
{ label: '手机号', value: 1 },
{ label: '用户账号', value: 2 },
],
},
},
{ {
label: '手机号', label: '手机号',
field: 'phone', field: 'phone',
component: 'Input', component: 'Input',
dynamicRules: () => { ifShow: ({ values }) => values.invitedMode === 1,
return [ dynamicRules: ({ values }) => {
{ required: true, message: '请填写手机号' }, return values.invitedMode === 1
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' }, ? [
]; { required: true, message: '请填写手机号' },
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' },
]
: [{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' }];
},
},
{
field: 'user',
component: 'Input',
label: '用户账号',
ifShow: ({ values }) => values.invitedMode === 2,
dynamicRules: ({ values }) => {
return values.invitedMode === 2 ? [{ required: true, message: '请输入用户账号' }] : [];
}, },
}, },
], ],
showActionButtonGroup: false, showActionButtonGroup: false,
labelCol: { span: 24 },
wrapperCol: { span: 24 },
}); });
// //
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
@ -47,7 +69,7 @@ export default defineComponent({
*/ */
async function handleSubmit() { async function handleSubmit() {
let values = await validate(); let values = await validate();
emit('inviteOk',values.phone); emit('inviteOk', values.phone, values.user);
closeModal(); closeModal();
} }

View File

@ -156,12 +156,16 @@
/** /**
* 用户选择回调事件 * 用户选择回调事件
* @param options * @param options
* @param value * @param phone
* @param userSelectId
*/ */
async function handleInviteUserOk(value) { async function handleInviteUserOk(phone, username) {
//update-begin---author:wangshuai ---date:20230314 forQQYUN-4605------------ //update-begin---author:wangshuai ---date:20230314 forQQYUN-4605------------
if (value) { if (phone) {
await invitationUserJoin({ ids: selectedRowKeys.value.join(','), phone: value }); await invitationUserJoin({ ids: selectedRowKeys.value.join(','), phone: phone });
}
if (username) {
await invitationUserJoin({ ids: selectedRowKeys.value.join(','), username: username });
} }
//update-end---author:wangshuai ---date:20230314 forQQYUN-4605------------ //update-end---author:wangshuai ---date:20230314 forQQYUN-4605------------
} }

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<BasicTable @register="registerTable" :rowSelection="rowSelection"> <BasicTable @register="registerTable" :rowSelection="rowSelection" @fetch-success="onFetchSuccess">
<template #tableTitle> <template #tableTitle>
<a-button <a-button
preIcon="ant-design:user-add-outlined" preIcon="ant-design:user-add-outlined"
@ -67,7 +67,7 @@
fixed: 'right', fixed: 'right',
}, },
rowSelection:{ rowSelection:{
type: "radio" type: "radio",
}, },
beforeFetch: (params) => { beforeFetch: (params) => {
return Object.assign(params, { userTenantStatus: '1,3,4' }); return Object.assign(params, { userTenantStatus: '1,3,4' });
@ -76,6 +76,26 @@
}); });
const [registerTable, { reload }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext; const [registerTable, { reload }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
//
function onFetchSuccess(data) {
let items = data.items;
console.log('items:', items);
// ID
let loginTenantId = getTenantId();
console.log('loginTenantId:', loginTenantId);
// ID
if (items && items.length > 0 && loginTenantId) {
for (let i = 0; i < items.length; i++) {
if (items[i].id == loginTenantId) {
console.log('items[i].id:', items[i].id);
selectedRowKeys.value = [items[i].id];
selectedRows.value = [items[i]];
return;
}
}
}
}
/** /**
* 操作列定义 * 操作列定义
* @param record * @param record
@ -99,11 +119,15 @@
/** /**
* 用户选择回调事件 * 用户选择回调事件
* @param options * @param options
* @param value * @param phone
* @param userSelectId
*/ */
async function handleInviteUserOk(value) { async function handleInviteUserOk(phone, username) {
if (value) { if (phone) {
await invitationUserJoin({ ids: selectedRowKeys.value.join(','), phone: value }); await invitationUserJoin({ ids: selectedRowKeys.value.join(','), phone: phone });
}
if (username) {
await invitationUserJoin({ ids: selectedRowKeys.value.join(','), username: username });
} }
} }

View File

@ -40,19 +40,19 @@ export const columns: BasicColumn[] = [
title: '门牌号', title: '门牌号',
width: 100, width: 100,
}, },
{ // {
dataIndex: 'position_dictText', // dataIndex: 'position_dictText',
title: '职级', // title: '',
width: 150 // width: 150
}, // },
{ // {
dataIndex: 'department_dictText', // dataIndex: 'department_dictText',
title: '部门', // title: '',
width: 150 // width: 150
}, // },
{ {
dataIndex: 'createBy_dictText', dataIndex: 'createBy_dictText',
title: '创建者(拥有)', title: '创建者(拥有)',
width: 150 width: 150
}, },
/* { /* {