UNPKG

ttk-app-core

Version:
267 lines (237 loc) 9.52 kB
import React from 'react' import {action as MetaAction, AppLoader} from 'edf-meta-engine' import {Menu, Checkbox, DataGrid, Icon} from 'edf-component' import extend from './extend' import config from './config' import {consts} from 'edf-consts' class action { constructor(option) { this.metaAction = option.metaAction this.extendAction = option.extendAction this.config = config.current this.webapi = this.config.webapi } onInit = ({component, injections}) => { this.extendAction.gridAction.onInit({component, injections}) this.component = component this.injections = injections injections.reduce('init') let availableOrg = sessionStorage.getItem('currentOrgStatus') if(availableOrg != 1 && availableOrg != 2) { //隐藏返回按钮 this.metaAction.sf('data.hideBackBtn', true) } this.isCurrentOrg = false this.load() } load = async (option) => { this.metaAction.sf('data.other.loading', true) let column = this.getColumns() let list = await this.getData() //如果删除的是当前则更新token if(this.isCurrentOrg && list.length != 0) { await this.webapi.org.updateCurrentOrg({"orgId": list[0].id}) document.querySelector('.currentOrgName').innerHTML = list[0].name } //如果企业都删除更新UI if(list.length == 0) { this.injections.reduce('load', column, list) this.injections.reduce('initQueryList', list) this.metaAction.sf('data.isShowSearch', false) sessionStorage['currentOrgStatus'] = 2 //隐藏按钮 this.metaAction.sf('data.hideBackBtn', false) this.component.props.hideHead() this.metaAction.sf('data.other.loading', false) return } this.injections.reduce('load', column, list) this.injections.reduce('initQueryList', list) this.metaAction.sf('data.isShowSearch', false) this.metaAction.sf('data.other.loading', false) } addManage = async () => { this.component.props.setPortalContent('新建企业', 'edf-company-manage-add') } manageBlur = () => { } manageResearch = (e) => { } goRegister = (e) => { if (e.preventDefault) { e.preventDefault() } if (e.stopPropagation) { e.stopPropagation() } if (!this.config.apps['edfx-app-register']) throw '不存在edfx-app-register应用,该功能不能使用' this.component.props.onRedirect({appName: 'edf-company-manage-add'}) } goCompanyManage = (e) => { if (e.preventDefault) { e.preventDefault() } if (e.stopPropagation) { e.stopPropagation() } if (!this.config.apps['edf-company-manage']) throw 'edf-company-manage应用,该功能不能使用' this.component.props.onRedirect({appName: 'edf-company-manage'}) } fieldChange = (path, value) => { // debugger let form = this.metaAction.gf('data.form').toJS() let column = this.getColumns() let searchList = [] // this.getData().then((res) => { let res = this.metaAction.gf('data.queryList').toJS() res.map((option, index) => { if (option.name.indexOf(value) > -1) { searchList.push(option) } return searchList }) if(value == '') { this.injections.reduce('load', column, res) }else { this.injections.reduce('load', column, searchList) } } //渲染表格列 getListColumns = () => { let {Column, Cell} = DataGrid const columns = this.metaAction.gf('data.columns').toJS(); let list = [] if(this.metaAction.gf('data.list')) { list = this.metaAction.gf('data.list').toJS() } let cols = [] columns.forEach(op => { let col = <Column name={op.id} isResizable={false} columnKey={op.id} flexGrow={1} width={op.name == 'name'||op.name == 'remark'?(op.name == 'name' ? 270 : 70): 150} header={<Cell name='header' className="edf-company-manage-headerBgColor">{op.columnName}</Cell>} cell={(ps) => { if (op.name == "lastLoginTime") { return <Cell>{`${list[ps.rowIndex]['lastLoginTime']}`}</Cell> } if (op.name == 'contactNumber') { return <Cell>{`${list[ps.rowIndex]['createTime'].replace(/-/g, '.')} - ${list[ps.rowIndex]['expireTime'].replace(/-/g, '.')}`}</Cell> } if (op.name == 'status') { if (list[ps.rowIndex]['status'] == consts.ORGTATUS_001) { return <Cell>{`正常`}</Cell> } else if (list[ps.rowIndex]['status'] == consts.ORGTATUS_002) { return <Cell>{`过期`}</Cell> } else { return <Cell>{`试用期`}</Cell> } } if (op.name == 'remark') { let isOtherUser = list[ps.rowIndex].isOtherUser return <Cell> <span href="javascript:" className="edf-company-manage-font" onClick={isOtherUser==true?"":this.delOrg.bind(this, list[ps.rowIndex].id)}> <Icon disabled={isOtherUser} type="shanchu" fontFamily="edficon" style={{fontSize:'24px'}}/> </span> </Cell> } let name = list[ps.rowIndex][op.name] return <Cell className={'portalOrgName'} title={name} onClick={() => { this.setCurrentOrg(list[ps.rowIndex]) }}> {name}</Cell> }} /> cols.push(col) }) return cols } back = () => { //返回到门户 this.component.props.setPortalContent('门户首页', 'edfx-app-portal', {isShowMenu: false, isTabsStyle: false}) } getListRowsCount = () => { let list = this.metaAction.gf('data.list') return list ? list.size : 0 } isCurrentOrg = false //判断删除的是否是当前企业 delOrg = async (id) => { let data = this.metaAction.context.get('currentOrg') // const ret = await this.metaAction.modal('confirm', { // title: '删除', // content: '删除企业将永久删除该企业相关的数据,无法恢复,请谨慎操作。您确认要删除企业吗?', // className: 'edf-company-manage-modal', // }) const ret = await this.metaAction.modal('show', { title: '删除', width:652, height:311, children: this.metaAction.loadApp('edf-company-manage-delete', { store: this.component.props.store, }) }) if (ret) { let response = await this.webapi.org.del({id}) if (response) { this.component.props.updateOrgList() this.metaAction.toast('success', '删除成功') if(id == data.id) { this.isCurrentOrg = true }else { this.isCurrentOrg = false } } this.load() } else { return } } setCurrentOrg = async (option) => { let response = await this.webapi.org.updateCurrentOrg({"orgId": option.id}) sessionStorage['currentOrgStatus'] = null this.component.props.onPortalReload && await this.component.props.onPortalReload() // this.metaAction.context.set('currentOrg', option) this.component.props.setPortalContent('门户首页', 'edfx-app-portal', {isShowMenu: false, isTabsStyle: false}) } //修改档案 modifyDetail = (id) => (e) => { let personId = id ? id : null this.add(personId) } //获取列表内容 getData = async (pageInfo) => { let response = await this.webapi.org.queryList() return response } //获取列数据 getColumns = () => { return [{ columnName: '企业名称', id: 'name', name: 'name', }, { columnName: '使用状态', id: 'status', name: 'status', }, { columnName: '最后登录日期', id: 'lastLoginTime', name: 'lastLoginTime', }, { columnName: '授权日期', id: 'contactNumber', name: 'contactNumber', }, { columnName: '操作', id: 'remark', name: 'remark', }] } } export default function creator(option) { const metaAction = new MetaAction(option), extendAction = extend.actionCreator({...option, metaAction}), o = new action({...option, metaAction, extendAction}), ret = {...metaAction, ...extendAction.gridAction, ...o} metaAction.config({metaHandlers: ret}) return ret }