ttk-app-core
Version:
@ttk/recat enterprise develop framework
134 lines (109 loc) • 4.35 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'
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
injections.reduce('init')
if (this.component.props.setOkListener)
this.component.props.setOkListener(this.onOk)
this.metaAction.sf('data.other.type', this.component.props.actionType)
this.metaAction.sf('data.other.target', this.component.props.target)
this.metaAction.sf('data.form.voucherId', this.component.props.voucherId)
this.component.props.voucherTableId && this.metaAction.sf('data.form.voucherTableId', this.component.props.voucherTableId)
if(this.component.props.actionType == 'modify') {
}
}
onOk = async () => {
return await this.save()
}
save = async () => {
let type = this.metaAction.gf('data.other.type')
let target = this.metaAction.gf('data.other.target')
let voucherId = this.metaAction.gf('data.form.voucherId')
let voucherTableId = this.metaAction.gf('data.other.voucherTableId')
const form = this.metaAction.gf('data.form').toJS()
let params = {}
params.voucherId = form.voucherId
params.caption = form.caption
params.colIndex = form.colIndex
params.isVisible = form.isVisible == true ? 1 : 0
if (type == 'add') {
let response = null
if(target == 'thead') {
params.fieldName = form.fieldName
params.isMustSelect = form.isMustSelect == true ? 1 : 0
params.isSystem == form.isSystem == true ? 1 : 0
response = await this.webapi.voucher.addThead(params)
}else if(target == 'tbodys') {
params.name = form.name
response = await this.webapi.voucher.addTbodys(params)
}else if(target == 'tbody') {
params.voucherTableId = form.voucherTableId
params.fieldName = form.fieldName
params.isMustSelect = form.isMustSelect == true ? 1 : 0
params.isSystem == form.isSystem == true ? 1 : 0
response = await this.webapi.voucher.addTbody(params)
}
this.metaAction.toast('success', '新增成功')
return response
}else if(type == 'modify'){
const response = await this.webapi.voucher.create(form)
}
}
fieldChange = async (fieldPath, value) => {
await this.check([{ path: fieldPath, value }])
}
check = async (fieldPathAndValues) => {
if (!fieldPathAndValues)
return
var checkResults = []
for (var o of fieldPathAndValues) {
let r = { ...o }
if (o.path == 'data.form.name') {
Object.assign(r, await this.checkName(o.value))
}
else if (o.path == 'data.form.code') {
Object.assign(r, await this.checkCode(o.value))
}
checkResults.push(r)
}
var json = {}
var hasError = true
checkResults.forEach(o => {
json[o.path] = o.value
json[o.errorPath] = o.message
if (o.message)
hasError = false
})
this.metaAction.sfs(json)
return hasError
}
checkCode = async (code) => {
var message
if (!code)
message = '请录入栏目编码'
return { errorPath: 'data.other.error.code', message }
}
checkName = async (name) => {
var message
if (!name)
message = '请录入栏目名称'
return { errorPath: 'data.other.error.name', message }
}
}
export default function creator(option) {
const metaAction = new MetaAction(option),
o = new action({ ...option, metaAction }),
ret = { ...metaAction, ...o }
metaAction.config({ metaHandlers: ret })
return ret
}