diff --git a/pc4mobx/hrmSalary/apis/item.js b/pc4mobx/hrmSalary/apis/item.js index 5ad36dbc..ca3c269b 100644 --- a/pc4mobx/hrmSalary/apis/item.js +++ b/pc4mobx/hrmSalary/apis/item.js @@ -144,6 +144,17 @@ export const saveFormual = params => { body: JSON.stringify(params) }).then(res => res.json()) } +// 公式测试 +export const testFormual = params => { + return fetch('/api/bs/hrmsalary/formula/mock', { + method: 'POST', + mode: 'cors', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(params) + }).then(res => res.json()) +} // 根据id获取formual export const detailFormual = params => { diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js index bfad58ff..d0d52100 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js @@ -1,7 +1,9 @@ import React from "react"; -import { Button, Col, Icon, Modal, Row } from "antd"; +import { Button, Col, Icon, message, Modal, Row } from "antd"; import { WeaCheckbox, WeaDialog, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSelect, WeaTextarea } from "ecCom"; import { inject, observer } from "mobx-react"; +import { testFormual } from "../../apis/item"; +import TestModal from "./testModal"; import "./index.less"; @inject("salaryItemStore") @@ -21,7 +23,9 @@ export default class FormalFormModal extends React.Component { } }, returnValue: "", - formulaDatasourceList: [] + formulaDatasourceList: [], + testVisible: false, + showTestVal: "" }; this.group = {}; this.field = {}; @@ -64,7 +68,7 @@ export default class FormalFormModal extends React.Component { let groupParams = {}; if (this.referenceType == "sql") { groupParams = { "referenceType": "sql" }; - }else{ + } else { groupParams = this.props.backCalcType === "issuedItems" ? { "referenceType": "backCalc" } : {}; } salaryAcctImportTemplateParam(groupParams); @@ -174,7 +178,7 @@ export default class FormalFormModal extends React.Component { } // 保存 - handleSave() { + handleSave = () => { const { salaryItemStore } = this.props; const { saveFormual } = salaryItemStore; this.parameters = this.parameters.filter(item => this.state.value.indexOf(item.name) > -1); @@ -208,7 +212,7 @@ export default class FormalFormModal extends React.Component { this.props.onSaveFormal(data); this.props.onCancel(); }); - } + }; /** * name: 获取文本框光标位置 @@ -253,19 +257,87 @@ export default class FormalFormModal extends React.Component { let position = this.insertText(propsTextarea, fieldName); // 光标的位置 } + handleChangeTestValue = (record, value) => { + if (!record && !value) { + this.parameters = _.map(this.parameters, item => ({ ...item, content: null })); + this.setState({ + showTestVal: "显示结果" + }); + } else { + this.parameters = _.map(this.parameters, item => { + if (item.id === record.id) { + return { + ...item, + content: value + }; + } + return { ...item }; + }); + } + this.forceUpdate(); + }; + handleImplement = () => { + this.parameters = this.parameters.filter(item => this.state.value.indexOf(item.name) > -1); + let result = []; + this.parameters.map(item => { + let flag = false; + result.map(i => { + if (item.fieldId == i.fieldId) { + flag = true; + } + }); + if (!flag) { + result.push(item); + } + }); + this.parameters = result; + let params = { + name: "公式1", + description: "备注", + module: "salary", + useFor: "salaryitem", + returnType: this.props.dataType || this.state.returnType, + validateType: this.props.dataType || this.state.returnType, + extendParam: JSON.stringify(this.state.extendParam), + formula: this.state.value, + parameters: this.parameters, + referenceType: this.referenceType == "" ? this.props.valueType == "2" ? "formula" : this.props.valueType == "3" ? "sql" : "" : this.referenceType + }; + testFormual(params).then(({ status, data, errormsg }) => { + if (status) { + message.success("测试结果已更新"); + this.setState({ + showTestVal: data + }); + } else { + message.error(errormsg || ""); + } + }); + }; + render() { const { salaryItemStore } = this.props; const { searchGroup, searchFields } = salaryItemStore; - const { value, formulaDatasourceList, extendParam } = this.state; + const { value, formulaDatasourceList, extendParam, testVisible, showTestVal } = this.state; + const title =