ttk-app-core
Version:
@ttk/recat enterprise develop framework
113 lines (98 loc) • 3.7 kB
JavaScript
import React from 'react'
import { action as MetaAction, AppLoader } from '@ttk/meta-engine';
import { List, fromJS } from 'immutable'
import moment from 'moment'
import config from './config'
import { Menu, Checkbox, DataGrid } from '@ttk/component'
class action {
constructor(option) {
this.metaAction = option.metaAction
this.config = config.current
this.webapi = this.config.webapi
}
onInit = ({ component, injections }) => {
this.component = component
this.injections = injections
if (this.component.props.setOkListener)
this.component.props.setOkListener(this.onOk)
injections.reduce('init')
this.load()
}
load = async () => {
const response = await this.webapi.columnDetail.findByColumnCode(this.component.props.columnCode)
this.injections.reduce('load', response)
}
getListRowsCount = () => {
return this.metaAction.gf('data.list').size
}
getListColumns = () => {
const list = this.metaAction.gf('data.list').toJS();
let { Column, Cell } = DataGrid
let cols = [
<Column name='caption' columnKey='caption' flexGrow={1} width={200}
header={<Cell name='header'>字段名称</Cell>}
cell={(ps) => <Cell>{list[ps.rowIndex].caption}</Cell>}
/>,
<Column name='isVisible' columnKey='isVisible' flexGrow={1} width={200}
header={<Cell name='header'><Checkbox checked={this.isSelectAll(list)} onChange={this.selectAll()}>显示</Checkbox></Cell>}
cell={(ps) => {
if (list[ps.rowIndex].isMustSelect == 1) {
return <Cell><Checkbox checked={list[ps.rowIndex].isVisible} onChange={this.selectColumn(list[ps.rowIndex])} disabled='disabled'></Checkbox></Cell>
}
return <Cell><Checkbox checked={list[ps.rowIndex].isVisible} onChange={this.selectColumn(list[ps.rowIndex])}></Checkbox></Cell>
}}
/>
]
return cols
}
isSelectAll = (list) => {
return list.length == list.filter(o => o && o.isVisible == 1).length
}
selectAll = () => (e) => {
const list = this.metaAction.gf('data.list').toJS();
list.forEach(o => {
if (o.isMustSelect != 1) {
if (e.target.checked)
o.isVisible = 1
else
o.isVisible = 0
}
})
this.injections.reduce('loadColumns', { list })
}
selectColumn = (column) => (e) => {
const list = this.metaAction.gf('data.list').toJS();
list.forEach(o => {
if (o.id == column.id) {
if (e.target.checked) {
o.isVisible = 1
return
}
else {
o.isVisible = 0
return
}
}
})
this.injections.reduce('loadColumns', { list })
//console.log(list)
}
onOk = async () => {
return await this.save()
}
save = async () => {
const list = this.metaAction.gf('data.list').toJS()
if(list){
const response = await this.webapi.columnDetail.batchUpdate(list)
this.metaAction.toast('success', '修改成功')
return response
}
}
}
export default function creator(option) {
const metaAction = new MetaAction(option),
o = new action({ ...option, metaAction }),
ret = { ...metaAction, ...o }
metaAction.config({ metaHandlers: ret })
return ret
}