ttk-app-core
Version:
enterprise develop framework
230 lines (206 loc) • 6.3 kB
JavaScript
import React from 'react';
import { action as MetaAction, AppLoader } from 'edf-meta-engine';
import debounce from 'lodash.debounce'
import extend from './extend';
import config from './config';
class action {
constructor(option) {
this.metaAction = option.metaAction;
this.extendAction = option.extendAction;
this.config = config.current;
this.webapi = this.config.webapi;
this.search = debounce(this.search, 800);
}
onInit = ({ component, injections }) => {
this.extendAction.gridAction.onInit({ component, injections });
this.component = component;
this.injections = injections;
injections.reduce('init');
this.load();
// 再次进入 refresh
let addEventListener = this.component.props.addEventListener;
if (addEventListener) {
addEventListener('onTabFocus', :: this.load);
}
};
load = async (page) => {
if (!page) {
const form = this.metaAction.gf('data.pagination')
.toJS();
page = { currentPage: form.current, pageSize: form.pageSize };
}
const params = this.metaAction.gf('data.entity.fuzzyCondition')
this.metaAction.sf('data.other.loading', true);
this.getData(page,params)
.then((res) => {
this.injections.reduce('load', res);
this.metaAction.sf('data.other.loading', false);
});
};
search = () => this.load()
heightCount = () => {
let name = '';
if (this.component.props.modelStatus && (this.component.props.modelStatus == 1 || this.component.props.modelStatus == 2)) {
name = 'app-list-inventory-contentHeight';
}
return name;
};
getListRowsCount = () => {
return this.metaAction.gf('data.list').size;
};
//删除档案
delClick = (inventory) => (e) => {
this.del([inventory]);
};
//批量删除
delClickBatch = () => {
let selectedArrInfo = this.extendAction.gridAction.getSelectedInfo('dataGrid');
if (!selectedArrInfo.length) {
this.metaAction.toast('warning', '请选择存货');
return;
}
this.del(selectedArrInfo);
};
del = async (list) => {
const ret = await this.metaAction.modal('confirm', {
title: '删除',
content: '确认删除?'
});
if (ret) {
let listData = [],
inventoryData = this.metaAction.gf('data.list')
.toJS();
list.forEach((data) => {
inventoryData.forEach((obj) => {
if (data.id == obj.id) {
listData.push(obj);
}
});
});
let response = await this.webapi.inventory.delete(listData);
if (response.length && response.length > 0) {
response.forEach((data) => {
this.metaAction.toast('warn', data.message);
});
} else {
this.metaAction.toast('success', '删除成功');
}
this.load();
}
};
//修改档案
modifyDetail = (id) => (e) => {
let personId = id ? id : null;
this.add(personId);
};
//新增档案
addClick = () => {
this.add();
};
add = (id) => {
let option = { title: '', appName: '', id: id };
option.title = '存货';
option.appName = 'app-card-inventory';
this.addModel(option);
};
addModel = async (option) => {
const ret = await this.metaAction.modal('show', {
title: option.title,
className: 'app-list-inventory-modal',
wrapClassName: 'card-archive',
width: 800,
height: 530,
children: this.metaAction.loadApp(option.appName, {
store: this.component.props.store,
personId: option.id
})
});
if (ret) {
this.load();
}
};
selectRow = (rowIndex) => (e) => {
this.injections.reduce('selectRow', rowIndex, e.target.checked);
};
//分页修改
pageChanged = (currentPage, pageSize) => {
if (pageSize == null || pageSize == undefined) {
pageSize = this.metaAction.gf('data.pagination')
.toJS().pageSize;
}
let page = { currentPage, pageSize };
this.load(page);
};
//获取列表内容
getData = async (pageInfo,params) => {
let response,
pagination = this.metaAction.gf('data.pagination'),
page = {
pageSize: pagination.toJS().pageSize
},
entity = {
fuzzyCondition:''
};
if (pageInfo && pageInfo['currentPage']) {
page.currentPage = pageInfo.currentPage;
page.pageSize = pageInfo.pageSize;
}
if(params) entity.fuzzyCondition = params;
response = await this.webapi.inventory.query({ page, entity });
return response;
};
//人员的停用状态
personStatusClick = (name, index) => (e) => {
let status = this.metaAction.gf('data.status');
this.setStatus(name, index);
};
setStatus = async (option, index) => {
if (option.isEnable) {
option.isEnable = false;
let response = await this.webapi.inventory.update(option);
if (response) {
this.metaAction.toast('success', '停用存货成功');
this.injections.reduce('enable', response, index);
}
} else {
option.isEnable = true;
let response = await this.webapi.inventory.update(option);
if (response) {
this.metaAction.toast('success', '启用存货成功');
this.injections.reduce('enable', response, index);
}
}
};
//批量修改收入类型
revenueTypeChange = async (option) => {
const ret = await this.metaAction.modal('show', {
title: '批量维护收入类型',
className: 'app-list-inventory-modal-revenue',
wrapClassName: 'card-archive',
// okText: '修改新增存货收入类型',
// cancelText: '修改已有存货收入类型',
footer: null,
width: 800,
height: 575,
okType: null,
children: this.metaAction.loadApp('app-card-revenueType', {
store: this.component.props.store,
personId: option.id
})
});
if (ret) {
this.load();
}
};
//停用行置灰
isEnable = (isEnable) => !!isEnable ? '' : 'no-enable'
clickCompent = (obj) => !!obj.isEnable ? <a title={obj.code} onClick={this.modifyDetail(obj.id)}>{obj.code}</a> : <label className={'no-enable'}>{obj.code}</label>
}
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;
}