902 lines
29 KiB
Vue
902 lines
29 KiB
Vue
<template>
|
|
<a-spin size="large" :spinning="loading">
|
|
<div class="page-container">
|
|
<div class="page-header">
|
|
<a-row :gutter="[16, 8]">
|
|
<a-col :lg="9" :sm="24">
|
|
<a-row :wrap="false">
|
|
<a-col flex="none">
|
|
<div style="padding: 0">
|
|
<a-input flex="none" readonly value="群组代码" class="site-input-split" style="
|
|
width: 160px;
|
|
border-radius: 0;
|
|
border-top-left-radius: 5pt 5pt;
|
|
border-bottom-left-radius: 5pt 5pt;
|
|
pointer-events: none;
|
|
" />
|
|
</div>
|
|
</a-col>
|
|
<a-col flex="auto">
|
|
<a-input-search :disabled="isEdit" v-model:value="familyName" flex="auto" @search="onModalSearch" />
|
|
</a-col>
|
|
</a-row>
|
|
</a-col>
|
|
<a-col :lg="12" :sm="24">
|
|
<a-space>
|
|
<a-button type="primary" :disabled="isEdit" :icon="h(FileSearchOutlined)"
|
|
@click.prevent="onSearch">查询</a-button>
|
|
<a-button type="primary" :disabled="isEdit" :icon="h(ClearOutlined)"
|
|
@click.prevent="onReset">重置</a-button>
|
|
<a-button type="primary" :disabled="isEdit" :icon="h(FileAddOutlined)" @click.prevent="onCreate"
|
|
v-if="canCreate">新增</a-button>
|
|
</a-space>
|
|
</a-col>
|
|
</a-row>
|
|
</div>
|
|
<div class="page-main ft-page" :class="{ 'ft-readonly': !isEdit }" :style="{ height: resultH }">
|
|
<!-- 顶部信息卡 -->
|
|
<div class="ft-hero">
|
|
<div class="ft-hero-icon">
|
|
<TeamOutlined />
|
|
</div>
|
|
<div class="ft-hero-main">
|
|
<div class="ft-hero-name">
|
|
{{ data.FamilyGroup.FamilyLocalName || "未填写群组名称" }}
|
|
</div>
|
|
<div class="ft-hero-meta">
|
|
<span class="ft-chip">
|
|
编号 {{ data.FamilyGroup.FamilyName || "-" }}
|
|
</span>
|
|
<span class="ft-chip" v-if="data.IsOpen">公开</span>
|
|
<span class="ft-chip" v-if="data.IsAdd">可申请</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 群组信息 -->
|
|
<div class="ft-card">
|
|
<div class="ft-card-title">群组信息</div>
|
|
<div class="ft-grid">
|
|
<div class="ft-field">
|
|
<div class="ft-label">群组代码</div>
|
|
<a-input size="large" :maxlength="50" :readonly="true" placeholder="群组代码"
|
|
v-model:value="data.FamilyGroup.FamilyName" />
|
|
</div>
|
|
<div class="ft-field">
|
|
<div class="ft-label">
|
|
群组名称<span class="ft-required">*</span>
|
|
</div>
|
|
<a-input size="large" :maxlength="500" required :readonly="!isEdit" placeholder="请输入群组名称"
|
|
v-model:value="data.FamilyGroup.FamilyLocalName" />
|
|
</div>
|
|
<div class="ft-field ft-field-full">
|
|
<div class="ft-label">群组描述</div>
|
|
<a-textarea :auto-size="{ minRows: 3, maxRows: 5 }" :maxlength="256" :readonly="!isEdit"
|
|
placeholder="请输入群组描述" v-model:value="data.FamilyGroup.Notice" />
|
|
</div>
|
|
<div class="ft-field">
|
|
<div class="ft-label">公开设置</div>
|
|
<div class="ft-check">
|
|
<a-switch v-model:checked="data.IsOpen" :disabled="!isEdit" checked-children="公开"
|
|
un-checked-children="隐私" />
|
|
</div>
|
|
</div>
|
|
<div class="ft-field">
|
|
<div class="ft-label">加入申请</div>
|
|
<div class="ft-check">
|
|
<a-switch v-model:checked="data.IsAdd" :disabled="!isEdit" checked-children="可申请"
|
|
un-checked-children="不可申请" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 共享目录 -->
|
|
<div class="ft-card">
|
|
<a-collapse v-model:activeKey="activeKey" class="ft-collapse">
|
|
<a-collapse-panel key="1" header="共享目录">
|
|
<div class="ft-list">
|
|
<div v-for="(record, index) in data.FamilyGroupFolders" :key="record.FolderId || index" class="ft-item">
|
|
<div class="ft-item-head">
|
|
<span class="ft-item-index">{{ index + 1 }}</span>
|
|
<div class="ft-item-title">
|
|
<span class="ft-item-name">
|
|
{{ record.FolderLocalName || "未命名目录" }}
|
|
</span>
|
|
</div>
|
|
<div class="ft-item-actions">
|
|
<UserAddOutlined v-if="!isEdit && record.IsSharePermission" class="ft-action" style="color: green"
|
|
@click="shareFamilyGroupPermission(record.FolderName)" />
|
|
<DeleteOutlined v-if="isEdit" class="ft-action ft-action-delete" @click="
|
|
deleteFamilyGroupFolder(
|
|
record.FolderId,
|
|
record.FolderName,
|
|
)
|
|
" />
|
|
</div>
|
|
</div>
|
|
<div class="ft-item-body">
|
|
<div v-if="isEdit" class="ft-item-field">
|
|
<span class="ft-item-label">目录名称</span>
|
|
<a-input size="large" :maxlength="50" required placeholder="请输入目录名称"
|
|
v-model:value="record.FolderLocalName" />
|
|
</div>
|
|
<div class="ft-item-field">
|
|
<span class="ft-item-label">备注</span>
|
|
<a-input v-if="isEdit" size="large" :maxlength="500" required placeholder="请输入备注"
|
|
v-model:value="record.Notice" />
|
|
<span v-else class="ft-item-text">
|
|
{{ record.Notice || "-" }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="
|
|
!data.FamilyGroupFolders || !data.FamilyGroupFolders.length
|
|
" class="ft-empty">
|
|
暂无共享目录
|
|
</div>
|
|
<a-button v-if="isEdit" class="ft-add-btn" type="dashed" block @click="addFamilyGroupFolder">
|
|
<PlusSquareTwoTone /> 新增共享目录
|
|
</a-button>
|
|
</div>
|
|
</a-collapse-panel>
|
|
</a-collapse>
|
|
</div>
|
|
<!-- 待审核成员名单 -->
|
|
<div class="ft-card">
|
|
<a-collapse v-model:activeKey="activeKey" class="ft-collapse">
|
|
<a-collapse-panel key="2" header="待审核成员名单">
|
|
<div class="ft-list">
|
|
<div v-for="(record, index) in data.FamilyGroupRequests" :key="record.UserName || index"
|
|
class="ft-item">
|
|
<div class="ft-item-head">
|
|
<span class="ft-item-index">{{ index + 1 }}</span>
|
|
<div class="ft-item-title">
|
|
<span class="ft-item-name">
|
|
{{
|
|
record.UserLocalName || record.UserName || "未命名成员"
|
|
}}
|
|
</span>
|
|
</div>
|
|
<div v-if="data.IsManager && !isEdit" class="ft-item-actions">
|
|
<CheckCircleTwoTone class="ft-action" @click="
|
|
okFamilyGroupRequest(
|
|
record.FamilyName,
|
|
record.UserName,
|
|
)
|
|
" />
|
|
<CloseCircleOutlined class="ft-action ft-action-delete" @click="
|
|
rejectFamilyGroupRequest(
|
|
record.FamilyName,
|
|
record.UserName,
|
|
)
|
|
" />
|
|
</div>
|
|
</div>
|
|
<div class="ft-item-body">
|
|
<div class="ft-item-field">
|
|
<span class="ft-item-label">申请说明</span>
|
|
<span class="ft-item-text">{{ record.Notice || "-" }}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="
|
|
!data.FamilyGroupRequests ||
|
|
!data.FamilyGroupRequests.length
|
|
" class="ft-empty">
|
|
暂无待审核成员
|
|
</div>
|
|
</div>
|
|
</a-collapse-panel>
|
|
</a-collapse>
|
|
</div>
|
|
|
|
<!-- 正式成员名单 -->
|
|
<div class="ft-card">
|
|
<a-collapse v-model:activeKey="activeKey" class="ft-collapse">
|
|
<a-collapse-panel key="3" header="正式成员名单">
|
|
<div class="ft-list">
|
|
<div v-for="(record, index) in data.FamilyGroupManagers" :key="record.UserName || index"
|
|
class="ft-item">
|
|
<div class="ft-item-head">
|
|
<span class="ft-item-index">{{ index + 1 }}</span>
|
|
<div class="ft-item-title">
|
|
<span class="ft-item-name">
|
|
{{
|
|
record.UserLocalName || record.UserName || "未命名成员"
|
|
}}
|
|
</span>
|
|
</div>
|
|
<div v-if="isEdit" class="ft-item-actions">
|
|
<DeleteOutlined class="ft-action ft-action-delete" @click="
|
|
deleteFamilyGroupManager(
|
|
record.FamilyName,
|
|
record.UserName,
|
|
)
|
|
" />
|
|
</div>
|
|
</div>
|
|
<div class="ft-item-body">
|
|
<div class="ft-item-field">
|
|
<span class="ft-item-label">群组管理员</span>
|
|
<a-checkbox :disabled="!isEdit" v-model:checked="record.IsManager">
|
|
管理员
|
|
</a-checkbox>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="
|
|
!data.FamilyGroupManagers ||
|
|
!data.FamilyGroupManagers.length
|
|
" class="ft-empty">
|
|
暂无正式成员
|
|
</div>
|
|
</div>
|
|
</a-collapse-panel>
|
|
</a-collapse>
|
|
</div>
|
|
<!-- 目录权限列表 -->
|
|
<div class="ft-card" v-if="data.IsManager">
|
|
<a-collapse v-model:activeKey="activeKey" class="ft-collapse">
|
|
<a-collapse-panel key="4" header="目录权限列表">
|
|
<div class="ft-list">
|
|
<div v-for="(record, index) in data.FamilyGroupPermissions" :key="(record.FolderName || '') + '-' + (record.UserName || index)
|
|
" class="ft-item">
|
|
<div class="ft-item-head">
|
|
<span class="ft-item-index">{{ index + 1 }}</span>
|
|
<div class="ft-item-title">
|
|
<span class="ft-item-name">
|
|
{{
|
|
record.FolderLocalName ||
|
|
record.FolderName ||
|
|
"未命名目录"
|
|
}}
|
|
</span>
|
|
</div>
|
|
<div v-if="isEdit" class="ft-item-actions">
|
|
<DeleteOutlined class="ft-action ft-action-delete" @click="
|
|
deleteFamilyGroupPermission(
|
|
record.FamilyName,
|
|
record.FolderName,
|
|
record.UserName,
|
|
)
|
|
" />
|
|
</div>
|
|
</div>
|
|
<div class="ft-item-body">
|
|
<div class="ft-item-field">
|
|
<span class="ft-item-label">目录名称</span>
|
|
<span class="ft-item-text">
|
|
{{ record.FolderLocalName || "-" }}
|
|
</span>
|
|
</div>
|
|
<div class="ft-item-field">
|
|
<span class="ft-item-label">授权成员</span>
|
|
<span class="ft-item-text">
|
|
{{ record.UserLocalName || "-" }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="
|
|
!data.FamilyGroupPermissions ||
|
|
!data.FamilyGroupPermissions.length
|
|
" class="ft-empty">
|
|
暂无目录权限
|
|
</div>
|
|
</div>
|
|
</a-collapse-panel>
|
|
</a-collapse>
|
|
</div>
|
|
</div>
|
|
<div class="page-footer">
|
|
<div style="">
|
|
<a-row :gutter="24">
|
|
<a-col :lg="24" :sm="24">
|
|
<div>
|
|
<a-row v-if="isEdit" :gutter="[16, 8]">
|
|
<a-space>
|
|
<a-popconfirm v-if="data.FamilyGroup.CreatedBy" title="确定是否取消修改?" ok-text="是" cancel-text="否"
|
|
@confirm="onCancel">
|
|
<a-button type="primary" ghost :icon="h(UndoOutlined)">取消</a-button>
|
|
</a-popconfirm>
|
|
<a-button v-if="!data.FamilyGroup.CreatedBy" type="primary" ghost :icon="h(UndoOutlined)"
|
|
@click.prevent="onCancel">取消</a-button>
|
|
<a-button type="primary" ghost :icon="h(SaveOutlined)" @click.prevent="onSave">保存</a-button>
|
|
</a-space>
|
|
</a-row>
|
|
<a-row v-else :gutter="[16, 8]">
|
|
<a-space>
|
|
<a-button type="primary" v-if="canAmend" :icon="h(EditOutlined)"
|
|
:disabled="!hasData || !data.IsManager" @click.prevent="onAmend">修改</a-button>
|
|
<a-popconfirm :disabled="!hasData" title="确定是否解散这条记录?" ok-text="是" cancel-text="否"
|
|
@confirm="onDelete">
|
|
<a-button type="primary" danger :icon="h(DeleteOutlined)" :disabled="!hasData || !data.IsManager"
|
|
v-if="canDelete">解散</a-button>
|
|
</a-popconfirm>
|
|
</a-space>
|
|
</a-row>
|
|
</div>
|
|
</a-col>
|
|
</a-row>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<dragModal v-model:open="showModal" title="群组查询" :mask-closable="false" :fullscreen="width < 640"
|
|
@ok="handleSelect">
|
|
<familyGroupEnquiry ref="enquiry" @on-row-dblclick="handleSelect"></familyGroupEnquiry>
|
|
</dragModal>
|
|
<dragModal v-model:open="showModalUser" title="成员查询" :mask-closable="false" :fullscreen="width < 640"
|
|
@ok="handleSelectUser">
|
|
<familyGroupUserModal ref="userEnquiry" @on-row-dblclick="handleSelectUser"></familyGroupUserModal>
|
|
</dragModal>
|
|
</a-spin>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
import { ref, unref, onBeforeMount, inject, provide, h, onMounted } from "vue";
|
|
import { notification } from "ant-design-vue";
|
|
import { useRoute, useRouter } from "vue-router";
|
|
import {
|
|
DeleteOutlined,
|
|
EditOutlined,
|
|
CheckCircleTwoTone,
|
|
CloseCircleOutlined,
|
|
ClearOutlined,
|
|
UserAddOutlined,
|
|
FileSearchOutlined,
|
|
FileAddOutlined,
|
|
UndoOutlined,
|
|
SaveOutlined,
|
|
PlusSquareTwoTone,
|
|
DownSquareTwoTone,
|
|
UpSquareTwoTone,
|
|
TeamOutlined,
|
|
} from "@ant-design/icons-vue";
|
|
import {
|
|
PermissionContext,
|
|
usePermissionContext,
|
|
} from "@/hooks/PermissionContext";
|
|
import dragModal from "@/components/basic/DragModal.vue";
|
|
import familyGroupEnquiry from "./FamilyGroupEnquiry.vue";
|
|
import familyGroupUserModal from "./FamilyGroupUserModal.vue";
|
|
import { FamilyGroupData } from "@/data/auto/familyGroupData";
|
|
import { FamilyGroupFolderEntity } from "@/data/auto/familyGroupFolderEntity";
|
|
import { FamilyGroupManagerEntity } from "@/data/auto/familyGroupManagerEntity";
|
|
import { FamilyGroupPermissionEntity } from "@/data/auto/familyGroupPermissionEntity";
|
|
import { FamilyGroupManagerUserViewEntity } from "@/data/auto/familyGroupManagerUserViewEntity";
|
|
import { FamilyGroupManagerDisplayData } from "@/data/auto/familyGroupManagerDisplayData";
|
|
import { FamilyGroupPermissionDisplayData } from "@/data/auto/familyGroupPermissionDisplayData";
|
|
import { FamilyGroupFolderDisplayData } from "@/data/auto/familyGroupFolderDisplayData";
|
|
import FamilyGroupService from "@/service/master/familyGroupService";
|
|
import { useYesNoPolicy } from "@/hooks/useYesNoPolicy";
|
|
import { SelectOption } from "@/data/auto/selectOption";
|
|
import { useWindowSize } from "@vueuse/core";
|
|
import { FamilyGroupEntity } from "@/data/auto/familyGroupEntity";
|
|
import { BindOption } from "@/data/custom/bindOption";
|
|
import { nextTick } from "process";
|
|
import { max } from "lodash-es";
|
|
import { SecurityUserDisplayData } from "@/data/auto/securityUserDisplayData";
|
|
import dmsFileService from "@/service/master/dmsFileService";
|
|
|
|
const loading = ref<boolean>(false);
|
|
const { width, height } = useWindowSize();
|
|
|
|
const route = useRoute();
|
|
const router = useRouter();
|
|
|
|
const familyName = ref<string>(route.params.id as string);
|
|
const mode = ref<string>(route.params.mode as string);
|
|
|
|
const isEdit = ref<boolean>(false);
|
|
const canAmend = ref<boolean>(false);
|
|
const canDelete = ref<boolean>(false);
|
|
const canCreate = ref<boolean>(false);
|
|
const showModal = ref<boolean>(false);
|
|
const showModalUser = ref<boolean>(false);
|
|
|
|
const currentfolderName = ref<string>("");
|
|
const rowSelectionType = ref<string>("radio");
|
|
const showModalType = ref<number>(0);
|
|
|
|
const data = ref<FamilyGroupData>(new FamilyGroupData());
|
|
const hasData = ref<boolean>(false);
|
|
|
|
const yesNoPolicy = ref<SelectOption[]>([]);
|
|
const resultH = ref("");
|
|
const oldFamilyName = ref<string>(familyName.value);
|
|
const initBindOptions = ref<BindOption[]>([]);
|
|
|
|
interface FamilyGroupEnquiry {
|
|
keys: FamilyGroupEntity[];
|
|
setBindOptionValue(
|
|
bindValue: string,
|
|
value: string,
|
|
value1: string,
|
|
values: string[],
|
|
): void;
|
|
}
|
|
|
|
interface UserEnquiry {
|
|
keys: FamilyGroupManagerUserViewEntity[];
|
|
setBindOptionValue(
|
|
bindValue: string,
|
|
value: string,
|
|
value1: string,
|
|
values: string[],
|
|
): void;
|
|
}
|
|
|
|
const enquiry = ref<FamilyGroupEnquiry | null>(null);
|
|
const userEnquiry = ref<UserEnquiry | null>(null);
|
|
|
|
const activeKey = ref(["1"]);
|
|
|
|
const columnFamilyGroupFolders = ref([
|
|
{
|
|
title: "序号",
|
|
dataIndex: "index",
|
|
width: "10%",
|
|
align: "center",
|
|
fixed: "left",
|
|
sequence: 0,
|
|
hidden: "N",
|
|
format: "",
|
|
},
|
|
{
|
|
title: "目录名称",
|
|
dataIndex: FamilyGroupFolderEntity.FOLDER_LOCAL_NAME,
|
|
width: "30%",
|
|
sequence: 1,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "目录描述",
|
|
dataIndex: FamilyGroupFolderEntity.NOTICE,
|
|
width: "40%",
|
|
sequence: 2,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "分配权限",
|
|
dataIndex: "share",
|
|
width: "10%",
|
|
sequence: 3,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "",
|
|
dataIndex: "delete",
|
|
width: "10%",
|
|
sequence: 3,
|
|
hidden: "N",
|
|
},
|
|
]);
|
|
|
|
const columnFamilyGroupRequests = ref([
|
|
{
|
|
title: "序号",
|
|
dataIndex: "index",
|
|
width: "10%",
|
|
align: "center",
|
|
fixed: "left",
|
|
sequence: 0,
|
|
hidden: "N",
|
|
format: "",
|
|
},
|
|
{
|
|
title: "用户名",
|
|
dataIndex: FamilyGroupManagerDisplayData.USER_LOCAL_NAME,
|
|
width: "30%",
|
|
sequence: 1,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "申请原因",
|
|
dataIndex: FamilyGroupManagerDisplayData.NOTICE,
|
|
width: "50%",
|
|
sequence: 2,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "同意",
|
|
dataIndex: "ok",
|
|
width: "5%",
|
|
sequence: 3,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "拒绝",
|
|
dataIndex: "reject",
|
|
width: "5%",
|
|
sequence: 3,
|
|
hidden: "N",
|
|
},
|
|
]);
|
|
|
|
const columnFamilyGroupManagers = ref([
|
|
{
|
|
title: "序号",
|
|
dataIndex: "index",
|
|
width: "10%",
|
|
align: "center",
|
|
fixed: "left",
|
|
sequence: 0,
|
|
hidden: "N",
|
|
format: "",
|
|
},
|
|
{
|
|
title: "用户名",
|
|
dataIndex: FamilyGroupManagerDisplayData.USER_LOCAL_NAME,
|
|
width: "30%",
|
|
sequence: 1,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "管理员",
|
|
dataIndex: FamilyGroupManagerDisplayData.MANAGER_INDC,
|
|
width: "20%",
|
|
sequence: 2,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "",
|
|
dataIndex: "delete",
|
|
width: "5%",
|
|
sequence: 3,
|
|
hidden: "N",
|
|
},
|
|
]);
|
|
const columnFamilyGroupPermissions = ref([
|
|
{
|
|
title: "序号",
|
|
dataIndex: "index",
|
|
width: "10%",
|
|
align: "center",
|
|
fixed: "left",
|
|
sequence: 0,
|
|
hidden: "N",
|
|
format: "",
|
|
},
|
|
{
|
|
title: "目录名称",
|
|
dataIndex: FamilyGroupPermissionDisplayData.FOLDER_LOCAL_NAME,
|
|
width: "50%",
|
|
sequence: 2,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "用户名",
|
|
dataIndex: FamilyGroupPermissionDisplayData.USER_LOCAL_NAME,
|
|
width: "30%",
|
|
sequence: 1,
|
|
hidden: "N",
|
|
},
|
|
{
|
|
title: "",
|
|
dataIndex: "delete",
|
|
width: "5%",
|
|
sequence: 3,
|
|
hidden: "N",
|
|
},
|
|
]);
|
|
|
|
//================provide================
|
|
//弹出(Modal)
|
|
provide("isModalFamilyGroup", showModal);
|
|
provide("isModalUser", showModalUser);
|
|
//记录单选还是多选(Modal)
|
|
provide("selectionTypeFamilyGroup", rowSelectionType);
|
|
provide("selectionTypeUser", "checkbox");
|
|
//初始化查询条件的值(Modal)
|
|
provide("initBindOptionsFamilyGroup", initBindOptions);
|
|
|
|
provide("currentFolderName", currentfolderName);
|
|
provide("currentFamilyName", familyName);
|
|
//================provide================
|
|
|
|
onBeforeMount(async () => {
|
|
yesNoPolicy.value = await useYesNoPolicy().getSelectOption(false);
|
|
});
|
|
|
|
onMounted(() => {
|
|
let pContext: PermissionContext = usePermissionContext();
|
|
canAmend.value = pContext.canAmend(route.meta.permission as string);
|
|
canDelete.value = pContext.canDelete(route.meta.permission as string);
|
|
canCreate.value = pContext.canCreate(route.meta.permission as string);
|
|
computResultTableHeight();
|
|
if (familyName.value && familyName.value.trim().length > 0) {
|
|
onSearch();
|
|
}
|
|
if (mode.value && mode.value == "create") {
|
|
onCreate();
|
|
isEdit.value = true;
|
|
} else if (mode.value && mode.value == "amend") {
|
|
isEdit.value = true;
|
|
}
|
|
});
|
|
|
|
const computResultTableHeight = () => {
|
|
if (width.value > 640) {
|
|
resultH.value = "calc(100vh - 220px )";
|
|
} else {
|
|
resultH.value = "calc(100vh - 250px )";
|
|
}
|
|
};
|
|
|
|
const onModalSearch = () => {
|
|
showModal.value = true;
|
|
rowSelectionType.value = "radio";
|
|
showModalType.value = 0;
|
|
};
|
|
|
|
const onSearch = async () => {
|
|
if (!familyName.value || familyName.value.trim().length == 0) {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "请输入权限名称",
|
|
placement: "topRight",
|
|
});
|
|
hasData.value = false;
|
|
return;
|
|
}
|
|
try {
|
|
data.value = await FamilyGroupService.FindByKey(familyName.value.trim());
|
|
} catch (error) {
|
|
return;
|
|
}
|
|
|
|
if (data.value.FamilyGroup == null) {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "记录不存在",
|
|
placement: "topRight",
|
|
});
|
|
data.value = new FamilyGroupData();
|
|
hasData.value = false;
|
|
return;
|
|
}
|
|
|
|
hasData.value = true;
|
|
};
|
|
|
|
const onReset = () => {
|
|
data.value = new FamilyGroupData();
|
|
data.value.IsManager = false;
|
|
data.value.IsAdd = true;
|
|
data.value.IsOpen = true;
|
|
data.value.FamilyGroupFolders = [];
|
|
|
|
familyName.value = "";
|
|
hasData.value = false;
|
|
};
|
|
|
|
const onCreate = () => {
|
|
onReset();
|
|
isEdit.value = true;
|
|
};
|
|
|
|
const onAmend = () => {
|
|
isEdit.value = true;
|
|
oldFamilyName.value = unref(data.value.FamilyGroup.FamilyName);
|
|
};
|
|
|
|
const onSave = async () => {
|
|
try {
|
|
loading.value = true;
|
|
|
|
if (!data.value.FamilyGroupFolders) data.value.FamilyGroupFolders = [];
|
|
if (!data.value.FamilyGroupManagers) data.value.FamilyGroupManagers = [];
|
|
if (!data.value.FamilyGroupRequests) data.value.FamilyGroupRequests = [];
|
|
if (!data.value.FamilyGroupPermissions)
|
|
data.value.FamilyGroupPermissions = [];
|
|
|
|
if (data.value.FamilyGroup?.CreatedBy)
|
|
data.value = await FamilyGroupService.Update(data.value);
|
|
else {
|
|
data.value = await FamilyGroupService.Insert(data.value);
|
|
}
|
|
|
|
familyName.value = data.value.FamilyGroup.FamilyName;
|
|
|
|
loading.value = false;
|
|
hasData.value = true;
|
|
isEdit.value = false;
|
|
} catch (error) {
|
|
loading.value = false;
|
|
}
|
|
};
|
|
|
|
const onCancel = () => {
|
|
onReset();
|
|
if (oldFamilyName.value && oldFamilyName.value.length > 0) {
|
|
familyName.value = oldFamilyName.value;
|
|
onSearch();
|
|
}
|
|
isEdit.value = false;
|
|
};
|
|
|
|
const onDelete = async () => {
|
|
try {
|
|
loading.value = true;
|
|
|
|
await FamilyGroupService.Delete(data.value.FamilyGroup.FamilyName);
|
|
|
|
onReset();
|
|
loading.value = false;
|
|
} catch (error) {
|
|
loading.value = false;
|
|
console.log(error);
|
|
}
|
|
};
|
|
|
|
const deleteFamilyGroupManager = async (
|
|
familyName: string,
|
|
username: string,
|
|
) => {
|
|
let f: FamilyGroupManagerEntity = new FamilyGroupManagerEntity();
|
|
f.FamilyName = familyName;
|
|
f.UserName = username;
|
|
|
|
await FamilyGroupService.DeleteFamilyGroupManager(f);
|
|
onSearch();
|
|
};
|
|
|
|
const deleteFamilyGroupPermission = (
|
|
familyName: string,
|
|
folderName: string,
|
|
username: string,
|
|
) => {
|
|
data.value.FamilyGroupPermissions = data.value.FamilyGroupPermissions.filter(
|
|
(item) =>
|
|
!(
|
|
item.FamilyName == familyName &&
|
|
item.FolderName == folderName &&
|
|
item.UserName == username
|
|
),
|
|
);
|
|
};
|
|
|
|
const addFamilyGroupFolder = (event: MouseEvent) => {
|
|
if (!data.value.FamilyGroupFolders) data.value.FamilyGroupFolders = [];
|
|
let fld: FamilyGroupFolderDisplayData = new FamilyGroupFolderDisplayData();
|
|
fld.FolderId = 1;
|
|
if (
|
|
data.value.FamilyGroupFolders &&
|
|
data.value.FamilyGroupFolders.length > 0
|
|
) {
|
|
let maxs: number[] = [];
|
|
data.value.FamilyGroupFolders.forEach((element) => {
|
|
maxs.push(element.FolderId);
|
|
});
|
|
fld.FolderId = max(maxs)! + 1; //fld.FolderId=data.value.FamilyGroupFolders.max(x=>x.);
|
|
}
|
|
|
|
data.value.FamilyGroupFolders.push(fld);
|
|
// If you don't want click extra trigger collapse, you can prevent this:
|
|
event.stopPropagation();
|
|
};
|
|
|
|
const shareFamilyGroupPermission = (folderName: string) => {
|
|
currentfolderName.value = folderName;
|
|
showModalUser.value = true;
|
|
};
|
|
|
|
const deleteFamilyGroupFolder = (key: number, folderName: string) => {
|
|
if (folderName && folderName.length > 0) {
|
|
dmsFileService.FindDmsFolderMapByFolderName(folderName).then((count) => {
|
|
if (count > 0) {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "【群组中心】请先删除共享目录下的内容再删除该目录.",
|
|
placement: "topRight",
|
|
});
|
|
|
|
return;
|
|
}
|
|
else {
|
|
data.value.FamilyGroupFolders = data.value.FamilyGroupFolders.filter(
|
|
(item) => item.FolderId !== key,
|
|
);
|
|
|
|
data.value.FamilyGroupPermissions = data.value.FamilyGroupPermissions.filter(
|
|
(item) =>
|
|
!(
|
|
item.FolderName == folderName
|
|
),
|
|
);
|
|
}
|
|
});
|
|
} else {
|
|
data.value.FamilyGroupFolders = data.value.FamilyGroupFolders.filter(
|
|
(item) => item.FolderId !== key,
|
|
);
|
|
|
|
data.value.FamilyGroupPermissions = data.value.FamilyGroupPermissions.filter(
|
|
(item) =>
|
|
!(
|
|
item.FolderName == folderName
|
|
),
|
|
);
|
|
}
|
|
};
|
|
|
|
const okFamilyGroupRequest = (familyName: string, username: string) => {
|
|
let f: FamilyGroupManagerEntity = new FamilyGroupManagerEntity();
|
|
f.FamilyName = familyName;
|
|
f.UserName = username;
|
|
f.ValidIndc = "Y";
|
|
FamilyGroupService.UpdateFamilyGroupManager(f).then(() => {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "审核成功通过",
|
|
placement: "topRight",
|
|
});
|
|
onSearch();
|
|
});
|
|
};
|
|
|
|
const rejectFamilyGroupRequest = (familyName: string, username: string) => {
|
|
let f: FamilyGroupManagerEntity = new FamilyGroupManagerEntity();
|
|
f.FamilyName = familyName;
|
|
f.UserName = username;
|
|
FamilyGroupService.DeleteFamilyGroupManager(f).then(() => {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "拒绝成功",
|
|
placement: "topRight",
|
|
});
|
|
onSearch();
|
|
});
|
|
};
|
|
|
|
const handleSelect = async () => {
|
|
if (enquiry.value) {
|
|
if (enquiry.value.keys.length > 0) {
|
|
//查询弹出
|
|
if (showModalType.value == 0) {
|
|
familyName.value = enquiry.value.keys[0].FamilyName;
|
|
|
|
onSearch();
|
|
}
|
|
|
|
showModal.value = false;
|
|
} else {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "请选择一条记录",
|
|
placement: "topRight",
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
const handleSelectUser = async () => {
|
|
if (userEnquiry.value) {
|
|
if (userEnquiry.value.keys.length > 0) {
|
|
//查询弹出
|
|
let fgps: FamilyGroupPermissionEntity[] = [];
|
|
let fgp: FamilyGroupPermissionEntity;
|
|
userEnquiry.value.keys.forEach((element) => {
|
|
fgp = new FamilyGroupPermissionEntity();
|
|
fgp.UserName = element.UserName;
|
|
fgp.FamilyName = familyName.value;
|
|
fgp.FolderName = currentfolderName.value;
|
|
fgps.push(fgp);
|
|
});
|
|
|
|
await FamilyGroupService.InsertFamilyGroupPermission(fgps);
|
|
showModalUser.value = false;
|
|
|
|
onSearch();
|
|
} else {
|
|
notification.info({
|
|
message: "系统提示:",
|
|
description: "请选择一条记录",
|
|
placement: "topRight",
|
|
});
|
|
}
|
|
}
|
|
};
|
|
</script>
|