Commit 70114bcf authored by ZhangKai's avatar ZhangKai

Merge remote-tracking branch 'origin/master'

parents d331221f 9ce28302
...@@ -1843,6 +1843,11 @@ ...@@ -1843,6 +1843,11 @@
title: '发布新版本', title: '发布新版本',
}); });
} }
function handleOperation() {
router.push({
path: '/dataIntegration/taskOM/index',
});
}
function handleSaveSuccess() { function handleSaveSuccess() {
isRun.value = 'true'; isRun.value = 'true';
} }
......
...@@ -8,18 +8,24 @@ ...@@ -8,18 +8,24 @@
</BasicTable> </BasicTable>
<a-button type="primary">测试</a-button> <a-button type="primary">测试</a-button>
<Tabs v-model:activeKey="activeKey"> <Tabs v-model:activeKey="activeKey">
<TabPane key="1" tab="请求报文" /> <TabPane key="1" tab="请求报文">
<div class="flex" style="margin: 15px 0">
<div style="width: 4px; margin: 4px 0; background-color: #128afa"></div>
<div style="margin-left: 6px"> 动态报文 </div>
</div>
<Textarea :auto-size="{ minRow: 6 }" v-model:value="message" />
</TabPane>
<TabPane key="2" tab="请求代码"> <TabPane key="2" tab="请求代码">
<div class="flex" style="margin: 15px 0"> <div class="flex" style="margin: 15px 0">
<div style="width: 4px; margin: 4px 0; background-color: #128afa"></div> <div style="width: 4px; margin: 4px 0; background-color: #128afa"></div>
<div style="margin-left: 6px"> 动态路由地址 </div> <div style="margin-left: 6px"> 动态路由地址 </div>
</div> </div>
<Textarea :rows="6" v-model:value="address" /> <Textarea :auto-size="{ minRow: 6 }" v-model:value="address" />
<div class="flex" style="margin: 25px 0 15px 0"> <div class="flex" style="margin: 25px 0 15px 0">
<span>返回结果源码</span> <span>返回结果源码</span>
<BasicHelp text="返回结果源码" /> <BasicHelp text="返回结果源码" />
</div> </div>
<Textarea :rows="6" v-model:value="resultTxt" /> <Textarea :auto-size="{ minRow: 6 }" v-model:value="resultTxt" />
</TabPane> </TabPane>
</Tabs> </Tabs>
</template> </template>
...@@ -36,10 +42,12 @@ ...@@ -36,10 +42,12 @@
import { testTableData } from '@/views/dataService/serviceMarket/myCall/apiTest/testData'; import { testTableData } from '@/views/dataService/serviceMarket/myCall/apiTest/testData';
import BasicHelp from '@/components/Basic/src/BasicHelp.vue'; import BasicHelp from '@/components/Basic/src/BasicHelp.vue';
const address = 'curl -X POST‘http://node322:28143/employee′-H\'token:\n' + const address =
'7406056a00d65806200fe299d573a49b6bac08938e4ec73143d48caf110723bbc6d0e7efac9e01a2abbadada175b3c6ca3b251fd76cbbefed08f234998b5f7ac\'-H\'Content-Type:\n' + "curl -X POST‘http://node322:28143/employee′-H'token:\n" +
"7406056a00d65806200fe299d573a49b6bac08938e4ec73143d48caf110723bbc6d0e7efac9e01a2abbadada175b3c6ca3b251fd76cbbefed08f234998b5f7ac'-H'Content-Type:\n" +
'application/json\'-H\'Accept:*/*’-d\'("departmentID":"1")}"'; 'application/json\'-H\'Accept:*/*’-d\'("departmentID":"1")}"';
const resultTxt = '{\n' + const resultTxt =
'{\n' +
'"success":true,\n' + '"success":true,\n' +
'"code":200,\n' + '"code":200,\n' +
'"message": "success",\n' + '"message": "success",\n' +
...@@ -50,6 +58,14 @@ ...@@ -50,6 +58,14 @@
'"FirstName"\n' + '"FirstName"\n' +
'}\n' + '}\n' +
'}'; '}';
const message =
'POST /login HTTP/1.1\n' +
'Host: www.example.com\n' +
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36\n' +
'Accept: application/json\n' +
'Content-Type: application/x-www-form-urlencoded\n' +
'\n' +
'username=admin&password=123456';
const activeKey = ref(); const activeKey = ref();
const [queryTable] = useTable({ const [queryTable] = useTable({
title: '请求参数', title: '请求参数',
......
This diff is collapsed.
<template>
<BasicModal
width="55%"
v-bind="$attrs"
@register="registerModal"
:title="title"
@ok="handleSubmit"
>
<BasicTable @register="registerTable" />
</BasicModal>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { BasicTable, useTable } from '@/components/Table';
import { downloadColumns } from './data';
import { downloadData } from './apiByApplyData';
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const title = ref();
const tableData = ref([]);
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerTable, { reload }] = useTable({
title: '选择下载范围',
api: async () => {
const response = {
pageNum: '1',
pageSize: '10',
pages: '1',
total: tableData.value.length,
code: '',
message: '',
data: [],
};
//过滤data中的数据,取出等于params.deptId的数据
var data = [];
data = tableData.value;
return { ...response, data: data };
},
rowSelection: {
type: 'radio',
},
striped: false,
pagination: false,
columns: downloadColumns,
useSearchForm: false,
showTableSetting: false,
bordered: true,
showIndexColumn: false,
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
await reload();
setModalProps({ confirmLoading: false });
title.value = data.title;
});
async function handleSubmit() {
closeModal();
createMessage.success('下载成功');
}
onMounted(() => {
tableData.value = downloadData;
});
</script>
<template>
<PageWrapper class="content-padding" contentBackground>
<template #headerContent>
<div class="modal_top">
<div>
<Icon icon="hugeicons:file-euro" :size="50" :color="'#64c6e9'" />
</div>
<div>
<div class="title">我申请的</div>
</div>
</div>
</template>
<template #footer>
<a-tabs v-model:activeKey="currentKey">
<a-tab-pane key="1" tab="申请成功" />
<a-tab-pane key="2" tab="申请中" />
<a-tab-pane key="3" tab="申请失败" />
</a-tabs>
</template>
<div class="pt-4 m-4 desc-wrap">
<template v-if="currentKey == '1'">
<BasicTable @register="registerApplySuccessTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
</template>
<template v-if="currentKey == '2'">
<BasicTable @register="registerApplyTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
</template>
<template v-if="currentKey == '3'">
<BasicTable @register="registerApplyFailedTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
</template>
</div>
</PageWrapper>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { PageWrapper } from '@/components/Page';
import { useTabs } from '@/hooks/web/useTabs';
import { Tabs } from 'ant-design-vue';
import { useMessage } from '@/hooks/web/useMessage';
import Icon from '@/components/Icon/Icon.vue';
import { BasicTable, TableAction, useTable } from '@/components/Table';
import { applyColumns, applyFormSchema } from './data';
import { applyData, applyFailedData, applySuccessData } from './apiByApplyData';
import { router } from '@/router';
const { createMessage } = useMessage();
const ATabs = Tabs;
const ATabPane = Tabs.TabPane;
const currentKey = ref('1');
const { setTitle } = useTabs();
setTitle('我申请的');
const [registerApplySuccessTable] = useTable({
dataSource: applySuccessData,
columns: applyColumns,
useSearchForm: true,
formConfig: {
showActionButtonGroup: false,
schemas: applyFormSchema,
autoSubmitOnEnter: true,
},
actionColumn: {
width: 120,
title: '操作',
dataIndex: 'action',
},
pagination: true,
showIndexColumn: false,
});
const [registerApplyTable] = useTable({
dataSource: applyData,
columns: applyColumns,
useSearchForm: true,
formConfig: {
showActionButtonGroup: false,
schemas: applyFormSchema,
autoSubmitOnEnter: true,
},
actionColumn: {
width: 120,
title: '操作',
dataIndex: 'action',
},
pagination: true,
showIndexColumn: false,
});
const [registerApplyFailedTable] = useTable({
dataSource: applyFailedData,
columns: applyColumns,
useSearchForm: true,
formConfig: {
showActionButtonGroup: false,
schemas: applyFormSchema,
autoSubmitOnEnter: true,
},
actionColumn: {
width: 120,
title: '操作',
dataIndex: 'action',
},
pagination: true,
showIndexColumn: false,
});
function handleDetail(record: Recordable) {
router.push({
path: '/dataset/datasetByApply/datasetByApplyDetail',
query: {
name: record.name,
},
});
}
onMounted(() => {});
</script>
<style lang="scss" scoped>
.content-padding {
background-color: white;
}
.modal_top {
display: flex;
align-items: center;
.title {
font-size: 25px;
font-weight: 500;
margin-left: 10px;
margin-top: 20px;
}
.path {
font-size: 14px;
color: gray;
}
.buttonGroup {
margin-left: auto;
display: flex;
gap: 5px;
align-items: center;
}
}
.selected-row {
background-color: #5cb3ff; /* 可以根据需要调整颜色 */
}
</style>
<template>
<div class=" overflow-hidden bg-white">
<BasicTree
title=""
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 './dataFileData';
const emit = defineEmits(['select']);
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;
}
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(keys) {
emit('select', keys[0]);
}
onMounted(() => {
fetch();
});
</script>
<template>
<BasicModal
width="35%"
v-bind="$attrs"
@register="registerModal"
:title="title"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, unref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { addFileFormSchema } from './data';
import { newFileTreeData } from './dataFileData';
import { useMessage } from '@/hooks/web/useMessage';
defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']);
const isUpdate = ref(true);
const title = ref();
const { createMessage } = useMessage();
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 24, md: 24 },
schemas: addFileFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields();
setModalProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
// 通过id获取行详情信息
// 塞值
setFieldsValue({
...data.record,
});
}
title.value = data.title;
const treeList = handleTree(newFileTreeData, 'businessId', undefined, undefined, undefined);
updateSchema([
{
field: 'path',
componentProps: {
treeData: treeList,
},
},
]);
});
/**数组对象转成树*/
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;
}
async function handleSubmit() {
try {
const values = await validate();
setModalProps({ confirmLoading: true });
closeModal();
createMessage.success('新建成功');
} finally {
setModalProps({ confirmLoading: false });
}
}
</script>
<style lang="scss" scoped>
.modalRow {
padding: 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
.clearAll {
padding-right: 10px;
font-size: 16px;
}
.right {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.addDialogBG {
margin: 10px;
border-radius: 10px;
padding: 20px;
background-color: #e8ecf7;
width: 98%;
height: 400px;
}
</style>
This diff is collapsed.
<template>
<PageWrapper class="content-padding" contentBackground @back="goBack">
<template #headerContent>
<div class="modal_top">
<Icon
icon="ep:arrow-left-bold"
:size="20"
style="margin-right: 5px"
:color="'#a3a7b1'"
@click="goBack"
/>
<div>
<Icon
icon="material-symbols-light:dataset-linked-outline-sharp"
:size="40"
:color="'#64c6e9'"
/>
</div>
<div>
<div class="title">test</div>
<div class="path">我创建的/test</div>
</div>
<div class="buttonGroup">
<a-button type="primary" @click="handleVersionPublish">版本发布</a-button>
<a-button type="primary" @click="handleVersionManagement">版本管理</a-button>
<a-button type="primary" @click="handleDelete">删除</a-button>
<a-button type="primary" @click="handleUp">上架</a-button>
<a-button type="primary" @click="handleVersionManagement">编辑</a-button>
</div>
</div>
</template>
<template #footer>
<a-tabs v-model:activeKey="currentKey">
<a-tab-pane key="1" tab="资源信息" />
<a-tab-pane key="2" tab="列信息" />
<a-tab-pane key="3" tab="采样数据" />
<a-tab-pane key="4" tab="对应公共资源" />
</a-tabs>
</template>
<div class="pt-4 m-4 desc-wrap">
<template v-if="currentKey == '1'">
<Description
size="middle"
title="基本信息"
:bordered="false"
:column="2"
:data="basicData"
:schema="basicSchema"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
/>
<Description
size="middle"
title="源表信息"
:bordered="false"
:column="2"
:data="sourceTableData"
:schema="sourceTableSchema"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
/>
<Description
size="middle"
title="默认上架配置"
:bordered="false"
:column="2"
:data="optionData"
:schema="optionSchema"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
/>
<Description
size="middle"
title="开放权限"
:bordered="false"
:column="2"
:data="permissionData"
:schema="permissionSchema"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
/>
</template>
<template v-if="currentKey == '2'">
<BasicTable @register="registerTable" />
</template>
<template v-if="currentKey == '3'">
<BasicTable @register="registerSampleDataTable" />
</template>
<template v-if="currentKey == '4'">
<div class="flex">
<div style="width: 30%; border: rgba(26, 26, 26, 0.15) 1px solid">
<BasicTable @register="registerGlobalDataTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'status'">
<template v-if="record.status === '1'">
<Icon icon="grommet-icons:status-good" color="green" /><span>已上架</span>
</template>
<template v-if="record.status === '0'">
<Icon icon="carbon:error-outline" color="red" /><span>未上架</span>
</template>
</template>
</template>
</BasicTable>
</div>
<div style="width: 70%; border: rgba(26, 26, 26, 0.15) 1px solid">
<div>
<Icon
icon="material-symbols-light:dataset-linked-outline-sharp"
:size="40"
style="margin-left: 10px"
:color="'#64c6e9'"
/>
<a-button type="primary" style="margin-left: 900px" @click="handleDown"
>下架</a-button
>
<a-button type="primary" style="margin-left: 10px" @click="handleUp"
>重新上架</a-button
>
</div>
<div>
<div class="title" style="margin-left: 15px; padding-bottom: 20px">test1</div>
</div>
<div>
<Description
size="middle"
:bordered="false"
:column="2"
:data="optionData"
:schema="optionSchema"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
/>
</div>
<div>
<BasicTable @register="registerUploadFieldTable" />
</div>
</div>
</div>
</template>
</div>
<VersionPublishModal @register="registerVersionPublishModal" />
</PageWrapper>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { PageWrapper } from '@/components/Page';
import { useTabs } from '@/hooks/web/useTabs';
import { Tabs } from 'ant-design-vue';
import { useMessage } from '@/hooks/web/useMessage';
import { router } from '@/router';
import Icon from '@/components/Icon/Icon.vue';
import { Description } from '@/components/Description';
import {
basicSchema,
sourceTableSchema,
optionSchema,
permissionSchema,
searchEditFormSchema,
informationColumns,
sampleDataColumns,
globalDataColumns,
uploadFieldColumns,
} from './data';
import {
basicData,
sourceTableData,
optionData,
permissionData,
informationTableList,
sampleDataTableList,
globalDataTableList,
uploadFieldTableList,
} from './dataFileData';
import { BasicTable, useTable } from '@/components/Table';
import { useModal } from '@/components/Modal';
import VersionPublishModal from './versionPublishModal.vue';
defineOptions({ name: 'AccountDetail' });
const { createMessage, createConfirm } = useMessage();
const ATabs = Tabs;
const ATabPane = Tabs.TabPane;
const currentKey = ref('1');
const { setTitle } = useTabs();
setTitle('数据集详情');
const [registerVersionPublishModal, { openModal: openVersionPublishModal }] = useModal();
const [registerTable] = useTable({
api: async () => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: informationTableList.length,
code: '',
message: '',
data: informationTableList,
};
return { ...response };
},
columns: informationColumns,
formConfig: {
labelWidth: 10,
schemas: searchEditFormSchema,
autoSubmitOnEnter: true,
showActionButtonGroup: false,
},
useSearchForm: true,
showTableSetting: false,
showIndexColumn: false,
bordered: true,
handleSearchInfoFn(info) {
return info;
},
});
const [registerSampleDataTable] = useTable({
dataSource: sampleDataTableList,
columns: sampleDataColumns,
formConfig: {
labelWidth: 10,
schemas: searchEditFormSchema,
autoSubmitOnEnter: true,
showActionButtonGroup: false,
},
useSearchForm: true,
bordered: false,
});
const [registerGlobalDataTable] = useTable({
dataSource: globalDataTableList,
columns: globalDataColumns,
rowSelection: true,
rowKey: 'id',
showIndexColumn: false,
bordered: false,
});
const [registerUploadFieldTable] = useTable({
title: '上架字段',
dataSource: uploadFieldTableList,
columns: uploadFieldColumns,
showIndexColumn: false,
scroll: {
y: 400,
},
bordered: false,
});
function handleDown() {
createMessage.success('下架成功');
}
function handleUp() {
createMessage.success('上架成功');
}
function handleVersionPublish() {
openVersionPublishModal(true, {
title: '申请发布V10.0版本:数据集1',
});
}
function handleDelete() {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '确认删除吗?',
onOk() {
router.back();
createMessage.success('删除成功!');
},
});
}
function goBack() {
router.back();
}
onMounted(() => {});
</script>
<style lang="scss" scoped>
.content-padding {
background-color: white;
}
.modal_top {
padding: 0 0 20px 0;
display: flex;
align-items: center;
.title {
font-size: 16px;
font-weight: 500;
}
.path {
font-size: 14px;
color: gray;
}
.buttonGroup {
margin-left: auto;
display: flex;
gap: 5px;
align-items: center;
}
}
.selected-row {
background-color: #5cb3ff; /* 可以根据需要调整颜色 */
}
</style>
<template>
<BasicModal
width="60%"
v-bind="$attrs"
@register="registerModal"
:title="title"
@ok="handleSubmit"
>
<Description size="middle" title="基本信息" :bordered="false" />
<div>
<BasicForm @register="registerForm" />
</div>
<Description size="middle" title="源表信息" :bordered="false" />
<div>
<BasicForm @register="registerSourceTableForm" />
</div>
<Description size="middle" title="列信息" :bordered="false" />
<div>
<BasicTable @register="registerTable">
<template #bodyCell="{ column }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '删除',
onClick: deleteButton.bind(null),
},
]"
/>
</template>
</template>
</BasicTable>
</div>
<Description size="middle" title="开放权限" :bordered="false" />
<div>
<BasicForm @register="registerPermissionsForm">
<template #filterAlter>
<Alert
show-icon
message="数据过滤配置仅在开放下载或推送权限后生效,用户在下载或推送资源时可以选择对应的数据过滤方式。"
type="info"
style="font-size: 14px"
/>
</template>
</BasicForm>
</div>
<Description size="middle" title="默认上架配置" :bordered="false" />
<div>
<BasicForm @register="registerOptionsForm" />
</div>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, unref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import {
editColumns,
editFileFormSchema,
editFileOptionsFormSchema,
editFilePermissionsFormSchema,
editSourceTableFormSchema,
searchEditFormSchema,
} from './data';
import { editTableList, TreeData } from './dataFileData';
import { useMessage } from '@/hooks/web/useMessage';
import { Description } from '@/components/Description';
import { BasicTable, TableAction, useTable } from '@/components/Table';
import { Alert } from 'ant-design-vue';
import { router } from '@/router';
defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']);
const isUpdate = ref(true);
const { createMessage } = useMessage();
const title = ref();
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 120,
schemas: editFileFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
const [registerSourceTableForm] = useForm({
labelWidth: 120,
schemas: editSourceTableFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
const [registerPermissionsForm] = useForm({
labelWidth: 120,
schemas: editFilePermissionsFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
const [registerOptionsForm] = useForm({
labelWidth: 120,
schemas: editFileOptionsFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
const [registerTable] = useTable({
api: async () => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: editTableList.length,
code: '',
message: '',
data: editTableList,
};
return { ...response };
},
scroll: { y: 300 },
columns: editColumns,
formConfig: {
labelWidth: 10,
schemas: searchEditFormSchema,
autoSubmitOnEnter: true,
showActionButtonGroup: false,
},
useSearchForm: true,
showTableSetting: false,
showIndexColumn: false,
bordered: true,
handleSearchInfoFn(info) {
return info;
},
actionColumn: {
width: 100,
title: '操作',
dataIndex: 'action',
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields();
setModalProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
// 通过id获取行详情信息
// 塞值
setFieldsValue({
...data.record,
});
}
title.value = data.title;
const treeList = handleTree(TreeData, 'businessId', undefined, undefined, undefined);
updateSchema([
{
field: 'path',
componentProps: {
treeData: treeList,
},
},
]);
});
function deleteButton() {
createMessage.success('删除成功');
}
/**数组对象转成树*/
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 handleSubmit() {
closeModal();
createMessage.success('提交成功');
}
</script>
<style lang="scss" scoped>
.modalRow {
padding: 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
.clearAll {
padding-right: 10px;
font-size: 16px;
}
.right {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.addDialogBG {
margin: 10px;
border-radius: 10px;
padding: 20px;
background-color: #e8ecf7;
width: 98%;
height: 400px;
}
</style>
<template>
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
<GroupTree class="w-1/4 xl:w-1/5" @select="handleSelect" />
<div class="w-3/4 xl:w-4/5">
<div style="display: flex; align-items: center; background-color: white; padding-top: 20px">
<Icon style="margin-left: 30px" icon="ion:folder-outline" :size="50" :color="'#6499e9'" />
<div style="margin-left: 10px">
<span class="title">test</span>
<div>
<span class="path">我创建的</span>
</div>
</div>
<a-button style="margin-left: 550px" type="primary" @click="deleteButton">删除</a-button>
<a-button style="margin-left: 10px" type="primary" @click="handleMove(1)">移动</a-button>
<a-button style="margin-left: 10px" type="primary" @click="batchUploading"
>批量上架</a-button
>
<a-button style="margin-left: 10px" type="primary" @click="handleNewFolder"
>新建文件夹</a-button
>
<a-button style="margin-left: 10px" type="primary" @click="handleCataloging"
>新建编目</a-button
>
<a-button style="margin-left: 10px" type="primary" @click="handleDataEntry"
>新建文件</a-button
>
<a-button style="margin-left: 10px" type="primary" @click="handleDataEntry"
>批量新建</a-button
>
</div>
<BasicTable style="background-color: white" @register="registerTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'status'">
<template v-if="record.uploadStatus === '0'">
<Icon icon="grommet-icons:status-good" color="green" /><span>已发布</span>
</template>
<template v-if="record.uploadStatus === '1'">
<Icon icon="carbon:error-outline" color="red" /><span>未发布</span>
</template>
</template>
<template v-if="column.key === 'uploadStatus'">
<template v-if="record.uploadStatus === '0'">
<Icon icon="grommet-icons:status-good" color="green" /><span>已上架</span>
</template>
<template v-if="record.uploadStatus === '1'">
<Icon icon="carbon:error-outline" color="red" /><span>未上架</span>
</template>
</template>
<template v-if="column.key === 'name'">
<div @click="handleDetail" style="color: #6499e9">
<Icon icon="carbon:folder" />
<span>{{ record.name }}</span>
</div>
</template>
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '上架',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleUpload.bind(null),
},
},
{
label: '编辑',
onClick: handEdit.bind(null),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handDelete.bind(null),
},
},
]"
/>
</template>
</template>
</BasicTable>
</div>
<MoveFile @register="registerMoveFile" />
<NewFolder @register="registerNewFolder" />
<AddFileModal @register="registerAddFileModal" />
<EditFileModal @register="registerEditFile" />
</PageWrapper>
</template>
<script lang="ts" setup>
import { onMounted } from 'vue';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import { useMessage } from '@/hooks/web/useMessage';
import { useModal } from '@/components/Modal';
import { tableList } from './dataFileData';
import { columns, searchFormSchema } from './data';
import MoveFile from './moveFile.vue';
import NewFolder from './newFolder.vue';
import GroupTree from './GroupTree.vue';
import Icon from '@/components/Icon/Icon.vue';
import AddFileModal from './addFileModal.vue';
import { router } from '@/router';
import EditFileModal from '@/views/mallResourceDevelopment/dataSet/datasetByCreate/editFileModal.vue';
const { createMessage, createConfirm } = useMessage();
const [registerMoveFile, { openModal: openMoveFileModal }] = useModal();
const [registerNewFolder, { openModal: openNewFolderModal }] = useModal();
const [registerAddFileModal, { openModal: openAddFileModal }] = useModal();
const [registerEditFile, { openModal: openEditFileModal }] = useModal();
const [registerTable, { reload, getRowSelection }] = useTable({
api: async () => {
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: tableList.length,
code: '',
message: '',
data: tableList,
};
return { ...response };
},
rowKey: 'businessId',
rowSelection: true,
columns,
formConfig: {
labelWidth: 10,
schemas: searchFormSchema,
autoSubmitOnEnter: true,
},
useSearchForm: true,
showTableSetting: false,
showIndexColumn: false,
bordered: true,
handleSearchInfoFn(info) {
return info;
},
actionColumn: {
width: 120,
title: '操作',
dataIndex: 'action',
},
});
function handleDataEntry() {
openAddFileModal(true, {
title: '新建文件',
});
}
function handleNewFolder() {
openNewFolderModal(true, {
isUpdate: false,
});
}
function handleCataloging() {
openNewFolderModal(true, {
isUpdate: true,
});
}
/** 移动按钮*/
function handleMove(isMove) {
openMoveFileModal(true, {
isMove: isMove,
});
}
function batchUploading() {
createConfirm({
iconType: 'info',
title: '确认上架',
content: '确认批量上架选中数据吗?',
onOk() {
createMessage.success('上架成功!');
reload();
},
});
}
function handleUpload() {
createMessage.success('上架成功!');
}
function handDelete() {
createMessage.success('删除成功!');
}
/**删除按钮*/
function deleteButton() {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '确认批量删除选中数据吗?',
onOk() {
createMessage.success('删除成功!');
reload();
},
});
}
function handleDetail() {
router.push({
path: '/dataset/datasetByCreate/datasetByCreateDetail',
});
}
function handEdit() {
openEditFileModal(true, {
title: '编辑文件',
});
}
/** 部门树的select*/
function handleSelect() {
reload();
}
onMounted(() => {});
</script>
<style scoped>
.title {
font-size: 16px;
font-weight: 500;
}
.path {
font-size: 14px;
color: gray;
}
</style>
<template>
<BasicModal
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, computed } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { MoveFormSchema } from './data';
import { useMessage } from '@/hooks/web/useMessage';
import { TreeData } from './dataFileData';
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const rowData = ref([]);
let isMove = ref();
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { updateSchema, resetFields }] = useForm({
baseColProps: { span: 24 },
schemas: MoveFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
console.log('data', data);
// //每次点击弹窗 需要清空存储的数据
rowData.value = [];
isMove.value = data.isMove;
// //重置表单数据
resetFields();
setModalProps({ confirmLoading: false });
const treeList = handleTree(TreeData, 'businessId', undefined, undefined, undefined);
updateSchema([
{
field: 'taskId',
componentProps: {
treeData: treeList,
},
},
]);
console.log('treeList:', treeList);
});
const getTitle = computed(() => '移动');
/**确定按钮*/
async function handleSubmit() {
// console.log('isMove.value', isMove.value);
if (isMove.value === 1) {
createMessage.success('移动成功!');
} else {
createMessage.success('复制成功!');
}
closeModal();
}
/**数组对象转成树*/
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;
}
</script>
<template>
<BasicModal
width="40%"
v-bind="$attrs"
@register="registerModal"
:title="getTitle"
@ok="handleSubmit"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, computed, unref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { formSchemaNewFolder } from './data';
import { TreeData } from './dataFileData';
defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']);
const isUpdate = ref(true);
const rowId = ref('');
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 24, md: 24 },
schemas: formSchemaNewFolder,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields();
setModalProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
// 通过id获取行详情信息
// 塞值
setFieldsValue({
...data.record,
});
}
const treeList = handleTree(TreeData, 'businessId', undefined, undefined, undefined);
updateSchema([
{
field: 'path',
componentProps: {
treeData: treeList,
},
},
]);
});
/**数组对象转成树*/
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;
}
const getTitle = computed(() => (!unref(isUpdate) ? '新建文件夹' : '新建编目'));
async function handleSubmit() {
try {
const values = await validate();
setModalProps({ confirmLoading: true });
// TODO custom api
closeModal();
emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } });
} finally {
setModalProps({ confirmLoading: false });
}
}
</script>
<style lang="scss" scoped>
.modalRow {
padding: 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
.clearAll {
padding-right: 10px;
font-size: 16px;
}
.right {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.addDialogBG {
margin: 10px;
border-radius: 10px;
padding: 20px;
background-color: #e8ecf7;
width: 98%;
height: 400px;
}
</style>
<template>
<BasicModal
width="55%"
v-bind="$attrs"
@register="registerModal"
:title="title"
@ok="handleSubmit"
>
<div>
<BasicForm @register="registerForm" />
<Description size="middle" title="版本对比" :bordered="false" />
</div>
<div class="flex">
<div style="width: 50%; border: rgba(26, 26, 26, 0.12) 1px solid">
<div style="padding-left: 20px; font-size: 16px; font-weight: 500">V9.0(当前)</div>
<Description
size="middle"
title="基本信息"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="basicOldData"
:schema="basicSchema"
/>
<Description
size="middle"
title="源表信息"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="sourceTableData"
:schema="sourceTableSchema"
/>
<Description
size="middle"
title="默认上架配置"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="optionData"
:schema="optionSchema"
/>
<Description
size="middle"
title="开放权限"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="permissionData"
:schema="permissionSchema"
/>
</div>
<div style="width: 50%; border: rgba(26, 26, 26, 0.12) 1px solid">
<div style="padding-left: 20px; font-size: 16px; font-weight: 500">发布版本</div>
<Description
size="middle"
title="基本信息"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="basicNewData"
:schema="basicSchema"
/>
<Description
size="middle"
title="源表信息"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="sourceTableData"
:schema="sourceTableSchema"
/>
<Description
size="middle"
title="默认上架配置"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="optionData"
:schema="optionSchema"
/>
<Description
size="middle"
title="开放权限"
:bordered="false"
:column="1"
:labelStyle="{ fontSize: '16px' }"
:contentStyle="{ fontSize: '16px' }"
:data="permissionData"
:schema="permissionSchema"
/>
</div>
</div>
</BasicModal>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import { BasicForm, useForm } from '@/components/Form';
import {
basicSchema,
optionSchema,
permissionSchema,
sourceTableSchema,
versionPublishSchema,
} from '@/views/mallResourceDevelopment/dataSet/datasetByCreate/data';
import Description from '@/components/Description/src/Description.vue';
import {
basicData, basicNewData, basicOldData,
optionData,
permissionData,
sourceTableData,
} from '@/views/mallResourceDevelopment/dataSet/datasetByCreate/dataFileData';
defineOptions({ name: 'KnowledgeModal' });
const { createMessage } = useMessage();
const title = ref();
const [registerForm, { resetFields }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 12 },
schemas: versionPublishSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
await resetFields();
setModalProps({ confirmLoading: false });
title.value = data.title;
});
async function handleSubmit() {
closeModal();
createMessage.success('提交成功');
}
</script>
import { BasicColumn } from '@/components/Table';
export const Columns: BasicColumn[] = [
{
title: '资源名称',
dataIndex: 'resourceName',
},
{
title: '资源编目',
dataIndex: 'resourceCataloging',
},
{
title: '权属机构',
dataIndex: 'ownershipBody',
},
{
title: '共享类型',
dataIndex: 'isShare',
slots: { customRender: 'isShare' },
},
{
title: '申请人',
dataIndex: 'applicant',
},
{
title: '申请人所属机构',
dataIndex: 'applicantOrganization',
},
{
title: '权限类型',
dataIndex: 'permissionType',
},
];
<template>
<div class="full-page-container">
<PageWrapper class="page-wrapper">
<div class="headerContainer">
<div>
<Icon icon="mdi:file-chart" :size="40" :color="'#61aaff'" />
</div>
<div>
<div class="title">部门资源</div>
</div>
</div>
<div class="search">
<a-input-search
allow-clear
v-model:value="resourceNameValue"
placeholder="搜索资源名称"
style="width: 200px"
@search="onSearch"
/>
<Select
allow-clear
placeholder="权属机构"
:options="[
{ label: '全部', value: '' },
{ label: '宣传部', value: '宣传部' },
{ label: '信息技术部', value: '信息技术部' },
{ label: '组织人事部', value: '组织人事部' },
]"
v-model:value="ownershipBodyValue"
style="width: 200px"
@change="onSearch"
/>
<Select
allow-clear
placeholder="编目"
:options="[
{ label: '全部', value: '' },
{ label: '党建建设', value: '党建建设' },
{ label: '交通信息', value: '交通信息' },
]"
v-model:value="resourceCatalogingValue"
style="width: 200px"
@change="onSearch"
/>
<a-input-search
allow-clear
v-model:value="applicantValue"
placeholder="申请人"
style="width: 200px"
@search="onSearch"
/>
<Select
allow-clear
placeholder="申请人所属机构"
:options="[
{ label: '全部', value: '' },
{ label: '宣传部', value: '宣传部' },
{ label: '信息技术部', value: '信息技术部' },
{ label: '组织人事部', value: '组织人事部' },
]"
v-model:value="applicantOrganizationValue"
style="width: 200px"
@change="onSearch"
/>
<Select
allow-clear
placeholder="权限类型"
:options="[
{ label: '全部', value: '' },
{ label: '查看', value: '查看' },
{ label: '编辑', value: '编辑' },
{ label: '删除', value: '删除' },
]"
v-model:value="permissionTypeValue"
style="width: 200px"
@change="onSearch"
/>
</div>
<BasicTable @register="registerTable">
<template #isShare="{ text }">
<span v-if="text === 'true'">有条件共享</span>
<span v-else>无条件共享</span>
</template>
</BasicTable>
<Pagination
style="display: flex; justify-content: end"
size="small"
:total="6"
show-size-changer
show-quick-jumper
/>
</PageWrapper>
</div>
</template>
<script lang="ts" setup>
import { BasicTable, useTable } from '@/components/Table';
import { PageWrapper } from '@/components/Page';
import { Columns } from '@/views/mallResourceDevelopment/dataSet/departmentalResources/departmentalResources.data';
import { resourceList } from '@/views/mallResourceDevelopment/dataSet/departmentalResources/mock';
import { ref } from 'vue';
import Icon from '@/components/Icon/Icon.vue';
import { Pagination, Select } from 'ant-design-vue';
const resourceNameValue = ref('');
const ownershipBodyValue = ref('');
const resourceCatalogingValue = ref('');
const applicantValue = ref('');
const applicantOrganizationValue = ref('');
const permissionTypeValue = ref('');
const cardListData = ref([]);
const [registerTable, { reload, getRowSelection }] = useTable({
api: async (params) => {
cardListData.value = resourceList.filter((item) => {
const resourceNameValueMatch = item.resourceName.includes(resourceNameValue.value);
const applicantValueMatch = item.applicant.includes(applicantValue.value);
const ownershipBodyValueMatch =
ownershipBodyValue.value === '' || ownershipBodyValue.value === undefined
? true
: item.ownershipBody.toString().includes(ownershipBodyValue.value);
const resourceCatalogingValueMatch =
resourceCatalogingValue.value === '' || resourceCatalogingValue.value === undefined
? true
: item.resourceCataloging.toString().includes(resourceCatalogingValue.value);
const applicantOrganizationValueMatch =
applicantOrganizationValue.value === '' || applicantOrganizationValue.value === undefined
? true
: item.applicantOrganization.toString().includes(applicantOrganizationValue.value);
const permissionTypeValueMatch =
permissionTypeValue.value === '' || permissionTypeValue.value === undefined
? true
: item.permissionType.toString().includes(permissionTypeValue.value);
return (
resourceNameValueMatch &&
ownershipBodyValueMatch &&
resourceCatalogingValueMatch &&
applicantOrganizationValueMatch &&
permissionTypeValueMatch &&
applicantValueMatch
);
});
const response = {
pageNu: '1',
pageSize: '10',
pages: '1',
total: cardListData.value.length,
code: '',
message: '',
data: [],
};
return { ...response, data: cardListData.value };
},
columns: Columns,
rowSelection: false,
showTableSetting: false,
showIndexColumn: false,
pagination: false,
bordered: true,
canResize: false, //取消自适应 取消滚动条
});
function onSearch() {
cardListData.value = resourceList.filter((item) => {
const resourceNameValueMatch = item.resourceName.includes(resourceNameValue.value);
const applicantValueMatch = item.applicant.includes(applicantValue.value);
const ownershipBodyValueMatch =
ownershipBodyValue.value === '' || ownershipBodyValue.value === undefined
? true
: item.ownershipBody.toString().includes(ownershipBodyValue.value);
const resourceCatalogingValueMatch =
resourceCatalogingValue.value === '' || resourceCatalogingValue.value === undefined
? true
: item.resourceCataloging.toString().includes(resourceCatalogingValue.value);
const applicantOrganizationValueMatch =
applicantOrganizationValue.value === '' || applicantOrganizationValue.value === undefined
? true
: item.applicantOrganization.toString().includes(applicantOrganizationValue.value);
const permissionTypeValueMatch =
permissionTypeValue.value === '' || permissionTypeValue.value === undefined
? true
: item.permissionType.toString().includes(permissionTypeValue.value);
return (
resourceNameValueMatch &&
ownershipBodyValueMatch &&
resourceCatalogingValueMatch &&
applicantOrganizationValueMatch &&
permissionTypeValueMatch &&
applicantValueMatch
);
});
reload();
}
</script>
<style scoped>
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
.full-page-container {
display: flex;
height: 100%;
}
.page-wrapper {
flex: 1;
min-height: 800px;
padding: 20px;
background-color: #ffffff;
}
.search {
display: flex;
align-items: center;
gap: 5px;
}
.headerContainer {
display: flex;
align-items: center;
margin-bottom: 15px;
}
.title {
font-size: 16px;
font-weight: bold;
}
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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