Commit 18fffc56 authored by 张伯涛's avatar 张伯涛

logo替换

parent 478a852d
# spa-title # spa-title
VITE_GLOB_APP_TITLE = 智能快速开发平台 VITE_GLOB_APP_TITLE = 数据要素平台
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
/> />
<title><%= VITE_GLOB_APP_TITLE %></title> <title><%= VITE_GLOB_APP_TITLE %></title>
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/browserLogo.svg" />
</head> </head>
<body> <body>
<div id="app"> <div id="app">
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
</style> </style>
<div class="app-loading"> <div class="app-loading">
<div class="app-loading-wrap"> <div class="app-loading-wrap">
<img src="/logo.png" class="app-loading-logo" alt="Logo" /> <img src="/browserLogo.svg" class="app-loading-logo" alt="Logo" />
<div class="app-loading-dots"> <div class="app-loading-dots">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span> <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div> </div>
......
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6056_2)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45605 6.00347L8.00005 4.00354H5.63133L4.45605 6.00347Z" fill="#DAE9FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00005 4.00354L4.45605 6.00347L8.01163 8.00403L11.5472 6.0157L8.00005 4.00354Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.63037 4.00366H7.99909H10.3612L7.99783 0.000976562L5.63037 4.00366Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5476 6.0157L10.3626 4.00354H8.00049L11.5476 6.0157Z" fill="#DAE9FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45579 6.00347L5.63107 4.00354H0.899902L4.45579 6.00347Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.01127 8.0041L4.45569 6.00354L4.45068 10.0037H4.45569L8.00344 12.0036L8.01127 8.0041Z" fill="#F0ECED"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5509 6.01245V6.01966L11.5469 6.0159V10.0038L12.7297 7.99952L11.5509 6.01245Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5519 6.0214V6.01245L11.5469 6.01673L11.5519 6.0214Z" fill="#D35974"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5473 6.0157L11.5514 6.01225L15.0994 4.00354H10.3623L11.5473 6.0157Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5508 6.01225L12.7295 7.99932L15.0988 4.00354L11.5508 6.01225Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0983 4.00354L12.729 7.99932L15.0983 12.0036V4.00354Z" fill="#023E9E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3619 4.00362H15.099L7.99853 0L0.899902 4.00362H5.63107L7.99853 0.000940701L10.3619 4.00362Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5478 6.01587L8.01222 8.0042L8.00439 12.0037L11.5478 10.0038V6.01587Z" fill="#DCD6D8"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.26392 7.99932L0.899902 4.00354V12.0036L3.26392 7.99932Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.899902 4.00354L3.26392 7.99932L4.45579 6.00347L0.899902 4.00354Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5473 10.0036L10.3623 12.0035H15.0994L12.7301 7.99927L11.5473 10.0036Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3628 12.0037L11.5478 10.0038L8.00439 12.0037H10.3628Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0995 12.0039H10.3624L8.00403 15.9909L7.99902 15.9997L8.00403 15.9947L15.0995 12.0039Z" fill="#023E9E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45569 10.0038H4.45068L5.63097 12.0037H8.00344L4.45569 10.0038Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.63107 12.0035L4.45078 10.0036L3.26392 7.99927L0.899902 12.0035H5.63107Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00284 12.0039H5.63037L7.99408 15.9947L8.00284 15.9909V12.0039Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99512 15.9948L7.99923 16.0003L8.00471 15.9907L7.99512 15.9948Z" fill="#F8CAD3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99853 15.9997L7.99477 15.9947L5.63107 12.0039H0.899902L7.99853 15.9997Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3628 12.0039H8.00439V15.9909L10.3628 12.0039Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45652 6.00354L3.26465 7.99939L4.45151 10.0037L4.45652 6.00354Z" fill="#ACCDFF"/>
</g>
<defs>
<clipPath id="clip0_6056_2">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6056_2)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45605 6.00347L8.00005 4.00354H5.63133L4.45605 6.00347Z" fill="#DAE9FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00005 4.00354L4.45605 6.00347L8.01163 8.00403L11.5472 6.0157L8.00005 4.00354Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.63037 4.00366H7.99909H10.3612L7.99783 0.000976562L5.63037 4.00366Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5476 6.0157L10.3626 4.00354H8.00049L11.5476 6.0157Z" fill="#DAE9FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45579 6.00347L5.63107 4.00354H0.899902L4.45579 6.00347Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.01127 8.0041L4.45569 6.00354L4.45068 10.0037H4.45569L8.00344 12.0036L8.01127 8.0041Z" fill="#F0ECED"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5509 6.01245V6.01966L11.5469 6.0159V10.0038L12.7297 7.99952L11.5509 6.01245Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5519 6.0214V6.01245L11.5469 6.01673L11.5519 6.0214Z" fill="#D35974"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5473 6.0157L11.5514 6.01225L15.0994 4.00354H10.3623L11.5473 6.0157Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5508 6.01225L12.7295 7.99932L15.0988 4.00354L11.5508 6.01225Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0983 4.00354L12.729 7.99932L15.0983 12.0036V4.00354Z" fill="#023E9E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3619 4.00362H15.099L7.99853 0L0.899902 4.00362H5.63107L7.99853 0.000940701L10.3619 4.00362Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5478 6.01587L8.01222 8.0042L8.00439 12.0037L11.5478 10.0038V6.01587Z" fill="#DCD6D8"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.26392 7.99932L0.899902 4.00354V12.0036L3.26392 7.99932Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.899902 4.00354L3.26392 7.99932L4.45579 6.00347L0.899902 4.00354Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5473 10.0036L10.3623 12.0035H15.0994L12.7301 7.99927L11.5473 10.0036Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3628 12.0037L11.5478 10.0038L8.00439 12.0037H10.3628Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0995 12.0039H10.3624L8.00403 15.9909L7.99902 15.9997L8.00403 15.9947L15.0995 12.0039Z" fill="#023E9E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45569 10.0038H4.45068L5.63097 12.0037H8.00344L4.45569 10.0038Z" fill="#ACCDFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.63107 12.0035L4.45078 10.0036L3.26392 7.99927L0.899902 12.0035H5.63107Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00284 12.0039H5.63037L7.99408 15.9947L8.00284 15.9909V12.0039Z" fill="#1C79FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99512 15.9948L7.99923 16.0003L8.00471 15.9907L7.99512 15.9948Z" fill="#F8CAD3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99853 15.9997L7.99477 15.9947L5.63107 12.0039H0.899902L7.99853 15.9997Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3628 12.0039H8.00439V15.9909L10.3628 12.0039Z" fill="#2B47BD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.45652 6.00354L3.26465 7.99939L4.45151 10.0037L4.45652 6.00354Z" fill="#ACCDFF"/>
</g>
<defs>
<clipPath id="clip0_6056_2">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>
This diff is collapsed.
This diff is collapsed.
...@@ -4,10 +4,11 @@ ...@@ -4,10 +4,11 @@
--> -->
<template> <template>
<div class="anticon" :class="getAppLogoClass" @click="goHome"> <div class="anticon" :class="getAppLogoClass" @click="goHome">
<img src="../../../assets/images/logo.png" /> <img style="width: 100%;height: 100%" src="../../../assets/svg/ce-long-logo-white-zh-cn.svg" />
<div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle"> <!-- <img src="../../../assets/images/logo.png" />-->
{{ title }} <!-- <div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">-->
</div> <!-- {{ title }}-->
<!-- </div>-->
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
...@@ -61,7 +62,7 @@ ...@@ -61,7 +62,7 @@
@prefix-cls: ~'@{namespace}-app-logo'; @prefix-cls: ~'@{namespace}-app-logo';
.@{prefix-cls} { .@{prefix-cls} {
display: flex; //display: flex;
align-items: center; align-items: center;
padding-left: 7px; padding-left: 7px;
transition: all 0.2s ease; transition: all 0.2s ease;
......
<template>
<div class="m-4 mr-0 overflow-hidden bg-white">
<BasicTree
title="主体"
ref="treeRef"
toolbar
search
treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
:clickRowToExpand="false"
:defaultExpandAll="true"
:treeData="treeData"
:fieldNames="{ key: 'value', title: 'label' }"
@select="handleSelect"
:beforeRightClick="getRightMenuList"
:actionList="actionList"
/>
</div>
</template>
<script lang="ts" setup>
import {h, nextTick, onMounted, ref, unref} from 'vue';
import {BasicTree, ContextMenuItem, TreeActionType, TreeItem} from '@/components/Tree';
import { getDeptList } from '@/api/system/dept/dept';
import {Nullable} from "@vben/types";
import {treeDataList} from "./mock";
import {EllipsisOutlined, FolderOutlined} from "@ant-design/icons-vue";
import {EventDataNode} from "ant-design-vue/es/vc-tree/interface";
import {router} from "@/router";
defineOptions({ name: 'DeptTree' });
const emit = defineEmits(['select','Classification','manage']);
// 树的操作列表
const actionList = [
{
//全部操作按钮
render: (node) => {
return h(EllipsisOutlined, {
class: 'ml-2',
onClick: () => {
getRightMenuList(node)
},
});
},
},
];
function getRightMenuList(node: EventDataNode): Promise<ContextMenuItem[]> {
const menu = [
{
label: '查看详情',
handler: () => {
handleDetail(node)
},
icon: 'ant-design:eye-outlined',
},
{
label: '编辑',
handler: () => {
handleEdit(node)
},
icon: 'ant-design:edit-outlined',
},
{
label: '标准分类信息',
handler: () => {
classificationInfo(node)
},
icon: 'ant-design:snippets-outlined',
},
{
label: '新建文档分类',
handler: () => {
handleAddDocumentClassification(node)
},
icon: 'bi:plus',
},
{
label: '新建文档管理',
handler: () => {
handleAddDocumentManage(node)
},
icon: 'bi:plus',
},
{
label: '复制到',
handler: () => {
handleCopy(node)
},
icon: 'ant-design:snippets-twotone',
},
{
label: '删除',
handler: () => {
handleDelete(node)
},
icon: 'ant-design:rest-outlined',
},
];
return new Promise((resolve) => {
resolve(menu);
});
}
function handleDetail(data) {
router.push({
path: '/dataStandards/referenceDocument/details',
});
}
function handleEdit(data) {
router.push({
path: '/dataStandards/referenceDocument/edit',
});
}
function classificationInfo(data) {
}
function handleAddDocumentClassification(data) {
emit('Classification', { });
}
function handleAddDocumentManage(data) {
emit('manage', { });
}
function handleCopy(data) {
}
function handleDelete(data) {
}
const treeData = ref<TreeItem[]>([]);
const treeRef = ref<Nullable<TreeActionType>>(null);
async function fetch() {
treeData.value = treeDataList
await nextTick(() => {
getTree().expandAll(true)
})
}
function getTree() {
const tree = unref(treeRef);
if (!tree) {
throw new Error('tree is null!');
}
return tree;
}
function handleSelect(keys) {
emit('select', keys[0]);
}
onMounted(() => {
fetch();
});
</script>
<template>
<div style="background-color: white;padding: 20px">
<div style="display:flex;margin-top: 15px;margin-bottom: 15px;justify-content: space-between; align-items: center;" v-if="isShow">
<div style="margin-left: 15px;font-size: 15px;font-weight: bold">
查看版本
<Select
v-model:value="optionValue"
show-search
placeholder="请选择版本"
style="width: 200px"
:options="options"
@change="handleChange"
></Select>
</div>
<div>
<a-button type="primary" @click="contrastButton">版本对比</a-button>
<a-button type="primary" style="margin-left: 10px" @click="resetButton">回滚</a-button>
<a-button type="primary" style="margin-left: 10px" @click="exitButton">退出查看</a-button>
</div>
</div>
<Divider />
<div style="display: flex;justify-content: space-between; align-items: center;margin-bottom: 10px">
<div style="margin-top: 10px;display: flex;margin-left: 10px;align-items: center">
<div>
<Icon icon="ant-design:file-done-outlined" :size="30" :color="'#42C465'" />
</div>
<div>
<div style="font-weight: bold;font-size: 25px;">标准文件A</div>
<div>引用文档管理/admin-个人工作区/国家标准/标准文件A</div>
</div>
</div>
<div style="margin-top: 10px;display: flex" v-if="!isShow">
<a-button type="primary" @click="editButton">编辑标准</a-button>
<a-button type="primary" style="margin-left: 10px" @click="versionButton">版本管理</a-button>
</div>
</div>
<Divider />
<div style="margin-top: 10px;display: flex;font-weight: bold;font-size: 25px;margin-left: 10px;padding-bottom: 20px">
<div>
<Icon icon="ant-design:file-done-outlined" :size="25" :color="'#42C465'" />
</div>
<div>标准文件A</div>
<div style="font-size: 15px;padding-top: 15px;padding-left: 10px">
版本:{{optionValue}}
</div>
</div>
<BasicForm @register="registerForm1" />
<Divider />
<div style="display: flex;align-items: center;justify-content: space-between;padding-bottom: 20px">
<div>引用文档</div>
<a-button type="primary" @click="handleImport">导入文档</a-button>
</div>
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'ant-design:download-outlined',
label: '下载',
},
{
icon: 'ant-design:delete-outlined',
color: 'error',
label: '删除',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleDelete.bind(null, record),
},
},
]"
/>
</template>
</template>
</BasicTable>
<ImportModal @register="registerImport"/>
<!-- 版本管理 弹窗-->
<VersionModal @register="registerModal" @success="handleSuccess" />
</div>
</template>
<script lang="ts" setup>
import { Select } from 'ant-design-vue';
import Icon from '@/components/Icon/Icon.vue';
import { Description } from '@/components/Description';
import { PageWrapper } from '@/components/Page';
import { Divider } from 'ant-design-vue';
import {router} from "@/router";
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { BasicForm, useForm } from '@/components/Form';
import {detailSchema1,} from './referenceDocument.data.ts';
import {tableListTwo} from "./mock";
import {onMounted, ref} from "vue";
import {useRoute} from "vue-router";
import VersionModal from './VersionModal.vue'
import {useModal} from "@/components/Modal";
import { useMessage } from '@/hooks/web/useMessage';
import { columnsTwo } from './referenceDocument.data';
import ImportModal from "./importModal.vue";
const route = useRoute()
const title = ref('')
const formData = ref({})
const businessId = ref('')
const isShow = ref(false)
const optionValue = ref('v1')
const [registerModal, { openModal }] = useModal();
const [registerImport, { openModal:openModalImport }] = useModal();
const { createMessage, createConfirm } = useMessage();
const [registerForm1, { setFieldsValue: setFieldsValue1 }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: detailSchema1,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const [registerTable, { reload, updateTableDataRecord, getSearchInfo, getForm,getRowSelection }] = useTable({
api: async (params) => {
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: tableListTwo.length,
code:'',
message:'',
data: tableListTwo,
};
return { ...response};
},
columns: columnsTwo,
useSearchForm: false,
showTableSetting: false,
bordered: true,
actionColumn: {
width: 120,
title: '操作',
dataIndex: 'action',
// slots: { customRender: 'action' },
},
});
const options = ref<any>([
{ value: 'V1', label: 'V1' },
{ value: 'V2', label: 'V2' },
{ value: 'V3', label: 'V3' },
]);
/**编辑标准*/
function editButton(record) {
router.push({
path: '/dataStandards/referenceDocument/edit',
});
}
function handleImport() {
openModalImport(true,{
});
}
function handleDelete() {}
/**版本管理 弹窗*/
function versionButton(record) {
openModal(true, {
});
}
/**下拉框改变事件*/
function handleChange(value) {
}
/**回滚*/
function resetButton(value) {
createMessage.success('回滚成功!')
}
/**基本标准对比*/
function contrastButton(record) {
router.push({
path: '/dataStandards/basicStandards/basicStandardsContrast',
query: {
businessId:201,
},
});
}
/**退出查看*/
function exitButton(record) {
isShow.value = false
optionValue.value = 'V3'
}
/**版本管理 弹出回调函数*/
function handleSuccess(record) {
optionValue.value = record.values.versionName
isShow.value = true
}
/**初始化*/
onMounted(() => {
setFieldsValue1({
})
});
</script>
<style lang="less" scoped>
.desc-wrap {
padding: 16px;
background-color: @component-background;
}
</style>
<template>
<div style="background-color: white;padding: 20px">
<div style="display: flex;justify-content: space-between; align-items: center;margin-bottom: 10px;margin-left: 12px">
<div style="margin-top: 10px;display: flex;margin-left: 10px;align-items: center">
<div>
<Icon icon="ant-design:file-done-outlined" :size="30" :color="'#42C465'" />
</div>
<div>
<div style="font-weight: bold;font-size: 25px;">标准文件A</div>
<div>引用文档管理/admin-个人工作区/国家标准/标准文件A</div>
</div>
</div>
<div style="margin-top: 10px;display: flex" v-if="!isShow">
<a-button type="primary" @click="editButton">保存修改</a-button>
<a-button type="primary" style="margin-left: 10px" @click="editButton">退出编辑</a-button>
</div>
</div>
<Divider />
<div style="margin-top: 10px;display: flex;font-weight: bold;font-size: 25px;margin-left: 10px;padding-bottom: 20px">
<div>
<Icon icon="ant-design:file-done-outlined" :size="25" :color="'#42C465'" />
</div>
<div>标准文件A</div>
<div style="font-size: 15px;padding-top: 15px;padding-left: 10px">
版本:{{optionValue}}
</div>
</div>
<BasicForm @register="registerForm1" />
<Divider />
<div style="display: flex;align-items: center;justify-content: space-between;padding-bottom: 20px">
<div>引用文档</div>
<a-button type="primary">导入文档</a-button>
</div>
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'ant-design:download-outlined',
label: '下载',
},
{
icon: 'ant-design:delete-outlined',
color: 'error',
label: '删除',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleDelete.bind(null, record),
},
},
]"
/>
</template>
</template>
</BasicTable>
<!-- 版本管理 弹窗-->
<VersionModal @register="registerModal" @success="handleSuccess" />
</div>
</template>
<script lang="ts" setup>
import { Select } from 'ant-design-vue';
import Icon from '@/components/Icon/Icon.vue';
import { Description } from '@/components/Description';
import { PageWrapper } from '@/components/Page';
import { Divider } from 'ant-design-vue';
import {router} from "@/router";
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { BasicForm, useForm } from '@/components/Form';
import {detailSchema2,} from './referenceDocument.data.ts';
import {tableListTwo} from "./mock";
import {onMounted, ref} from "vue";
import {useRoute} from "vue-router";
import VersionModal from './VersionModal.vue'
import {useModal} from "@/components/Modal";
import { useMessage } from '@/hooks/web/useMessage';
import { columnsTwo } from './referenceDocument.data';
const route = useRoute()
const title = ref('')
const formData = ref({})
const businessId = ref('')
const isShow = ref(false)
const optionValue = ref('v1')
const [registerModal, { openModal }] = useModal();
const { createMessage, createConfirm } = useMessage();
const [registerForm1, { setFieldsValue: setFieldsValue1 }] = useForm({
labelWidth: 100,
baseColProps: { lg: 12, md: 24 },
schemas: detailSchema2,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const [registerTable, { reload, updateTableDataRecord, getSearchInfo, getForm,getRowSelection }] = useTable({
api: async (params) => {
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: tableListTwo.length,
code:'',
message:'',
data: tableListTwo,
};
return { ...response};
},
columns: columnsTwo,
useSearchForm: false,
showTableSetting: false,
bordered: true,
actionColumn: {
width: 120,
title: '操作',
dataIndex: 'action',
// slots: { customRender: 'action' },
},
});
const options = ref<any>([
{ value: 'V1', label: 'V1' },
{ value: 'V2', label: 'V2' },
{ value: 'V3', label: 'V3' },
]);
/**编辑标准*/
function editButton(record) {
router.push({
path: '/dataStandards/referenceDocument/details',
});
}
function handleDelete() {}
/**版本管理 弹窗*/
function versionButton(record) {
openModal(true, {
});
}
/**下拉框改变事件*/
function handleChange(value) {
}
/**回滚*/
function resetButton(value) {
createMessage.success('回滚成功!')
}
/**退出查看*/
function exitButton(record) {
isShow.value = false
optionValue.value = 'V3'
}
/**版本管理 弹出回调函数*/
function handleSuccess(record) {
optionValue.value = record.values.versionName
isShow.value = true
}
/**初始化*/
onMounted(() => {
setFieldsValue1({
})
});
</script>
<style lang="less" scoped>
.desc-wrap {
padding: 16px;
background-color: @component-background;
}
</style>
<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, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { formSchemaImport } from './referenceDocument.data';
import {treeDataListPath} from './mock'
import { useMessage } from '@/hooks/web/useMessage';
import {getMenuList} from "@/api/system/menu/menu";
defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const isUpdate = ref(true);
const rowId = ref('');
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 24, md: 24 },
schemas: formSchemaImport,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
console.log('1111111111111111111111111111111')
resetFields();
setModalProps({ confirmLoading: false });
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
}
updateSchema({
field: 'path',
componentProps: { treeData:treeDataListPath },
});
});
const getTitle = computed(() => ('导入文件选择'));
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>
<template> <template>
<div> <PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
命名字典 <DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" @Classification="handleAddDocumentClassification" @manage="handleAddManage" />
</div> <BasicTable @register="registerTable" class="w-3/4 xl:w-4/5" :searchInfo="searchInfo">
<template #toolbar>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" >复制到</a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" @click="handleDeleteIds" >删除</a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" >移动</a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" >导出</a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" type="primary" >批量发布</a-button>
<a-button type="primary" @click="handleAddDocumentClassification" >新增文档分类</a-button>
<a-button :disabled="getRowSelection().selectedRowKeys <=0" @click="handleAddManage" type="primary" >新增文档管理</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '移动',
},
{
label: '删除',
},
{
label: '复制',
},
{
label: '查看详情',
onClick: handleView.bind(null, record),
},
{
// icon: 'ant-design:api-outlined',
label: '关联关系',
onClick: relatedRelationshipsButton.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
<ReferenceDocumentModal @register="registerModal" @success="handleSuccess"/>
<manage-modal @register="registerModalManage" @success="handleSuccess"/>
</PageWrapper>
</template> </template>
<script lang="ts" setup>
import { reactive,unref,onDeactivated,onMounted } from 'vue';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import ReferenceDocumentModal from "./referenceDocumentModal.vue";
import { PageWrapper } from '@/components/Page';
import DeptTree from './DeptTree.vue';
import { useMessage } from '@/hooks/web/useMessage';
import { useModal } from '@/components/Modal';
import {tableList} from "./mock";
import { columns, searchFormSchema } from './referenceDocument.data';
import { useGo } from '@/hooks/web/usePage';
import { downloadByData } from '@/utils/file/download';
import { useRoute,onBeforeRouteLeave } from 'vue-router';
import { useFilterStore } from '@/store/modules/filterData';
import {useUserStore} from "@/store/modules/user";
import {router} from "@/router";
import ManageModal from "./manageModal.vue";
defineOptions({ name: 'AccountManagement' });
const { createMessage,createConfirm } = useMessage();
const filterStore = useFilterStore();
const route = useRoute();
const go = useGo();
const [registerModal, { openModal }] = useModal();
const [registerModalManage, { openModal:openModalManage }] = useModal();
const searchInfo = reactive<Recordable>({});
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({
title: '引用文档管理列表',
api: async (params) => {
console.log('tableList',tableList)
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: tableList.length,
code:'',
message:'',
data: tableList,
};
<script> return { ...response};
export default { },
name: "index" rowKey: 'businessId',
rowSelection: true,
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
autoSubmitOnEnter: true,
resetFunc: () => {
searchInfo.deptId=''
},
},
useSearchForm: true,
showTableSetting: false,
bordered: true,
handleSearchInfoFn(info) {
console.log('handleSearchInfoFn', info);
return info;
},
actionColumn: {
width: 200,
title: '操作',
dataIndex: 'action',
// slots: { customRender: 'action' },
},
});
/** 新建文档分类*/
function handleAddDocumentClassification() {
openModal(true, {
isUpdate: false,
});
}
/** 新建文档管理*/
function handleAddManage() {
openModalManage(true, {
isUpdate: false,
});
}
function handleDeleteIds() {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '确认批量删除选中数据吗?',
onOk() {
createMessage.success('批量删除成功!');
},
});
}
/** 重置密码弹窗确定按钮*/
/** 删除按钮*/
function handleDelete(record: Recordable) {
createMessage.success('删除成功!');
reload();
}
/** 导出按钮*/
async function handleExport() {
}
function handleView(record: Recordable) {
router.push({
path: '/dataStandards/referenceDocument/details',
});
}
/**关联关系*/
function relatedRelationshipsButton(record: Recordable) {
router.push({
path: '/dataStandards/basicStandards/relatedRelationships',
query: {
businessId:201,
},
});
}
/** 导入成功*/
function handleImportSuccess() {
reload();
}
/** 新增/编辑成功*/
function handleSuccess({ isUpdate, values }) {
if (isUpdate) {
// 演示不刷新表格直接更新内部数据。
// 注意:updateTableDataRecord要求表格的rowKey属性为string并且存在于每一行的record的keys中
const result = updateTableDataRecord(values.id, values);
console.log(result);
reload();
} else {
reload();
}
}
/** 部门树的select*/
function handleSelect(deptId = '') {
searchInfo.deptId = deptId;
reload();
} }
</script>
<style scoped> onMounted(() => {
</style> });
</script>
<template>
<BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicForm @register="registerForm" />
<div class="modalRow">
<div>可见范围</div>
<div class="right">
<div class="clearAll">
清空
</div>
<div>
<a-button type="primary">添加工作组</a-button>
</div>
</div>
</div>
<div class="addDialogBG">
<TreeTwo class="w-1/4 xl:w-1/5" @select="handleSelect" />
</div>
</BasicModal>
</template>
<script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import Icon from '@/components/Icon/Icon.vue';
import { BasicForm, useForm } from '@/components/Form';
import { formSchemaManage } from './referenceDocument.data';
import TreeTwo from './treeTwo.vue'
import { useMessage } from '@/hooks/web/useMessage';
import {treeDataList,options} from "./mock";
defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const isUpdate = ref(true);
const rowId = ref('');
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 24, md: 24 },
schemas: formSchemaManage,
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,
});
}
updateSchema([
{
field: 'path',
componentProps: { options:treeDataList },
},
{
field: 'modal',
componentProps: { options:options },
},
]
);
});
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>
export const tableList: any[] = [
{
businessId: 1,
name: '目录示例',
num: '111',
flag: '已发布',
group: '默认工作组',
},
{
businessId: 2,
name: '目录示例',
num: '222',
flag: '已发布',
group: '默认工作组',
},
{
businessId: 3,
name: '目录示例',
num: '333',
flag: '已发布',
group: '默认工作组',
},
{
businessId: 4,
name: '目录示例',
num: '444',
flag: '已发布',
group: '默认工作组',
},
{
businessId: 5,
name: '目录示例',
num: '555',
flag: '已发布',
group: '默认工作组',
},
]
export const treeDataList = [
{
label: '引用文档管理',
value: 1,
icon: 'home|svg',
children: [
{ label: '共享工作区', value: 2 },
{ label: '商城工作区', value: 3 },
{ label: '数据中台工作区02', value: 4 },
{ label: '数据中台工作区03', value: 5 },
],
},
]
export const treeDataListPath = [
{
label: '主体管理',
businessId: 1,
children: [
{ label: 'admin_个人工作区', businessId: 2 },
{ label: '共享工作区', businessId: 3 },
{ label: '商城工作区', businessId: 4 },
{ label: '指标工作区', businessId: 5 },
],
},
]
export const treeDataListTwo = [
{
label: '默认工作组',
businessId: 1,
children: [
{ label: '默认工作组01', businessId: 2 },
{ label: '默认工作组02', businessId: 3 },
{ label: '默认工作组03', businessId: 4 },
{ label: '默认工作组04', businessId: 5 },
],
},
]
export const options = [
{
value: '标准数据',
label: '标准数据',
children: [
{
value: '引用文档元模型',
label: '引用文档元模型',
children: [
],
},
],
},
];
export const tableListTwo: any[] = [
{
businessId: 1,
name: '某领域办公办文格式撰写标准',
type: 'DOCX',
},
]
<template>
<BasicModal width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicForm @register="registerForm" />
<div class="modalRow">
<div>可见范围</div>
<div class="right">
<div class="clearAll">
清空
</div>
<div>
<a-button type="primary">添加工作组</a-button>
</div>
</div>
</div>
<div class="addDialogBG">
<TreeTwo class="w-1/4 xl:w-1/5" @select="handleSelect" />
</div>
</BasicModal>
</template>
<script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import Icon from '@/components/Icon/Icon.vue';
import { BasicForm, useForm } from '@/components/Form';
import { formSchema } from './referenceDocument.data';
import TreeTwo from './treeTwo.vue'
import { useMessage } from '@/hooks/web/useMessage';
import {treeDataList,options} from "./mock";
defineOptions({ name: 'AccountModal' });
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const isUpdate = ref(true);
const rowId = ref('');
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
labelWidth: 100,
baseColProps: { lg: 24, md: 24 },
schemas: formSchema,
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,
});
}
updateSchema([
{
field: 'path',
componentProps: { options:treeDataList },
},
{
field: 'modal',
componentProps: { options:options },
},
]
);
});
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>
<div class="m-4 mr-0 overflow-hidden bg-white">
<BasicTree
title="工作组"
ref="treeRef"
toolbar
search
treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
:clickRowToExpand="true"
:checkable="true"
:defaultExpandAll="true"
:treeData="treeData"
:fieldNames="{ key: 'businessId', title: 'label' }"
@select="handleSelect"
/>
</div>
</template>
<script lang="ts" setup>
import {nextTick, onMounted, ref, unref} from 'vue';
import {BasicTree, TreeActionType, TreeItem} from '@/components/Tree';
import { getDeptList } from '@/api/system/dept/dept';
import {Nullable} from "@vben/types";
import {treeDataListTwo} from "./mock";
defineOptions({ name: 'DeptTree' });
const emit = defineEmits(['select']);
const treeData = ref<TreeItem[]>([]);
const treeRef = ref<Nullable<TreeActionType>>(null);
async function fetch() {
treeData.value = treeDataListTwo
await nextTick(() => {
getTree().expandAll(true)
})
}
function getTree() {
const tree = unref(treeRef);
if (!tree) {
throw new Error('tree is null!');
}
return tree;
}
function handleSelect(keys) {
emit('select', keys[0]);
}
onMounted(() => {
fetch();
});
</script>
<style lang="scss" scoped>
.bg-white{
width: 97%;
}
::v-deep(.vben-tree){
background-color: #E8ECF7!important;
}
</style>
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<div class="content_right"> <div class="content_right">
<div class="content_rightBody"> <div class="content_rightBody">
<div class="top"> <div class="top">
<!-- <AppDarkModeToggle class="enter-x mr-2" v-if="!sessionTimeout" />-->
<AppLocalePicker <AppLocalePicker
class="text-white enter-x xl:text-gray-600" class="text-white enter-x xl:text-gray-600"
:show-text="false" :show-text="false"
...@@ -12,21 +13,21 @@ ...@@ -12,21 +13,21 @@
</div> </div>
<div class="form_body"> <div class="form_body">
<div class="formImg"> <div class="formImg">
<img src="../../../assets/svg/long-logo-blue-zh-cn.svg" class="login_logo" alt="Logo" /> <img src="../../../assets/svg/newLong-logo-blue-zh-cn.svg" class="login_logo" alt="Logo" />
</div> </div>
<div class="titleRow"> <div class="titleRow">
<div class="title">登录</div> <div class="title">登录</div>
<div class="welcom">欢迎登录 Transwarp Data Hub</div> <div class="welcom">欢迎登录 数据要素平台</div>
</div> </div>
<LoginForm /> <LoginForm />
</div> </div>
<div class="footer"> <div class="footer">
<div class="btnRow"> <!-- <div class="btnRow">-->
<a-button type="text" @click="agreementBtn">用户协议</a-button> <!-- <a-button type="text" @click="agreementBtn">用户协议</a-button>-->
<a-button type="text" @click="aboutUsBtn">关于我们</a-button> <!-- <a-button type="text" @click="aboutUsBtn">关于我们</a-button>-->
<a-button type="text" @click="serviceBtn">售后服务</a-button> <!-- <a-button type="text" @click="serviceBtn">售后服务</a-button>-->
</div> <!-- </div>-->
<div class="info">© 2013-2024 TRANSWARP. All Rights Reserved.</div> <div class="info">© 2023-2024 91isoft. All Rights Reserved.</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -83,7 +84,7 @@ function serviceBtn() { ...@@ -83,7 +84,7 @@ function serviceBtn() {
height: 100%; height: 100%;
width: 100%; width: 100%;
background-image: url('@/assets/images/login-bg.jpg'); background-image: url('@/assets/images/newLogin-bg.jpg');
.content_left{ .content_left{
flex: 1 1 auto; flex: 1 1 auto;
} }
......
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