salary-management-front/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js

223 lines
9.9 KiB
JavaScript
Raw Normal View History

2022-03-18 14:16:52 +08:00
import React from 'react'
2022-06-14 16:51:26 +08:00
import { Row, Col, Upload, Icon, Radio, Switch, Modal } from 'antd'
import { WeaInput, WeaDraggable } from 'ecCom'
2022-04-13 16:56:31 +08:00
import { inject, observer } from 'mobx-react';
import BackgroundUpload from '../components/backgroundUpload'
2022-04-14 19:32:57 +08:00
import RequiredLabelTip from '../../../components/requiredLabelTip';
2022-03-18 14:16:52 +08:00
const Dragger = Upload.Dragger;
2022-04-13 16:56:31 +08:00
@inject('payrollStore')
@observer
2022-03-18 14:16:52 +08:00
export default class ShowSettingForm extends React.Component {
2022-04-13 16:56:31 +08:00
componentWillMount() {
const { payrollStore } = this.props;
const { initShowSettingForm } = payrollStore
initShowSettingForm(this.props.id)
}
// form 字段变化时的回调
handleChange(params) {
const { payrollStore: {salaryTemplateShowSet, setSalaryTemplateShowSet}} = this.props;
2022-04-14 19:32:57 +08:00
let request = {...salaryTemplateShowSet, ...params};
2022-04-13 16:56:31 +08:00
setSalaryTemplateShowSet(request);
}
// 工资单主题 插入变量
handleThemeNameCllck(param) {
const { payrollStore } = this.props;
const { salaryTemplateShowSet, setSalaryTemplateShowSet } = payrollStore;
let request= {...salaryTemplateShowSet};
request.theme = (request.theme ? request.theme : "") + param;
setSalaryTemplateShowSet(request);
}
2022-06-14 11:17:03 +08:00
handleDownClick(index) {
const {payrollStore: {salaryItemSet, setSalaryItemSet}} = this.props
let downItem = salaryItemSet[index + 1];
let thisItem = salaryItemSet[index]
let resultSet = [...salaryItemSet]
resultSet[index] = downItem;
resultSet[index + 1] = thisItem;
setSalaryItemSet(resultSet)
}
handleUpClick(index) {
const {payrollStore: {salaryItemSet, setSalaryItemSet}} = this.props
let upItem = salaryItemSet[index - 1]
let thisItem = salaryItemSet[index]
let resultSet = [...salaryItemSet]
resultSet[index] = upItem
resultSet[index - 1] = thisItem;
setSalaryItemSet(resultSet)
}
handleDeleteItem(group, item) {
const { payrollStore : {salaryItemSet, setSalaryItemSet}} = this.props;
console.log("item:", item);
let resultSalaryItemSet = [...salaryItemSet]
resultSalaryItemSet.map(sourceGroup => {
if(sourceGroup.id == group.id) {
sourceGroup.items.map((sourceItem, index) => {
if(sourceItem.id == item.id) {
sourceGroup.items.splice(index, 1)
}
})
}
})
setSalaryItemSet(resultSalaryItemSet)
}
2022-06-14 16:21:50 +08:00
handleDrag(data1, data2) {
console.log("data1:", data1);
console.log("data2:", data2);
}
2022-06-14 16:51:26 +08:00
handleDeleteClick(index) {
Modal.confirm({
title: '信息确认',
content: '确认删除',
onOk:() => {
const {payrollStore: {salaryItemSet, setSalaryItemSet}} = this.props;
let resultSalaryItemSet = [...salaryItemSet]
resultSalaryItemSet.splice(index, 1)
setSalaryItemSet(resultSalaryItemSet)
},
onCancel: () => {
},
});
}
2022-03-18 14:16:52 +08:00
render() {
2022-04-13 16:56:31 +08:00
const { payrollStore } = this.props;
const { salaryTemplateShowSet } = payrollStore;
const { salaryItemSet } = payrollStore
const { theme,
background,
textContent,
textContentPosition,
salaryItemNullStatus,
salaryItemZeroStatus
} = salaryTemplateShowSet
2022-03-18 14:16:52 +08:00
const dropProps = {
name: 'file',
2022-04-13 16:56:31 +08:00
action: '/api/doc/upload/uploadFile',
onChange(info) {
const { status } = info.file;
if (status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (status === 'done') {
message.success(`${info.file.name} file uploaded successfully.`);
} else if (status === 'error') {
message.error(`${info.file.name} file upload failed.`);
}
},
onDrop(e) {
console.log('Dropped files', e.dataTransfer.files);
},
2022-03-18 14:16:52 +08:00
};
return (
<div className="showSettingForm">
<div className="settingItemWrapper">
<div className="itemTitle">主题及其他设置</div>
<div className="itemContent">
<Row className="formItem">
<Col span={12}>
<Row>
2022-04-14 19:32:57 +08:00
<Col span={8}>工资单主题<RequiredLabelTip /></Col>
2022-03-18 14:16:52 +08:00
<Col span={16}>
2022-04-13 16:56:31 +08:00
<WeaInput style={{width: "200px"}} value={theme} onChange={(value) => {this.handleChange({theme:value})}}/>
2022-03-18 14:16:52 +08:00
</Col>
</Row>
</Col>
<Col span={12}>
2022-06-07 09:08:36 +08:00
<span style={{float: "right"}}>
2022-03-18 14:16:52 +08:00
插入变量
2022-04-13 16:56:31 +08:00
<a onClick={() => {this.handleThemeNameCllck("${companyName}")}} className="themeFormalStr">公司名称</a>
<a onClick={() => {this.handleThemeNameCllck("${salaryMonth}")}} className="themeFormalStr">薪资所属月</a>
2022-06-07 09:08:36 +08:00
</span>
2022-03-18 14:16:52 +08:00
</Col>
</Row>
<Row className="formItem">
2022-04-18 09:31:06 +08:00
<Col span={4}>工资单背景</Col>
2022-03-18 14:16:52 +08:00
<Col span={20}>
2022-04-14 19:32:57 +08:00
<BackgroundUpload imageUrl={background} onChange={(value) => {this.handleChange({background: value})}}/>
2022-04-13 16:56:31 +08:00
{/* <Dragger {...dropProps} style={{width: "100px"}}>
2022-03-18 14:16:52 +08:00
<div style={{ padding: '55px 0' }}>
<Icon type="plus" />
</div>
2022-04-13 16:56:31 +08:00
</Dragger> */}
2022-03-18 14:16:52 +08:00
</Col>
</Row>
<Row className="formItem">
<Col span={4}>文本内容</Col>
<Col span={20}>
2022-04-13 16:56:31 +08:00
<WeaInput value={textContent} onChange={(value) => {this.handleChange({textContent: value})}}/>
2022-03-18 14:16:52 +08:00
</Col>
</Row>
2022-04-13 16:56:31 +08:00
<Row className="formItem">
<Col span={4}>文本内容位置</Col>
<Col span={20}>
<Radio.Group value={textContentPosition} onChange={(e) => {this.handleChange({textContentPosition: e.target.value})}}>
<Radio value={"1"}>薪资项目前</Radio>
<Radio value={"2"}>薪资项目后</Radio>
</Radio.Group>
</Col>
</Row>
2022-03-18 14:16:52 +08:00
<Row className="formItem">
<Col span={6}>薪资项为空时不显示</Col>
<Col span={18}>
2022-04-13 16:56:31 +08:00
<Switch checked={salaryItemNullStatus} onChange={(value) => {this.handleChange({salaryItemNullStatus: value})}}/>
2022-03-18 14:16:52 +08:00
</Col>
</Row>
<Row className="formItem">
<Col span={6}>薪资项为0时不显示</Col>
<Col span={18}>
2022-04-13 16:56:31 +08:00
<Switch checked={salaryItemZeroStatus} onChange={(value) => {this.handleChange({salaryItemZeroStatus: value})}}/>
2022-03-18 14:16:52 +08:00
</Col>
</Row>
</div>
</div>
<div className="settingItemWrapper">
<div className="itemTitle">薪资项目设置</div>
<div className="itemContent">
2022-04-13 16:56:31 +08:00
{
2022-06-14 11:17:03 +08:00
salaryItemSet.map((group, index) => (
2022-06-14 16:21:50 +08:00
<div className="configItemWrapper" >
2022-06-14 11:17:03 +08:00
<div className="configTitle">{group.groupName}
{
index < salaryItemSet.length - 1 &&
2022-06-14 16:21:50 +08:00
<Icon type="caret-down" style={{marginLeft: "10px" , cursor: "pointer", color: "#666"}}
2022-06-14 11:17:03 +08:00
onClick={() => {this.handleDownClick(index)}}
/>
}
{
2022-06-14 16:21:50 +08:00
index > 0 && <Icon type="caret-up" style={{marginLeft: "10px", cursor: 'pointer', color: "#666"}}
2022-06-14 11:17:03 +08:00
onClick={() => {this.handleUpClick(index)}}/>
}
2022-06-14 16:51:26 +08:00
<i className="icon-coms-Delete" style={{cursor: "pointer", color: '#666', marginLeft: "10px"}} onClick={() => {
this.handleDeleteClick(index)
}}/>
2022-06-14 16:21:50 +08:00
</div>
2022-04-13 16:56:31 +08:00
<div className="configContent">
{group.items.map(item => (
2022-06-14 11:17:03 +08:00
<span className="editItem">{item.name} <Icon type="cross" style={{cursor: "pointer"}} onClick={() => {this.handleDeleteItem(group, item)}}/></span>
2022-04-13 16:56:31 +08:00
))}
</div>
</div>
))
}
2022-03-18 14:16:52 +08:00
</div>
</div>
</div>
)
}
}