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>
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|