diff --git a/pc4mobx/hrmSalary/apis/payroll.js b/pc4mobx/hrmSalary/apis/payroll.js
index 7e654721..237bfc9f 100644
--- a/pc4mobx/hrmSalary/apis/payroll.js
+++ b/pc4mobx/hrmSalary/apis/payroll.js
@@ -58,7 +58,7 @@ export const getPayrollTemplateList = params => {
//工资单-获取薪资账套下拉列表
export const getPayrollTemplateLedgerList = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryBill/template/selectSalarySobList', 'get', params);
+ return WeaTools.callApi('/api/bs/hrmsalary/salaryBill/template/selectSalarySobList', 'POST', params);
}
@@ -79,7 +79,14 @@ export const getPayrollItemList = params => {
//工资单-更改默认使用
export const changePayrollDefaultUse = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryBill/template/defaultUse', 'get', params);
+ return fetch('/api/bs/hrmsalary/salaryBill/template/defaultUse', {
+ method: 'POST',
+ mode: 'cors',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json())
}
//工资单-新建工资单
@@ -112,13 +119,27 @@ export const updatePayrollShow = params => {
//工资单-复制工资单
export const duplicatePayroll = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryBill/template/copy', 'POST', params);
+ return fetch('/api/bs/hrmsalary/salaryBill/template/copy', {
+ method: 'POST',
+ mode: 'cors',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json())
}
//工资单-删除工资单
export const deletePayroll = params => {
- return WeaTools.callApi('/api/bs/hrmsalary/salaryBill/template/delete', 'POST', params);
+ return fetch('/api/bs/hrmsalary/salaryBill/template/delete', {
+ method: 'POST',
+ mode: 'cors',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(params)
+ }).then(res => res.json())
}
//工资单-获取租户名
diff --git a/pc4mobx/hrmSalary/pages/payroll/components/backgroundUpload.js b/pc4mobx/hrmSalary/pages/payroll/components/backgroundUpload.js
index ee6c83a8..91e5ff7c 100644
--- a/pc4mobx/hrmSalary/pages/payroll/components/backgroundUpload.js
+++ b/pc4mobx/hrmSalary/pages/payroll/components/backgroundUpload.js
@@ -28,6 +28,9 @@ function beforeUpload(file) {
visible: false
}
}
+ componentWillMount() {
+ this.props.imageUrl && this.setState({imageUrl: this.props.imageUrl})
+ }
// 上传完成监听
handleChange = (info) => {
diff --git a/pc4mobx/hrmSalary/pages/payroll/copyModal.js b/pc4mobx/hrmSalary/pages/payroll/copyModal.js
new file mode 100644
index 00000000..9d1e7a42
--- /dev/null
+++ b/pc4mobx/hrmSalary/pages/payroll/copyModal.js
@@ -0,0 +1,38 @@
+import React from 'react'
+import { notNull } from '../../util/validate'
+import { Modal, Button, Row, Col, message } from 'antd';
+import { WeaInput } from "ecCom"
+import RequiredLabelTip from '../../components/requiredLabelTip';
+export default class CopyModal extends React.Component {
+ constructor(props) {
+ super(props)
+ this.state = {
+ name: ''
+ }
+ }
+ handleChange(value) {
+ this.setState({name: value})
+ }
+ handleSave() {
+ if(!notNull(this.state.name)) {
+ message.warning("工资单名称不能为空")
+ }
+ this.props.onSave && this.props.onSave(this.state.name)
+ }
+ render(){
+ const { name } = this.state;
+ return (
+ {this.props.onCancel()}} footer={
+
+ }>
+
+ 工资单名称
+
+ {this.handleChange(value)}}/>
+
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/pc4mobx/hrmSalary/pages/payroll/index.js b/pc4mobx/hrmSalary/pages/payroll/index.js
index 9f43798b..d13ef817 100644
--- a/pc4mobx/hrmSalary/pages/payroll/index.js
+++ b/pc4mobx/hrmSalary/pages/payroll/index.js
@@ -2,7 +2,7 @@ import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
-import { Button, Table, DatePicker, message } from 'antd';
+import { Button, Table, DatePicker, message, Modal } from 'antd';
import moment from 'moment'
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable,WeaDatePicker, WeaHelpfulTip, WeaSelect, WeaInputSearch, WeaSlideModal } from 'ecCom';
@@ -19,6 +19,7 @@ import ShowSettingForm from './stepForm/showSettingForm'
import SlideModalTitle from "../../components/slideModalTitle"
import TemplateSettingList from './templateSettingList'
import { notNull } from '../../util/validate';
+import CopyModal from './copyModal';
const { MonthPicker } = DatePicker;
@@ -37,7 +38,13 @@ export default class Payroll extends React.Component {
currentStep: 0,
stepSlideVisible: false,
selectedTab: 0,
- editSlideVisible: false
+ editSlideVisible: false,
+ initSelected: false,
+ ledgerOptions: [],
+ templateSearchValue: "", // 工资单模板列表-搜索条件-名称
+ templateSelect: "", // 工资单模板列表-搜索条件-账套下拉选中值
+ templateCurrentId: "",
+ copyModalVisible: false
}
columns.map(item => {
if(item.dataIndex == "cz") {
@@ -64,7 +71,7 @@ export default class Payroll extends React.Component {
item.render = () => {
return (
-
编辑
+
编辑
复制
删除
操作日志
@@ -90,11 +97,81 @@ export default class Payroll extends React.Component {
})
}
+ componentWillMount() {
+ const { payrollStore } = this.props;
+ const { getPayrollTemplateLedgerList } = payrollStore;
+ // 获取薪资账套下拉列表
+ getPayrollTemplateLedgerList().then((options) => {
+ this.setState({
+ initSelected: true,
+ ledgerOptions: options
+ })
+ })
+ }
+
+ // 模板搜索
+ handleTemplateSearch() {
+ const { templateSearchValue, templateSelect } = this.state;
+ let params = {name: templateSearchValue, salarySobId: templateSelect}
+ const { payrollStore: {getPayrollTemplateList}} = this.props;
+ getPayrollTemplateList(params)
+ }
+
+ // 模板选择框下拉改变事件
+ handleTemplateSelectChange(value) {
+ this.setState({templateSelect: value})
+ this.handleTemplateSearch()
+ }
+
+ // 模板列表编辑
+ handleTemplateListEdit(record) {
+ this.setState({templateCurrentId: record.id, selectedTab: 0},() => {
+ this.setState({editSlideVisible: true})
+ })
+ }
+
+ // 模板列表复制
+ handleTemplateListCopy(record) {
+ this.setState({
+ templateCurrentId: record.id
+ }, () => {
+ this.setState({
+ copyModalVisible: true
+ })
+ })
+ }
+
+ // 复制模板保存事件监听
+ handleCopyModalSave(value) {
+ const { payrollStore } = this.props;
+ const { duplicatePayroll } = payrollStore
+ duplicatePayroll(this.state.templateCurrentId, value).then(() => {
+ this.setState({
+ copyModalVisible: false
+ })
+ })
+ }
+
+ // 模板列表删除
+ handleTemplateListDelete(record) {
+ const { payrollStore: { deletePayroll }} = this.props;
+ Modal.confirm({
+ title: '信息确认',
+ content: '确认删除',
+ onOk:() => {
+ deletePayroll([record.id])
+ },
+ onCancel: () => {
+
+ },
+ });
+ }
+
+
render() {
const { payrollStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = payrollStore;
-
- const { currentStep, selectedTab } = this.state
+ const { currentStep, selectedTab, templateSearchValue, templateSelect } = this.state
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
@@ -155,21 +232,21 @@ export default class Payroll extends React.Component {
return (
-
-
+ {
+ this.state.initSelected && {this.handleTemplateSelectChange(value)}}/>
+ }
+
+ {this.setState({templateSearchValue: value})}} onSearch={(value) => {this.handleTemplateSearch(value)}}/>
)
}
-
}
-
-
+
const steps = [
"基础设置",
"显示设置"
]
-
const validateStep1 = () => {
const { payrollStore: {templateBaseData}} = this.props;
if(!notNull(templateBaseData.name)) {
@@ -221,7 +298,14 @@ export default class Payroll extends React.Component {
{
this.state.selectedKey == 1 &&
-
+
{
+ this.handleTemplateListEdit(record)
+ }}
+ onCopy={(record) => {
+ this.handleTemplateListCopy(record)
+ }}
+ onDelete={(record)=> this.handleTemplateListDelete(record)}
+ />
}
@@ -284,16 +368,19 @@ export default class Payroll extends React.Component {
}
content={
{
- selectedTab == 0 &&
+ selectedTab == 0 &&
}
{
- selectedTab == 1 &&
+ selectedTab == 1 &&
}
}
onClose={() => this.setState({editSlideVisible: false})}
showMask={true}
closeMaskOnClick={() => this.setState({editSlideVisible: false})} />
}
+ {
+ this.state.copyModalVisible && this.handleCopyModalSave(value)} visible={this.state.copyModalVisible} onCancel={() => {this.setState({copyModalVisible: false})}}/>
+ }
)
}
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js
index ccf72587..07d3eefd 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js
@@ -3,6 +3,7 @@ import { Row, Col, Upload, Icon, Radio, Switch } from 'antd'
import { WeaInput } from 'ecCom'
import { inject, observer } from 'mobx-react';
import BackgroundUpload from '../components/backgroundUpload'
+import RequiredLabelTip from '../../../components/requiredLabelTip';
const Dragger = Upload.Dragger;
@@ -18,9 +19,8 @@ export default class ShowSettingForm extends React.Component {
// form 字段变化时的回调
handleChange(params) {
const { payrollStore: {salaryTemplateShowSet, setSalaryTemplateShowSet}} = this.props;
- let request= {...salaryTemplateShowSet, ...params};
+ let request = {...salaryTemplateShowSet, ...params};
setSalaryTemplateShowSet(request);
- // this.props.onChange && this.props.onChange(request);
}
// 工资单主题 插入变量
@@ -69,7 +69,7 @@ export default class ShowSettingForm extends React.Component {
- 工资单主题
+ 工资单主题
{this.handleChange({theme:value})}}/>
@@ -84,7 +84,7 @@ export default class ShowSettingForm extends React.Component {
工资单主题
- {this.handleChange({textContentPosition: value})}}/>
+ {this.handleChange({background: value})}}/>
{/*
diff --git a/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js b/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js
index 4f723ea7..94444ec3 100644
--- a/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js
+++ b/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js
@@ -1,5 +1,6 @@
import React from 'react'
import { inject, observer } from 'mobx-react';
+import { Radio } from 'antd'
import { WeaTableNew } from 'comsMobx';
const WeaTable = WeaTableNew.WeaTable;
@@ -11,6 +12,63 @@ export default class TemplateSettingList extends React.Component {
const { getPayrollTemplateList } = payrollStore;
getPayrollTemplateList();
}
+
+ // 编辑操作按钮
+ onEdit(record) {
+ this.props.onEdit && this.props.onEdit(record)
+ }
+
+ // 复制操作按钮
+ onCopy(record) {
+ this.props.onCopy && this.props.onCopy(record)
+ }
+
+ // 删除操作按钮
+ onDelete(record) {
+ this.props.onDelete && this.props.onDelete(record)
+ }
+
+ // 操作按钮
+ onOperatesClick = (record, index, operate, flag) => {
+ switch(operate.index.toString()){
+ case '0': // 编辑
+ this.onEdit(record);
+ break;
+ case "1": // 复制
+ this.onCopy(record);
+ break;
+ case "2": // 删除
+ this.onDelete(record);
+ break;
+ }
+ };
+
+ // 默认使用配置
+ recordItemChange(record) {
+ const { payrollStore } = this.props;
+ const { changePayrollDefaultUse } = payrollStore;
+ changePayrollDefaultUse(record.id)
+ }
+
+ // 增加编辑功能,重写columns绑定事件
+ getColumns = (columns) => {
+ let newColumns = '';
+ newColumns = columns.map(column => {
+ let newColumn = column;
+ newColumn.render = (text, record, index) => { //前端元素转义
+ let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
+ switch(newColumn.dataIndex) {
+ case "useType":
+ return
{this.recordItemChange(record)}}/>
+ default:
+ return
+ }
+ }
+ return newColumn;
+ });
+ return newColumns;
+ }
+
render() {
const { payrollStore } = this.props;
const { templateStore } = payrollStore;
@@ -20,8 +78,8 @@ export default class TemplateSettingList extends React.Component {
comsWeaTableStore={templateStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动,将自适应到父级高度
- // getColumns={this.getColumns}
- // onOperatesClick={this.onOperatesClick.bind(this)}
+ getColumns={this.getColumns}
+ onOperatesClick={this.onOperatesClick.bind(this)}
/>
)
diff --git a/pc4mobx/hrmSalary/stores/payroll.js b/pc4mobx/hrmSalary/stores/payroll.js
index 0839cdff..71f466e0 100644
--- a/pc4mobx/hrmSalary/stores/payroll.js
+++ b/pc4mobx/hrmSalary/stores/payroll.js
@@ -80,8 +80,7 @@ export class payrollStore {
// 工资单模板-工资单模板列表
@action
- getPayrollTemplateList = () => {
- let params = {}
+ getPayrollTemplateList = (params = {}) => {
API.getPayrollTemplateList(params).then(res => {
if(res.status) {
this.templateStore.getDatas(res.data.datas);
@@ -134,6 +133,9 @@ export class payrollStore {
}
API.getPayrollShowForm(params).then(res => {
if(res.status) {
+ if(id !== "") {
+ this.salaryItemSet = res.data.salaryTemplateSalaryItemSet
+ }
this.salaryTemplateShowSet = res.data.salaryTemplateShowSet.data
} else {
message.error(res.errormsg || "获取失败")
@@ -207,5 +209,79 @@ export class payrollStore {
})
})
}
+
+ //工资单-获取薪资账套下拉列表
+ @action
+ getPayrollTemplateLedgerList = () => {
+ return new Promise((resolve, reject) => {
+ API.getPayrollTemplateLedgerList().then(res => {
+ if(res.status) {
+ this.payrollTemplateLedgerList = res.data.map(item => {
+ let result = {}
+ result.showname = item.content;
+ result.selected = false;
+ result.key = item.id
+ return result;
+ })
+ resolve(this.payrollTemplateLedgerList)
+ } else {
+ message.error(res.errormsg || "获取失败");
+ reject()
+ }
+ })
+ })
+ }
+
+ // 工资单模板-工资单模板默认使用
+ @action
+ changePayrollDefaultUse(id = "") {
+ if(id == "") {
+ message.warning("id必填");
+ return
+ }
+ let params = {
+ id
+ }
+ API.changePayrollDefaultUse(params).then(res => {
+ if(res.status) {
+ message.success("设置成功");
+ } else {
+ message.success(res.errormsg || "设置失败")
+ }
+ })
+ }
+
+ // 工资单模板-复制工资单模板
+ @action
+ duplicatePayroll = (id, name) => {
+ let params = {
+ id, name
+ }
+ return new Promise((resolve, reject) => {
+ API.duplicatePayroll(params).then(res => {
+ if(res.status) {
+ message.success("复制成功")
+ this.getPayrollTemplateList()
+ resolve()
+ } else {
+ message.error(res.errormsg || "复制失败")
+ reject();
+ }
+ })
+ })
+ }
+
+ // 工资单模板-删除工资单模板
+ @action
+ deletePayroll = (ids) => {
+ API.deletePayroll(ids).then(res => {
+ if(res.status) {
+ message.success("删除成功");
+ this.getPayrollTemplateList()
+ } else {
+ message.error(res.errormsg || "删除失败");
+ }
+ })
+ }
}
\ No newline at end of file