UNPKG

joywok-material-components

Version:

<h1 align="center"> Joywok Material Components </h1>

1,002 lines (993 loc) 100 kB
import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import { createStore } from 'redux' import { Provider } from 'react-redux' import request from './../utils/request'; import { COMPONENT_DICT, GetNewDate } from '../constants'; // import { Input, Modal, Select, Steps, Spin, Checkbox, Button, message, Popover } from 'antd'; import Input from '@material-ui/core/Input'; import Modal from 'joywok-material-components/lib/modal/modal' import Checkbox from 'joywok-material-components/lib/checkbox/index' import Button from 'joywok-material-components/lib/button/index' import Popover from 'joywok-material-components/lib/popper/custom' import Dialog from '@material-ui/core/Dialog'; import AloneTip from 'joywok-material-components/lib/tips/aloneTip'; import RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked'; import RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked'; import ToolTips from '../tips/toolTips'; const curLang = (window.language || window.cur_lang) || 'zh'; window.shareAloneTip = null; require('./style/shareobj.css'); const jssdkData = [ { code: 10, default_flag: 0, desc: 'xxx', id: 'base', name: 'Basic / Device SDK', parent_code: 0 }, { code: 1001, default_flag: 1, desc: 'JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化JS环境初始化', id: 'config', name: '1001 SDK 初始化', parent_code: 10 }, { code: 1002, default_flag: 0, desc: '', id: 'getDeviceID', name: '1002 获取设备ID', parent_code: 10 }, { code: 1003, default_flag: 0, desc: '', id: 'getDevice', name: '1003 获取设备信息', parent_code: 10 }, { code: 11, default_flag: 0, desc: '', id: 'ui_sdk', name: 'UI SDK', parent_code: 0 }, { code: 1004, default_flag: 0, desc: '', id: 'getInfo', name: '1004 获取个人信息', parent_code: 11 }, { code: 1005, default_flag: 0, desc: '', id: 'getCode', name: '1005 获取免登码', parent_code: 11 }, { code: 12, default_flag: 0, desc: '', id: 'image_sdk', name: 'Image_SDK', parent_code: 0 }, { code: 1006, default_flag: 0, desc: '', id: 'preImg', name: '1006 预览图片', parent_code: 12 } ] class ShareObjContainer extends Component { constructor(props) { super(props); let selectD = _.filter(props.data.select, i => !i.selected_flag || (i.selected_flag && i.selected_flag == 1 && i.default_flag != 1)); this.state = Underscore.extend({ sk: '', nav: [], nowNav: [], showSelect: false, pageno: 0, enterSub: 0, page: { pageno: 0, pagesize: 10 }, sidbarList: [], select: [], defaultSelJssdk: [], defaultSelAPI: [], data: [] }, props.data, { select: selectD }, { selectAllStatus: false,//全选的初始的状态,用于选用户,当前页面没用户信息 } ) this.backupData = JSON.parse(JSON.stringify(this.state.select)); this.searchTime = null; this.fetchIng = false; this.nowData = {}; } _init_nav(nowNav, i) { let self = this; // (i,'asdasda'); if (i['id'] == 'domain') { return (<div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/objselect_comp.png'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } </div>) }else if (i['id'] == 'jw_n_folder') { return (<div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={()=>self.getFolderNav()}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/jw-n-files.png'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } </div>) } else if (i['id'] == 'dept') { return (<div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <b className=""> <i className="icon-share-zoom"></i> </b> <span className="ellipsis">{i['name']}</span> { i['help'] ? <Popover placement="right" content={i['help']} trigger="hover"> <i className="icon-share-help"></i> </Popover> : '' } <i className="icon-share-angle-right"></i> </div>) } else if (i['id'] == 'mydept') { let parentNav = this.state.nowNav[0]; return ( <div className="share-object-cat-material-i specail-cat share-object-mydept"> <div className="share-object-cat-main " onClick={(e) => self.fetchData(e, i)}> <b className=""> <i className="icon-share-zoom"></i> </b> <span className="ellipsis1">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> { i['list'] ? <div className="icon-share-object-child">{Underscore.map(i['list'], function (item) { let checked = _.find(self.state.select, { id: item['id'] }) ? true : false; return (<div className={"share-object-cat-material-i specail-checkbox-w " + (nowNav && nowNav["id"] == item["id"] ? 'active' : '')} onClick={(e) => self.fetchGroup(item, 'list', i)}> {parentNav && parentNav['flag'] == 'onlyuser' ? "" : <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} checked={checked} onChange={(e) => self.select(e, item)}></Checkbox> } {/* */} <img src={item["logo"] || jwimgsrc + '/images/jw-img/share/position.png'} /> <span className="share-object-cat-i-name">{item['name']}</span> </div>) })}</div> : '' } </div>) } else if (i['id'] == 'post' || i['id'] == 'personnel_category' ) { return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/position.png'} /> <span className="ellipsis1">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if (i['id'] == 'role'||i['id'] == 'apps') { return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> {i['id'] == 'apps' ? '' : <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/roles.png'} />} <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if (i['id'] == 'extuser') { return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/position.png'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if (i['id'] == 'category') { return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <img src={i['icon'] || 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAABSpJREFUaAXtW2tsFFUU/mahy6stiG2xJA3avxUJirWBCk2qaDCCJCZAogmJ4osEoyb6Q43GV6IxGiWgVYk/NNGUUNRoFCmGNIWAaLBI9Yc0KhCssBDtFkq70PU7e3eyszu7szNz12z3cZLdmXvuOffeb777OPfujoG4RKMwsBX3I4r7qGritdLMK8irgWG2u5+otuERfGAYREQx5CvagXpE8BFV7ZIuOjGwh0jvMTZiMBBjtpjBCntCZBQfC1YjugUbMI73io7VdIACeCBA5DJmS0OINUCkTaWBNoaySRgu7NnYC1vEKgyXlJQBFzvdZYbLDBfZEyh36SIj1Aan5BiebHsEOoppc4ApM+0ljA0BFwbtepuGz3/BJga7G4DKBiD0E3DgGeBUj83Sr8KIbmZwqSuNq4HWN4HqeZlLCp8A9j0BHNue3iZQAdzeCTTelZzPPR32PsytfEey3mdKv0s3LAdWdDmDlcZVkTEBNO8Oe1OtYC+eAz6/DeioJrvP8oiCZxRt75D1B+1+PjT6gJuf81Zt8/PJ9qlgP7sFOPEtEAkDP7wE9DyaAH3tQ8m+PlL6Y7h2obdqa66jvTzncV6kG7OLN64ChFkBGzqcXN6Rt1V66VvAsq3q/ui7yTYeUvoMT57moTqaTgoS6CTl0/KKM1izZAHds0kxLaDnLjVzPF/1AXuuMu4wtQZY+DhweYxjlvNAKrOp5R7ZrGZsGdMtL6fmuk7nD/CV88kYq/9rH3DmR3cN7ot375oF7uzTWOUPcPi4as5snjAFZ6ZpWhpV/WKlNH3TmGRT5Q/w0ABw8jtgeh1w51dARZVzW2uvB5Z/omx+ed/Z1iFXH/BIyKH4NFmj/3KCjqiM7vWAsFW/BFj5dWbQAnZVNzD1CmCgC+jjePYp+oC9hn1W+2FGX11twNCfcdDf2EEngd0J7FpLqFzSfIo+4F6Gi7KGupHRf4BezsxWCf8O7GyLg+YYXUnQwVnKou5GC7MCdk2id1jL8HCfm1h6xlxgEcPAq25KPwHJ5uHv74FDLwLnT6ZvXtXVwOq9KkQdOQOc+5Xltah1eyA3YKXi3ACWknIhskNq/xBoaFeljV8GDr8OHOTDNMe9Zj0TC7AJpuoatdk4exQYdTlcTN8sV/1YOrUCIx42WvVRmWSiVk3me/Ef5swtHxFJe/FXXhm/cwO49gZgyWtAXTPHcKW9ssh5juFDwP6ngNMcy6kijN78BmPkZWrpSc2X8DPUxzngBeCPL1NzPaX1u7QsG3cf4OTCnU82Gb8E7Ggl+IMJS5nw1v1MoLMTOqe7XeuA3z51snDM01+WFr/qDqw0I8AOJfZWWfS0e7Di18qeoCH6gOdwKfIisraqf1ooL6/+M+rVeZeXOi22+oCDWWJgS2Wx24rpimlTH6w279xf/fjES9cH7L6ZE8KyDHhC0PA/NqLMsOeHKxsDLxK5wLiY67EpXv3FT/bUPkWf4UFLEOGmEbJrsoaZgwxavMjwqcw7Lhfl6AOWcFFCPzcizO5/MtlSDttHzibrnFK9jznlZs3TByzHq9u5bz2+G8jUPcfC/DWhW9mdZkxtFfmRrZOx+LEdBB6y5iTuL10EpCd8sYJ2nQm9jzv9WNpHpfl00Wc4n633UXcZsI+HVlAuZYYLii4fjS0z7OOhFZRLgIcP8vZHaQixSpfuLw20MZT9wvC2kgFMrEbsNZ4t2M0NTPz3jSKFL+8ubcStgdgbWxW4l0zvKVKockiqXtTi22n8h4iSGNMl8Cref+zuVmHr6M+NAAAAAElFTkSuQmCC'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if (i['id'] == 'region'|| i['id'] == 'instance') { return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={i['id'] == 'region' ? (e) => self.fetchData(e, i) : function(){}}> {i['id'] == 'region' ? <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/region.png'} />: ''} <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if (i['id'] == 'area') { return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/area.png'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if (i['type'] == 'group' || i['type'] == 'jssdk'|| i['type'] == 'groupApi' || i['type'] == 'selFolder') { return <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? ' actives ' : '')} onClick={(e) => self.fetchData(e, i)}> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> } else if(i['id']=='usergroup'||i['id']=='function_level'||i['type']=='jw_n_subscribe'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && (nowNav["id"]!=undefined&&nowNav["id"] == i["id"]||(nowNav["src_id"]!=undefined&&nowNav["src_id"] == i["src_id"])) ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> { i['type']=='jw_n_subscribe' ? '' : <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/'+i['id']+'.png'} /> } <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } else if(i['id']=='dictParent' ){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) }else if(i['id'] == 'business_dict'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) }else if(i['id']=='customusergroup'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/'+i['id']+'.png'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) }else if(i['id']=='subscribeteam'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + 'actives'} onClick={(e) => self.fetchData(e, i)}> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) }else if(i['id']=='select_task'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + 'actives'}> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) }else if(i['id']=='specificUser'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <img src={i['icon'] || jwimgsrc + '/images/jw-img/share/specific-user.png'} /> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) }else if(i['id'] == 'office'){ return ( <div className={"share-object-cat-material-i " + (i['customClass'] || '') + ' ' + (nowNav && nowNav["id"] == i["id"] ? 'actives' : '')} onClick={(e) => self.fetchData(e, i)}> <span className="ellipsis">{i['name']}</span> { i['help'] ? <i className="icon-share-help"></i> : '' } <i className="icon-share-angle-right"></i> </div> ) } } _init_normal() { let self = this; let data = this.state; let nowNav = data['nowNav'][data['nowNav'].length - 1]; return (<div className={"sahre-object-l-i " + (this.state.sk && this.state.sk.length != 0 ? 'hide' : '')}> { _.map(data['nav'], function (i) { return self._init_nav(nowNav, i); }) } </div>) } changeNav(data, index) { let self = this; let navLenght = this.state.nowNav; if (navLenght[0].id == 'area') { navLenght = _.filter(navLenght, (item, i) => i <= index); } else { navLenght.splice(index + 1); // navLenght.splice(index + 1, 1); } this.setState({ nowNav: navLenght, hideSub: false }) if (navLenght[0].id == 'area') { this.fetchGroupRegion(navLenght[navLenght.length - 1], navLenght); } else if(navLenght[0].id == 'dictParent'){ this.fetchDictParent(navLenght[navLenght.length - 1], navLenght); } else if(data.id=='instance'){ this.getInstanceData(navLenght[navLenght.length - 1],navLenght); } else if(data.id=='jw_n_folder'){ this.getFolderNav(); // 用户组 }else if(navLenght[0].id == 'usergroup'){ this.fetchIng = true; window.shareAloneTip = AloneTip({type: 'warning',duration: 200000,hasclose: false,autoHideDuration: 200000,message: COMPONENT_DICT('label.business.shareobj.loading')}) let url = '/api/usergroup/classes' request(url, { method: 'GET' }) .then(function (resp) { self.fetchIng = false; let fetchList = resp["data"]["JMUsergroupclasses"]; window.shareAloneTip.close(); self.setState({ data: fetchList, // page: resp["data"]["JMObjs"]["page"], nowNav: [data] }) }) // 自定义用户组 }else if(navLenght[0].id == 'customusergroup'){ this.fetchIng = true; window.shareAloneTip = AloneTip({type: 'warning',duration: 200000,hasclose: false,autoHideDuration: 200000,message: COMPONENT_DICT('label.business.shareobj.loading')}) let url = '/api/customusergroup/classes?oid='+navLenght[0].oid+'&otype='+navLenght[0].otype request(url, { method: 'GET' }) .then(function (resp) { self.fetchIng = false; let fetchList = resp["data"]["JMUsergroupclasses"]; window.shareAloneTip.close(); self.setState({ data: fetchList, // page: resp["data"]["JMObjs"]["page"], nowNav: [data] }) }) } else if(navLenght[navLenght.length-1].type == 'jw_subscribe_team'||navLenght[navLenght.length-1].id=='subscribeteam'){ let dept_id = navLenght[navLenght.length-1].id === 'subscribeteam' ? '' : navLenght[navLenght.length-1].id this.fetchIng = true; window.shareAloneTip = AloneTip({type: 'warning',duration: 200000,hasclose: false,autoHideDuration: 200000,message: COMPONENT_DICT('label.business.shareobj.loading')}) let url = '/api/subscription/subgetdeptinfo' request(url, { method: 'GET', body: { dept_id: dept_id } }) .then(function (resp) { let resD = resp.data.JMSubscription; _.each(resD, i => i.type = 'jw_subscribe_team'); _.each(resD, i => i.flag = 'onlydept'); self.fetchIng = false; let fetchList = resD; window.shareAloneTip.close(); self.setState({ data: fetchList, // page: resp["data"]["JMObjs"]["page"], // nowNav: [data] }) }) } else if (navLenght[0].id == 'select_task') { if(navLenght[navLenght.length - 1].id == 'select_task'){ self.getTaskData(navLenght[navLenght.length - 1]); }else { self.fetchTaskData(navLenght[navLenght.length - 1],true); } }else { this.fetchGroup(navLenght[navLenght.length - 1], true); } } _init_folderSearch(){ if(this.state.nav && this.state.nav.length && this.state.nav.length>0 && this.state.nav[0] && this.state.nav[0].id=='jw_n_folder' ){ return <div className="share-object-search"> <i className="icon-search-s"></i> <Input className="has-border" placeholder={COMPONENT_DICT('label.business.shareobj.search')} onChange={(e) => this.searchData(e)} /> </div> } } _init_title() { let self = this; let navLenght = this.state.nowNav; let html = []; let isJssdk = this.props.data.nav[0].id; let isUsergroup = this.props.data.nav[0].id; let isArticles = this.props.data.nav[0].id; let isAPI = this.props.data.nav[0].id; let isSpecificUser = this.props.data.nav[0].id; _.each(this.state.nowNav, function (i, index) { html.push(<span id={i.id} className={'ellipsis ' + (index != navLenght.length - 1 ? 'active' : '')} onClick={(e) => (index != navLenght.length - 1 ? self.changeNav(i, index) : function () { })}>{(i.type == "boardgroup" || i.type == "board" || i.type == "list") ? self.getLabelValue(i['name'],true) : i["name"]}</span>) if (index != self.state.nowNav.length - 1) { html.push(<span className="active share-object-path-sep">{'>'}</span>) } }) setTimeout(function () { let left = $('.share-object-path-c').width() - $('.share-object-path').width(); if (left > 0) { left = '-' + left } else { left = 0; } $('.share-object-path-c').stop().animate({ marginLeft: left + 'px' }) }, 100) return <div className="share-object-path"><div className={"share-object-path-c " + (isJssdk == 'selJssdk' || isUsergroup == 'usergroup' || isArticles=='subscribe_articles' || isAPI == 'groupApi' ? 'path-jssdk' : '')}>{html}</div></div> } _init_item(data,isSearch) { let self = this; let nowNav = this.state['nowNav'][0]; let curData = data.type=='jw_n_subscribe_article' ? _.find(self.state.select, { oid: data['oid'] }) : _.find(self.state.select, { id: data['id'] }); // 整合一下外面传递的参数 if(curData!=undefined){ data = _.extend(data,curData) } let checked = curData ? true : false; let checkboxProps = {}; if(data['disabled']) checkboxProps.disabled=true; if (data['type'] == 'jw_n_dept') { return <div className={"share-object-i specail " + (data['disabled'] ? 'share-object-i-disabled' : '')}> { nowNav &&( nowNav["id"] == 'dept'||nowNav["id"] == 'dictParent'&&nowNav["type"] == 'dept') && nowNav['flag'] && nowNav['flag'] != 'onlyuser' ? <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> : '' } <div className="share-objec-i-c" onClick={(e) => this.fetchGroup(data,'','',isSearch)}> <img src={data['logo']} /> <span className="ellipsis"> <ToolTips title={curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name']} placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> <i className="icon-share-angle-right icon-share-angle-right-dept"></i> </div> </div> } else if (data['type'] == 'jw_n_group') { return <div className={"share-object-i specail " + (data['disabled'] ? 'share-object-i-disabled' : '')}> { nowNav && nowNav["id"] == 'dept' && nowNav['flag'] && nowNav['flag'] != 'onlyuser' ? <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> : '' } <div className="share-objec-i-c" onClick={(e) => this.fetchGroup(data,'','',isSearch)}> <img src={data['logo']} /> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } else if (data['type'] == 'jw_n_user') { let checked = _.find(self.state.select, { id: data['id'] }) ? true : false; if(!data['disabled']) checkboxProps.onChange= (e) => self.select(e, data); return <div className={"share-object-i " + (data['disabled'] ? 'share-object-i-disabled' : '')}> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} checked={checked} {...checkboxProps}></Checkbox> <div className="share-objec-i-c"> <img src={data["avatar"] ? data["avatar"]['avatar_l'] : jwimgsrc + '/images/jw-img/share/user.jpg'} /> { isSearch ? <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="share-objec-user-info"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> <p className="share-objec-user-dept">{(data['depts']&&data['depts'].length>0&&data['depts'][0]['title']) + (data['depts']&&data['depts'].length>0&&data['depts'][0]['title']=="" ? '' : ',') + (data['depts']&&data['depts'].length>0&&data['depts'][0]['name'])}</p> </div> </ToolTips> </span> : <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> } </div> </div> } else if (data['file_type'] == 'jw_n_folder') { let checked = _.find(self.state.select, { id: data['id'] }) ? true : false; return <div className={"share-object-i" + (data['disabled'] ? 'share-object-i-disabled' : '')}> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c app-cur-def" onChange={(e) => self.select(!checked, data)}> <img src={data["avatar"] ? data["avatar"]['avatar_l'] : jwimgsrc + '/images/jw-img/share/jw-n-folder.png'} /> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } else if (data['type'] == 'topFolder') { let checked = _.find(self.state.select, { id: data['id'] }) ? true : false; return <div className={"share-object-i" + (data['disabled'] ? 'share-object-i-disabled' : '')}> <div className="share-objec-i-c" onClick={(e) => self.fetchData(e, data, false)}> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } else if (data['type'] == 'jw_n_project') { return <div className="share-object-i specail" onClick={(e) => this.fetchByOther(e, data)}> <div className="share-objec-i-c"> <img src={data['logo']} /> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } else if (data['type'] == 'jw_n_task') { return <div className="share-object-i specail" onClick={(e) => this.fetchByOther(e, data)}> <div className="share-objec-i-c"> <img src={data['logo']} /> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } else if (data['obj_type'] == 'jw_n_area') { return <div className={"share-object-i specail " + (data['disabled'] ? 'share-object-i-disabled ' : '') + (this.state.hideSub ? "" : "flex-two")} > <div className="share-object-i-w"> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c" onClick={(e) => self.specailSelect(!checked, data)}> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> {self.state.hideSub ? '' : <div className="next-icon " onClick={() => self.fetchGroupRegion(data,'',isSearch)}> <i className="icon-share-angle-right"></i> </div>} </div> } else if (data.type == 'jssdk' || data.type == 'groupApi' ) { return <div className={"share-object-i share-jssdk " + (data['default_flag'] == 1 ? " not-allowed" : "")}> {data['default_flag'] == 1 && data['selected_flag'] == 1 ? <img src={jwimgsrc + '/images/jw-img/share/checkout-dis.png'} width="20" alt="" /> : <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['default_flag'] == 1 || data['disabled']} defaultChecked={false} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox>} <div className="share-objec-i-c" onClick={(e) => self.specailSelect(!checked, data)}> {/* <span className="ellipsis">{data['name']}</span> */} <span className="ellipsis js-name"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> <div className="js-des">{data.desc}</div> </div> </div> } else if(data.type=='jw_n_dict'){ let checked = _.find(self.state.select, { id: data['id'] }) ? true : false; return <div className={"share-object-i " + (data['disabled'] ? 'share-object-i-disabled ' : '') + (data['type']=='app' ? 'share-objec-apps' : '')}> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c" onClick={(e) => self.specailSelect(!checked, data)}> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } else if(data.dict_flag==1 ||data.type == 'jw_n_teamtype' || data.type == 'jw_n_store_category' ||data.type == 'jw_n_personnel_category' ||data.type == 'jw_n_post'||data.type == 'jw_n_jobtype' ||data.type == 'jw_n_function_level' || data.type == 'jw_n_office' ||data.type == 'jw_n_brand' ||data.type == 'jw_n_region'|| data.type == 'jw_n_user_category' || data.type == 'jw_n_region_category' || data.type == 'jw_n_personnel_group' || data.type == 'jw_n_assign_category'|| data.type=='jw_trio_inst'||data.type=='corporation'){ return <div className={"share-object-i specail share-dict " + (data.type=='jw_trio_inst' ? 'share-dict_trio_inst ' :"") + (data['disabled'] ? 'share-object-i-disabled' : '') + (nowNav&&nowNav.isSelectGroup!=undefined&&nowNav.isSelectGroup ? '' : 'share-dict-not-select-group')}> { nowNav&&nowNav.isSelectGroup!=undefined&&nowNav.isSelectGroup||data.dtype=="2" ? <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> : '' } {data.dtype=="1"? <img className="dict-group-icon" src={jwimgsrc + '/images/jw-img/share/group.png'} width="20" alt="" /> : ''} <div className={data.dtype=="1" ? "share-objec-group-w" : "share-objec-entry-w" } onClick={data.type=='jw_n_origanization' ? ()=>function(){} : () => self.fetchDictParent(data,'',isSearch)}> <div className="share-objec-i-c " > <span className="ellipsis"> <ToolTips title={nowNav.id=="dictParent"&&data['parent_path']!=''&&isSearch&&data['parent_path'] ? (data['parent_path']+ '-' + data['name']) : data['name']} placement="top"> <div className="toolTips-label">{nowNav.id=="dictParent"&&data['parent_path']!=''&&isSearch&&data['parent_path'] ? (data['parent_path']+ '-' + data['name']) : data['name']}</div> </ToolTips> </span> </div> { data.type=='jw_n_origanization' ? '' : <i className="icon-share-angle-right"></i> } </div> </div> } else if(data.type == 'jw_n_usergroup_class'||data.type == 'jw_n_subscribe'){ return <div className={"share-object-i specail " + (data['disabled'] ? 'share-object-i-disabled ' : '')}> {/*<Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox>*/} <div className="share-objec-i-c share-objec-i-c-usergroup" onClick={data.type == 'jw_n_usergroup_class' ? (e) => self.fetchUsergroup(data, '', isSearch) : (e) => self.fetchArticles(data, '', isSearch)}> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> <i className="icon-share-angle-right icon-share-angle-right-usergroup"></i> </div> </div> } else if(data.type == 'jw_n_usergroup'||data.type == 'jw_n_subscribe_article'){ return <div className={"share-object-i specail " + (data['disabled'] ? 'share-object-i-disabled ' : '')}> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c" > <span className={"ellipsis " + (data.type == 'jw_n_usergroup' ? 'ellipsis-usergroup' : '')}> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> { data.type == 'jw_n_subscribe_article' ? <div className="share-objec-i-c-time"> {GetNewDate(data.created_at)} </div> : '' } </span> </div> </div> } else if(data.type == 'jw_subscribe_team'){ return <div className={"share-object-i specail share-object-subscribe_team"}> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c" onClick={(e) => self.fetchData(e,data)}> <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> <i className="icon-share-angle-right"></i> </div> </div> } else if(data.type == "boardgroup" || data.type == "board" || data.type == "list" || data.type == "task"){ return <div className={"share-object-i specail share-object-subscribe_team"}> <Checkbox icon={<i className="icon-task-share-checkbox-disabled"></i>} checkedIcon={<i className="icon-task-share-checkbox-active"></i>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c share-object-select-task" onClick={(data.type=='task' || checked) ? ()=>function(){} : (e) => self.fetchTaskData(data)}> <span className="ellipsis"> <ToolTips title={self.getLabelValue(data['name'],true)} placement="top"> <div className="toolTips-label">{self.getLabelValue(data['name'],true)}</div> </ToolTips> </span> { (data.type == "task" || checked) ? <i className="icon-share-angle-right-bak"></i>: <i className="icon-share-angle-right"></i> } </div> </div> } else { return <div className={"share-object-i specail " + (data['disabled'] ? 'share-object-i-disabled ' : '') + (data['type']=='app' ? 'share-objec-apps' : '')}> <Checkbox icon={<RadioButtonUncheckedIcon/>} checkedIcon={<RadioButtonCheckedIcon/>} disabled={data['disabled']} checked={checked} onChange={(e) => self.select(e, data)}></Checkbox> <div className="share-objec-i-c" onClick={(e) => self.specailSelect(!checked, data)}> { data['type']=='app' ? <img className="share-objec-apps-logo" src={data['logo']} /> : '' } <span className="ellipsis"> <ToolTips title={ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] } placement="top"> <div className="toolTips-label">{ curLang && curLang == 'en' && data['en_name'] ? data['en_name'] : data['name'] }</div> </ToolTips> </span> </div> </div> } } specailSelect(checked, data) { let datas = this.state; let selectList = this.state.select; let curData = this.props.data.title=='添加 JS SDK' ? this.state.defaultSelJssdk : this.state.defaultSelAPI; if (data['disabled'] || data['default_flag'] == 1) { return } //代码有点复杂,稍后整理下; if (datas['maxSelect']) { //优化 if (datas['maxSelect'] == '1') { if (checked) { selectList = [data]; } else { selectList = []; } } else { if (selectList.length + curData.length >= datas['maxSelect']) { if (checked) { selectList.shift(); selectList.push(data); } else { let nowSelectList = []; _.each(selectList, function (i) { if (i['id'] != data['id']) { nowSelectList.push(i) } }) selectList = nowSelectList; } } else { if (checked) { selectList.push(data); } else { let nowSelectList = []; _.each(selectList, function (i) { if (i['id'] != data['id']) { nowSelectList.push(i) } }) selectList = nowSelectList; } } } } else { if (checked) { selectList.push(data); } else { let nowSelectList = []; _.each(selectList, function (i) { if (i['id'] != data['id']) { nowSelectList.push(i) } }) selectList = nowSelectList; } } this.setState({ select: selectList }) } select(e, data) { let datas = this.state; let checked = e.target.checked; if (!checked) { if (this.state.cantRemoveData && this.state.cantRemoveData.length != 0) { if (data.type!='jw_n_subscribe_article'&&_.findWhere(this.state.cantRemoveData, { id: data['id'] })) { return } if (data.type=='jw_n_subscribe_article'&&_.findWhere(this.state.cantRemoveData, { oid: data['oid'] })) { return } } } let selectList = this.state.select; let curData = this.props.data.title=='添加 JS SDK' ? this.state.defaultSelJssdk : this.state.defaultSelAPI; //代码有点复杂,稍后整理下; if (datas['maxSelect']) { //优化 if (datas['maxSelect'] == '1') { if (checked) { selectList = [data]; } else { selectList = []; } } else { if (selectList.length + curData.length >= datas['maxSelect']) { if (checked) { selectList.shift(); selectList.push(data); } else { let nowSelectList = []; _.each(selectList, function (i) { if ((i['id']!=undefined&&i['id'] != data['id'])||(i['0id']!=undefined&&i['oid'] != data['oid'])) { nowSelectList.push(i) } }) selectList = nowSelectList; } } else { if (checked) { selectList.push(data); } else { let nowSelectList = []; _.each(selectList, function (i) { if ((i['id']!=undefined&&i['id'] != data['id'])||(i['0id']!=undefined&&i['oid'] != data['oid'])) { nowSelectList.push(i) } }) selectList = nowSelectList; } } } } else { if (checked) { selectList.push(data); } else { let nowSelectList = []; _.each(selectList, function (i) { if ((i['id']!=undefined&&i['id'] != data['id'])||(i['0id']!=undefined&&i['oid'] != data['oid'])) { nowSelectList.push(i) } }) selectList = nowSelectList; } } this.setState({ select: selectList }) } selectAll(e) { let self = this; let checked = e.target.checked; let selectList = this.state.select; let filterList; if (this.props.isJssdk) { filterList = _.filter(this.state.data, i => i.default_flag === 0); } else { filterList = this.state.data; } let nowData = this.state.nowNav[0]; let newfilterList = []; if (nowData['id'] == 'dept' || nowData['id'] == 'mydept' || (nowData['type']&&nowData['type'].indexOf('dept')!=-1)) { if (nowData['flag']) { if (nowData.flag == 'onlyuser') { filterList = _.filter(filterList, function (i) { return (i['type'] == 'jw_n_user') }) } else if (nowData.flag == 'onydept') { filterList = _.filter(filterList, function (i) { return (i['type'] == 'jw_n_dept' || i['type'] == 'jw_n_group') }) } } else { filterList = _.filter(filterList, function (i) { return (i['type'] == 'jw_n_user') }) } } // 过滤掉新增的里面 状态为 disabled 的数据 filterList = _.filter(filterList, function (i) { return typeof (i['disabled']) == 'undefined' || !i['disabled'] }) if (checked) { selectList = selectList.concat(filterList) } else { let nowList = []; _.each(selectList, function (i) { if (_.find(filterList, { id: i['id'] })||(_.find(filterList, { oid: i['oid'] }))) { } else { nowList.push(i) } }) selectList = nowList; } selectList = Underscore.uniq(selectList, function (i) { return i['id']||i['oid'] }) this.setState({ select: selectList, selectAllStatus: !this.state.selectAllStatus }) } unSelectAll(e) { let list = []; if (this.state.cantRemoveData && this.state.cantRemoveData.length != 0) { list = this.state.cantRemoveData } if(Array.isArray(this.state.select)&&this.state.select.length>0){ _.each(this.state.select,(item)=>{ if(item.disabled&&(item.disabled==true || item.disabled=='disabled')){ list.push(item); } }) } this.setState({ select: list }) } inputSearch(e) { let self = this; const text = e.target.value.trim(); let curId = self.props.data.nav && self.props.data.nav[0].id; clearTimeout(this.searchTime); this.searchTime = setTimeout(function () { self.setState({ sk: text }) if (text.length != 0) { $('.share-object-cat-material-i').removeClass('active'); if(curId!="subscribe_articles"){ let url = '/api/suggestion/search?s=' + encodeURIComponent(text) + '&pageno=0&pagesize=50'; if (self.props.searchUrl) { url = self.props.searchUrl; url = url.replace(/{s}/, encodeURIComponent(text)); let lastParam = ''; if(url.substring(url.length-3,url.length)=='?s=' || url.substring(url.length-3,url.length)=='&s='){ url = url+encodeURIComponent(text); } url = url+'&pageno=0&pagesize=50'; } request(url, { method: 'GET' }) .then(function (resp) { let showId = self.props.data.nav && self.props.data.nav[0].id; let resData; if (showId == 'usergroup') { resData = resp.data.JMUsergroups; } else if (showId == 'selJssdk') { let resD = resp.data.JMJssdks; _.each(resD, i => i.type = 'jssdk'); resData = resD; } else if(showId == 'groupApi'){ let resD = resp.data.JMAppsapis; _.each(resD, i => i.type = 'groupApi'); resData = resD; } else if(showId=='apps'||showId=='dictParent'){ resData = resp['data']['JMObjs']['list']; } else if(showId=='instance'){ resData = resp['data']['JMTrioInsts']; } else if(showId == 'business_dict'){ resData = resp['data']['JMAttrs']; } else if(showId=='subscribeteam'){ resData = resp['data']['JMSubscription']; } else { resData = resp['data']['JMObjs']; if(Array.isArray(resData)==false){ resData = resData['list'] || []; } } self.setState({ sidbarList: resData }) }) }else{ let params = { src_id: '', pageno: 0, pagesize:50, match_str: text, file_types: self.props.data.file_types } request('/api/subscription/getarticlebysrcid', { method: 'POST', data: JSON.stringify(params) }) .then(function (resp) { self.setState({ sidbarList: resp.data.JMSubscription }) }) } } else { self.setState({ sidbarList: [] }) } }, 200) } searchData(e){ let self = this; // _.throttle(()=>{ // _.debounce(()=>{ // console.log('111'); // self.fetchData(e, {id: 'searchFolder', name: '搜索'}, false); // }, 500); if(this.searchTimer!=undefined){ clearTimeout(this.searchTimer); } const text = e.target.value.trim(); this.searchTimer = setTimeout(function(){ if(text===''){ self.getFolderNav(); }else{ self.fetchData(e, {id: 'searchfile', name: COMPONENT_DICT('label.business.shareobj.search'), searchKey: text}, false); } }, 500); } fetchCustomData(e,data,page){ let self = this; let datas = this.state['page']; if (this.fetchIng) { return } e.stopPropagation() if (page) { if (datas['num'] > (Number(datas['pageno']) + 1) * datas['pagesize']) { this.fetchIng = true; window.shareAloneTip = AloneTip({type: 'warning',duration: 200000,hasclose: false,autoHideDuration: 200000,message: COMPONENT_DICT('label.business.shareobj.loading')}) let url = '/api/suggestion/objs?type=' + data['id'] + '&pageno=' + (Number(datas['pageno']) + 1) + '&pagesize=' + datas['pagesize'] + (data['flag'] ? '&flag=' + data['flag'] : ''); if(typeof(data['op'])!=undefined){ url+='&op='+data['op'] } request(url, { method: 'GET' }) .then(function (resp) { self.fetchIng = false; let fetchList = [].concat(self.state.data, resp["data"]["JMObjs"]["list"]) window.shareAloneTip.close(); self.setState({ data: fetchList, page: resp["data"]["JMObjs"]["page"], nowNav: [data] }) }) } else { } } else { this.fetchIng = true; window.shareAloneTip = AloneTip({type: 'warning',duration: 200000,hasclose: false,autoHideDuration: 200000,message: COMPONENT_DICT('label.business.shareobj.loading')}) let url = this.props.data.url