UNPKG

@choerodon/master

Version:
175 lines (153 loc) 7.14 kB
import "choerodon-ui/lib/button/style"; import _Button from "choerodon-ui/lib/button"; var _excluded = ["AppState", "HeaderStore", "MenuStore", "history"]; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import React, { useMemo, useEffect, useState } from 'react'; import { inject } from 'mobx-react'; import { observer } from 'mobx-react-lite'; import { withRouter } from 'react-router-dom'; import queryString from 'query-string'; import { get } from '@choerodon/inject'; import _ from 'lodash'; import classNames from 'classnames'; import forEach from 'lodash/forEach'; import { Permission } from "../../../../../components/permission"; import getSearchString from "../../util/gotoSome"; import "./headerSettingTheme4.less"; var iconStyle = { marginLeft: 0, marginRight: 0 }; var SERVICE_CODE = { knowledge: 'knowledgebase-service', market: 'market-service' }; var Setting = function Setting(_ref) { var AppState = _ref.AppState, HeaderStore = _ref.HeaderStore, MenuStore = _ref.MenuStore, history = _ref.history, props = _objectWithoutProperties(_ref, _excluded); var isSaas = AppState.getIsSaasList; // 组织改变 重新查询getIsSaas useEffect(function () { if (isSaas && !Object.keys(isSaas).includes(AppState.currentMenuType.organizationId)) { get('base-saas:getIsSaas') && get('base-saas:getIsSaas')(AppState, isSaas); } }, [AppState.currentMenuType.organizationId]); useEffect(function () { get('base-saas:getIsSaas') && get('base-saas:getIsSaas')(AppState, isSaas); }, []); var theme = 'theme4'; var currentServices = AppState.currentServices; var LI_MAPPING = useMemo(function () { var mapping = [{ title: '工作台', icon: theme === 'theme4' ? 'home-o' : 'home', activePath: '/workbench' }, { title: '工作日历', icon: theme === 'theme4' ? 'home-o' : 'home', activePath: '/agile/work-calendar' } // { // title: '项目', icon: theme === 'theme4' ? 'project_line' : 'project_filled', activePath: '/projects', style: { marginLeft: 3 }, // }, ]; forEach(currentServices, function (_ref2) { var serviceCode = _ref2.serviceCode; switch (serviceCode) { case SERVICE_CODE.knowledge: mapping.push({ title: '知识库', icon: theme === 'theme4' ? 'chrome_reader_mode-o' : 'knowledge', activePath: '/knowledge/organization', style: { marginLeft: 4 }, permission: ['choerodon.code.organization.knowledge.ps.default', 'choerodon.code.organization.knowledge.ps.recycle'] }); break; case SERVICE_CODE.market: // 如果不是saas 才显示应用市场 if (!isSaas || !isSaas[AppState.currentMenuType.organizationId]) { mapping.push({ title: '应用市场', icon: theme === 'theme4' ? 'local_mall-o' : 'application_market', activePath: '/market/app-market', style: { marginLeft: 2 } }); } break; } }); return mapping; }, [currentServices, theme, isSaas, AppState.currentMenuType.organizationId]); function _goto2(_x) { return _goto.apply(this, arguments); } function _goto() { _goto = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(obj) { var queryObj, search; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: queryObj = queryString.parse(history.location.search); _context.next = 3; return getSearchString('organization', 'id', queryObj.organizationId); case 3: search = _context.sent; MenuStore.setActiveMenu(null); history.push("".concat(obj.activePath).concat(search)); case 6: case "end": return _context.stop(); } } }, _callee); })); return _goto.apply(this, arguments); } function extraCls(list) { var pathname = props.location.pathname; if (pathname.startsWith(list.activePath)) { if ('exclude' in list) { if (!pathname.startsWith(list.exclude)) { return 'header-setting-active'; } } else { return 'header-setting-active'; } } return ''; } return /*#__PURE__*/React.createElement(React.Fragment, null, LI_MAPPING.map(function (list, index) { var _classNames; var button = /*#__PURE__*/React.createElement(_Button, Object.assign({ key: list.activePath, className: classNames((_classNames = {}, _defineProperty(_classNames, "block ".concat(extraCls(list)), true), _defineProperty(_classNames, 'theme4-headerButton', true), _classNames)) }, index === 0 ? { style: { marginLeft: '-8px' } } : {}, { onClick: function onClick() { return _goto2(list); }, type: "primary", funcType: "flat" }), /*#__PURE__*/React.createElement("span", true && list.style ? { style: list.style } : {}, list.title)); return list.permission ? /*#__PURE__*/React.createElement(Permission, { type: "organization", service: list.permission }, button) : button; })); }; export default withRouter(inject('AppState', 'HeaderStore', 'MenuStore')(observer(Setting)));