编号设置接口联调完成80%

This commit is contained in:
liyongshun 2022-06-07 18:01:50 +08:00
parent 204613099a
commit 76051adc16
12 changed files with 1539 additions and 218 deletions

View File

@ -0,0 +1,50 @@
/*
* Author: 黎永顺
* Description:
* Date: 2022-06-07 09:52:01
* LastEditTime: 2022-06-07 17:00:34
*/
import { WeaTools } from "ecCom";
/**
* name:获取编号设置
* param {*} params serialtype SUBCOMPANY分部
* return {*}
*/
export const getCodeSetting = (params) => {
return WeaTools.callApi("/api/hrm/codeSetting/getCodeSetting", "GET", params);
};
/**
* name: 保存编号设置
* param {*} params
* return {*}
*/
export const saveOrUpdateCodeSetting = (params) => {
return WeaTools.callApi(
"/api/hrm/codeSetting/saveOrUpdateCodeSetting",
"POST",
params
);
};
/**
* name: 保存起始编号设置
* param {*} params
* return {*}
*/
export const saveStartNum = (params) => {
return WeaTools.callApi("/api/hrm/codeSetting/saveStartNum", "POST", params);
};
/**
* name: 起始编号设置
* param {*} params
* return {*}
*/
export const getStartNumForm = (params) => {
return WeaTools.callApi(
"/api/hrm/codeSetting/getStartNumForm",
"GET",
params
);
};

View File

@ -2,7 +2,7 @@
* Author: 黎永顺 * Author: 黎永顺
* Description: * Description:
* Date: 2022-05-17 16:02:56 * Date: 2022-05-17 16:02:56
* LastEditTime: 2022-05-18 18:03:07 * LastEditTime: 2022-06-07 15:30:43
*/ */
import React, { Component, Fragment } from "react"; import React, { Component, Fragment } from "react";
import { Button, Modal } from "antd"; import { Button, Modal } from "antd";
@ -13,21 +13,13 @@ import {
WeaFormItem, WeaFormItem,
WeaSelect, WeaSelect,
WeaInput, WeaInput,
WeaInputNumber,
} from "ecCom"; } from "ecCom";
import Preview from "./preview"; import Preview from "./preview";
import { i18n } from "../../../public/i18n"; import { i18n } from "../../../public/i18n";
import _ from "lodash"; import _ from "lodash";
import "../index.less"; import "../index.less";
const dataSource = [
{
value: "",
numFieldName: "字符串",
numField: "string",
},
{ value: "3", numFieldName: "流水号位数", numField: "number" },
];
const options = [ const options = [
{ {
key: "string", key: "string",
@ -51,12 +43,69 @@ class NumberComposition extends Component {
super(); super();
this.state = { this.state = {
visible: false, visible: false,
numField: "string", objectData: {
numFieldName: "字符串", numField: "string",
dataSource, numFieldName: "字符串",
},
dataSource: [],
}; };
} }
componentDidMount() {
const enums = {
STRING: "字符串",
NUMBER: "流水号位数",
YEAR: "当前年份",
MONTH: "当前月份",
DAY: "当前日期",
};
let num = 0;
const { dataSource: details, onChange } = this.props;
for (let i in details) {
if (details[i].ruletype === "STRING") {
details[i].showorder = num;
num++;
}
}
const tmpV = _.map(details, (it, index) => {
const { ruletype, rulevalue, showorder } = it;
return {
id: index,
value: rulevalue,
strLogo: Number(showorder) + 1,
numFieldName:
ruletype === "STRING"
? `${enums[ruletype]}${Number(showorder) + 1}`
: enums[ruletype],
numField: _.toLower(ruletype),
};
});
this.setState(
{
dataSource: !_.isEmpty(tmpV)
? tmpV
: [
{
id: 1,
value: "",
strLogo: 1,
numFieldName: "字符串1",
numField: "string",
},
{
id: 2,
value: 3,
numFieldName: "流水号位数",
numField: "number",
},
],
},
() => {
onChange && onChange(this.state.dataSource);
}
);
}
/** /**
* name:复选框禁用 * name:复选框禁用
* param undefined * param undefined
@ -82,20 +131,26 @@ class NumberComposition extends Component {
* return {*} * return {*}
*/ */
handleSave = () => { handleSave = () => {
const { numField, numFieldName, dataSource } = this.state; let newDataSource = [];
const objWrite = { const { objectData, dataSource } = this.state;
value: "", const { onChange } = this.props;
numFieldName, const { numField, numFieldName } = objectData;
numField, const stringRow = _.filter(dataSource, (it) => it.numField === "string"); //字符串列表
}; const maxStrLen = !_.isEmpty(stringRow)
const objView = { ? _.sortBy(stringRow, function (o) {
com: { return -o.strLogo;
value: [{ key: numField, label: "", type: "TEXT" }], })[0].strLogo
}, : 0; //字符串列表
[numField]: "", const maxIdLen = _.sortBy(dataSource, function (o) {
numFieldName, return -o.id;
numField, })[0].id; //字符串列表
};
const index = _.findIndex(dataSource, (item) => item.numField !== "string");
const lastStrindex = _.findLastIndex(
dataSource,
(item) => item.numField === "string"
);
if (numField === "year" || numField === "month" || numField === "day") { if (numField === "year" || numField === "month" || numField === "day") {
const hasYearOrMonthOrDay = _.some( const hasYearOrMonthOrDay = _.some(
dataSource, dataSource,
@ -122,87 +177,158 @@ class NumberComposition extends Component {
}); });
return; return;
} }
this.setState({
visible: false,
numField: "string",
numFieldName: "字符串",
dataSource: [...dataSource, objView],
});
} else { } else {
this.showConfirm(); this.showConfirm();
return;
} }
} else {
this.setState({
visible: false,
numField: "string",
numFieldName: "字符串",
dataSource: [...dataSource, objWrite],
});
} }
// 如果前n项为空或者当中包含非字符串项
if (index > lastStrindex) {
if (numField === "month") {
const tmpVLastYearindex = _.findLastIndex(
dataSource,
(item) => item.numField === "year"
);
dataSource.splice(tmpVLastYearindex + 1, 0, {
id: maxIdLen + 1,
value: "",
numFieldName:
numField === "string"
? `${numFieldName}${stringRow.length + 1}`
: numFieldName,
numField,
});
} else if (numField === "day") {
const tmpVLastMonthindex = _.findLastIndex(
dataSource,
(item) => item.numField === "month"
);
dataSource.splice(tmpVLastMonthindex + 1, 0, {
id: maxIdLen + 1,
value: "",
numFieldName:
numField === "string"
? `${numFieldName}${stringRow.length + 1}`
: numFieldName,
numField,
});
} else {
const tmpVLastStrindex = _.findLastIndex(
dataSource,
(item) => item.numField === "string"
);
dataSource.splice(tmpVLastStrindex + 1, 0, {
id: maxIdLen + 1,
value: "",
strLogo: maxStrLen + 1,
numFieldName:
numField === "string"
? `${numFieldName}${maxStrLen + 1}`
: numFieldName,
numField,
});
}
newDataSource = [...dataSource];
} else {
if (numField === "month") {
const tmpVLastYearindex = _.findLastIndex(
dataSource,
(item) => item.numField === "year"
);
dataSource.splice(tmpVLastYearindex + 1, 0, {
id: maxIdLen + 1,
value: "",
numFieldName:
numField === "string"
? `${numFieldName}${stringRow.length + 1}`
: numFieldName,
numField,
});
} else if (numField === "day") {
const tmpVLastMonthindex = _.findLastIndex(
dataSource,
(item) => item.numField === "month"
);
dataSource.splice(tmpVLastMonthindex + 1, 0, {
id: maxIdLen + 1,
value: "",
numFieldName:
numField === "string"
? `${numFieldName}${stringRow.length + 1}`
: numFieldName,
numField,
});
} else {
const tmpVLastStrindex = _.findLastIndex(
dataSource,
(item) => item.numField === "string"
);
dataSource.splice(tmpVLastStrindex, 0, {
id: maxIdLen + 1,
value: "",
strLogo: maxStrLen + 1,
numFieldName:
numField === "string"
? `${numFieldName}${maxStrLen + 1}`
: numFieldName,
numField,
});
}
newDataSource = [...dataSource];
}
this.setState({
visible: false,
objectData: { numField: "string", numFieldName: "字符串" },
dataSource: newDataSource,
});
onChange && onChange(newDataSource);
}; };
/** /**
* name:年月日字段重复提示 * name:年月日字段重复提示
* return {*} * return {*}
*/ */
showConfirm = () => { showConfirm = () => {
const { numFieldName } = this.state; const { objectData } = this.state;
Modal.warning({ Modal.warning({
title: "信息确认", title: "信息确认",
content: `已经添加过一个${numFieldName},请选择其他编号字段!`, content: `已经添加过一个${objectData.numFieldName},请选择其他编号字段!`,
footer: [], footer: [],
onOk() {}, onOk() {},
okText: "确认", okText: "确认",
}); });
}; };
/**
* name: 编号字段删除 handleChangeInput = (value, index, record) => {
* return {*}
*/
handleDeleteTable = (keys, datas) => {
const { dataSource } = this.state; const { dataSource } = this.state;
const stringRow = _.filter(dataSource, (it) => it.numField === "string"); const { onChange } = this.props;
const yearRow = _.filter(dataSource, (it) => it.numField === "year"); this.setState(
const monthRow = _.filter(dataSource, (it) => it.numField === "month"); {
const dayRow = _.filter(dataSource, (it) => it.numField === "day"); dataSource: _.map(dataSource, (it) => {
const disableRow = _.filter(dataSource, (it) => it.numField === "number"); if (it.id === record.id) {
const tmpV = [ return {
...stringRow, ...it,
...yearRow, value,
...monthRow, };
...dayRow, }
...disableRow, return { ...it };
]; }),
this.setState({ },
dataSource: _.filter(tmpV, (it, idx) => !keys.includes(idx)), () => {
}); onChange && onChange(this.state.dataSource);
}
);
}; };
handleChangeInput = (value, index) => { handleDragChange = (dataSource) => {
const { dataSource } = this.state; const { onChange } = this.props;
const stringRow = _.filter(dataSource, (it) => it.numField === "string"); this.setState({ dataSource });
const yearRow = _.filter(dataSource, (it) => it.numField === "year"); onChange && onChange(dataSource);
const monthRow = _.filter(dataSource, (it) => it.numField === "month");
const dayRow = _.filter(dataSource, (it) => it.numField === "day");
const disableRow = _.filter(dataSource, (it) => it.numField === "number");
const tmpV = _.map(
[...stringRow, ...yearRow, ...monthRow, ...dayRow, ...disableRow],
(it, idx) => ({ ...it, key: idx })
);
this.setState({
dataSource: _.map(tmpV, (it) => {
if (it.key === index) {
return {
...it,
value,
};
}
return { ...it };
}),
});
}; };
render() { render() {
const { visible, numField, dataSource } = this.state; const { visible, objectData, dataSource } = this.state;
const { numField, numFieldName } = objectData;
const columns = [ const columns = [
{ {
title: "", title: "",
@ -230,6 +356,17 @@ class NumberComposition extends Component {
) { ) {
return <span></span>; return <span></span>;
} }
if (numField === "number") {
return (
<WeaInputNumber
id="customNumberInput"
value={record.value}
onChange={(value) =>
this.handleChangeInput(value, index, record)
}
/>
);
}
return ( return (
<WeaInput <WeaInput
id="custom" id="custom"
@ -242,9 +379,6 @@ class NumberComposition extends Component {
}, },
}, },
], ],
// dataIndex: "value",
// key: "value",
// com: [{ label: "", type: "INPUT", viewAttr: 2, key: "value" }],
colSpan: 1, colSpan: 1,
width: "70%", width: "70%",
}, },
@ -262,32 +396,13 @@ class NumberComposition extends Component {
}_WeaMoreButton@e4f4n1`} }_WeaMoreButton@e4f4n1`}
/>, />,
]; ];
const stringRow = _.map(
_.filter(dataSource, (it) => it.numField === "string"),
(item, index) => {
return {
...item,
numFieldName: `${item.numFieldName}${index + 1}`,
};
}
);
const yearRow = _.filter(dataSource, (it) => it.numField === "year");
const monthRow = _.filter(dataSource, (it) => it.numField === "month");
const dayRow = _.filter(dataSource, (it) => it.numField === "day");
const disableRow = _.filter(dataSource, (it) => it.numField === "number");
return ( return (
<Fragment> <Fragment>
<WeaTableEdit <WeaTableEdit
draggable={true} draggable={true}
columns={columns} columns={columns}
datas={[ datas={dataSource}
...stringRow,
...yearRow,
...monthRow,
...dayRow,
...disableRow,
]}
getRowSelection={this.getRowSelection} getRowSelection={this.getRowSelection}
pushTitleIntoHeader pushTitleIntoHeader
showCopy={false} showCopy={false}
@ -299,18 +414,10 @@ class NumberComposition extends Component {
visible: true, visible: true,
}) })
} }
onDelete={this.handleDeleteTable} onChange={this.handleDragChange}
/> />
{/* 预览 */} {/* 预览 */}
<Preview <Preview dataSource={dataSource} />
dataSource={[
...stringRow,
...yearRow,
...monthRow,
...dayRow,
...disableRow,
]}
/>
{/* 新增弹框 */} {/* 新增弹框 */}
<WeaDialog <WeaDialog
onCancel={() => onCancel={() =>
@ -335,7 +442,7 @@ class NumberComposition extends Component {
value={numField} value={numField}
viewAttr={2} viewAttr={2}
onChange={(numField, numFieldName) => { onChange={(numField, numFieldName) => {
this.setState({ numField, numFieldName }); this.setState({ objectData: { numField, numFieldName } });
}} }}
/> />
</WeaFormItem> </WeaFormItem>

View File

@ -0,0 +1,40 @@
/*
* Author: 黎永顺
* Description: 起始编号设置
* Date: 2022-06-07 15:27:43
* LastEditTime: 2022-06-07 17:21:03
*/
import React, { Component } from "react";
import { WeaTableEdit, WeaInputNumber } from "ecCom";
class StartNumberSetting extends Component {
handleChangeTable = (datas) => {
const { onChange, startNumberInfo } = this.props;
const newColumns = _.map(startNumberInfo.columns, (it) => ({
...it,
com: [{ type: "INPUTNUMBER", key: it.dataIndex, viewAttr: 3, min: 0 }],
}));
onChange && onChange(newColumns, datas);
};
render() {
const { startNumberInfo } = this.props;
const newColumns = _.map(startNumberInfo.columns, (it) => ({
...it,
com: [{ type: "INPUTNUMBER", key: it.dataIndex, viewAttr: 3, min: 0 }],
}));
return (
<WeaTableEdit
draggable={false}
showAdd={false}
showDelete={false}
showCopy={false}
tableProps={{ rowSelection: {} }}
columns={newColumns}
datas={startNumberInfo.dataSource}
onChange={this.handleChangeTable}
/>
);
}
}
export default StartNumberSetting;

View File

@ -2,27 +2,117 @@
* Author: 黎永顺 * Author: 黎永顺
* Description: 起始编号及预留编号设置 * Description: 起始编号及预留编号设置
* Date: 2022-05-17 15:51:41 * Date: 2022-05-17 15:51:41
* LastEditTime: 2022-05-17 16:01:33 * LastEditTime: 2022-06-07 17:40:30
*/ */
import React, { Component, Fragment } from "react"; import React, { Component, Fragment } from "react";
import { WeaFormItem } from "ecCom"; import { Button, Modal } from "antd";
import StartNumberSetting from "./startNumberSetting";
import { WeaFormItem, WeaDialog, WeaMoreButton } from "ecCom";
import { i18n } from "../../../public/i18n";
class StartReservedNumberSet extends Component { class StartReservedNumberSet extends Component {
constructor() {
super();
this.state = {
dialogProps: {
type: "start",
visible: false,
title: "",
},
};
}
handleClickStartNumber = (type) => {
const { onSet } = this.props;
const { dialogProps } = this.state;
onSet && onSet(type);
this.setState({
dialogProps: {
...dialogProps,
type,
visible: true,
title: type === "start" ? "起始编号" : "预留编号",
},
});
};
handleChangeTable = (newColumns, datas) => {
const { onChange } = this.props;
onChange && onChange(newColumns, datas);
};
handleSave = () => {
const { onSaveStartNumber } = this.props;
onSaveStartNumber && onSaveStartNumber();
};
handleClose = () => {
this.setState({
dialogProps: {
...this.state.dialogProps,
visible: false,
},
});
};
render() { render() {
const { dialogProps } = this.state;
const { type } = dialogProps;
const { startNumberInfo } = this.props;
return ( return (
<Fragment> <Fragment>
<WeaFormItem <WeaFormItem
label="起始编号" label="起始编号"
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}> wrapperCol={{ span: 16 }}>
<i className="icon-coms-Flow-setting"></i> <i
className="icon-coms-Flow-setting"
onClick={() => this.handleClickStartNumber("start")}></i>
</WeaFormItem> </WeaFormItem>
<WeaFormItem <WeaFormItem
label="预留编号" label="预留编号"
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}> wrapperCol={{ span: 16 }}>
<i className="icon-coms-Flow-setting"></i> <i
className="icon-coms-Flow-setting"
onClick={() => this.handleClickStartNumber("reserved")}></i>
</WeaFormItem> </WeaFormItem>
{/* 起始/预留编号设置 */}
<WeaDialog
onCancel={this.handleClose}
icon="icon-coms-hrm"
iconBgcolor="#217346"
{...dialogProps}
hasScroll
style={{ width: 900 }}
maxHeight={150}
buttons={
type === "start"
? [
<Button
ecId={`${
(this && this.props && this.props.ecId) || ""
}_Button@jd6baw`}
onClick={this.handleSave}
type="primary">
{i18n.button.save()}
</Button>,
<WeaMoreButton
ecId={`${
(this && this.props && this.props.ecId) || ""
}_WeaMoreButton@e4f4n1`}
/>,
]
: [
<WeaMoreButton
ecId={`${
(this && this.props && this.props.ecId) || ""
}_WeaMoreButton@e4f4n1`}
/>,
]
}>
{type === "start" && (
<StartNumberSetting
startNumberInfo={startNumberInfo}
onChange={this.handleChangeTable}
/>
)}
</WeaDialog>
</Fragment> </Fragment>
); );
} }

View File

@ -2,35 +2,161 @@
* Author: 黎永顺 * Author: 黎永顺
* Description: 分部编号设置 * Description: 分部编号设置
* Date: 2022-05-17 14:30:57 * Date: 2022-05-17 14:30:57
* LastEditTime: 2022-06-06 09:42:23 * LastEditTime: 2022-06-07 17:49:14
*/ */
import React, { Component, Fragment } from "react"; import React, { Component, Fragment } from "react";
import { Button } from "antd"; import { inject, observer } from "mobx-react";
import { WeaTop, WeaFormItem, WeaCheckbox, WeaSearchGroup } from "ecCom"; import { Button, message } from "antd";
import {
WeaTop,
WeaFormItem,
WeaCheckbox,
WeaSearchGroup,
WeaSelect,
WeaHelpfulTip,
} from "ecCom";
import StartReservedNumberSet from "./components/startReservedNumberSet"; import StartReservedNumberSet from "./components/startReservedNumberSet";
import NumberComposition from "./components/numberComposition"; import NumberComposition from "./components/numberComposition";
import { i18n } from "../../public/i18n"; import { i18n } from "../../public/i18n";
import moment from "moment";
import "./index.less"; import "./index.less";
const btns = [<Button type="primary">保存</Button>]; @inject("numberSet")
const dropMenuDatas = [ @observer
{
key: "save",
disabled: false,
icon: <i className="icon-coms-Preservation" />,
content: "保存",
onClick: (key) => alert(`点击了搜索 key = ${key}`),
},
];
export default class BranchNumSetting extends Component { export default class BranchNumSetting extends Component {
constructor() { constructor() {
super(); super();
this.state = { this.state = {
checkVal: "0", options: [],
loading: false,
dataSource: [],
startNumberInfo: {
columns: [],
dataSource: [],
},
subCompanyInfo: {
details: [],
serialenable: "0",
dateSerial: {
enable: "0",
key: "",
},
},
}; };
} }
componentDidMount() {} componentDidMount() {
this.getCodeSetting();
}
getCodeSetting = () => {
const { numberSet } = this.props;
numberSet
.getCodeSetting({ serialtype: "SUBCOMPANY" })
.then(({ api_status, details, serialenable, dateSerial = {} }) => {
if (api_status && !_.isEmpty(details)) {
this.setState({
subCompanyInfo: { details, serialenable, dateSerial },
});
}
});
};
handleSubmit = () => {
const { numberSet } = this.props;
const { dataSource, subCompanyInfo } = this.state;
const { serialenable, dateSerial } = subCompanyInfo;
const details = _.map(dataSource, (it, showorder) => {
const { numField, value: rulevalue } = it;
return {
ruletype: _.upperCase(numField),
rulevalue,
showorder,
};
});
const payload = {
datas: JSON.stringify({
serialenable,
details,
dateSerial,
serialtype: "SUBCOMPANY",
}),
};
this.setState({ loading: true });
numberSet.saveOrUpdateCodeSetting(payload).then(({ api_status }) => {
this.setState({ loading: false });
if (api_status) {
message.success("保存成功");
}
});
};
handleChangeCode = (data) => {
const tmpV = _.filter(
data,
(it) =>
it.numField === "year" ||
it.numField === "month" ||
it.numField === "day"
);
this.setState({
dataSource: _.cloneDeep(data),
options: _.map(tmpV, (it) => {
const { numFieldName: showname, numField: key } = it;
return { key: _.upperCase(key), showname };
}),
});
};
handleSetNumber = (type) => {
this.handleSubmit();
const { numberSet } = this.props;
if (type === "start") {
const payload = {
coderuleid: 1,
type: "",
dateStart: moment().format("YYYY"),
dateEnd: moment().format("YYYY"),
subCompanyId: "",
deptId: "",
jobtitlesId: "",
};
numberSet
.getStartNumForm(payload)
.then(({ api_status, columns, dataSource }) => {
if (api_status) {
this.setState({
startNumberInfo: { columns, dataSource },
});
}
});
}
};
handleChangeTable = (newColumns, datas) => {
this.setState({
startNumberInfo: {
...this.state.startNumberInfo,
columns: newColumns,
dataSource: datas,
},
});
};
handleSubmitStartNumber = () => {
const { numberSet } = this.props;
const payload = {
datas: JSON.stringify({
coderuleid: 1,
...this.state.startNumberInfo,
}),
};
numberSet.saveStartNum(payload).then(({ api_status }) => {
if (api_status) {
message.success("保存成功");
this.numberSetRef.handleClose();
}
});
};
/** /**
* name:提示文本 * name:提示文本
@ -49,7 +175,22 @@ export default class BranchNumSetting extends Component {
}; };
render() { render() {
const { checkVal } = this.state; const { options, subCompanyInfo, loading, startNumberInfo } = this.state;
const { details, serialenable, dateSerial } = subCompanyInfo;
const btns = [
<Button type="primary" onClick={this.handleSubmit} loading={loading}>
保存
</Button>,
];
const dropMenuDatas = [
{
key: "save",
disabled: false,
icon: <i className="icon-coms-Preservation" />,
content: "保存",
onClick: (key) => this.handleSubmit(),
},
];
return ( return (
<div className="branch-wapper"> <div className="branch-wapper">
<WeaTop <WeaTop
@ -67,29 +208,100 @@ export default class BranchNumSetting extends Component {
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}> wrapperCol={{ span: 16 }}>
<WeaCheckbox <WeaCheckbox
value={checkVal} value={serialenable}
helpfulTip={this.helpContent} helpfulTip={this.helpContent}
helpfulTipProps={{ placement: "top" }} helpfulTipProps={{ placement: "top" }}
display="switch" display="switch"
id="num-set-switch" id="num-set-switch"
onChange={(checkVal) => this.setState({ checkVal })} onChange={(checkVal) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
serialenable: checkVal,
},
})
}
/> />
</WeaFormItem> </WeaFormItem>
</div> </div>
{/* 内容区 */} {/* 内容区 */}
{checkVal === "1" && ( {serialenable === "1" && (
<Fragment> <Fragment>
<div className="numberComposition"> <div className="numberComposition">
<WeaSearchGroup title={"编号组成"} showGroup> <WeaSearchGroup title={"编号组成"} showGroup>
<NumberComposition /> <NumberComposition
onChange={this.handleChangeCode}
dataSource={details}
/>
</WeaSearchGroup> </WeaSearchGroup>
</div> </div>
{!_.isEmpty(options) && (
<div className="codeNumbering">
<WeaSearchGroup title={"编号流水规则"} showGroup>
<div className="switch-wrapper">
<WeaFormItem
label="日期单独流水"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}>
<div className="codeNumbering-operateWapper">
<WeaCheckbox
value={dateSerial.enable ? dateSerial.enable : "0"}
display="switch"
id="dept-date-set-switch"
onChange={(isSingle) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
dateSerial: {
...dateSerial,
enable: isSingle,
},
},
})
}
/>
{dateSerial.enable == "1" && (
<WeaSelect
options={options}
value={dateSerial.key}
detailtype={3}
supportCancel
onChange={(key) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
dateSerial: {
...dateSerial,
key,
},
},
})
}
/>
)}
<WeaHelpfulTip
width={200}
title="开启后可设置按年、按月或按天单独流水如设置按年单独流水那每年的1月1日开始流水号从001开始重新流水。"
placement="topLeft"
/>
</div>
</WeaFormItem>
</div>
</WeaSearchGroup>
</div>
)}
<div className="startReservedNumberSet"> <div className="startReservedNumberSet">
<WeaSearchGroup <WeaSearchGroup
title={"起始编号及预留编号设置"} title={"起始编号及预留编号设置"}
showGroup showGroup
center> center>
<StartReservedNumberSet /> <StartReservedNumberSet
ref={(dom) => (this.numberSetRef = dom)}
onSet={this.handleSetNumber}
startNumberInfo={startNumberInfo}
onChange={this.handleChangeTable}
onSaveStartNumber={this.handleSubmitStartNumber}
/>
</WeaSearchGroup> </WeaSearchGroup>
</div> </div>
</Fragment> </Fragment>

View File

@ -1,11 +1,12 @@
/* /*
* Author: 黎永顺 * Author: 黎永顺
* Description: 部门编号设 * Description: 部门编号设
* Date: 2022-06-06 09:37:39 * Date: 2022-06-06 09:37:39
* LastEditTime: 2022-06-06 10:26:35 * LastEditTime: 2022-06-07 17:44:30
*/ */
import React, { Component, Fragment } from "react"; import React, { Component, Fragment } from "react";
import { Button } from "antd"; import { inject, observer } from "mobx-react";
import { Button, message } from "antd";
import { import {
WeaTop, WeaTop,
WeaFormItem, WeaFormItem,
@ -17,18 +18,146 @@ import {
import StartReservedNumberSet from "../branchNumSetting/components/startReservedNumberSet"; import StartReservedNumberSet from "../branchNumSetting/components/startReservedNumberSet";
import NumberComposition from "../branchNumSetting/components/numberComposition"; import NumberComposition from "../branchNumSetting/components/numberComposition";
import { i18n } from "../../public/i18n"; import { i18n } from "../../public/i18n";
import moment from 'moment';
import "../branchNumSetting/index.less"; import "../branchNumSetting/index.less";
@inject("numberSet")
@observer
export default class DeptNumberSet extends Component { export default class DeptNumberSet extends Component {
constructor() { constructor() {
super(); super();
this.state = { this.state = {
checkVal: "0", options: [],
isSingle: "0", //是否单独流水 loading: false,
singleDate: "month", //日期单独流水 dataSource: [],
startNumberInfo: {
columns: [],
dataSource: [],
},
subCompanyInfo: {
details: [],
serialenable: "0",
dateSerial: {
enable: "0",
key: "",
},
},
}; };
} }
componentDidMount() {
this.getCodeSetting();
}
getCodeSetting = () => {
const { numberSet } = this.props;
numberSet
.getCodeSetting({ serialtype: "DEPARTMENT" })
.then(({ api_status, details, serialenable, dateSerial = {} }) => {
if (api_status && !_.isEmpty(details)) {
this.setState({
subCompanyInfo: { details, serialenable, dateSerial },
});
}
});
};
handleSubmit = () => {
const { numberSet } = this.props;
const { dataSource, subCompanyInfo } = this.state;
const { serialenable, dateSerial } = subCompanyInfo;
const details = _.map(dataSource, (it, showorder) => {
const { numField, value: rulevalue } = it;
return {
ruletype: _.upperCase(numField),
rulevalue,
showorder,
};
});
const payload = {
datas: JSON.stringify({
serialenable,
details,
dateSerial,
serialtype: "DEPARTMENT",
}),
};
this.setState({ loading: true });
numberSet.saveOrUpdateCodeSetting(payload).then(({ api_status }) => {
this.setState({ loading: false });
if (api_status) {
message.success("保存成功");
}
});
};
handleChangeCode = (data) => {
const tmpV = _.filter(
data,
(it) =>
it.numField === "year" ||
it.numField === "month" ||
it.numField === "day"
);
this.setState({
dataSource: _.cloneDeep(data),
options: _.map(tmpV, (it) => {
const { numFieldName: showname, numField: key } = it;
return { key: _.upperCase(key), showname };
}),
});
};
handleSetNumber = (type) => {
this.handleSubmit();
const { numberSet } = this.props;
if (type === "start") {
const payload = {
coderuleid: 2,
type: "",
dateStart: moment().format("YYYY"),
dateEnd: moment().format("YYYY"),
subCompanyId: "",
deptId: "",
jobtitlesId: "",
};
numberSet
.getStartNumForm(payload)
.then(({ api_status, columns, dataSource }) => {
if (api_status) {
this.setState({
startNumberInfo: { columns, dataSource },
});
}
});
}
};
handleChangeTable = (newColumns, datas) => {
this.setState({
startNumberInfo: {
...this.state.startNumberInfo,
columns: newColumns,
dataSource: datas,
},
});
};
handleSubmitStartNumber = () => {
const { numberSet } = this.props;
const payload = {
datas: JSON.stringify({
coderuleid: 2,
...this.state.startNumberInfo,
}),
};
numberSet.saveStartNum(payload).then(({ api_status }) => {
if (api_status) {
message.success("保存成功");
this.numberSetRef.handleClose();
}
});
};
/** /**
* name:提示文本 * name:提示文本
* return {*} * return {*}
@ -45,27 +174,20 @@ export default class DeptNumberSet extends Component {
); );
}; };
render() { render() {
const { checkVal, isSingle, singleDate } = this.state; const { options, subCompanyInfo, loading, startNumberInfo } = this.state;
const btns = [<Button type="primary">保存</Button>]; const { details, serialenable, dateSerial } = subCompanyInfo;
const btns = [
<Button type="primary" onClick={this.handleSubmit} loading={loading}>
保存
</Button>,
];
const dropMenuDatas = [ const dropMenuDatas = [
{ {
key: "save", key: "save",
disabled: false, disabled: false,
icon: <i className="icon-coms-Preservation" />, icon: <i className="icon-coms-Preservation" />,
content: "保存", content: "保存",
onClick: (key) => alert(`点击了搜索 key = ${key}`), onClick: (key) => this.handleSubmit(),
},
];
const options = [
{
key: "month",
selected: false,
showname: "月",
},
{
key: "day",
selected: true,
showname: "日",
}, },
]; ];
return ( return (
@ -85,64 +207,100 @@ export default class DeptNumberSet extends Component {
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}> wrapperCol={{ span: 16 }}>
<WeaCheckbox <WeaCheckbox
value={checkVal} value={serialenable}
helpfulTip={this.helpContent} helpfulTip={this.helpContent}
helpfulTipProps={{ placement: "top" }} helpfulTipProps={{ placement: "top" }}
display="switch" display="switch"
id="num-set-switch" id="num-set-switch"
onChange={(checkVal) => this.setState({ checkVal })} onChange={(checkVal) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
serialenable: checkVal,
},
})
}
/> />
</WeaFormItem> </WeaFormItem>
</div> </div>
{/* 内容区 */} {/* 内容区 */}
{checkVal === "1" && ( {serialenable === "1" && (
<Fragment> <Fragment>
<div className="numberComposition"> <div className="numberComposition">
<WeaSearchGroup title={"编号组成"} showGroup> <WeaSearchGroup title={"编号组成"} showGroup>
<NumberComposition /> <NumberComposition
onChange={this.handleChangeCode}
dataSource={details}
/>
</WeaSearchGroup> </WeaSearchGroup>
</div> </div>
<div className="codeNumbering"> {!_.isEmpty(options) && (
<WeaSearchGroup title={"编号流水规则"} showGroup> <div className="codeNumbering">
<div className="switch-wrapper"> <WeaSearchGroup title={"编号流水规则"} showGroup>
<WeaFormItem <div className="switch-wrapper">
label="日期单独流水" <WeaFormItem
labelCol={{ span: 8 }} label="日期单独流水"
wrapperCol={{ span: 16 }}> labelCol={{ span: 8 }}
<div className="codeNumbering-operateWapper"> wrapperCol={{ span: 16 }}>
<WeaCheckbox <div className="codeNumbering-operateWapper">
value={isSingle} <WeaCheckbox
display="switch" value={dateSerial.enable ? dateSerial.enable : "0"}
id="dept-date-set-switch" display="switch"
onChange={(isSingle) => this.setState({ isSingle })} id="dept-date-set-switch"
/> onChange={(isSingle) =>
{isSingle == "1" && ( this.setState({
<WeaSelect subCompanyInfo: {
options={options} ...subCompanyInfo,
value={singleDate} dateSerial: {
detailtype={3} ...dateSerial,
supportCancel enable: isSingle,
onChange={(v, showname) => { },
console.log("v", v, "showname", showname); },
}} })
}
/> />
)} {dateSerial.enable == "1" && (
<WeaHelpfulTip <WeaSelect
width={200} options={options}
title="开启后可设置按年、按月或按天单独流水如设置按年单独流水那每年的1月1日开始流水号从001开始重新流水。" value={dateSerial.key}
placement="topLeft" detailtype={3}
/> supportCancel
</div> onChange={(key) =>
</WeaFormItem> this.setState({
</div> subCompanyInfo: {
</WeaSearchGroup> ...subCompanyInfo,
</div> dateSerial: {
...dateSerial,
key,
},
},
})
}
/>
)}
<WeaHelpfulTip
width={200}
title="开启后可设置按年、按月或按天单独流水如设置按年单独流水那每年的1月1日开始流水号从001开始重新流水。"
placement="topLeft"
/>
</div>
</WeaFormItem>
</div>
</WeaSearchGroup>
</div>
)}
<div className="startReservedNumberSet"> <div className="startReservedNumberSet">
<WeaSearchGroup <WeaSearchGroup
title={"起始编号及预留编号设置"} title={"起始编号及预留编号设置"}
showGroup showGroup
center> center>
<StartReservedNumberSet /> <StartReservedNumberSet
ref={(dom) => (this.numberSetRef = dom)}
onSet={this.handleSetNumber}
startNumberInfo={startNumberInfo}
onChange={this.handleChangeTable}
onSaveStartNumber={this.handleSubmitStartNumber}
/>
</WeaSearchGroup> </WeaSearchGroup>
</div> </div>
</Fragment> </Fragment>

View File

@ -0,0 +1,312 @@
/*
* Author: 黎永顺
* Description: 岗位编号设置
* Date: 2022-06-06 09:37:39
* LastEditTime: 2022-06-07 17:49:19
*/
import React, { Component, Fragment } from "react";
import { inject, observer } from "mobx-react";
import { Button, message } from "antd";
import {
WeaTop,
WeaFormItem,
WeaCheckbox,
WeaSearchGroup,
WeaSelect,
WeaHelpfulTip,
} from "ecCom";
import StartReservedNumberSet from "../branchNumSetting/components/startReservedNumberSet";
import NumberComposition from "../branchNumSetting/components/numberComposition";
import { i18n } from "../../public/i18n";
import moment from "moment";
import "../branchNumSetting/index.less";
@inject("numberSet")
@observer
export default class PostNumberSet extends Component {
constructor() {
super();
this.state = {
options: [],
loading: false,
dataSource: [],
startNumberInfo: {
columns: [],
dataSource: [],
},
subCompanyInfo: {
details: [],
serialenable: "0",
dateSerial: {
enable: "0",
key: "",
},
},
};
}
componentDidMount() {
this.getCodeSetting();
}
getCodeSetting = () => {
const { numberSet } = this.props;
numberSet
.getCodeSetting({ serialtype: "JOBTITLES" })
.then(({ api_status, details, serialenable, dateSerial = {} }) => {
if (api_status && !_.isEmpty(details)) {
this.setState({
subCompanyInfo: { details, serialenable, dateSerial },
});
}
});
};
handleSubmit = () => {
const { numberSet } = this.props;
const { dataSource, subCompanyInfo } = this.state;
const { serialenable, dateSerial } = subCompanyInfo;
const details = _.map(dataSource, (it, showorder) => {
const { numField, value: rulevalue } = it;
return {
ruletype: _.upperCase(numField),
rulevalue,
showorder,
};
});
const payload = {
datas: JSON.stringify({
serialenable,
details,
dateSerial,
serialtype: "JOBTITLES",
}),
};
this.setState({ loading: true });
numberSet.saveOrUpdateCodeSetting(payload).then(({ api_status }) => {
this.setState({ loading: false });
if (api_status) {
message.success("保存成功");
}
});
};
handleChangeCode = (data) => {
const tmpV = _.filter(
data,
(it) =>
it.numField === "year" ||
it.numField === "month" ||
it.numField === "day"
);
this.setState({
dataSource: _.cloneDeep(data),
options: _.map(tmpV, (it) => {
const { numFieldName: showname, numField: key } = it;
return { key: _.upperCase(key), showname };
}),
});
};
handleSetNumber = (type) => {
this.handleSubmit();
const { numberSet } = this.props;
if (type === "start") {
const payload = {
coderuleid: 3,
type: "",
dateStart: moment().format("YYYY"),
dateEnd: moment().format("YYYY"),
subCompanyId: "",
deptId: "",
jobtitlesId: "",
};
numberSet
.getStartNumForm(payload)
.then(({ api_status, columns, dataSource }) => {
if (api_status) {
this.setState({
startNumberInfo: { columns, dataSource },
});
}
});
}
};
handleChangeTable = (newColumns, datas) => {
this.setState({
startNumberInfo: {
...this.state.startNumberInfo,
columns: newColumns,
dataSource: datas,
},
});
};
handleSubmitStartNumber = () => {
const { numberSet } = this.props;
const payload = {
datas: JSON.stringify({
coderuleid: 3,
...this.state.startNumberInfo,
}),
};
numberSet.saveStartNum(payload).then(({ api_status }) => {
if (api_status) {
message.success("保存成功");
this.numberSetRef.handleClose();
}
});
};
/**
* name:提示文本
* return {*}
*/
helpContent = () => {
return (
<div>
<p>开启后可根据设置的部门编号规则自动生成部门编号涉及场景如下</p>
<p>1.手动新建和手动编辑部门时可选择重新生成编号和选择预留部门编号</p>
<p>2.导入人员-添加时新创建的部门可自动生成部门编号</p>
<p>3.组织结构导入-添加新部门且部门编号列为空时可自动生成部门编号</p>
<p>注意开启前请先确认部门编号字段已启用</p>
</div>
);
};
render() {
const { options, subCompanyInfo, loading, startNumberInfo } = this.state;
const { details, serialenable, dateSerial } = subCompanyInfo;
const btns = [
<Button type="primary" onClick={this.handleSubmit} loading={loading}>
保存
</Button>,
];
const dropMenuDatas = [
{
key: "save",
disabled: false,
icon: <i className="icon-coms-Preservation" />,
content: "保存",
onClick: (key) => this.handleSubmit(),
},
];
return (
<div className="dept-number-set">
<WeaTop
title={i18n.label.postNumSetting()}
icon={<i className="icon-coms-hrm" />}
iconBgcolor="#217346"
buttons={btns}
showDropIcon={true}
dropMenuDatas={dropMenuDatas}
/>
<div className="dept-content">
<div className="switch-wrapper">
<WeaFormItem
label="岗位编号自动生成"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}>
<WeaCheckbox
value={serialenable}
helpfulTip={this.helpContent}
helpfulTipProps={{ placement: "top" }}
display="switch"
id="num-set-switch"
onChange={(checkVal) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
serialenable: checkVal,
},
})
}
/>
</WeaFormItem>
</div>
{/* 内容区 */}
{serialenable === "1" && (
<Fragment>
<div className="numberComposition">
<WeaSearchGroup title={"编号组成"} showGroup>
<NumberComposition
onChange={this.handleChangeCode}
dataSource={details}
/>
</WeaSearchGroup>
</div>
{!_.isEmpty(options) && (
<div className="codeNumbering">
<WeaSearchGroup title={"编号流水规则"} showGroup>
<div className="switch-wrapper">
<WeaFormItem
label="日期单独流水"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}>
<div className="codeNumbering-operateWapper">
<WeaCheckbox
value={dateSerial.enable ? dateSerial.enable : "0"}
display="switch"
id="dept-date-set-switch"
onChange={(isSingle) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
dateSerial: {
...dateSerial,
enable: isSingle,
},
},
})
}
/>
{dateSerial.enable == "1" && (
<WeaSelect
options={options}
value={dateSerial.key}
detailtype={3}
supportCancel
onChange={(key) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
dateSerial: {
...dateSerial,
key,
},
},
})
}
/>
)}
<WeaHelpfulTip
width={200}
title="开启后可设置按年、按月或按天单独流水如设置按年单独流水那每年的1月1日开始流水号从001开始重新流水。"
placement="topLeft"
/>
</div>
</WeaFormItem>
</div>
</WeaSearchGroup>
</div>
)}
<div className="startReservedNumberSet">
<WeaSearchGroup
title={"起始编号及预留编号设置"}
showGroup
center>
<StartReservedNumberSet
ref={(dom) => (this.numberSetRef = dom)}
onSet={this.handleSetNumber}
startNumberInfo={startNumberInfo}
onChange={this.handleChangeTable}
onSaveStartNumber={this.handleSubmitStartNumber}
/>
</WeaSearchGroup>
</div>
</Fragment>
)}
</div>
</div>
);
}
}

View File

@ -0,0 +1,312 @@
/*
* Author: 黎永顺
* Description: 岗位编号设置
* Date: 2022-06-06 09:37:39
* LastEditTime: 2022-06-07 17:56:42
*/
import React, { Component, Fragment } from "react";
import { inject, observer } from "mobx-react";
import { Button, message } from "antd";
import {
WeaTop,
WeaFormItem,
WeaCheckbox,
WeaSearchGroup,
WeaSelect,
WeaHelpfulTip,
} from "ecCom";
import StartReservedNumberSet from "../branchNumSetting/components/startReservedNumberSet";
import NumberComposition from "../branchNumSetting/components/numberComposition";
import { i18n } from "../../public/i18n";
import moment from "moment";
import "../branchNumSetting/index.less";
@inject("numberSet")
@observer
export default class ResourceNumberSet extends Component {
constructor() {
super();
this.state = {
options: [],
loading: false,
dataSource: [],
startNumberInfo: {
columns: [],
dataSource: [],
},
subCompanyInfo: {
details: [],
serialenable: "0",
dateSerial: {
enable: "0",
key: "",
},
},
};
}
componentDidMount() {
this.getCodeSetting();
}
getCodeSetting = () => {
const { numberSet } = this.props;
numberSet
.getCodeSetting({ serialtype: "USER" })
.then(({ api_status, details, serialenable, dateSerial = {} }) => {
if (api_status && !_.isEmpty(details)) {
this.setState({
subCompanyInfo: { details, serialenable, dateSerial },
});
}
});
};
handleSubmit = () => {
const { numberSet } = this.props;
const { dataSource, subCompanyInfo } = this.state;
const { serialenable, dateSerial } = subCompanyInfo;
const details = _.map(dataSource, (it, showorder) => {
const { numField, value: rulevalue } = it;
return {
ruletype: _.upperCase(numField),
rulevalue,
showorder,
};
});
const payload = {
datas: JSON.stringify({
serialenable,
details,
dateSerial,
serialtype: "USER",
}),
};
this.setState({ loading: true });
numberSet.saveOrUpdateCodeSetting(payload).then(({ api_status }) => {
this.setState({ loading: false });
if (api_status) {
message.success("保存成功");
}
});
};
handleChangeCode = (data) => {
const tmpV = _.filter(
data,
(it) =>
it.numField === "year" ||
it.numField === "month" ||
it.numField === "day"
);
this.setState({
dataSource: _.cloneDeep(data),
options: _.map(tmpV, (it) => {
const { numFieldName: showname, numField: key } = it;
return { key: _.upperCase(key), showname };
}),
});
};
handleSetNumber = (type) => {
this.handleSubmit();
const { numberSet } = this.props;
if (type === "start") {
const payload = {
coderuleid: 4,
type: "",
dateStart: moment().format("YYYY"),
dateEnd: moment().format("YYYY"),
subCompanyId: "",
deptId: "",
jobtitlesId: "",
};
numberSet
.getStartNumForm(payload)
.then(({ api_status, columns, dataSource }) => {
if (api_status) {
this.setState({
startNumberInfo: { columns, dataSource },
});
}
});
}
};
handleChangeTable = (newColumns, datas) => {
this.setState({
startNumberInfo: {
...this.state.startNumberInfo,
columns: newColumns,
dataSource: datas,
},
});
};
handleSubmitStartNumber = () => {
const { numberSet } = this.props;
const payload = {
datas: JSON.stringify({
coderuleid: 4,
...this.state.startNumberInfo,
}),
};
numberSet.saveStartNum(payload).then(({ api_status }) => {
if (api_status) {
message.success("保存成功");
this.numberSetRef.handleClose();
}
});
};
/**
* name:提示文本
* return {*}
*/
helpContent = () => {
return (
<div>
<p>开启后可根据设置的部门编号规则自动生成部门编号涉及场景如下</p>
<p>1.手动新建和手动编辑部门时可选择重新生成编号和选择预留部门编号</p>
<p>2.导入人员-添加时新创建的部门可自动生成部门编号</p>
<p>3.组织结构导入-添加新部门且部门编号列为空时可自动生成部门编号</p>
<p>注意开启前请先确认部门编号字段已启用</p>
</div>
);
};
render() {
const { options, subCompanyInfo, loading, startNumberInfo } = this.state;
const { details, serialenable, dateSerial } = subCompanyInfo;
const btns = [
<Button type="primary" onClick={this.handleSubmit} loading={loading}>
保存
</Button>,
];
const dropMenuDatas = [
{
key: "save",
disabled: false,
icon: <i className="icon-coms-Preservation" />,
content: "保存",
onClick: (key) => this.handleSubmit(),
},
];
return (
<div className="dept-number-set">
<WeaTop
title={i18n.label.userNumSetting()}
icon={<i className="icon-coms-hrm" />}
iconBgcolor="#217346"
buttons={btns}
showDropIcon={true}
dropMenuDatas={dropMenuDatas}
/>
<div className="dept-content">
<div className="switch-wrapper">
<WeaFormItem
label="人员编号自动生成"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}>
<WeaCheckbox
value={serialenable}
helpfulTip={this.helpContent}
helpfulTipProps={{ placement: "top" }}
display="switch"
id="num-set-switch"
onChange={(checkVal) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
serialenable: checkVal,
},
})
}
/>
</WeaFormItem>
</div>
{/* 内容区 */}
{serialenable === "1" && (
<Fragment>
<div className="numberComposition">
<WeaSearchGroup title={"编号组成"} showGroup>
<NumberComposition
onChange={this.handleChangeCode}
dataSource={details}
/>
</WeaSearchGroup>
</div>
{!_.isEmpty(options) && (
<div className="codeNumbering">
<WeaSearchGroup title={"编号流水规则"} showGroup>
<div className="switch-wrapper">
<WeaFormItem
label="日期单独流水"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}>
<div className="codeNumbering-operateWapper">
<WeaCheckbox
value={dateSerial.enable ? dateSerial.enable : "0"}
display="switch"
id="dept-date-set-switch"
onChange={(isSingle) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
dateSerial: {
...dateSerial,
enable: isSingle,
},
},
})
}
/>
{dateSerial.enable == "1" && (
<WeaSelect
options={options}
value={dateSerial.key}
detailtype={3}
supportCancel
onChange={(key) =>
this.setState({
subCompanyInfo: {
...subCompanyInfo,
dateSerial: {
...dateSerial,
key,
},
},
})
}
/>
)}
<WeaHelpfulTip
width={200}
title="开启后可设置按年、按月或按天单独流水如设置按年单独流水那每年的1月1日开始流水号从001开始重新流水。"
placement="topLeft"
/>
</div>
</WeaFormItem>
</div>
</WeaSearchGroup>
</div>
)}
<div className="startReservedNumberSet">
<WeaSearchGroup
title={"起始编号及预留编号设置"}
showGroup
center>
<StartReservedNumberSet
ref={(dom) => (this.numberSetRef = dom)}
onSet={this.handleSetNumber}
startNumberInfo={startNumberInfo}
onChange={this.handleChangeTable}
onSaveStartNumber={this.handleSubmitStartNumber}
/>
</WeaSearchGroup>
</div>
</Fragment>
)}
</div>
</div>
);
}
}

View File

@ -13,6 +13,8 @@ import OfficeManage from "./components/office/officeManage";
import CompanyExtend from "./components/company/CompanyExtend"; import CompanyExtend from "./components/company/CompanyExtend";
import BranchNumSetting from "./components/branchNumSetting"; import BranchNumSetting from "./components/branchNumSetting";
import DeptNumberSet from "./components/deptNumberSet"; import DeptNumberSet from "./components/deptNumberSet";
import PostNumberSet from "./components/postNumberSet";
import ResourceNumberSet from "./components/resourceNumberSet";
import Company from "./components/company/company"; import Company from "./components/company/company";
import DepartmentManage from "./components/department/department"; import DepartmentManage from "./components/department/department";
import StaffScheme from "./components/staff/StaffScheme"; import StaffScheme from "./components/staff/StaffScheme";
@ -58,14 +60,20 @@ const Routes = (
path="branchNumSetting" path="branchNumSetting"
component={BranchNumSetting} component={BranchNumSetting}
/> />
<Route key="deptNumberSet" path="deptNumberSet" component={DeptNumberSet} />
<Route key="postNumberSet" path="postNumberSet" component={PostNumberSet} />
<Route <Route
key="deptNumberSet" key="resourceNumberSet"
path="deptNumberSet" path="resourceNumberSet"
component={DeptNumberSet} component={ResourceNumberSet}
/> />
<Route key="company" path="company" component={Company} /> <Route key="company" path="company" component={Company} />
<Route key="department" path="department" component={Department} /> <Route key="department" path="department" component={Department} />
<Route key="departmentExtend" path="departmentExtend/:id" component={DepartmentExtendStore} /> <Route
key="departmentExtend"
path="departmentExtend/:id"
component={DepartmentExtendStore}
/>
<Route key="staffscheme" path="staffscheme" component={StaffScheme} /> <Route key="staffscheme" path="staffscheme" component={StaffScheme} />
<Route key="staff" path="staff" component={Staff} /> <Route key="staff" path="staff" component={Staff} />
<Route key="job" path="job" component={Job} /> <Route key="job" path="job" component={Job} />

View File

@ -130,7 +130,8 @@ export const i18n = {
newOfficeClassifyName: () => getLabel(386246, '新建职务分类信息'), newOfficeClassifyName: () => getLabel(386246, '新建职务分类信息'),
branchNumSetting: () => getLabel(386246, '分部编号设置'), branchNumSetting: () => getLabel(386246, '分部编号设置'),
deptNumSetting: () => getLabel(386246, '部门编号设置'), deptNumSetting: () => getLabel(386246, '部门编号设置'),
posiNumSetting: () => getLabel(386246, '岗位编号设置'), postNumSetting: () => getLabel(386246, '岗位编号设置'),
userNumSetting: () => getLabel(386246, '人员编号设置'),
companyName: () => getLabel(385937, '分部'), companyName: () => getLabel(385937, '分部'),
staffSchemeName: () => getLabel(385936, '编制方案'), staffSchemeName: () => getLabel(385936, '编制方案'),
newStaffScheme: () => getLabel(386246, '新建编制方案'), newStaffScheme: () => getLabel(386246, '新建编制方案'),

View File

@ -6,15 +6,15 @@ import { JobGradeStore } from "./jobgrade";
import { OfficeManageStore } from "./officeManage"; import { OfficeManageStore } from "./officeManage";
import { SequenceStore } from "./sequence"; import { SequenceStore } from "./sequence";
import { GroupStore } from "./group"; import { GroupStore } from "./group";
import {CompanyExtendStore} from "./companyextend"; import { CompanyExtendStore } from "./companyextend";
import {CompanyStore} from "./company"; import { CompanyStore } from "./company";
import {DepartmentStore} from "./department"; import { DepartmentStore } from "./department";
import {DepartmentExtendStore} from "./departmentextend"; import { DepartmentExtendStore } from "./departmentextend";
import {StaffSchemeStore} from "./staffscheme"; import { StaffSchemeStore } from "./staffscheme";
import {StaffStore} from "./staff"; import { StaffStore } from "./staff";
import {JobStore} from "./job"; import { JobStore } from "./job";
import {JobExtendStore} from "./jobextend"; import { JobExtendStore } from "./jobextend";
import { NumberSetStore } from "./numberSet";
module.exports = { module.exports = {
simpleOrgStore: new SimpleOrgStore(), simpleOrgStore: new SimpleOrgStore(),
@ -33,4 +33,5 @@ module.exports = {
staff: new StaffStore(), staff: new StaffStore(),
job: new JobStore(), job: new JobStore(),
jobExtend: new JobExtendStore(), jobExtend: new JobExtendStore(),
numberSet: new NumberSetStore(),
}; };

View File

@ -0,0 +1,30 @@
/*
* Author: 黎永顺
* Description: 编号设置
* Date: 2022-06-07 09:54:46
* LastEditTime: 2022-06-07 17:00:49
*/
import { observable, action } from "mobx";
import * as mobx from "mobx";
import * as API from "../apis/numberSet"; // 引入API接口文件
export class NumberSetStore {
@action
getCodeSetting(params) {
return API.getCodeSetting(params);
}
@action
saveOrUpdateCodeSetting(params) {
return API.saveOrUpdateCodeSetting(params);
}
@action
getStartNumForm(params) {
return API.getStartNumForm(params);
}
@action
saveStartNum(params) {
return API.saveStartNum(params);
}
}