CET-vue-3.0/src/views/system/tenant/TenantPackModal.vue

185 lines
5.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<BasicModal v-bind="$attrs" @register="registerModal" :title="title" @ok="handleSubmit" width="800px" :showCancelBtn="false" :showOkBtn="false">
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<template #tableTitle>
<a-button preIcon="ant-design:plus-outlined" type="primary" @click="handleAdd" style="margin-right: 5px">新增 </a-button>
<a-button
v-if="selectedRowKeys.length > 0"
preIcon="ant-design:delete-outlined"
type="primary"
@click="handlePackBatch"
style="margin-right: 5px"
>批量删除
</a-button>
</template>
<template #action="{ record }">
<TableAction :actions="getActions(record)" />
</template>
</BasicTable>
</BasicModal>
<TenantPackMenuModal @register="registerPackMenu" @success="success" />
<TenantPackUserModal @register="registerPackUser" @success="success" />
</template>
<script lang="ts" setup name="tenant-pack-modal">
import { reactive, ref, unref } from 'vue';
import { BasicModal, useModal, useModalInner } from '/@/components/Modal';
import { packColumns, userColumns, packFormSchema } from './tenant.data';
import { getTenantUserList, leaveTenant, packList, deletePackPermissions } from './tenant.api';
import { useListPage } from '/@/hooks/system/useListPage';
import { BasicTable, TableAction } from '/@/components/Table';
import TenantPackMenuModal from './TenantPackMenuModal.vue';
import {Modal} from "ant-design-vue";
import TenantPackUserModal from './TenantPackUserModal.vue';
import {useMessage} from "/@/hooks/web/useMessage";
const [registerPackMenu, { openModal }] = useModal();
const [registerPackUser, { openModal: packUserOpenModal }] = useModal();
const tenantId = ref<number>(0);
// 列表页面公共参数、方法
const { prefixCls, tableContext } = useListPage({
designScope: 'tenant-template',
tableProps: {
api: packList,
columns: packColumns,
immediate: false,
formConfig: {
schemas: packFormSchema,
labelCol: {
xxl: 8,
},
actionColOptions: {
xs: 24,
sm: 8,
md: 8,
lg: 8,
xl: 8,
xxl: 8,
},
},
beforeFetch: (params) => {
return Object.assign(params, { tenantId: unref(tenantId) });
},
},
});
const [registerTable, { reload }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
// Emits声明
const emit = defineEmits(['register', 'success']);
const createBy = ref<string>('');
//表单赋值
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
tenantId.value = data.tenantId;
createBy.value = data.createBy;
success();
});
//设置标题
const title = '租户产品包列表';
//表单提交事件
async function handleSubmit(v) {
closeModal();
}
function getActions(record) {
return [
{
label: '用户',
onClick: seeTenantPackUser.bind(null, record),
},
{
label: '编辑',
onClick: handleEdit.bind(null, record),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除租户产品包',
confirm: handleDelete.bind(null, record),
},
},
];
}
/**
* 成功
*/
function success() {
(selectedRowKeys.value = []) && reload();
}
/**
* 编辑
* @param record
*/
async function handleEdit(record) {
openModal(true, {
isUpdate: true,
record: record,
tenantId: unref(tenantId)
});
}
//默认系统产品包不允许删除,包含(超级管理员、组织账户管理员、组织应用管理员)
const packCode = reactive<any>(['superAdmin','accountAdmin','appAdmin']);
const { createMessage } = useMessage();
/**
* 删除产品包
* @param 删除
*/
async function handleDelete(record) {
//update-begin---author:wangshuai ---date:20230222 for系统默认产品包不允许删除------------
if(packCode.indexOf(record.packCode) != -1){
createMessage.warning("默认系统产品包不允许删除");
return;
}
//update-end---author:wangshuai ---date:20230222 for系统默认产品包不允许删除------------
await deletePackPermissions({ ids: record.id }, success);
}
/**
* 批量删除产品包
*/
async function handlePackBatch() {
let value = selectedRows.value;
if(value && value.length>0){
for (let i = 0; i < value.length; i++) {
if(packCode.indexOf(value[i].packCode) != -1){
createMessage.warning("默认系统产品包不允许删除");
return;
}
}
}
Modal.confirm({
title: '删除租户产品包',
content: '是否删除租户产品包',
okText: '确认',
cancelText: '取消',
onOk: async () => {
await deletePackPermissions({ ids: selectedRowKeys.value.join(',')}, success);
}
})
}
/**
*
* 新增表单
*/
function handleAdd() {
openModal(true, {
isUpdate: false,
tenantId: unref(tenantId),
});
}
/**
* 产品包下面的用户
* @param record
*/
function seeTenantPackUser(record) {
record.createBy = unref(createBy);
packUserOpenModal(true,{
record:record
})
}
</script>