/* eslint-disable */ import React, { useCallback, useMemo, useRef, useState, useContext } from "react"; import { StarFilled } from "@ant-design/icons"; import * as commonServices from '@/services/services'; import { Modal, message } from 'antd-v4'; import { AutoComplete, Input } from "antd-v4"; import * as commonUtils from "@/utils/utils"; /* 通用方法 */ import config from '@/utils/config'; import * as commonFunc from "@/components/Common/commonFunc"; const MenuSearchPopovor = props => { const { menuPanel, onSetMenuSearchPopoverVisible, onAddPane, app, dispatch, updateMenuPanel } = useMemo( () => { return props; }, [] ); const { modelCenter, kpiData } = app; const popovorRef = useRef(null); const handleTabClick = useCallback(option => { const { data, type } = option; if (type === 1) { const record = data; const newsId = record.sId; const newKey = new Date().getTime().toString(); const route = record.sName; const title = record.sMenuName; const pane = { title, route, formId: newsId, key: newKey, sModelsType: record.sModelType, fromKey: "1", sSrcModelsId: '1', currentIndex: 0, }; onAddPane(pane); return; } else if (type === 2) { const record = data; const newsId = record.sResultModelId; const newKey = new Date().getTime().toString(); const route = record.sResultModelName; const title = record.sResultModelMenuName; const pane = { title, route, formId: newsId, key: newKey, sModelsType: record.sResultModelType, fromKey: "1", currentIndex: 0, }; onAddPane(pane); return } const paneKey = new Date().getTime().toString(); const formId = data.sId; const route = data.sName; const title = data.sMenuName; const sModelsType = data.sModelType; const { sProcName } = data; for (const each of app.panes) { /* 解决导航栏打开页签,Modal不消失问题 */ each.notCurrentPane = true; } const pane = { title, route, formId, key: paneKey, sModelsType, sProcName, notCurrentPane: false }; onAddPane(pane); }); function getAddParameter(value, url) { /* 增加常用操作 */ dispatch({ type: 'app/getAddParameter', payload: { value, url } }); } function getDelParameter(value, url) { /* 删除常用操作 */ dispatch({ type: 'app/getDelParameter', payload: { value, url } }); } const handleStarClick = useCallback(async (e, data) => { e.stopPropagation(); const { sId, sName, sMenuName, iCommonlyUsed } = data; const value = { sFormId: sId, sFormUrl: sName, sFormName: sMenuName }; const { token } = props.app; if (iCommonlyUsed === '0') { const addUrl = `${config.server_host}parameter/addParameter?sModelsId=${sId}`; getAddParameter(value, addUrl) } else { const delUrl = `${config.server_host}parameter/deleteParameter?sModelsId=${sId}`; getDelParameter(value, delUrl) } onSetMenuSearchPopoverVisible(false) // todo更新数据,重新渲染 setTimeout(() => { const url = `${config.server_host}business/getBuMenu?sModelsId=100`; dispatch({ type: 'menuPanel/getMenuPanel', payload: { url } }); }, 300); }); const handleGetSearchInputOption = useCallback(() => { const renderTitle = (title, title1) => ( {title1} {title} ); const renderItem = (title, data, bStar) => ({ value: title, data: data, label: (
{title} { handleStarClick(event, data)} /> }
) }); const options = []; const commonlyUsedOption = []; if (menuPanel.panelMenus) { menuPanel.panelMenus.forEach(item => { if (commonUtils.isNotEmptyArr(item.children)) { item.children.forEach(item1 => { if (commonUtils.isNotEmptyArr(item1.children)) { const label = renderTitle(item.sMenuName, item1.sMenuName); const temp = { label, options: [] }; const temp1 = { label, options: [] }; item1.children.forEach(item2 => { const value = { ...item2, parentMenu: item1, grandParentMenu: item }; if (item2.iCommonlyUsed === "1") { temp1.options.push(renderItem(item2.sMenuName, value, true)); } else { temp.options.push(renderItem(item2.sMenuName, value)); } }); if (commonUtils.isNotEmptyArr(temp.options)) { options.push(temp); } if (commonUtils.isNotEmptyArr(temp1.options)) { commonlyUsedOption.push(temp1); } } }); } }); } const columnWorkMatters = commonFunc.showMessage(app.commonConst, 'columnWorkMatters'); const columnContent = commonFunc.showMessage(app.commonConst, 'columnContent'); const { model = {} } = kpiData || modelCenter || {}; const modelOptions = [{ label: renderTitle('', columnWorkMatters), options: [] }, { label: renderTitle('', columnContent), options: [] }]; Object.keys(model).filter((_, index) => index === 0).forEach(key => { const value = model[key]; value.forEach(item => { const { sId, sMenuUnMemo, sResultModelId, sMenuWorkFruit } = item; modelOptions[0].options.push({ label: sMenuUnMemo, value: sId, data: item, type: 1 }); modelOptions[1].options.push({ label: sMenuWorkFruit, value: `${sId},${sResultModelId}`, data: item, type: 2 }); }); }); return [...commonlyUsedOption, ...options, ...modelOptions]; }, [menuPanel.panelMenus]); const searchTitle = commonFunc.showMessage(app.commonConst, 'btnSearch') || '搜索'; return (
{ onSetMenuSearchPopoverVisible(false); }} filterOption={(inputValue, option) => { let result = false; const { data, value } = option; if (commonUtils.isNotEmptyObject(data)) { const { sMenuName, parentMenu = {}, grandParentMenu = {}, sMenuUnMemo, sMenuWorkFruit } = data; const { sMenuName: sMenuName1 } = parentMenu; const { sMenuName: sMenuName2 } = grandParentMenu; const bMenuWorkFruit = value.includes(','); const result0 = sMenuName && sMenuName.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1; const result1 = sMenuName1 && sMenuName1.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1; const result2 = sMenuName2 && sMenuName2.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1; const result3 = !bMenuWorkFruit && sMenuUnMemo && sMenuUnMemo.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1; const result4 = bMenuWorkFruit && sMenuWorkFruit && sMenuWorkFruit.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1; result = result0 || result1 || result2 || result3 || result4; } return result; }} onSelect={(_, option) => { // popovorRef.current.animate([{ width: '250px' }, { width: 0 }], { // duration: 2000, iterations: 1 // }); handleTabClick(option); onSetMenuSearchPopoverVisible(false); }} >
); }; export default MenuSearchPopovor;