expressgy 1 year ago
parent 2fa5dc27f2
commit 2964d08626
  1. 1
      src/main.jsx
  2. 41
      src/pages/Edit/index.jsx
  3. 64
      src/pages/Home/index.jsx
  4. 10
      src/pages/Home/index.module.scss
  5. 3
      src/scss/style.scss
  6. 11
      vite.config.js

@ -37,3 +37,4 @@ ReactDOM.render(
</ConfigProvider>
, document.getElementById('root'));
// node -v 18.16.0

@ -175,6 +175,7 @@ export default function Edit(){
};
//
function onSelectMenu(val){
if(nowMenuItemId == val.key) return
const menuItemData =val.item.props.data;
if(menuItemData.menuContentList.length == 0){
setNowEditorContent({
@ -366,9 +367,16 @@ export default function Edit(){
api.saveFileUrl(fileData).then(
resd => {
if(resd.data.code == 200){
filePage.pageNum = 1;
api.getFileList(filePage).then(
resd => {
// console.log(resd.data.data.rows)
setFileCloud(resd.data.data.rows)
setFilePage({
pageNum: filePage.pageNum,
pageSize: filePage.pageSize,
total: resd.data.data.total,
})
}
)
}else{
@ -422,10 +430,37 @@ export default function Edit(){
)
e.stopPropagation()
}
//
//
function copyText (text) {
let inputDom = document.createElement('input'); // input
inputDom.setAttribute('readonly', 'readonly'); //
inputDom.value = text; // input
document.body.appendChild(inputDom); // body
inputDom.select(); //input
document.execCommand('Copy'); //
inputDom.style.display = 'none';
inputDom.remove(); // input
}
//
function copyFilePath(url){
navigator.clipboard.writeText(url)
message.success(`复制文件成功成功,可在编辑器内粘贴使用!`);
console.log(url)
const text = url;
try{
let inputDom = document.createElement('input'); // input
inputDom.setAttribute('readonly', 'readonly'); //
inputDom.value = text; // input
document.body.appendChild(inputDom); // body
inputDom.select(); //input
document.execCommand('Copy'); //
inputDom.style.display = 'none';
inputDom.remove(); // input
// navigator.clipboard.writeText(url)
message.success(`复制文件地址成功,可在编辑器内粘贴使用!`);
}catch (e) {
console.log(navigator)
console.log(e)
message.error(`复制文件地址失败,请联系系统管理员!`)
}
}
//

@ -4,6 +4,7 @@ import {useEffect, useState} from "react";
import api from "../../request/api/edit";
import { Modal, Form, Input, Button, message, Menu, Popconfirm, Drawer, Upload } from 'antd'
import {DeleteOutlined, EditOutlined, PlusOutlined} from "@ant-design/icons";
import {render as renderAmis} from 'amis';
export default function Home(){
const navigate = useNavigate()
@ -14,8 +15,9 @@ export default function Home(){
function gotoBackManagement(){
window.location.href = '/'
}
const routeData = useLocation()
console.log(useLocation().pathname)
const [amisJSON, setAmisJSON] = useState(null)
//
const [reflush, setReflush] = useState(true)
@ -30,19 +32,12 @@ export default function Home(){
const [openKeys, setOpenKeys] = useState([]);
// ID
const [nowMenuItemId, setNowMenuItemId] = useState('')
//
const [nowMenuItemContent, setNowMenuItemContent] = useState(null);
//
const [nowEditorContent, setNowEditorContent] = useState({
asideResizor: false,
pullRefresh: {disabled: true},
regions: ['body']
});
useEffect(() => {
api.getMenu().then(
resd => {
if(resd.data.code == 200){
setMenuList(formateMenuToList([...resd.data.data]))
const list = formateMenuToList([...resd.data.data])
setMenuList(list)
setAtomMenuList([...resd.data.data])
}else{
messageApi.open({
@ -59,8 +54,32 @@ export default function Home(){
setMenuTree(list)
}, [atomMenuList])
useEffect(() => {
console.log(menuList[0])
menuList[0] && setNowMenuItemId([menuList[0].id])
console.log(menuList)
console.log(routeData)
const pathname = routeData.pathname
const truePath = routeData.pathname == '/amis' || routeData.pathname == '/amis/'
console.log(truePath)
if(truePath && routeData.hash == ''){
const indexPage = menuList.find(item => item.name=='首页')
if(!indexPage) return;
indexPage && setNowMenuItemId([indexPage.id])
const p = indexPage.menuContentList.find(item => item.type == '0')
indexPage && setAmisJSON(JSON.parse(p.content))
}else if(truePath && routeData.hash != ''){
const pageId = routeData.hash.split('#')[1]
const indexPage = menuList.find(item => item.id == pageId)
setAmisJSON(0)
if(!indexPage) return;
indexPage && setNowMenuItemId([indexPage.id])
if(indexPage.menuContentList.length == 0){
setAmisJSON(0)
return;
}else{
const p = indexPage.menuContentList.find(item => item.type == '0')
indexPage && setAmisJSON(JSON.parse(p.content))
}
}
}, [menuList])
//
@ -101,20 +120,17 @@ export default function Home(){
};
//
function onSelectMenu(val){
if(nowMenuItemId == val.key) return
navigate('/amis#' + val.key)
const menuItemData =val.item.props.data;
console.log(menuItemData)
if(menuItemData.menuContentList.length == 0){
setNowEditorContent({
asideResizor: false,
pullRefresh: {disabled: true},
regions: ['body']
})
setAmisJSON(0)
}else{
const nowEditData = menuItemData.menuContentList.find(item => item.type == '0')
const data = JSON.parse(nowEditData.content)
setNowEditorContent(data)
const p = menuItemData.menuContentList.find(item => item.type == '0')
menuItemData && setAmisJSON(JSON.parse(p.content))
}
setNowMenuItemId(val.key)
setNowMenuItemContent(val.item.props.data)
};
return <div className={css.main}>
@ -143,10 +159,8 @@ export default function Home(){
</div>
</header>
<div className={css.body}>
{ useLocation().pathname != '/amis' && <Outlet></Outlet>}
{ useLocation().pathname == '/amis' && <div>
哈哈哈
</div>}
{ useLocation().pathname != '/amis' && useLocation().pathname != '/amis/' && <Outlet></Outlet>}
{ useLocation().pathname == '/amis' || useLocation().pathname == '/amis/' && (amisJSON ? renderAmis(amisJSON) : amisJSON == 0 ? <div className={css.center}>未找到该页面</div> : <div>加载中</div>)}
</div>
{contextHolder}
</div>

@ -85,3 +85,13 @@
overflow: hidden;
}
}
.center{
position: relative;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
width: 100%;
font-size: 14px;
color: #555;
}

@ -259,3 +259,6 @@ html,body,#root{
overflow-y: auto;
}
}
.cxd-Page-body{
padding:0 ;
}

@ -7,6 +7,17 @@ import {
// https://vitejs.dev/config/
export default defineConfig({
build: {
rollupOptions: {
output: {
// 在这里修改静态资源路径
chunkFileNames: 'amisStatic/assets/js/[name]-[hash].js',
entryFileNames: 'amisStatic/assets/js/[name]-[hash].js',
assetFileNames: 'amisStatic/assets/[ext]/[name]-[hash].[ext]',
}
}
},
minify: true,
plugins: [react()],
resolve: {
alias: {

Loading…
Cancel
Save