Merge branch 'dev' of gitee.com:MustangDeng/salary-management-front-end into dev

This commit is contained in:
liyongshun 2022-04-22 19:09:04 +08:00
commit 94912c0bf2
7 changed files with 170 additions and 58 deletions

View File

@ -4,7 +4,15 @@ export const getForm = params => {
return WeaTools.callApi('/api/bs/hrmsalary/scheme/getForm', 'get', params);
};
export const getTable = params => {
return WeaTools.callApi('/api/bs/hrmsalary/scheme/getTable', 'get', params);
// return WeaTools.callApi('/api/bs/hrmsalary/scheme/getTable', 'get', params);
return fetch('/api/bs/hrmsalary/scheme/getTable', {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
}).then(res => res.json())
};
export const createScheme = params => {
return fetch('/api/bs/hrmsalary/scheme/insert', {

View File

@ -5,7 +5,7 @@ import { WeaTableNew } from "comsMobx"
import { Button, Table, DatePicker, Row, Col, Menu, Dropdown, Switch } from 'antd';
import { WeaInputSearch, WeaSlideModal, WeaHelpfulTip, WeaCheckbox, WeaDatePicker, WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaSelect } from 'ecCom';
import { WeaInputSearch, WeaSlideModal, WeaHelpfulTip, WeaCheckbox, WeaDatePicker, WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaSelect, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
@ -26,7 +26,6 @@ import ItemMangeFormModal from './itemMangeFormModal'
const { MonthPicker } = DatePicker;
const WeaTable = WeaTableNew.WeaTable;
@inject('attendanceStore')
@observer
@ -56,8 +55,11 @@ export default class Attendance extends React.Component {
itemMangeVisible: false,
itemMangeValue: {},
fieldName: "",
fieldSettingSearchValue: ""
fieldSettingSearchValue: "",
fieldCurrent: 1
}
this.fieldSearch = {}
this.listSearch = {}
}
componentWillMount() {
@ -88,18 +90,34 @@ export default class Attendance extends React.Component {
setCurrentItem(record)
}
// 字段列表分页
handleFieldPageChange(value) {
const { attendanceStore: {getAttendanceFieldList} } = this.props;
this.fieldSearch.current = value
getAttendanceFieldList(this.fieldSearch)
}
// 列表
handleDataPageChange(value) {
const { attendanceStore: { getAttendanceList }} = this.props;
this.listSearch.current = value
getAttendanceList(this.listSearch)
}
render() {
const { attendanceStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = attendanceStore;
const { step, setStep, setSlideVisiable, slideVisiable, doBatchDelete, attendTableStore, fieldSettingAttendList, fieldSettingCustomList, setFieldSettingAttendList, setFieldSettingCustomList, searchFieldSettingList } = attendanceStore;
const { getAttendanceFieldSettingList, saveAttendanceFieldSetting } = attendanceStore
const { getAttendanceFieldSettingList, saveAttendanceFieldSetting, fieldDataSource, fieldTableStore, fieldPageInfo, attendanceDataSource, attendanceColumns} = attendanceStore
const selectedRowKeys = toJS(tableStore.selectedRowKeys) || []; // tableStore 右侧选中数组
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const batchDelete = () => {
doBatchDelete()
this.fieldSearch = {fieldName: this.state.fieldName}
getAttendanceFieldList({fieldName: this.state.fieldName})
}
@ -156,20 +174,20 @@ export default class Attendance extends React.Component {
this.setState({
startDate: value
})
getAttendanceList({
this.listSearch = {
salaryYearMonth: [value, this.state.endDate]
})
}
getAttendanceList(this.listSearch)
}}
onEndDateChange={(value) => {
this.setState({
endDate: value
})
getAttendanceList({
this.listSearch = {
salaryYearMonth: [this.state.startDate, value]
})
}
getAttendanceList(this.listSearch)
}}
/>
}
@ -229,7 +247,8 @@ export default class Attendance extends React.Component {
const handleItemSearch = (value) => {
const { attendanceStore: {getAttendanceFieldList}} = this.props;
getAttendanceFieldList({fieldName: value})
this.fieldSearch = {fieldName: value}
getAttendanceFieldList(this.fieldSearch)
}
const handleNewClick = () => {
@ -263,9 +282,11 @@ export default class Attendance extends React.Component {
})
if(v == "1") {
getAttendanceFieldList({fieldName: this.state.fieldName})
this.fieldSearch = {fieldName: this.state.fieldName}
getAttendanceFieldList(this.fieldSearch)
} else if(v == "0") {
getAttendanceList({})
this.listSearch = {}
getAttendanceList(this.listSearch)
}
}
@ -276,32 +297,40 @@ export default class Attendance extends React.Component {
enableStatus: value
}
updateAttendanceFieldStatus(request).then(result => {
getAttendanceFieldList({fieldName: this.state.fieldName})
this.fieldSearch = {fieldName: this.state.fieldName}
getAttendanceFieldList(this.fieldSearch)
})
}
// 字段Columns
const getFieldColumns = (columns) => {
let newColumns = '';
newColumns = columns.map(column => {
let newColumns = columns.filter(item => item.hide == "false")
newColumns = newColumns.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 "username":
return <a onClick={() => {this.onEdit(record)}}
return <a onClick={() => {this.onItemEdit(record)}}
dangerouslySetInnerHTML={{ __html: valueSpan }} />
case "enableStatus":
return <Switch checked={text == '1'} onChange={(value) => {handleSwitchItemChange(record, value)}}/>
case "operate":
return <a onClick={() => {this.onEdit(record)}}>查看明细</a>
default:
return <div dangerouslySetInnerHTML={{ __html: valueSpan }} />
}
}
return newColumn;
});
newColumns.push({
title: "操作",
dataIndex: "operate",
render: (text, record) => {
return (
<a onClick={() => {this.onItemEdit(record)}}>查看明细</a>
)
}
})
return newColumns;
}
@ -310,7 +339,8 @@ export default class Attendance extends React.Component {
const { attendanceStore: { saveAttendanceField, getAttendanceFieldList }} = this.props;
value.fieldType = value.fieldType == "1" ? "NUMBER" : "TEXT"
saveAttendanceField(value)
getAttendanceFieldList({fieldName: this.state.fieldName})
this.fieldSearch = {fieldName: this.state.fieldName}
getAttendanceFieldList(this.fieldSearch)
this.setState({itemMangeVisible: false})
}
@ -319,7 +349,8 @@ export default class Attendance extends React.Component {
// alert(JSON.stringify(value));
value.fieldType = value.fieldType == "1" ? "NUMBER" : "TEXT"
updateAttendanceField(value)
getAttendanceFieldList({fieldName: this.state.fieldName})
this.fieldSearch = {fieldName: this.state.fieldName}
getAttendanceFieldList(this.fieldSearch)
this.setState({itemMangeVisible: false})
}
@ -384,12 +415,24 @@ export default class Attendance extends React.Component {
}}
/>
<WeaTable // table内部做了loading加载处理页面就不需要再加了
{/* <WeaTable // table内部做了loading加载处理页面就不需要再加了
comsWeaTableStore={attendTableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
// getColumns={this.getColumns}
// onOperatesClick={this.onOperatesClick.bind(this)}
/> */}
<WeaTable // table内部做了loading加载处理页面就不需要再加了
columns={attendanceColumns}
dataSource={attendanceDataSource}
// getColumns={this.getColumns}
// onOperatesClick={this.onOperatesClick.bind(this)}
pagination={{
onChange: (value) => {this.handleDataPageChange(value)},
total: attendancePageInfo.total,
current: attendancePageInfo.pageNum
}}
/>
</div>
:
@ -406,13 +449,23 @@ export default class Attendance extends React.Component {
/>
<TwoColContent
leftContent={
<WeaTable // table内部做了loading加载处理页面就不需要再加了
comsWeaTableStore={tableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
// <WeaTable // table内部做了loading加载处理页面就不需要再加了
// comsWeaTableStore={tableStore} // table store
// hasOrder={true} // 是否启用排序
// needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
getColumns={getFieldColumns}
onOperatesClick={this.onItemOperatesClick.bind(this)}
// getColumns={getFieldColumns}
// onOperatesClick={this.onItemOperatesClick.bind(this)}
// />
<WeaTable // table内部做了loading加载处理页面就不需要再加了
dataSource={fieldDataSource}
columns={getFieldColumns(fieldTableStore.columns ? fieldTableStore.columns : [])}
pagination={{
onChange: (value) => {this.handleFieldPageChange(value)},
total: fieldPageInfo.total,
current: fieldPageInfo.pageNum
}}
/>
}
rightContent={

View File

@ -135,7 +135,7 @@ export default class Ledger extends React.Component {
case "3": // 关联人员
this.handleItemClick(record, 1)
case "4": // 删除
({
Modal.confirm({
title: '信息确认',
content: '确认删除',
onOk:() => {

View File

@ -360,7 +360,6 @@ export default class Payroll extends React.Component {
onDelete={(record)=> this.handleTemplateListDelete(record)}
/>
}
</WeaTop>
</WeaRightMenu>

View File

@ -2,14 +2,14 @@ import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker, Row, Col, Switch, Modal } from 'antd';
import { Button, Table, DatePicker, Row, Col, Switch, Modal, Dropdown, Menu } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaInputSearch, WeaSlideModal, WeaSelect } from 'ecCom';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaInputSearch, WeaSlideModal, WeaSelect, WeaTable } from 'ecCom';
import { WeaTableNew } from "comsMobx"
import "./index.less";
const WeaTable = WeaTableNew.WeaTable;
const WeaMobxTable = WeaTableNew.WeaTable;
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
@ -58,11 +58,14 @@ export default class Programme extends React.Component {
// 增加编辑功能重写columns绑定事件
getColumns = (columns) => {
let newColumns = '';
newColumns = columns.map(column => {
let newColumns = columns.filter(item => item.dataIndex !== "id" && item.dataIndex !== "paymentArea")
newColumns = newColumns.map(column => {
let newColumn = column;
newColumn.render = (text, record, index) => { //前端元素转义
let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
if(newColumn.dataIndex == "id") {
newColumn.display = false
}
switch(newColumn.dataIndex) {
case "operate":
return <a onClick={() => {this.onEdit(record)}}>编辑</a>
@ -72,6 +75,34 @@ export default class Programme extends React.Component {
}
return newColumn;
});
newColumns.push({
title: "操作",
dataIndex: "operate",
render: (text, record) => {
return <a onClick={() => {this.onEdit(record)}}>编辑</a>
}
})
newColumns.push(
{
title : '',
key: "moreOperate",
dataIndex: "moreOperate",
render: (text, record) => {
return (
<Dropdown overlay={<Menu>
<Menu.Item>
<a onClick={() => {
this.onCopy(record);
}}>复制</a>
</Menu.Item>
</Menu>}>
<i className="icon-coms-more"></i>
</Dropdown>
);
}
})
return newColumns;
}
@ -127,17 +158,6 @@ export default class Programme extends React.Component {
})
}
onOperatesClick(record, index, operate, flag) {
switch(operate.text.toString()){
case '编辑': // 编辑
this.onEdit(record);
break;
case "复制": // 复制
this.onCopy(record);
break;
}
}
onCustomOperatesClick(record, index, operate, flag) {
switch(operate.text.toString()){
case '编辑': // 编辑
@ -167,7 +187,7 @@ export default class Programme extends React.Component {
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = programmeStore;
const { selectedKey, setSelectedKey, getCustomCategoryList, customTableStore,
customSelectkey, setCustomSelectkey, requestParams, setRequestParams, formCondition,
setCustomNewVisible, customNewVisible } = programmeStore;
setCustomNewVisible, customNewVisible, tableDataSource, tableColumns } = programmeStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
@ -349,7 +369,7 @@ export default class Programme extends React.Component {
selectedKey == "custom" ?
<TwoColContent
leftContent={
<WeaTable // table内部做了loading加载处理页面就不需要再加了
<WeaMobxTable // table内部做了loading加载处理页面就不需要再加了
comsWeaTableStore={tableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
@ -361,13 +381,23 @@ export default class Programme extends React.Component {
renderCustomRightContent()
}
/> :
// <WeaTable // table内部做了loading加载处理页面就不需要再加了
// comsWeaTableStore={tableStore} // table store
// hasOrder={true} // 是否启用排序
// needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
// getColumns={this.getColumns}
// onOperatesClick={this.onOperatesClick.bind(this)}
// />
<WeaTable // table内部做了loading加载处理页面就不需要再加了
comsWeaTableStore={tableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
getColumns={this.getColumns}
onOperatesClick={this.onOperatesClick.bind(this)}
// comsWeaTableStore={tableStore} // table store
// hasOrder={true} // 是否启用排序
// needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
columns={this.getColumns(tableColumns)}
dataSource={tableDataSource}
// onOperatesClick={this.onOperatesClick.bind(this)}
/>
}
</WeaTop>
</WeaRightMenu>

View File

@ -25,6 +25,15 @@ export class AttendanceStore {
requestFeildAttendList = []; // 请求数据
requestFeildCustomList = []; // 请求数据
// 考勤字段
@observable fieldDataSource = []; // 字段列表
@observable fieldTableStore = new TableStore(); // new Table
@observable fieldPageInfo = {};
// 考勤数据列表
@observable attendanceDataSource = [];
@observable attendancePageInfo = {};
@observable attendanceColumns = [];
@action
searchFieldSettingList = (value) => {
@ -138,7 +147,9 @@ export class AttendanceStore {
this.loading = true;
API.getAttendanceFieldList(params).then(res => {
if (res.status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.data.datas); // table 请求数据
this.fieldTableStore.getDatas(res.data.dataKey.datas); // table 请求数据
this.fieldDataSource = res.data.pageInfo.list
this.fieldPageInfo = res.data.pageInfo
} else {
message.error(res.errormsg || '接口调用失败!')
}
@ -219,7 +230,10 @@ export class AttendanceStore {
this.loading = true;
API.getAttendanceList(params).then(res => {
if (res.status) { // 接口请求成功/失败处理
this.attendTableStore.getDatas(res.data.datas); // table 请求数据
// this.attendTableStore.getDatas(res.data.datas); // table 请求数据
this.attendanceDataSource = res.data.list;
this.attendancePageInfo = res.data;
this.attendanceColumns = res.data.columns
} else {
message.error(res.errormsg || '接口调用失败!')
}

View File

@ -25,9 +25,13 @@ export class ProgrammeStore {
}
@observable form = new WeaForm();
@observable formCondition = []; // 存储后台得到的form数据
@observable customNewVisible = false;
@observable customNewVisible = false;
@observable customRequest = {}
// 福利方案列表
@observable tableDataSource = [];
@observable tableColumns = [];
@action
setCustomRequest = customRequest => this.customRequest = customRequest
@ -89,7 +93,11 @@ export class ProgrammeStore {
params.welfareTypeEnum = selectKey
API.getTable(params).then(action(res => {
if (res.status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.data.datas); // table 请求数据
// this.tableStore.getDatas(res.data.datas); // table 请求数据
this.tableDataSource = res.data.list ? res.data.list : [];
this.tableColumns = res.data.columns;
console.log("this.tableColumns", this.tableColumns);
console.log("this.tableDataSource", this.tableDataSource);
} else {
message.error(res.errormsg || '接口调用失败!')
}