修改页面设计

This commit is contained in:
itcsx committed 2026-09-12 22:06:54 +08:00
1 parent 0dd4ec814b
commit 7f5bf3c68d
31 files changed
+3133 -2562

No files matched your search

+345 -310
View File
@@ -60,327 +60,360 @@
</a-col>
</a-row>
</div>
<div class="page-main" :style="{ height: resultH }">
<a-row :gutter="[16, 8]">
<a-col :lg="8" :sm="24">
<a-row :wrap="false" align="middle">
<a-col :lg="6" :sm="6" style="min-width: 80px">
<span>群组代码:</span>
</a-col>
<a-col :lg="18" :sm="18" style="min-width: 300px">
<a-input
:maxlength="50"
:readonly="true"
v-model:value="data.FamilyGroup.FamilyName"
/>
</a-col>
</a-row>
</a-col>
<a-col :lg="{ span: 8, offset: 2 }" :sm="24">
<a-row :wrap="false" align="middle">
<a-col :lg="6" :sm="6" style="min-width: 80px">
<span>群组名称:</span>
</a-col>
<a-col :lg="18" :sm="18" style="min-width: 300px">
<a-input
:maxlength="500"
required
:readonly="!isEdit"
v-model:value="data.FamilyGroup.FamilyLocalName"
/>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row :gutter="[16, 8]" style="margin-top: 8px">
<a-col :lg="8" :sm="24">
<a-row :wrap="false" align="middle">
<a-col :lg="6" :sm="6" style="min-width: 80px">
<span>群组描述:</span>
</a-col>
<a-col :lg="18" :sm="18" style="min-width: 300px">
<a-textarea
:maxlength="256"
:readonly="!isEdit"
v-model:value="data.FamilyGroup.Notice"
/>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row :gutter="[16, 8]" style="margin-top: 16px">
<a-col :lg="8" :sm="24">
<a-space direction="vertical">
<a-switch
v-model:checked="data.IsOpen"
:disabled="!isEdit"
checked-children="公开"
un-checked-children="隐私"
/>
<a-switch
v-model:checked="data.IsAdd"
:disabled="!isEdit"
checked-children="可申请"
un-checked-children="不可申请"
/>
</a-space>
</a-col>
<a-col :lg="{ span: 8, offset: 2 }" :sm="24"> </a-col>
</a-row>
<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>
<a-divider
orientation="left"
orientation-margin="0px"
dashed
style="background-color: silver"
>
</a-divider>
<a-collapse v-model:activeKey="activeKey">
<a-collapse-panel key="1" header="共享目录">
<a-table
bordered
:data-source="data.FamilyGroupFolders"
:columns="columnFamilyGroupFolders"
:pagination="false"
:scroll="{ x: 520, y: 600 }"
>
<template #bodyCell="datas">
<template v-if="datas.column.dataIndex === 'index'">
<span>{{ datas.index + 1 }}</span>
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupFolderEntity.FOLDER_LOCAL_NAME && isEdit
"
>
<a-input
:maxlength="50"
required
v-model:value="datas.record.FolderLocalName"
/>
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupFolderEntity.FOLDER_LOCAL_NAME && !isEdit
"
>
{{ datas.record.FolderLocalName }}
</template>
<template
v-else-if="
datas.column.dataIndex === FamilyGroupFolderEntity.NOTICE &&
isEdit
"
>
<a-input
:maxlength="500"
required
v-model:value="datas.record.Notice"
/>
</template>
<template
v-else-if="
datas.column.dataIndex === FamilyGroupFolderEntity.NOTICE &&
!isEdit
"
>
{{ datas.record.Notice }}
</template>
<template
v-else-if="
datas.column.dataIndex === 'share' &&
!isEdit &&
datas.record.IsSharePermission
"
>
<UserAddOutlined
:style="{ fontSize: '24px', color: 'green' }"
@click="shareFamilyGroupPermission(datas.record.FolderName)"
/>
</template>
<template
v-else-if="datas.column.dataIndex === 'delete' && isEdit"
>
<DeleteOutlined
:style="{ fontSize: '24px', color: 'red' }"
@click="
deleteFamilyGroupFolder(
datas.record.FolderId,
datas.record.FolderName,
)
"
/>
</template>
</template>
</a-table>
<template #extra v-if="isEdit">
<PlusSquareTwoTone
:style="{ fontSize: '24px', color: '#08c' }"
@click="addFamilyGroupFolder"
<!-- 群组信息 -->
<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"
/>
</template>
</a-collapse-panel>
</a-collapse>
<a-collapse v-model:activeKey="activeKey">
<a-collapse-panel key="2" header="待审核成员名单">
<a-table
bordered
:data-source="data.FamilyGroupRequests"
:columns="columnFamilyGroupRequests"
:pagination="false"
:scroll="{ x: 520, y: 600 }"
>
<template #bodyCell="datas">
<template v-if="datas.column.dataIndex === 'index'">
<span>{{ datas.index + 1 }}</span>
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupManagerDisplayData.USER_LOCAL_NAME
</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"
>
{{ datas.record.UserLocalName }}
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupManagerDisplayData.NOTICE
暂无共享目录
</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"
>
{{ datas.record.Notice }}
</template>
<template
v-else-if="data.IsManager && datas.column.dataIndex === 'ok' && !isEdit"
暂无待审核成员
</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"
>
<CheckCircleTwoTone
:style="{ fontSize: '24px', color: 'green' }"
@click="
okFamilyGroupRequest(
datas.record.FamilyName,
datas.record.UserName,
)
"
/>
</template>
<template
v-else-if="data.IsManager && datas.column.dataIndex === 'reject' && !isEdit"
>
<CloseCircleOutlined
:style="{ fontSize: '24px', color: 'red' }"
@click="
rejectFamilyGroupRequest(
datas.record.FamilyName,
datas.record.UserName,
)
"
/>
</template>
</template>
</a-table>
<template #extra v-if="isEdit"> </template>
</a-collapse-panel>
</a-collapse>
<a-collapse v-model:activeKey="activeKey">
<a-collapse-panel key="3" header="正式成员名单">
<a-table
bordered
:data-source="data.FamilyGroupManagers"
:columns="columnFamilyGroupManagers"
:pagination="false"
:scroll="{ x: 520, y: 600 }"
>
<template #bodyCell="datas">
<template v-if="datas.column.dataIndex === 'index'">
<span>{{ datas.index + 1 }}</span>
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupManagerDisplayData.USER_LOCAL_NAME
<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"
>
{{ datas.record.UserLocalName }}
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupManagerDisplayData.MANAGER_INDC
暂无正式成员
</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"
>
<a-checkbox
:disabled="!isEdit"
v-model:checked="datas.record.IsManager"
/>
</template>
<template
v-else-if="datas.column.dataIndex === 'delete' && isEdit"
>
<DeleteOutlined
:style="{ fontSize: '24px', color: 'red' }"
@click="
deleteFamilyGroupManager(
datas.record.FamilyName,
datas.record.UserName,
)
"
/>
</template>
</template>
</a-table>
<template #extra v-if="isEdit"> </template>
</a-collapse-panel>
</a-collapse>
<a-collapse v-model:activeKey="activeKey">
<a-collapse-panel key="4" header="目录权限列表" v-if="data.IsManager">
<a-table
bordered
:data-source="data.FamilyGroupPermissions"
:columns="columnFamilyGroupPermissions"
:pagination="false"
:scroll="{ x: 520, y: 600 }"
>
<template #bodyCell="datas">
<template v-if="datas.column.dataIndex === 'index'">
<span>{{ datas.index + 1 }}</span>
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupPermissionDisplayData.FOLDER_LOCAL_NAME
<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"
>
{{ datas.record.FolderLocalName }}
</template>
<template
v-else-if="
datas.column.dataIndex ===
FamilyGroupPermissionDisplayData.USER_LOCAL_NAME
"
>
{{ datas.record.UserLocalName }}
</template>
<template
v-else-if="datas.column.dataIndex === 'delete' && isEdit"
>
<DeleteOutlined
:style="{ fontSize: '24px', color: 'red' }"
@click="
deleteFamilyGroupPermission(
datas.record.FamilyName,
datas.record.FolderName,
datas.record.UserName,
)
"
/>
</template>
</template>
</a-table>
<template #extra v-if="isEdit"> </template>
</a-collapse-panel>
</a-collapse>
暂无目录权限
</div>
</div>
</a-collapse-panel>
</a-collapse>
</div>
</div>
<div class="page-footer">
<div style="">
@@ -453,7 +486,6 @@
</div>
<dragModal
v-model:open="showModal"
width="60%"
title="群组查询"
:mask-closable="false"
:fullscreen="width < 640"
@@ -466,7 +498,6 @@
</dragModal>
<dragModal
v-model:open="showModalUser"
width="60%"
title="成员查询"
:mask-closable="false"
:fullscreen="width < 640"
@@ -497,6 +528,7 @@ import {
PlusSquareTwoTone,
DownSquareTwoTone,
UpSquareTwoTone,
TeamOutlined,
} from "@ant-design/icons-vue";
import {
PermissionContext,
@@ -1025,6 +1057,9 @@ const handleSelectUser = async () => {
};
</script>
<style lang="less">
/* 移动端表单样式(与 FamilyTreeOperation 保持一致) */
@import "../../styles/ft-mobile.less";
.page-container {
margin-right: 0px;
}