From 22bf58ea86f94ef68bf9bccd75cdbf241bf1c8a1 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Thu, 18 Jul 2024 17:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=B4=E5=83=8F=E4=B8=8B=E6=8B=89=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=88=91=E7=9A=84=E5=B7=A5=E4=BD=9C=E5=8F=B0=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- package-lock.json | 7 ++- package.json | 91 +++++++++++++++++++------------- src/forge/Head/Header.js | 51 +++++++++++++----- src/forge/Head/header.scss | 30 +++++++++++ src/modules/login/LoginDialog.js | 2 +- src/modules/tpm/TPMIndex.css | 1 + src/modules/tpm/TPMIndexHOC.js | 11 ---- 8 files changed, 129 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index c47c068e8..5b9d94658 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

前端react环境安装:

-

1、 安装node v8.12.0;此安装包含了node和npm。

+

1、 安装node v14.12.3;此安装包含了node和npm。

2、 安装cnpm(命令行): npm install -g cnpm --registry=https://registry.npm.taobao.org

3、 安装依赖的js库(public/react目录下<即项目package.json所在目录>,开启命令行): cnpm install

4、 如果你的ruby服务使用的是3000端口,则需要在package.json中修改"port"参数的值

diff --git a/package-lock.json b/package-lock.json index 768d0d4a6..d7438f468 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19733,13 +19733,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "dev": true, + "optional": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -19755,7 +19757,8 @@ "version": "3.0.0", "resolved": "http://173.15.15.82:8081/repository/npm-all/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "optional": true }, "readdirp": { "version": "3.6.0", diff --git a/package.json b/package.json index 6f96decbb..f0c3872de 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,23 @@ "version": "3.1.0", "private": true, "dependencies": { + "@babel/core": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.23.3", + "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-function-sent": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.0.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-throw-expressions": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "@babel/preset-react": "^7.23.3", + "@babel/preset-stage-2": "^7.8.3", + "@babel/runtime-corejs3": "^7.23.6", "@monaco-editor/react": "^2.3.0", "@novnc/novnc": "^1.1.0", "@wangeditor/editor": "^5.1.23", @@ -13,6 +30,10 @@ "array-flatten": "^2.1.2", "autoprefixer": "7.1.6", "axios": "^0.24.0", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^23.4.2", + "babel-plugin-antd": "^0.5.1", + "babel-plugin-dynamic-import-webpack": "^1.1.0", "bizcharts": "^3.5.8", "bundle-loader": "^0.5.6", "chalk": "1.1.3", @@ -20,22 +41,29 @@ "clipboard": "^2.0.8", "code-prettify": "^0.1.0", "codemirror": "^5.64.0", + "connect-timeout": "^1.9.0", "connected-react-router": "4.4.1", + "core-js": "^3.34.0", "dompurify": "^2.3.3", "dotenv": "4.0.0", "dotenv-expand": "4.2.0", "echarts": "^4.9.0", "echarts-wordcloud": "^2.0.0", "editor.md": "^1.5.0", + "express": "^4.18.2", "flv.js": "^1.5.0", "fs-extra": "3.0.1", + "http-proxy-middleware": "^2.0.6", "i18next": "^23.4.5", "immutability-helper": "^2.6.6", "install": "^0.12.2", "intersection-observer": "^0.12.2", + "isomorphic-style-loader": "^5.3.2", "jest": "20.0.4", + "jquery": "^3.7.1", "js-base64": "^2.5.2", "js2wordcloud": "^1.1.12", + "jsdom": "^15.2.1", "katex": "^0.11.1", "less": "^3.13.1", "localforage": "^1.10.0", @@ -48,10 +76,12 @@ "moment": "^2.23.0", "monaco-editor": "^0.20.0", "monaco-editor-webpack-plugin": "^1.9.0", + "nodemon": "^3.0.3", "numeral": "^2.0.6", "nvm": "0.0.4", "object-assign": "4.1.1", "papaparse": "^5.3.2", + "pinyin": "^4.0.0-alpha.0", "postcss-flexbugs-fixes": "3.2.0", "promise": "8.0.1", "prop-types": "^15.6.1", @@ -88,6 +118,7 @@ "react-redux": "5.0.7", "react-resizable": "^1.10.1", "react-router": "^4.2.0", + "react-router-config": "^5.1.1", "react-router-dom": "^4.2.2", "react-slick": "^0.28.1", "react-split-pane": "^0.1.91", @@ -96,6 +127,7 @@ "redux": "^4.0.5", "redux-thunk": "2.3.0", "rsuite": "^4.3.4", + "sass": "^1.70.0", "scroll-into-view": "^1.14.2", "scrollama": "^3.2.0", "sha1": "^1.1.1", @@ -104,23 +136,32 @@ "slick-carousel": "^1.8.1", "store": "^2.0.12", "styled-components": "^4.4.1", + "webpack-node-externals": "^3.0.0", "weixin-js-sdk": "^1.6.0", "whatwg-fetch": "2.0.3", + "winston": "^3.11.0", + "winston-daily-rotate-file": "^4.7.1", "wrap-md-editor": "^0.2.20", "xss": "^1.0.14", "xterm": "4.8.1", "xterm-addon-fit": "0.4.0" }, "scripts": { - "start": "node --max_old_space_size=15360 scripts/start.js", - "build": "cross-env NODE_ENV=production node --max_old_space_size=15360 scripts/build.js", + "start": "node scripts/start.js", + "build": "cross-env NODE_ENV=production babel-node --max_old_space_size=15360 scripts/build.js", + "build:server": "cross-env NODE_ENV=production webpack --config config/webpack.server.js", "build:dll": "webpack --config=./config/webpack.dll.config.js", "test-build": "cross-env NODE_ENV=testBuild node --max_old_space_size=15360 scripts/build.js", "pre-build": "NODE_ENV=preBuild node --max_old_space_size=15360 scripts/build.js", "gen_stats": "NODE_ENV=production webpack --profile --config=./config/webpack.config.prod.js --json > stats.json", "ana": "webpack-bundle-analyzer ./stats.json", "analyze": "npm run build -- --stats && webpack-bundle-analyzer build/bundle-stats.json", - "analyz": "NODE_ENV=production npm_config_report=true npm run build" + "analyz": "NODE_ENV=production npm_config_report=true npm run build", + "dev": "npm-run-all --parallel dev:**", + "dev:server": "cross-env NODE_ENV=dev nodemon --exec babel-node \"./buildserver/bundle.js\" --watch config --watch server", + "test:build:server": "cross-env NODE_ENV=localtest webpack --config config/webpack.server.js", + "dev:build:server": "cross-env NODE_ENV=dev webpack --config config/webpack.server.js", + "pm2": "pm2 start pm2.json" }, "jest": { "collectCoverageFrom": [ @@ -156,46 +197,22 @@ "node" ] }, - "babel": { - "presets": [ - "react", - "react-app" - ], - "plugins": [ - [ - "import", - { - "libraryName": "antd", - "libraryDirectory": "lib", - "style": "css" - }, - "ant" - ], - "syntax-dynamic-import" - ] - }, "eslintConfig": { "extends": "react-app" }, - "proxy": "http://localhost:3000", + "proxy": "https://testforgeplus.trustie.net", "port": "3007", "devDependencies": { - "@babel/runtime": "7.0.0-beta.51", - "babel-cli": "^6.26.0", - "babel-core": "^6.26.0", - "babel-eslint": "7.2.3", - "babel-jest": "20.0.3", - "babel-loader": "7.1.2", + "@babel/core": "^7.23.6", + "@babel/node": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.0.0", + "@babel/polyfill": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "@babel/runtime": "^7.0.0-beta.46", + "babel-loader": "^8.3.0", "babel-plugin-import": "^1.13.0", - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-decorators-legacy": "^1.3.5", - "babel-plugin-transform-runtime": "^6.23.0", - "babel-polyfill": "^6.26.0", - "babel-preset-es2015": "^6.24.1", - "babel-preset-react": "^6.24.1", "babel-preset-react-app": "^3.1.1", - "babel-preset-stage-2": "^6.24.1", - "babel-runtime": "6.26.0", + "babel-upgrade": "^1.0.1", "case-sensitive-paths-webpack-plugin": "2.1.1", "compression-webpack-plugin": "^1.1.12", "concat": "^1.0.3", @@ -213,7 +230,7 @@ "html-webpack-plugin": "^4.0.4", "less-loader": "^4.1.0", "mockjs": "^1.1.0", - "node-sass": "^4.14.1", + "npm-run-all": "^4.1.5", "optimize-css-assets-webpack-plugin": "^5.0.3", "postcss-loader": "2.0.8", "purgecss": "^2.1.2", diff --git a/src/forge/Head/Header.js b/src/forge/Head/Header.js index a8c9fa2e8..f293d4763 100644 --- a/src/forge/Head/Header.js +++ b/src/forge/Head/Header.js @@ -3,20 +3,19 @@ import AccountProfile from "../../modules/user/AccountProfile"; import { getImageUrl } from 'educoder' import axios from 'axios'; import cookie from 'react-cookies'; -import { notification , Dropdown ,Popover, Menu,Badge } from 'antd'; +import { notification , Dropdown , Menu , Icon } from 'antd'; import { Link } from 'react-router-dom'; import LoginDialog from '../../modules/login/LoginDialog'; -import HeadSearch from '../Component/HeadSearch'; +import { getOrzCompanyList } from '../../forge/Information/api'; import AddProjectModal from './AddProjectModal'; import '../../modules/tpm/TPMIndex.css'; import CheckProfile from '../Component/ProfileModal/Profile'; import './header.scss'; -import NoticeContent from './NoticeContent'; -import MainLogo from './img/logo.png'; // TODO 这部分脚本从公共脚本中直接调用 +const { SubMenu } = Menu window._header_componentHandler = null; // 非trustie链接则新开页跳转 @@ -47,6 +46,7 @@ class NewHeader extends Component { visible:false, //浮动消息框展示控制 showSubMenu: false, zoneList: [], // 专区列表 + companyList:[] //已开通工作台列表 } } componentDidMount() { @@ -60,6 +60,7 @@ class NewHeader extends Component { window._header_componentHandler = this; this.getZoneList(settings && settings.common.zone +'/api') + this.getComlist(); try { window.sessionStorage.setItem("yslgeturls", JSON.stringify(window.location.href)) @@ -267,7 +268,8 @@ class NewHeader extends Component { } renderMenu=(personal)=>{ - const { current_user } = this.props; + const { mygetHelmetapi } = this.props; + const { companyList } = this.state; return( {/* @@ -286,7 +288,18 @@ class NewHeader extends Component { ) }) } - {/*
  • 设置
  • */} + + 我的工作台} Icon={null} popupClassName='subMyworkList'> + { + companyList && companyList.length>0 ? + companyList.map((i,k)=>{ + return( + {i.enterpriseName} + ) + }) + :暂无工作台 + } + this.educoderloginysl()}>退出登录
    ) @@ -296,6 +309,16 @@ class NewHeader extends Component { this.setState({ visible }); }; + getComlist=()=>{ + getOrzCompanyList().then(res=>{ + if(res){ + this.setState({ + companyList:res.data.rows + }) + } + }) + } + render() { const { resetUserInfo ,showNotification,publicNav,mygetHelmetapi} = this.props; let settings = mygetHelmetapi; @@ -333,10 +356,10 @@ class NewHeader extends Component { : "" } */} - { + {/*{ settings && settings.navbar && settings.navbar.length > 0 ? : "" - } -
    - {/* { search_url && } */} + }*/} + {/*
    + { search_url && } */} {/* { current_user && (current_user.main_site || current_user.login) && (settings && settings.add && settings.add.length>0)? @@ -399,8 +422,8 @@ class NewHeader extends Component { : "" - } */} -
    + } +
    */} {!user || (user && !user.login) ? 登录 diff --git a/src/forge/Head/header.scss b/src/forge/Head/header.scss index 257c21a3a..f83253186 100644 --- a/src/forge/Head/header.scss +++ b/src/forge/Head/header.scss @@ -26,6 +26,21 @@ border-radius: 50%; margin-left: 15px; } +.subMyworkList { + li{ + max-width: 120px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + height: 40px; + line-height: 40px; + padding:0px 12px; + &:hover{ + background-color: #829BFF; + a{color: #fff;} + } + } +} .ant-dropdown-menu.currentMenu{ width: 120px; @@ -38,6 +53,21 @@ text-overflow: ellipsis; display: block; } + .ant-dropdown-menu-submenu .ant-dropdown-menu-submenu-title{ + height: 100%; + line-height: 40px; + padding: 0px 10px; + &:hover{ + background: #829BFF; + color: #fff; + } + i{ + margin-right: 0px; + } + } + .ant-dropdown-menu-submenu-arrow{ + display: none; + } li{ height: 40px; line-height: 40px; diff --git a/src/modules/login/LoginDialog.js b/src/modules/login/LoginDialog.js index 0cdbf6c85..03f01a283 100644 --- a/src/modules/login/LoginDialog.js +++ b/src/modules/login/LoginDialog.js @@ -331,7 +331,7 @@ class LoginDialog extends Component { this.setState({ isphone: flag, //查询第三方登录信息 - settings: JSON.parse(localStorage.getItem("chromesetting")), + settings: localStorage.getItem("chromesetting") !=="undefined" && JSON.parse(localStorage.getItem("chromesetting")), }) if (this.props.isRender != undefined) { diff --git a/src/modules/tpm/TPMIndex.css b/src/modules/tpm/TPMIndex.css index 6f86604c4..ea2d0866e 100644 --- a/src/modules/tpm/TPMIndex.css +++ b/src/modules/tpm/TPMIndex.css @@ -42,6 +42,7 @@ body>.-task-title { display: flex; align-items: center; height: 100%; + justify-content: flex-end; } .globalSpin { max-height: 700px !important; diff --git a/src/modules/tpm/TPMIndexHOC.js b/src/modules/tpm/TPMIndexHOC.js index f390467a3..4010dd96d 100644 --- a/src/modules/tpm/TPMIndexHOC.js +++ b/src/modules/tpm/TPMIndexHOC.js @@ -12,7 +12,6 @@ import SystemNotice from '../../forge/Component/NoticeModal/SystemNotice'; import cookie from 'react-cookies'; import NpsModal from '../modals/npsModal'; import { IsPC } from 'educoder'; -import { getOrzCompanyList } from '../../forge/Information/api'; const items = [ @@ -128,16 +127,6 @@ export function TPMIndexHOC(WrappedComponent) { } ///请求定制化的信息 this.getAppdata(); - this.getComlist(); - } - getComlist=()=>{ - getOrzCompanyList().then(res=>{ - if(res){ - this.setState({ - companyList:res.data.rows - }) - } - }) }