import { ObjectInterface } from './util' export class OperationButton { onLine (fn: Function, loading?: Function, disabled?: Function) { // 上线 return { label: 'online', text: true, plain: true, code: 'online', show: (row: ObjectInterface) => { return row.status !== 'ONLINE' && row.status !== 'OFFLINE_PENDING' && row.status !== 'ONLINE_PENDING' && row.status !== 'OFFLINE_REJECTED' }, disabled: (row: ObjectInterface) => { return disabled && disabled(row) }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: ObjectInterface) => { fn && fn(index, row) } } } offLine (fn: Function, loading?: Function, disabled?: Function) { // 下线 return { label: 'offline', text: true, plain: true, code: 'offline', show: (row: ObjectInterface) => { return row.status !== 'NOCONF' && row.status !== 'OFFLINE' && row.status !== 'OFFLINE_PENDING' && row.status !== 'ONLINE_PENDING' && row.status !== 'ONLINE_REJECTED' && row.status !== 'SAVED' }, disabled: (row: ObjectInterface) => { return disabled && disabled(row) }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: ObjectInterface) => { fn && fn(index, row) } } } withdraw (fn: Function, loading?: Function, disabled?: Function) { // 撤回 return { label: 'withdraw', text: true, plain: true, code: 'withdraw', show: (row: ObjectInterface) => row.status === 'OFFLINE_PENDING' || row.status === 'ONLINE_PENDING', disabled: (row: ObjectInterface) => { return disabled && disabled(row) }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: any) => { fn && fn(index, row) } } } // eslint-disable-next-line max-params delete (fn: Function, loading?: Function, disabled?: Function, show?: Function) { // 删除 return { label: 'delete', text: true, plain: true, code: 'del', show: (row: ObjectInterface, index: number) => { return show ? show(row, index) : true }, disabled: (row: ObjectInterface) => { return disabled ? disabled(row) : (row.status === 'ONLINE' || row.status === 'OFFLINE_PENDING' || row.status === 'ONLINE_PENDING' || row.status === 'OFFLINE_REJECTED') }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: any) => { fn && fn(index, row) } } } editor (fn: Function, loading?: Function, disabled?: Function) { // 编辑 return { label: 'edit', text: true, plain: true, code: 'edit', disabled: (row: ObjectInterface) => { return disabled ? disabled(row) : (row.status === 'ONLINE' || row.status === 'ONLINE_PENDING' || row.status === 'OFFLINE_PENDING' || row.status === 'OFFLINE_REJECTED') }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: ObjectInterface) => { fn && fn(index, row) } } } // eslint-disable-next-line max-params stop (fn: Function, loading?: Function, disabled?: Function, show?: Function) { // 停止/停用 return { label: 'stop', text: true, code: 'enable', show: (row: ObjectInterface, index: number) => { return show ? show(row, index) : true }, disabled: (row: ObjectInterface) => { return disabled ? disabled(row) : (row.status === 3 || row.status !== 1) }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: ObjectInterface) => { fn && fn(index, row) } } } // eslint-disable-next-line max-params enable (fn: Function, loading?: Function, disabled?: Function, show?: Function) { // 启用 return { label: 'enable', text: true, code: 'enable', show: (row: ObjectInterface, index: number) => { return show ? show(row, index) : true }, disabled: (row: ObjectInterface) => { return disabled ? disabled(row) : (row.status === 3 || row.status === 1) }, loading: (index: number) => { return loading && loading(index) }, method: (index: number, row: ObjectInterface) => { fn && fn(index, row) } } } }