Commit 0582be48 authored by LiXuyang's avatar LiXuyang

文件-改

parent 6a8b4f04
......@@ -824,7 +824,7 @@ export const sqlExecuteRoute: AppRouteRecordRaw = {
// {
// path: 'sqlDevelopment/index',
// name: 'index',
// component: () => import('@/views/scriptDevelopment/sqlDevelopment/index.vue'),
// component: () => import('@/views/scriptDevelopment/sqlDevelopment/index_old.vue'),
// meta: {
// title: 'Sql开发',
// icon: '',
......
<template>
<div class="m-4 mr-0 overflow-hidden bg-white">
<BasicTree
ref="treeRef"
toolbar
search
treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
:clickRowToExpand="false"
:defaultExpandAll="true"
:treeData="treeData"
:fieldNames="{ key: 'selectedDeptId', title: 'name', }"
@select="handleSelect"
/>
</div>
</template>
<script lang="ts" setup>
import { nextTick, onMounted, ref, unref } from 'vue';
import { BasicTree, TreeActionType, TreeItem } from '@/components/Tree';
import { Nullable } from '@vben/types';
import { tableList, treeDataList } from './mock';
defineOptions({ name: 'DeptTree' });
const emit = defineEmits(['select']);
const treeData = ref<TreeItem[]>([]);
const treeRef = ref<Nullable<TreeActionType>>(null);
// 合并数据的函数
function mergeTreeDataWithTableList(treeDataList, tableList) {
return treeDataList.map((treeNode) => {
// 找到对应的tableList项,合并name属性
const tableItem = tableList.find((item) => item.selectedDeptId === treeNode.selectedDeptId);
if (tableItem) {
treeNode.name = tableItem.name; // 将tableList中的name添加到treeNode
}
// 如果有子节点,递归处理
if (treeNode.children && treeNode.children.length > 0) {
treeNode.children = mergeTreeDataWithTableList(treeNode.children, tableList);
}
return treeNode;
});
}
async function fetch() {
// 合并树形数据和表格数据
treeData.value = mergeTreeDataWithTableList(treeDataList, tableList);
await nextTick(() => {
getTree(treeRef).expandAll(true);
});
}
function getTree(treeRef) {
const tree = unref(treeRef);
if (!tree) {
throw new Error('tree is null!');
}
return tree;
}
function handleSelect(selectedDeptId) {
emit('select', selectedDeptId[0]);
console.log('selectedDeptId:', selectedDeptId);
}
onMounted(() => {
fetch();
});
</script>
<template>
<div style="min-width: 250px; min-height: 850px">
<BasicTree
style="padding-left: 15px"
title=" "
search
ref="treeRef"
treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
:defaultExpandAll="true"
:treeData="treeData"
:fieldNames="{ key: 'businessId', title: 'workSpaceName' }"
@select="handleSelect"
/>
</div>
</template>
<script lang="ts" setup>
import { nextTick, onMounted, ref, unref } from 'vue';
import { BasicTree, TreeActionType, TreeItem } from '@/components/Tree';
import { Nullable } from 'packages/types/src/index';
import { TreeData } from './mock.ts';
import { useMessage } from '@/hooks/web/useMessage';
import { useModal } from '@/components/Modal';
const emit = defineEmits(['select']);
const { createMessage } = useMessage();
const treeData = ref<TreeItem[]>([]);
const treeRef = ref<Nullable<TreeActionType>>(null);
function getTree() {
const tree = unref(treeRef);
if (!tree) {
throw new Error('tree is null!');
}
return tree;
}
const [registerModal, { openModal }] = useModal();
async function fetch() {
treeData.value = handleTree(TreeData, 'businessId', undefined, undefined, undefined);
await nextTick(() => {
getTree().expandAll(true);
});
}
function handleTree(data, id, parentId, children, rootId) {
id = id || 'id';
parentId = parentId || 'parentId';
children = children || 'children';
rootId =
rootId ||
Math.min.apply(
Math,
data.map((item) => {
return item[parentId];
}),
) ||
0;
// 对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data));
// 循环所有项
const treeData = cloneData.filter((father) => {
const branchArr = cloneData.filter((child) => {
// 返回每一项的子级数组
return father[id] === child[parentId];
});
branchArr.length > 0 ? (father.children = branchArr) : '';
// 返回第一层
return father[parentId] === rootId;
});
return treeData !== '' ? treeData : data;
}
function handleSelect() {
const keys = getTree().getSelectedKeys();
const node = getTree().getSelectedNode(keys[0]);
// console.log('node', node);
emit('select', node);
}
// /**选中的数据*/
// function handleSelect(keys) {
// console.log(keys);
// emit('select', keys[0]);
// }
onMounted(() => {
fetch();
});
</script>
<template>
<div style="background: white; padding: 20px">
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" style="padding: 20px">
<PageWrapper
dense
contentFullHeight
fixedHeight
contentClass="flex flex-col"
class="toolbar"
style="width: 910px"
>
<div class="toolbar">
<div style="display: flex; align-items: center; justify-content: space-between; width: 100%;">
<h1 style="margin-top: 15px">{{ title }}</h1>
<div style="display: flex; gap: 15px;">
<a-button type="primary" @click="goBack">取消</a-button>
<a-button type="primary">申请检测</a-button>
<a-button
type="primary"
@click="submitForm"
>
提交申请
</a-button>
</div>
</div>
</div>
<hr style="border: 1px solid #dee3f0; width: 100%; margin: 20px auto" />
<p style="margin: 35px; color: #1b8bf8; font-weight: bold">申请信息</p>
<BasicForm size="middle" :bordered="false" :column="2" @register="registerGuideModeForm" />
<p style="margin: 35px; color: #1b8bf8; font-weight: bold">推送配置</p>
<BasicForm
size="middle"
:bordered="false"
:column="2"
@register="pushConfigurationModeForm"
/>
</PageWrapper>
</PageWrapper>
</div>
</template>
<script lang="ts" setup>
import { PageWrapper } from '@/components/Page';
import { personSchema, pushConfiguration } from './mock';
import { ref } from 'vue';
import { BasicForm, useForm } from '@/components/Form';
import {useMessage} from "@/hooks/web/useMessage";
const { createMessage } = useMessage();
const title = ref('申请推送<wyx_contact>等1个资源');
const [registerGuideModeForm,{validate,getFieldsValue: getFieldsValueValiate,}] = useForm({
labelWidth: 100,
schemas: personSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const [pushConfigurationModeForm,{validate: validatePushConfig,getFieldsValue: getFieldsValueValiateL,}] = useForm({
labelWidth: 100,
schemas: pushConfiguration,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
// 提交表单的方法
const submitForm = () => {
validate()
validatePushConfig()
.then(() => {
console.log(getFieldsValueValiate(),getFieldsValueValiateL());
createMessage.success(`表单已提交`);
})
.catch(() => {
createMessage.error(`请输入必填项`);
});
};
const goBack = () => {
window.history.back();
};
</script>
<style scoped></style>
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" >
<DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" />
<editAuditRulesModal
style="background: #cc0000;"
class="w-3/4 xl:w-4/5"
v-if="isSpecificDeptSelected"
/>
<BasicTable
@register="registerTable"
class="w-3/4 xl:w-4/5"
:searchInfo="searchInfo"
v-else
>
<template #toolbar>
<a-input style="width: 200px; margin-right: auto" placeholder="输入关键字搜索" allowClear />
<a-button type="primary" @click="pushNotifications">推送</a-button>
<a-button type="primary">下载</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { reactive, computed } from 'vue';
import {BasicTable, useTable} from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import DeptTree from './DeptTree.vue';
import { ref } from 'vue';
import {columnInformationList} from './mock';
import { columns } from './commonDataSet.data';
import EditAuditRulesModal from "./editAuditRulesModal.vue";
import {router} from "@/router";
defineOptions({ name: 'AccountManagement' });
const isSpecificDeptSelected = computed(() => {
return [23, 24, 25].includes(selectedDeptId.value);
});
// 选中的部门ID
const selectedDeptId = ref<string | null>(null);
const searchInfo = reactive<Recordable>({});
const [
registerTable,
{ },
] = useTable({
api: async (params) => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: columnInformationList.length,
code: '',
message: '',
data: columnInformationList,
};
return { ...response };
},
rowKey: 'businessId',
columns,
formConfig: {
labelWidth: 10,
autoSubmitOnEnter: true,
},
rowSelection: false,
useSearchForm: false,
showIndexColumn: false,
showTableSetting: false,
bordered: true,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
});
/**推送*/
function pushNotifications() {
router.push({
path: '/mallResourceDevelopment/dataSet/commonDataSet/applyForPushNotificationsModal',
query: {},
});
}
// 处理选择节点事件
const handleSelect = (deptId) => {
selectedDeptId.value = deptId;
console.log('选择节点selectedDeptId:', deptId);
}
</script>
import {BasicColumn} from '@/components/Table';
export const Columns: BasicColumn[] = [
{
title: '名称',
dataIndex: 'title',
},
{
title: '部门',
dataIndex: 'dept',
},
{
title: '标签',
dataIndex: 'label',
},
{
title: '描述',
dataIndex: 'description',
},
{
title: '创建人',
dataIndex: 'createdBy',
},
{
title: '创建时间',
dataIndex: 'createdTime',
},
{
title: '浏览次数',
dataIndex: 'view',
},
{
title: '推送次数',
dataIndex: 'edit',
},
{
title: '共享类型',
dataIndex: 'isShare',
slots: { customRender: 'isShare' },
},
];
export const columns: BasicColumn[] = [
{
title: '列名',
dataIndex: 'columnName',
width: 110,
},
{
title: '中文名',
dataIndex: 'chineseName',
width: 120,
},
{
title: '字段描述',
dataIndex: 'fieldDescription',
width: 120,
},
{
title: '字段类型',
dataIndex: 'fieldType',
width: 120,
},
{
title: '敏感状态',
dataIndex: 'sensitiveState',
width: 120,
},
{
title: '安全分级',
dataIndex: 'securityClassification',
width: 120,
},
{
title: '敏感类型',
dataIndex: 'sensitiveType',
width: 110,
},
{
title: '数据标准',
dataIndex: 'dataStandards',
width: 150,
},
];
export const samplingInfoData: any[] = [
{
name: 'zhangsan',
phone_number_string: '12345678901',
student_id: 'TEST1',
major: '-',
origin_city: '河南省',
ethnic: '汉族',
},
{
name: '李四',
phone_number_string: '12345678902',
student_id: 'TEST2',
major: '-',
origin_city: '吉林省',
ethnic: '汉族',
},
{
name: 'wangwu',
phone_number_string: '12345678903',
student_id: 'TEST6',
major: '-',
origin_city: '上海市',
ethnic: '汉族',
},
];
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
<BasicTable @register="registerColumnInformationDataTable">
<template #fileName="{ text }">
<div>
{{ text }}
<Switch :checked="'1' === '1'" />
</div>
</template>
<template #headerCell="{ column, title }">
<span>{{ title }}</span
><br />
<Tag color="orange" v-if="column.key != 'origin_city'" >{{ '敏感' }}</Tag>
<span style="font-size: 12px" >{{ column.type }}</span>
</template>
<template #toolbar>
<a-input style="width: 200px; margin-right: auto" placeholder="输入关键字搜索" allowClear />
<a-button type="primary" @click="pushNotifications">推送</a-button>
<a-button type="primary">下载</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { PageWrapper } from '@/components/Page';
import { tableList } from './mock';
import { computed, ref } from 'vue';
import { BasicTable, useTable } from '@/components/Table';
import { Switch, Tag } from 'ant-design-vue';
import {
samplingInfoData,
} from './commonDataSet.data';
import {router} from "@/router";
const infoDataColumns: { dataIndex: string; width: number; title: string }[] = [
{
title: 'name (姓名)',
type: 'string',
dataIndex: 'name',
width: 130,
},
{
title: 'phone_number_string (手机号)',
type: 'string',
dataIndex: 'phone_number_string',
width: 190,
},
{
title: 'student_id (学号)',
type: 'string',
dataIndex: 'student_id',
width: 130,
},
{
title: 'major (专业)',
type: 'string',
dataIndex: 'major',
width: 130,
},
{
title: 'origin_city (生源地)',
type: 'string',
dataIndex: 'origin_city',
width: 130,
},
{
title: 'ethnic (民族)',
type: 'string',
dataIndex: 'ethnic',
width: 130,
},
];
const samplingTableData = ref(samplingInfoData);
const pros = defineProps({
deptId: {
type: Number,
default: 0,
},
});
// 初始化 info 为一个响应式对象
const info = computed(() => {
const list = tableList;
const index = list.findIndex((item) => {
return item.selectedDeptId === pros.deptId; // 添加 return 关键字
});
console.log('list', list);
console.log('index', index);
console.log('deptId', pros.deptId);
if (index !== -1) {
return list[index];
}
return {};
});
function pushNotifications() {
router.push({
path: '/mallResourceDevelopment/dataSet/commonDataSet/applyForPushNotificationsModal',
query: {},
});
}
const [registerColumnInformationDataTable] = useTable({
api: async () => {
const response = {
pageNum: '1',
pageSize: '10',
pages: '1',
total: samplingTableData.value.length,
code: '',
message: '',
data: [],
};
//过滤data中的数据,取出等于params.deptId的数据
let data = samplingInfoData.filter((item) => item.parentId !== 0); // 根据需求过滤数据
data = data.map((item) =>{
const transformedItem = { ...item };
// 遍历每个字段,将除了 origin_city 外的字段替换成 '*'
Object.keys(transformedItem).forEach((key) => {
if (key !== 'origin_city') {
transformedItem[key] = '******';
}
});
return transformedItem;
});
return { ...response, data };
},
// dataSource: infoData,
columns: infoDataColumns,
pagination: false,
showIndexColumn: false,
scroll: { y: 400 },
});
</script>
<style scoped></style>
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" >
<DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" />
<editAuditRulesModal
style="background: #cc0000;"
class="w-3/4 xl:w-4/5"
v-if="isSpecificDeptSelected"
/>
<BasicTable
@register="registerTable"
class="w-3/4 xl:w-4/5"
:searchInfo="searchInfo"
v-else
>
<template #toolbar>
<a-input style="width: 200px; margin-right: auto" placeholder="输入关键字搜索" allowClear />
<a-button type="primary">新建文件夹</a-button>
<a-button type="primary">新建文件</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { reactive, computed } from 'vue';
import {BasicTable, useTable} from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import DeptTree from './DeptTree.vue';
import { ref } from 'vue';
import {columnInformationList} from './mock';
import { columns } from './commonDataSet.data';
import EditAuditRulesModal from "@/views/scriptDevelopment/sqlAudit/editAuditRulesModal.vue";
defineOptions({ name: 'AccountManagement' });
const isSpecificDeptSelected = computed(() => {
return [23, 24, 25].includes(selectedDeptId.value);
});
// 选中的部门ID
const selectedDeptId = ref<string | null>(null);
const searchInfo = reactive<Recordable>({});
const [
registerTable,
{ },
] = useTable({
api: async (params) => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: columnInformationList.length,
code: '',
message: '',
data: columnInformationList,
};
return { ...response };
},
rowKey: 'businessId',
columns,
formConfig: {
labelWidth: 10,
autoSubmitOnEnter: true,
},
rowSelection: false,
useSearchForm: false,
showIndexColumn: false,
showTableSetting: false,
bordered: true,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
});
// 处理选择节点事件
const handleSelect = (deptId) => {
selectedDeptId.value = deptId;
console.log('选择节点selectedDeptId:', deptId);
}
</script>
This diff is collapsed.
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" >
<DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" />
<editAuditRulesModal
style="background: #cc0000;"
class="w-3/4 xl:w-4/5"
v-if="isSpecificDeptSelected"
/>
<BasicTable
@register="registerTable"
class="w-3/4 xl:w-4/5"
:searchInfo="searchInfo"
v-else
>
<template #toolbar>
<a-input style="width: 200px; margin-right: auto" placeholder="输入关键字搜索" allowClear />
<a-button type="primary">新建文件夹</a-button>
<a-button type="primary">新建文件</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { reactive, computed } from 'vue';
import {BasicTable, useTable} from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import DeptTree from './DeptTree.vue';
import { ref } from 'vue';
import {columnInformationList} from './mock';
import { columns } from './commonDataSet.data';
import EditAuditRulesModal from "@/views/scriptDevelopment/sqlAudit/editAuditRulesModal.vue";
defineOptions({ name: 'AccountManagement' });
const isSpecificDeptSelected = computed(() => {
return [23, 24, 25].includes(selectedDeptId.value);
});
// 选中的部门ID
const selectedDeptId = ref<string | null>(null);
const searchInfo = reactive<Recordable>({});
const [
registerTable,
{ },
] = useTable({
api: async (params) => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: columnInformationList.length,
code: '',
message: '',
data: columnInformationList,
};
return { ...response };
},
rowKey: 'businessId',
columns,
formConfig: {
labelWidth: 10,
autoSubmitOnEnter: true,
},
rowSelection: false,
useSearchForm: false,
showIndexColumn: false,
showTableSetting: false,
bordered: true,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
});
// 处理选择节点事件
const handleSelect = (deptId) => {
selectedDeptId.value = deptId;
console.log('选择节点selectedDeptId:', deptId);
}
</script>
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" >
<DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" />
<editAuditRulesModal
style="background: #cc0000;"
class="w-3/4 xl:w-4/5"
v-if="isSpecificDeptSelected"
/>
<BasicTable
@register="registerTable"
class="w-3/4 xl:w-4/5"
:searchInfo="searchInfo"
v-else
>
<template #toolbar>
<a-input style="width: 200px; margin-right: auto" placeholder="输入关键字搜索" allowClear />
<a-button type="primary">新建文件夹</a-button>
<a-button type="primary">新建文件</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { reactive, computed } from 'vue';
import {BasicTable, useTable} from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import DeptTree from './DeptTree.vue';
import { ref } from 'vue';
import {columnInformationList} from './mock';
import { columns } from './commonDataSet.data';
import EditAuditRulesModal from "@/views/scriptDevelopment/sqlAudit/editAuditRulesModal.vue";
defineOptions({ name: 'AccountManagement' });
const isSpecificDeptSelected = computed(() => {
return [23, 24, 25].includes(selectedDeptId.value);
});
// 选中的部门ID
const selectedDeptId = ref<string | null>(null);
const searchInfo = reactive<Recordable>({});
const [
registerTable,
{ },
] = useTable({
api: async (params) => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: columnInformationList.length,
code: '',
message: '',
data: columnInformationList,
};
return { ...response };
},
rowKey: 'businessId',
columns,
formConfig: {
labelWidth: 10,
autoSubmitOnEnter: true,
},
rowSelection: false,
useSearchForm: false,
showIndexColumn: false,
showTableSetting: false,
bordered: true,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
});
// 处理选择节点事件
const handleSelect = (deptId) => {
selectedDeptId.value = deptId;
console.log('选择节点selectedDeptId:', deptId);
}
</script>
import {FormSchema} from "@/components/Form";
import {InputProps, SelectProps} from "ant-design-vue";
import {BasicColumn} from "@/components/Table";
export const publicFormSchema: FormSchema[] = [
{
field: 'key',
component: 'Input',
componentProps: {
placeholder: '搜索编目或数据集',
} as InputProps,
},
{
field: 'type',
component: 'Select',
componentProps: {
options: [
{
label: '共享类型',
value: '共享类型',
},
],
} as SelectProps,
},
];
export const publicTableColumn: BasicColumn[] = [
{
title: '名称',
dataIndex: 'title',
},
{
title: '部门',
dataIndex: 'dept',
},
{
title: '描述',
dataIndex: 'des',
},
{
title: '创建人',
dataIndex: 'createdBy',
},
{
title: '创建时间',
dataIndex: 'createdTime',
},
{
title: '浏览次数',
dataIndex: 'num1',
},
{
title: '推送次数',
dataIndex: 'num2',
},
{
title: '共享类型',
dataIndex: 'isShare',
slots: { customRender: 'isShare' },
},
];
export const publicTreeData = [
{
title: '公共标签',
key: '0',
icon: 'ant-design:folder-outlined',
children: [
{
title: '战略规划',
key: '0-0',
icon: 'ant-design:folder-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '5',
num2: '0',
children: [
{
title: '战略标签1',
key: '0-0-0',
icon: 'ant-design:tag-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '53',
num2: '0',
},
{
title: '战略标签2',
key: '0-0-1',
icon: 'ant-design:tag-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '53',
num2: '0',
},
],
},
{
title: '业务运营',
key: '0-1',
icon: 'ant-design:folder-outlined',
children: [
{
title: '运营标签1',
key: '0-1-0',
icon: 'ant-design:tag-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '53',
num2: '0',
},
{
title: '运营标签2',
key: '0-1-1',
icon: 'ant-design:tag-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '53',
num2: '0',
},
],
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
time: '2024/07/23 10:20:29',
num1: '157',
num2: '0',
},
{
title: '管理支持',
key: '0-2',
icon: 'ant-design:folder-outlined',
children: [
{
title: '管理支持1',
key: '0-2-0',
icon: 'ant-design:tag-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '53',
num2: '0',
},
{
title: '管理支持2',
key: '0-2-1',
icon: 'ant-design:tag-outlined',
time: '2024/07/23 10:20:15',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '53',
num2: '0',
},
],
time: '2024/07/23 10:20:40',
dept: '部门1',
des: '描述1',
createdBy: 'admin',
createdTime: '2023/12/11 15:24:37',
num1: '13',
num2: '0',
},
],
},
];
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex" >
<DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" />
<editAuditRulesModal
style="background: #cc0000;"
class="w-3/4 xl:w-4/5"
v-if="isSpecificDeptSelected"
/>
<BasicTable
@register="registerTable"
class="w-3/4 xl:w-4/5"
:searchInfo="searchInfo"
v-else
>
<template #toolbar>
<a-input style="width: 200px; margin-right: auto" placeholder="输入关键字搜索" allowClear />
<a-button type="primary">新建文件夹</a-button>
<a-button type="primary">新建文件</a-button>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { reactive, computed } from 'vue';
import {BasicTable, useTable} from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import DeptTree from './DeptTree.vue';
import { ref } from 'vue';
import {columnInformationList} from './mock';
import { columns } from './commonDataSet.data';
import EditAuditRulesModal from "@/views/scriptDevelopment/sqlAudit/editAuditRulesModal.vue";
defineOptions({ name: 'AccountManagement' });
const isSpecificDeptSelected = computed(() => {
return [23, 24, 25].includes(selectedDeptId.value);
});
// 选中的部门ID
const selectedDeptId = ref<string | null>(null);
const searchInfo = reactive<Recordable>({});
const [
registerTable,
{ },
] = useTable({
api: async (params) => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: columnInformationList.length,
code: '',
message: '',
data: columnInformationList,
};
return { ...response };
},
rowKey: 'businessId',
columns,
formConfig: {
labelWidth: 10,
autoSubmitOnEnter: true,
},
rowSelection: false,
useSearchForm: false,
showIndexColumn: false,
showTableSetting: false,
bordered: true,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
});
// 处理选择节点事件
const handleSelect = (deptId) => {
selectedDeptId.value = deptId;
console.log('选择节点selectedDeptId:', deptId);
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment