ttk-app-core
Version:
enterprise develop framework
267 lines (237 loc) • 9.52 kB
JavaScript
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
}