import { observable, action, toJS } from "mobx"; import { WeaForm } from "comsMobx"; import isEmpty from 'lodash/isEmpty' import { WeaTableNew } from "comsMobx"; import { Modal, message } from "antd"; import { i18n } from "../public/i18n"; import forEach from 'lodash/forEach' import * as Api from '../apis/resource'; // 引入API接口文件 export class ResourceExtendStore { @observable form = new WeaForm(); @observable tableInfo = [] @observable conditions = []; @observable isEditor = false; @observable isNew = true; @observable loading = true; @observable tabInfo = []; @observable selectedKey = '0'; @observable detailSelectedKey = '0'; @observable topTab = []; @observable buttons = {}; @observable id = ''; //人员id @observable date = ''; @observable personalEditTables; @observable tabkey = '0' @observable selectedRowKeys = []; @observable selectedRows = []; @action onRowSelect = (keys) => { this.setSelectedRowKeys(keys); } @action setSelectedRowKeys = (keys) => { this.selectedRowKeys = keys; } @action edit = () => { this.isEditor = true; this.getData(); this.getTabInfo(); this.detailSelectedKey = '0' } init = () => { this.detailSelectedKey = '0' this.isEditor = false; } save = () => { if (this.loading) return; this.form.validateForm().then(f => { if (f.isValid) { this.loading = true; if (this.personalEditTables) { const targetDatas = this.tableInfo[this.detailSelectedKey].tabinfo.datas, isPass = (targetDatas.length > 0) ? this.personalEditTables.refs.edit.doRequiredCheck().pass : true if (isPass) { this.editResource() } else { this.loading = false; } } else { this.editResource(); } } else { f.showErrors(); this.setDate(new Date()); this.loading = false; } }) } editResource = () => { let pDatas = this.form.getFormParams(); Api.editResource({ ...{ id: this.id }, ...pDatas, ...this.getTableEditParams() }).then(data => { if (data.code == 200) { message.success(i18n.message.saveSuccess()); this.init(); this.getData(); this.selectedRowKeys = []; } else { message.warning(data.message); } this.loading = false; }, error => { message.warning(error.message); this.loading = false; }) } getTableEditParams = () => { const params = {}; this.tableInfo && this.tableInfo.forEach(t => { t.tabinfo.datas = t.tabinfo.datas || []; params[t.tabinfo.rownum] = t.tabinfo.datas.length; t.tabinfo && t.tabinfo.datas && t.tabinfo.datas.forEach((item, index) => { !isEmpty(item) && forEach(item, (value, key) => { Object.assign(params, { [`${key}_${index}`]: value }); }) }) }) return params } getData = () => { this.setLoading(true); let params = { viewAttr: this.isEditor ? 2 : 1, id: this.id, viewCondition:this.selectedKey } Api.getResourceExtendForm(params).then((res) => { if (res.code === 200) { res.data.result.conditions && this.form.initFormFields(res.data.result.conditions); res.data.result.conditions && this.setConditions(res.data.result.conditions); this.tableInfo = this.handleTable(res.data.result.tables); this.getTabInfo(); res.data.result.buttons && this.setButtons(res.data.result.buttons); res.data.result.tabInfo && this.setTopTab(res.data.result.tabInfo); this.isEditor && this.getSelectedRows(); this.setLoading(false); } else { message.warning(res.msg); } }, error => { message.warning(error.msg); }) } handleTable = (datas) => { return datas && datas.map(data => { const { tabinfo: { columns } } = data; const length = columns.length; columns.map(c => { c.width = `${95 / length}%` }) return data }) } getTabInfo = () => { this.tabInfo = []; this.tableInfo && this.tableInfo.forEach((c, idx) => { if (!c.hide) { this.tabInfo.push({ key: `${idx}`, title: c.tabname, }) } }) //if (!isEmpty(this.tabInfo)) this.tabkey = this.tabInfo[0].key; if (!isEmpty(this.tabInfo)) this.detailSelectedKey = this.tabInfo[0].key; } setLoading(val) { this.loading = val; } updateTabKey = (key) => { this.tabKey = key; } updateDetailSelectedKey =(key) => { this.detailSelectedKey = key; } updateTableInfo = (data) => { this.tableInfo = data } setSelectedKey = (key) => { this.selectedKey = key; } getSelectedRows = () => { const selectedRows = []; this.tableInfo.forEach(t => { const singleTableRows = []; t.tabinfo.datas.forEach((data, i) => { if (data.viewAttr === 1) { singleTableRows.push(i); } }); selectedRows.push(singleTableRows); }) this.selectedRows = selectedRows; } setTopTab(topTab) { this.topTab = topTab; } changeData(key) { this.setSelectedKey(key); this.getData(); } setId(id) { this.id = id; } setPersonalEditTables = (ref) => { this.personalEditTables = ref; } setConditions(conditions) { this.conditions = conditions; } setButtons(buttons) { this.buttons = buttons; } }