2022-02-25

This commit is contained in:
MustangDeng 2022-02-25 09:24:56 +08:00
commit 35ede9dd67
55 changed files with 3597 additions and 0 deletions

102
.eslintrc Normal file
View File

@ -0,0 +1,102 @@
{
"parser": "babel-eslint",
"extends": "react-app",
"env": {
"browser": true,
"node": true,
"mocha": true,
"jest": true,
"es6": true
},
"rules": {
"react/jsx-no-bind": [1, {
"ignoreRefs": false,
"allowArrowFunctions": false,
"allowBind": false
}],
"no-shadow": 0,
"no-bitwise": 0,
"no-continue": 0,
"no-case-declarations": 0,
"prefer-rest-params": 0,
"jsx-a11y/label-has-for": 0,
"jsx-a11y/media-has-caption": 0,
"jsx-a11y/iframe-has-title": 0,
"jsx-a11y/no-noninteractive-element-interactions": 0,
"react/jsx-pascal-case": 0,
"react/no-children-prop": 0,
"linebreak-style": 0,
"class-methods-use-this": 0,
"func-names": 0,
"react/sort-comp": 0,
"react/prop-types": 0,
"react/jsx-first-prop-new-line": 0,
"no-param-reassign": 0,
"no-return-assign": 0,
"max-len": 0,
"react/no-multi-comp": 0,
"array-callback-return": 0,
"import/no-unresolved": 0,
"jsx-a11y/img-has-alt": 0,
"import/extensions": 0,
"import/no-extraneous-dependencies": 0,
"react/jsx-boolean-value": 0,
"react/no-danger": 0,
"react/no-string-refs": 0,
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx", ".md"] }],
"react/no-array-index-key": 0,
"react/no-find-dom-node": 0,
"react/require-extension": 0,
"jsx-a11y/anchor-has-content": 0,
"jsx-a11y/href-no-hash": 0,
"jsx-a11y/no-static-element-interactions": 0,
"jsx-a11y/click-events-have-key-events": 0,
"prefer-destructuring": 0,
"jsx-a11y/anchor-is-valid": 0,
"react/jsx-no-comment-textnodes": 0,
"object-curly-newline": 0,
"import/first": 0,
"no-underscore-dangle": 0,
"eqeqeq": 0,
"react/prefer-stateless-function": 0,
"no-useless-constructor": 0,
"react/react-in-jsx-scope": 0,
"no-mixed-spaces-and-tabs": 0,
"no-tabs": 0,
"react/jsx-indent": 0,
"indent": 0,
"no-alert": 0,
"camelcase": 0,
"no-undef": 0,
"no-empty": 0,
"no-plusplus": 0,
"one-var": 0,
"prefer-const": 0,
"consistent-return": 0,
"no-restricted-syntax": 0,
"guard-for-in": 0,
"no-unused-expressions": 0,
"no-mixed-operators": 0,
"no-console": 0,
"default-case": 0,
"import/no-named-as-default-member": 1,
"import/no-named-as-default": 1,
"no-nested-ternary": 1,
"no-script-url": 1,
"import/prefer-default-export": 1,
"radix": 1,
"no-array-constructor": 1,
"jsx-a11y/alt-text": 1,
"brace-style": 1,
"no-useless-escape": 1,
"routerShape": 1
},
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
"experimentalObjectRestSpread": true
}
}
}

5
package.json Normal file
View File

@ -0,0 +1,5 @@
{
"dependencies": {
"yargs": "^15.0.2"
}
}

View File

@ -0,0 +1,22 @@
import { WeaTools } from 'ecCom';
// form基础数据
export const getBaseForm = params => {
return WeaTools.callApi('/api/demo01/getFormDemo', 'GET', params);
};
// form保存
export const doSaveBaseSet = params => {
return WeaTools.callApi('/api/demo01/saveFormDemo', 'POST', params);
};
// 获取高级搜索条件
export const getCondition = params => {
return WeaTools.callApi('/api/demo03/weatableConditonDemo', 'GET', params);
};
// 获取table数据
export const getTableDatas = params => {
return WeaTools.callApi('/api/demo03/weatableDemo', 'GET', params);
};

View File

@ -0,0 +1,14 @@
import React from 'react'
export default class ContentWrapper extends React.Component {
render() {
return <div>
<div>
{this.props.tab}
</div>
<div>
</div>
</div>
}
}

View File

@ -0,0 +1,32 @@
import React from 'react';
import { WeaTab } from 'ecCom';
import "./index.less";
export default class CustomTab extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedKey: ""
}
}
render() {
return (<div className="tabWrapper">
<div className="weaTab">
<WeaTab
datas={this.props.topTab}
keyParam="viewcondition" //主键
selectedKey={this.state.selectedKey}
onChange={(v) => {
this.setState({selectedKey: v})
this.props.onChange(v);
}}
/>
</div>
<div className="tabSearchWrapper">
{
this.props.searchOperationItem
}
</div>
</div>)
}
}

View File

@ -0,0 +1,21 @@
.tabWrapper {
display: flex;
.weaTab {
flex: 1;
}
.tabSearchWrapper {
padding-left: 20px;
padding-right: 10px;
line-height: 47px;
height: 47px;
border-bottom: 1px solid rgb(234, 234, 234);
.tabSearchLabel {
margin-right: 20px;
color: #484848;
}
}
.weaRangePickerWrapper {
display: inline-block;
margin-right: 10px;
}
}

View File

@ -0,0 +1,106 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button } from 'antd';
import { WeaLogView } from 'comsMobx';
import { WeaTop, WeaRightMenu, WeaLocaleProvider, WeaNewScroll } from 'ecCom';
import { renderNoright, renderLoading, getSearchs } from '../util'; // 从util文件引入公共的方法
const getLabel = WeaLocaleProvider.getLabel;
const WeaLogViewComp = WeaLogView.Component;
@inject('baseFormStore')
@observer
export default class BaseForm extends React.Component {
componentWillMount() { // 初始化渲染页面
const { baseFormStore: { doInit } } = this.props;
doInit();
}
componentWillReceiveProps(nextProps) {
const { baseFormStore: { doInit } } = this.props;
if (this.props.location.key !== nextProps.location.key) { // 手动刷新、切换菜单 重新初始化
doInit();
}
}
// 渲染右键菜单和顶部下拉菜单
getRightMenu() {
const { baseFormStore: { setLogVisible, saveForm } } = this.props;
let btnArr = [
{
key: 'BTN_SAVE',
icon: <i className='icon-coms-Preservation'/>,
content : `${getLabel(86,'保存')}`,
onClick : () => saveForm()
},
{
key: 'log',
content: getLabel(83, '日志'),
icon: <i className='icon-coms-Print-log' />,
onClick: () => setLogVisible(true),
},]
return btnArr;
}
render() {
/*
1判断是否无权限 是显示无权限页面
2渲染form页面:
2-1: WeaRightMenu 右键菜单
2-2: WeaTop: 顶部: 包括下拉菜单
2-3: renderLoading: 加载数据中的loading效果(统一封装在util中)
2-4: WeaNewScroll 顶部以下超长滚动处理
2-5: 通过getSearchs方法渲染form
*/
const { baseFormStore } = this.props;
const { loading, hasRight, form, condition, logVisible, logStore, saveLoading, setLogVisible, saveForm } = baseFormStore; // 从后台取数据 和 方法
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const btns = [ // 顶部按钮
<Button type='primary' loading={saveLoading} onClick={() => saveForm()}>保存</Button>,
];
const collectParams = { // 收藏功能配置
favname: '基础表单',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo01/index',
importantlevel: 1,
};
return (
<WeaRightMenu
datas={this.getRightMenu()} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="基础表单" // title
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
buttons={btns} // 顶部按钮: 这里是保存按钮,不需要可以不显示
buttonSpace={10} // 按钮之间的间隔
showDropIcon={true} // 是否显示右侧下拉按钮
dropMenuDatas={this.getRightMenu()} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
{loading ? renderLoading() :
<WeaNewScroll height='100%'>
{getSearchs(form, toJS(condition), 1)}
</WeaNewScroll>
}
<WeaLogViewComp // 日志功能(一般后端的应用设置是需要的)
visible={logVisible} // 日志弹框的显示隐藏
onCancel={() => setLogVisible(false)} // 关闭日志弹框时的操作设置logVisible属性为false
logStore={logStore} // 日志的store
logType="1" // 模块编码: 该参数要根据模块来给
logSmallType="1" // 细分模块编码: 该参数要根据模块来给
/>
</WeaTop>
</WeaRightMenu>
)
}
}

View File

@ -0,0 +1,9 @@
import React from 'react'
export default class tabWrapper extends React.Component {
render() {
return <div>
</div>
}
}

View File

@ -0,0 +1,46 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { createHashHistory } from 'History';
import { Router, Route, useRouterHistory, IndexRedirect } from 'react-router';
import { syncHistoryWithStore, RouterStore } from 'mobx-react-router';
import { Provider } from 'mobx-react';
import { WeaDebugRouteMenu } from 'ecCom';
import Module from './index';
WeaDebugRouteMenu.defaultProps.showRouteLev = 3;
const routing = new RouterStore();
const allStore = {
routing,
...Module.store,
};
const browserHistory = useRouterHistory(createHashHistory)({
queryKey: '_key',
basename: '/',
});
const history = syncHistoryWithStore(browserHistory, allStore.routing);
const Home = props => props.children;
const Root = () => (
<Provider {...allStore}>
<Router history={history}>
<Route name='root' breadcrumbName='根路由' path='/' component={Home}>
<IndexRedirect to='main/ns_demo01/index' />
<Route name='main' breadcrumbName='入口' path='/main' component={Home}>
{ Module.Route }
</Route>
</Route>
</Router>
</Provider>
);
ReactDOM.render(<Root />, document.getElementById('container'));

View File

@ -0,0 +1,87 @@
import React from 'react';
import Route from 'react-router/lib/Route';
import { WeaLocaleProvider } from 'ecCom'
import MySalaryBenefits from './pages/mySalaryBenefits';
import Programme from './pages/socialSecurityBenefits/programme';
import Archives from './pages/socialSecurityBenefits/archives';
import StandingBook from './pages/socialSecurityBenefits/standingBook';
import SalaryItemManagement from './pages/salaryItemManagement';
import SalaryFile from './pages/salaryFile';
import AccumulatedSpecialAdditionalDeduction from './pages/dataAcquisition/accumulatedSpecialAdditionalDeduction';
import OtherTaxExemptDeductions from './pages/dataAcquisition/otherTaxExemptDeductions';
import CumulativeSituationInPreviousPeriods from './pages/dataAcquisition/cumulativeSituationInPreviousPeriods';
import AttendanceReference from './pages/dataAcquisition/attendanceReference';
import SalarySet from './pages/salarySet';
import SalaryAccounting from './pages/salaryAccounting';
import PayrollPayment from './pages/payrollPayment';
import IndividualIncomeTaxApplicationForm from './pages/individualIncomeTaxApplicationForm';
import IndividualIncomeTaxRateForm from './pages/individualIncomeTaxRateForm';
import IndividualIncomeTaxWithholdingAgent from './pages/individualIncomeTaxWithholdingAgent';
import BaseForm from './components';
import stores from './stores';
import './style/index';
// 读取系统多语言配置
let getLocaleLabel = WeaLocaleProvider.getLocaleLabel.bind(this, 'hrmSalary');
// 不需要读取系统多语言
getLocaleLabel = function (nextState, replace, callback) {
callback();
};
const Home = props => props.children;
const SocialSecurityBenefits = props => props.children;
const DataAcquisition = props => props.children;
// mySalaryBenefits 我的薪资福利
// socialSecurityBenefits 社保福利
// programme 社保福利方案
// archives 社保福利档案
// standingBook 社保福利台账
// salaryItemManagement 薪资项目管理
// salaryFile 薪资档案
// dataAcquisition 数据采集
// accumulatedSpecialAdditionalDeduction 累计专项附加扣除
// otherTaxExemptDeductions 其他免税扣除
// cumulativeSituationInPreviousPeriods 往期累计情况
// attendanceReference 考勤引用
// salarySet 薪资账套
// salaryAccounting 薪资核算
// payrollPayment 工资单发放
// individualIncomeTaxApplicationForm 个税申请表
// individualIncomeTaxRateForm 个税税率表
// individualIncomeTaxWithholdingAgent 个税扣缴义务人
const Routes = (
<Route key='hrmSalary' path='hrmSalary' onEnter={getLocaleLabel} component={Home}>
<Route key='mySalaryBenefits' path='mySalaryBenefits' component={MySalaryBenefits} />
<Route key='socialSecurityBenefits' path='socialSecurityBenefits' component={SocialSecurityBenefits}>
<Route key='programme' path='programme' component={Programme} />
<Route key='archives' path='archives' component={Archives} />
<Route key='standingBook' path='standingBook' component={StandingBook} />
</Route>
<Route key='salaryItemManagement' path='salaryItemManagement' component={SalaryItemManagement} />
<Route key='salaryFile' path='salaryFile' component={SalaryFile} />
<Route key='dataAcquisition' path='dataAcquisition' component={DataAcquisition}>
<Route key='accumulatedSpecialAdditionalDeduction' path='accumulatedSpecialAdditionalDeduction' component={AccumulatedSpecialAdditionalDeduction} />
<Route key='otherTaxExemptDeductions' path='otherTaxExemptDeductions' component={OtherTaxExemptDeductions} />
<Route key='cumulativeSituationInPreviousPeriods' path='cumulativeSituationInPreviousPeriods' component={CumulativeSituationInPreviousPeriods} />
<Route key='attendanceReference' path='attendanceReference' component={AttendanceReference} />
</Route>
<Route key='salarySet' path='salarySet' component={SalarySet} />
<Route key='salaryAccounting' path='salaryAccounting' component={SalaryAccounting} />
<Route key='payrollPayment' path='payrollPayment' component={PayrollPayment} />
<Route key='individualIncomeTaxApplicationForm' path='individualIncomeTaxApplicationForm' component={IndividualIncomeTaxApplicationForm} />
<Route key='individualIncomeTaxRateForm' path='individualIncomeTaxRateForm' component={IndividualIncomeTaxRateForm} />
<Route key='individualIncomeTaxWithholdingAgent' path='individualIncomeTaxWithholdingAgent' component={IndividualIncomeTaxWithholdingAgent} />
</Route>
);
module.exports = {
Route: Routes,
store: stores,
};

View File

@ -0,0 +1,26 @@
---
title: demo01 - 基础表单
order: 0
demos:
- path: /spa/nonstandard/demo01/index.html#/main/ns_demo01/index
title: 基础表单
order: 0
---
## 基础表单
```
1、使用情况弹框新建编辑某个列表的数据、应用设置基本列出了表单用到的所有字段类型
2、引用组件
WeaRightMenu
WeaTop
WeaNewScroll
WeaSearchGroup
WeaFormItem
WeaSwitch
3、说明
[当前案例代码](https://gitee.com/weaver_cs/ecology-9-demo/tree/master/src4js/pc4ns/demo01)
```

View File

@ -0,0 +1,75 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "工号",
dataIndex: 'title',
key: 'title',
},
{
title: "证件号码",
dataIndex: 'title',
key: 'title',
},
{
title: "入职日期",
dataIndex: 'title',
key: 'title',
},
{
title: "累计子女教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计继续教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房贷款利息",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房租金",
dataIndex: 'title',
key: 'title',
},
{
title: "累计赡养老人",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class AccumulatedSpecialAdditionalDeduction extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '累计专项附加扣除',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="累计专项附加扣除" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,75 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "工号",
dataIndex: 'title',
key: 'title',
},
{
title: "证件号码",
dataIndex: 'title',
key: 'title',
},
{
title: "入职日期",
dataIndex: 'title',
key: 'title',
},
{
title: "累计子女教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计继续教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房贷款利息",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房租金",
dataIndex: 'title',
key: 'title',
},
{
title: "累计赡养老人",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class AttendanceReference extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '考勤引用',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="考勤引用" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,75 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "工号",
dataIndex: 'title',
key: 'title',
},
{
title: "证件号码",
dataIndex: 'title',
key: 'title',
},
{
title: "入职日期",
dataIndex: 'title',
key: 'title',
},
{
title: "累计子女教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计继续教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房贷款利息",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房租金",
dataIndex: 'title',
key: 'title',
},
{
title: "累计赡养老人",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class CumulativeSituationInPreviousPeriods extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '往期累计情况',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="往期累计情况" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,75 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "工号",
dataIndex: 'title',
key: 'title',
},
{
title: "证件号码",
dataIndex: 'title',
key: 'title',
},
{
title: "入职日期",
dataIndex: 'title',
key: 'title',
},
{
title: "累计子女教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计继续教育",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房贷款利息",
dataIndex: 'title',
key: 'title',
},
{
title: "累计住房租金",
dataIndex: 'title',
key: 'title',
},
{
title: "累计赡养老人",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class OtherTaxExemptDeductions extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '其他免税扣除',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="其他免税扣除" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class IndividualIncomeTaxApplicationForm extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '个税申请表',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="个税申请表" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class IndividualIncomeTaxRateForm extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '个税税率表',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="个税税率表" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class IndividualIncomeTaxWithholdingAgent extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '个税扣缴义务人',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="个税扣缴义务人" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,151 @@
// 工资单
export const payrollColumns = [{
title: "薪资所属月",
dataIndex: 'title',
key: 'title',
}, {
title: '个税扣缴义务人',
dataIndex: 'username',
key: 'username',
}, {
title: '发放时间',
dataIndex: 'projectName',
key: 'projectName',
}, {
title: '操作',
dataIndex: 'customer',
key: 'customer',
}];
// 社保福利
export const socialSecurityBenefitsColumns= [{
title: "缴纳月份",
dataIndex: 'title',
key: 'title',
fixed: 'left',
width: 100
}, {
title: '社保账号',
dataIndex: 'username',
key: 'username',
}, {
title: '公积金账号',
dataIndex: 'projectName',
key: 'projectName',
}, {
title: '补充公积金账号',
dataIndex: 'customer',
key: 'customer',
}, {
title: '社保个人合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '公积金个人合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '其他福利个人合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '个人合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '社保单位合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '公积金单位合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '其他福利单位合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '单位合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '社保合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '公积金合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '其他福利合计',
dataIndex: 'customer',
key: 'customer',
}, {
title: '合计',
dataIndex: 'customer',
key: 'customer',
}]
// 薪酬记录
export const salaryRecordColumns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "调整项目",
dataIndex: 'title',
key: 'title',
},
{
title: "调整前",
dataIndex: 'title',
key: 'title',
},
{
title: "调整后",
dataIndex: 'title',
key: 'title',
},
{
title: "调整原因",
dataIndex: 'title',
key: 'title',
},
{
title: "生效时间",
dataIndex: 'title',
key: 'title',
},
{
title: "操作人",
dataIndex: 'title',
key: 'title',
},
{
title: "操作时间",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,145 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import "./index.less"
import { payrollColumns,
socialSecurityBenefitsColumns,
salaryRecordColumns,
dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class MySalaryBenefits extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '我的薪资福利',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
{
title: "工资单",
viewcondition: "0"
},
{
title: "社保福利",
viewcondition: "1"
},
{
title: "薪酬记录",
viewcondition: "2"
}
];
const renderSearchOperationItem = () => {
if(this.state.selectedKey == "0") {
return (<div><span className="tabSearchLabel">薪资所属月</span>
<div className="weaRangePickerWrapper">
<div className="monthPickerWrapper">
<MonthPicker />
</div>
<span className="betweenLable">
</span>
<div className="monthPickerWrapper">
<MonthPicker />
</div>
</div></div>)
} else if(this.state.selectedKey == "1"){
return (<div><span className="tabSearchLabel">缴纳月份</span>
<div className="weaRangePickerWrapper">
<div className="monthPickerWrapper">
<MonthPicker />
</div>
<span className="betweenLable">
</span>
<div className="monthPickerWrapper">
<MonthPicker />
</div>
</div></div>)
} else {
return (<div></div>)
}
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="我的薪资福利" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<CustomTab topTab={topTab}
searchOperationItem={
renderSearchOperationItem()
}
onChange={(v) => {
this.setState({selectedKey: v})
}}
/>
{
this.state.selectedKey == '0' && <WeaTable columns={payrollColumns} dataSource={dataSource}/>
}
{
this.state.selectedKey == '1' && <WeaTable columns={socialSecurityBenefitsColumns} dataSource={dataSource} scroll={{ x: 1000}}/>
}
{
this.state.selectedKey == '2' && <WeaTable columns={salaryRecordColumns} dataSource={dataSource}/>
}
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,10 @@
.mySalaryBenefitsWrapper {
.monthPickerWrapper {
display: inline-block;
width: 100px;
}
.betweenLable {
margin-left: 10px;
margin-right: 10px
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class PayrollPayment extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '工资单发放',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="工资单发放" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class SalaryAccounting extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '薪资核算',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="薪资核算" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class SalaryFile extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '薪资档案',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="薪资档案" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,60 @@
export const columns = [
{
title: "名称",
dataIndex: 'title',
key: 'title',
},
{
title: "属性",
dataIndex: 'title',
key: 'title',
},
{
title: "类型",
dataIndex: 'title',
key: 'title',
},
{
title: "薪资档案引用",
dataIndex: 'title',
key: 'title',
},
{
title: "默认使用",
dataIndex: 'title',
key: 'title',
},
{
title: "进位规则",
dataIndex: 'title',
key: 'title',
},
{
title: "保留小数位",
dataIndex: 'title',
key: 'title',
},
{
title: "取值方式",
dataIndex: 'title',
key: 'title',
},
{
title: "备注",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class SalaryItemManagement extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '薪资项目管理',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="薪资项目管理" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,45 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
},
{
title: "个税扣缴义务人",
dataIndex: 'title',
key: 'title',
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "基本工资",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,84 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../components/customTab';
import ContentWrapper from '../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class SalarySet extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '薪资账套',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="薪资账套" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,100 @@
export const columns = [
{
title: "姓名",
dataIndex: 'title',
key: 'title',
fixed: 'left',
width: 100
},
{
title: "部门",
dataIndex: 'title',
key: 'title',
},
{
title: "手机号",
dataIndex: 'title',
key: 'title',
},
{
title: "员工状态",
dataIndex: 'title',
key: 'title',
},
{
title: "社保方案名称",
dataIndex: 'title',
key: 'title',
},
{
title: "社保账号",
dataIndex: 'title',
key: 'title',
},
{
title: "社保起始缴纳月",
dataIndex: 'title',
key: 'title',
},
{
title: "社保最后缴纳月",
dataIndex: 'title',
key: 'title',
},
{
title: "公积金方案名称",
dataIndex: 'title',
key: 'title',
},
{
title: "公积金账号",
dataIndex: 'title',
key: 'title',
},
{
title: "补充公积金账号",
dataIndex: 'title',
key: 'title',
},
{
title: "公积金起始缴纳月",
dataIndex: 'title',
key: 'title',
},
{
title: "公积金最后缴纳月",
dataIndex: 'title',
key: 'title',
},
{
title: "其他福利方案名称",
dataIndex: 'title',
key: 'title',
},
{
title: "其他福利起始缴纳月",
dataIndex: 'title',
key: 'title',
},
{
title: "其他福利最后缴纳月",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
fixed: 'right',
width: 100
}
]
export const dataSource = [];

View File

@ -0,0 +1,93 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class Archives extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '社保福利档案',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="社保福利档案" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<CustomTab topTab={topTab}
searchOperationItem={
renderSearchOperationItem()
}
onChange={(v) => {
this.setState({selectedKey: v})
}}
/>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,111 @@
// 社保
export const socialSecurityColumns = [{
title: "方案名称",
dataIndex: 'title',
key: 'title',
}, {
title: '缴纳类型',
dataIndex: 'username',
key: 'username',
}, {
title: '缴纳范围',
dataIndex: 'projectName',
key: 'projectName',
}, {
title: '备注',
dataIndex: 'customer',
key: 'customer',
}, {
title: '操作',
dataIndex: 'customer',
key: 'customer',
}];
// 公积金
export const accumulationFundColumns= [{
title: "方案名称",
dataIndex: 'title',
key: 'title',
}, {
title: '缴纳类型',
dataIndex: 'username',
key: 'username',
}, {
title: '缴纳范围',
dataIndex: 'projectName',
key: 'projectName',
}, {
title: '备注',
dataIndex: 'customer',
key: 'customer',
}, {
title: '操作',
dataIndex: 'customer',
key: 'customer',
}]
// 企业年金及其他福利
export const otherBenefitsColumns = [
{
title: "方案名称",
dataIndex: 'title',
key: 'title',
},
{
title: "缴纳类型",
dataIndex: 'title',
key: 'title',
},
{
title: "缴纳范围",
dataIndex: 'title',
key: 'title',
},
{
title: "备注",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const CustomBenefitsColumns = [
{
title: "福利名称",
dataIndex: 'title',
key: 'title',
},
{
title: "启用",
dataIndex: 'title',
key: 'title',
},
{
title: "类型",
dataIndex: 'title',
key: 'title',
},
{
title: "缴纳对象",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,153 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable, WeaInputSearch, WeaSlideModal } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { socialSecurityColumns,
accumulationFundColumns,
otherBenefitsColumns,
CustomBenefitsColumns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class Programme extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0",
searchValue: "",
slideVisiable: false
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '社保福利方案',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
{
title: "社保",
viewcondition: "0"
},
{
title: "公积金",
viewcondition: "1"
},
{
title: "企业年金及其他福利",
viewcondition: "2"
},
{
title: "自定义福利",
viewcondition: "3"
}
];
const renderSearchOperationItem = () => {
return <div>
<Button type="primary" style={{marginRight: '10px'}} onClick={() => {this.setState({slideVisiable: true})}}>新增</Button>
<WeaInputSearch
value={this.state.searchValue}
placeholder={"请输入方案名称/缴纳地区"}
/>
</div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="社保福利方案" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<CustomTab topTab={topTab}
searchOperationItem={
renderSearchOperationItem()
}
onChange={(v) => {
this.setState({selectedKey: v})
}}
/>
{
this.state.selectedKey == '0' && <WeaTable columns={socialSecurityColumns} dataSource={dataSource}/>
}
{
this.state.selectedKey == '1' && <WeaTable columns={accumulationFundColumns} dataSource={dataSource} scroll={{ x: 1000}}/>
}
{
this.state.selectedKey == '2' && <WeaTable columns={otherBenefitsColumns} dataSource={dataSource}/>
}
{
this.state.selectedKey == "3" && <WeaTable columns={CustomBenefitsColumns} dataSource={dataSource}/>
}
</WeaTop>
</WeaRightMenu>
<WeaSlideModal visible={this.state.slideVisiable}
top={0}
width={60}
height={100}
direction={'right'}
measure={'%'}
title={<div className="slideTitleWrapper">
<i className='icon-coms-meeting'/>
<div className="slideTitle">
<div className="subtitle">新增社保方案</div>
<div className="subTabWrapper">
<div className="tabItem">
基础设置
</div>
</div>
</div>
<Button type="primary">保存</Button>
</div>}
content={(<div>Content</div>)}
onClose={() => this.setState({slideVisiable: false})}
showMask={true}
closeMaskOnClick={() => this.setState({slideVisiable: false})}
onAnimationEnd={() => console.log('onAnimationEnd')}/>
</div>
)
}
}

View File

@ -0,0 +1,5 @@
.slideTitleWrapper {
.slideTitle {
display: inline-block;
}
}

View File

@ -0,0 +1,65 @@
export const columns = [
{
title: "账单月份",
dataIndex: 'title',
key: 'title',
},
{
title: "状态",
dataIndex: 'title',
key: 'title',
},
{
title: "社保核算人数",
dataIndex: 'title',
key: 'title',
},
{
title: "公积金核算人数",
dataIndex: 'title',
key: 'title',
},
{
title: "其他福利核算人数",
dataIndex: 'title',
key: 'title',
},
{
title: "公积金缴费",
dataIndex: 'title',
key: 'title',
},
{
title: "其他福利缴费",
dataIndex: 'title',
key: 'title',
},
{
title: "核算人",
dataIndex: 'title',
key: 'title',
},
{
title: "最后操作时间",
dataIndex: 'title',
key: 'title',
},
{
title: "备注",
dataIndex: 'title',
key: 'title',
},
{
title: "操作",
dataIndex: 'title',
key: 'title',
}
]
export const dataSource = [];

View File

@ -0,0 +1,92 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaTable } from 'ecCom';
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import { columns, dataSource } from './columns';
const { MonthPicker } = DatePicker;
@inject('baseTableStore')
@observer
export default class StandingBook extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "0"
}
}
render() {
const { baseTableStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = baseTableStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: <i className='icon-coms-Custom' />,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '社保福利台账',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={doSearch}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>,
];
const topTab = [
];
const renderSearchOperationItem = () => {
return <div></div>
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
datas={rightMenu} // 右键菜单
collectParams={collectParams} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<WeaTop
title="社保福利方案" // 文字
icon={<i className='icon-coms-meeting' />} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
<CustomTab topTab={topTab}
searchOperationItem={
renderSearchOperationItem()
}
onChange={(v) => {
this.setState({selectedKey: v})
}}
/>
<WeaTable columns={columns} dataSource={dataSource}/>
</WeaTop>
</WeaRightMenu>
</div>
)
}
}

View File

@ -0,0 +1,43 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { createHashHistory } from 'History';
import { Router, Route, useRouterHistory, IndexRedirect } from 'react-router';
import { syncHistoryWithStore, RouterStore } from 'mobx-react-router';
import { Provider } from 'mobx-react';
import Module from 'weaHrmSalary';
const routing = new RouterStore();
const allStore = {
routing,
...Module.store,
};
const browserHistory = useRouterHistory(createHashHistory)({
queryKey: '_key',
basename: '/',
});
const history = syncHistoryWithStore(browserHistory, allStore.routing);
const Home = props => props.children;
const Root = () => (
<Provider {...allStore}>
<Router history={history}>
<Route name='root' breadcrumbName='根路由' path='/' component={Home}>
<IndexRedirect to='main/hrmSalary/index' />
<Route name='main' breadcrumbName='入口' path='/main' component={Home}>
{ Module.Route }
</Route>
</Route>
</Router>
</Provider>
);
ReactDOM.render(<Root />, document.getElementById('container'));

View File

@ -0,0 +1,63 @@
import { observable, action, toJS } from 'mobx';
import { message } from 'antd';
import { WeaForm, WeaLogView } from 'comsMobx';
import { WeaLocaleProvider } from 'ecCom';
import * as API from '../apis'; // 引入API接口文件
const {LogStore} = WeaLogView;
const getLabel = WeaLocaleProvider.getLabel;
export class BaseFormStore {
@observable form = new WeaForm(); // nrew 一个form
@observable logStore = new LogStore();
@observable condition = []; // 存储后台得到的form数据
@observable saveLoading = false; // 保存状态处理:保证保存的时候接口只走一次
@observable loading = true; // 页面初始化的loading状态数据加载成功前后前使用
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
@observable logVisible = false; // 控制日志弹框的显影
@action // 初始化操作: 一般用来初始化获取后台数据
doInit = () =>{
this.getBaseForm();
}
@action // 获得form配置数据
getBaseForm = () => {
API.getBaseForm().then(action(result => {
this.loading = false;
this.hasRight = result.hasRight;
if (result.hasRight) {
this.condition = result.condition;
this.form.initFormFields(result.condition);
}
}));
}
@action // 保存
saveForm = () => {
this.form.validateForm().then(action(f=>{ // 表单的校验: 直接使用form的validateForm方法即可
if (f.isValid) { // 校验听过: 走保存接口
this.saveLoading = true;
const params = this.form.getFormParams();
API.saveForm(params).then(action(
result => {
this.saveLoading = false
if(result.api_status){ // 保存成功: 1、给出提示 2、刷新form数据
message.success(`${getLabel(18758,'保存成功')}`);
this.getBaseForm();
}else {
message.error(`${getLabel(22620,'保存失败')}`);
}
}
));
} else {
f.showErrors();
}
}));
}
@action
setLogVisible = bool => this.logVisible = bool
}

View File

@ -0,0 +1,63 @@
import { observable, action, toJS } from 'mobx';
import { message } from 'antd';
import { WeaForm, WeaTableNew } from 'comsMobx';
import * as API from '../apis'; // 引入API接口文件
const { TableStore } = WeaTableNew;
export class BaseTableStore {
@observable tableStore = new TableStore(); // new table
@observable form = new WeaForm(); // nrew 一个form
@observable condition = []; // 存储后台得到的form数据
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
@observable showSearchAd = false; // 高级搜索面板显示
@observable loading = true; // 数据加载状态
// 初始化操作
@action
doInit = () => {
this.getCondition();
this.getTableDatas();
}
// 获得高级搜索表单数据
@action
getCondition = () => {
API.getCondition().then(action(res => {
if (res.api_status) { // 接口请求成功/失败处理
this.condition = res.condition;
this.form.initFormFields(res.condition); // 渲染高级搜索form表单
} else {
message.error(res.msg || '接口调用失败!')
}
}));
}
// 渲染table数据
@action
getTableDatas = (params) => {
this.loading = true;
const formParams = this.form.getFormParams() || {};
params = params || formParams;
API.getTableDatas(params).then(action(res => {
if (res.api_status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.datas); // table 请求数据
this.hasRight = res.hasRight;
} else {
message.error(res.msg || '接口调用失败!')
}
this.loading = false;
}));
}
@action
setShowSearchAd = bool => this.showSearchAd = bool;
// 高级搜索 - 搜索
@action doSearch = () => {
this.getTableDatas();
this.showSearchAd = false;
}
}

View File

@ -0,0 +1,7 @@
import { BaseTableStore } from './baseTable';
module.exports = {
baseTableStore: new BaseTableStore(),
};

View File

@ -0,0 +1,2 @@
const req = require.context('./', false, /\.\/\w+\.(less|css)/);
req.keys().forEach(mod => req(mod));

View File

@ -0,0 +1,13 @@
/* 公共样式 */
// loading 效果
.wea-demo-loading {
position: relative;
height: 100%;
text-align: center;
>div {
position: absolute;
top: 50%;
margin-top: -10px;
}
}

View File

@ -0,0 +1,68 @@
import { Spin } from 'antd';
import { WeaSwitch } from 'comsMobx';
import { WeaLocaleProvider, WeaAlertPage, WeaSearchGroup, WeaFormItem } from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
// 渲染form表单: 一般对form的渲染都统一使用该方法
export const getSearchs = (form, condition, col, isCenter) => {
const { isFormInit } = form;
const formParams = form.getFormParams();
let group = [];
isFormInit && condition && condition.map(c =>{
let items = [];
c.items.map(fields => {
items.push({
com:(
<WeaFormItem
label={`${fields.label}`} // label 标签的文本
labelCol={{span: `${fields.labelcol}`}} // label标签占一行比例
wrapperCol={{span: `${fields.fieldcol}`}} // 右侧控件占一行比例
error={form.getError(fields)} // 错误提示: 处理表单中有必填项,保存的校验
tipPosition="bottom" // 错误提示的显示位置: top/bottom
>
<WeaSwitch
fieldConfig={fields}
form={form}
formParams={formParams}
/>
</WeaFormItem>),
colSpan:1,
})
});
group.push(
<WeaSearchGroup
col={col || 1} // 高级搜索列布局列数
needTigger={true} // 是否开启收缩
title={c.title || ''} // 高级搜索标题
showGroup={c.defaultshow} // 是否开启面板
items={items} // 条目数组数据
center={isCenter || false} // 内容是否居中:一般弹框需要
/>)
});
return group;
}
// 页面加载中效果处理
export const renderLoading = (loading) => (
<div className="wea-demo-loading">
<Spin spinning={loading} />
</div>
)
// 无权限处理
export const renderNoright = () => (
<WeaAlertPage>
<div>
{getLabel(2012,'对不起,您暂时没有权限!')}
</div>
</WeaAlertPage>
)
// 暂无数据处理
export const renderNoData = () => (
<WeaAlertPage>
<div>
暂无数据
</div>
</WeaAlertPage>
)

32
tsconfig.json Normal file
View File

@ -0,0 +1,32 @@
{
"compilerOptions": {
"baseUrl": ".",
"outDir": "../spa",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "../src4js",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"experimentalDecorators": true,
},
"exclude": [
"**/node_modules/*",
"config",
"config_weaver",
"public",
"scripts",
"webpack-config.js",
"webpack",
"jest"
]
}

9
tslint.json Normal file
View File

@ -0,0 +1,9 @@
{
"extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
"linterOptions": {
"exclude": [
"config/**/*.js",
"node_modules/**/*.ts"
]
}
}

219
webpack.config.js Normal file
View File

@ -0,0 +1,219 @@
const config = require('./weaconfig/weaconfig');
const path_e9 = require('./weaconfig/weapath4e9').default;
const path_e9_coms = require('./weaconfig/weapath4e9-coms').default;
const path_e9_eng = require('./weaconfig/weapath4e9-eng').default;
const argv = require('yargs').argv;
const getPath = ({ name, srcPath, runPath }, paths) => {
if (!paths[name]) {
console.error(`\n======
请检查 src4js/webpack.config.js 的配置, 找不到 name ${
name} APP \n======\n\n`);
return;
}
const app = paths[name];
const { entry, output, styleUrl } = app;
return Object.assign(app, {
entry: `${srcPath}${entry}`,
output: `${runPath}${output}`,
}, styleUrl ? { styleUrl: `${runPath}${styleUrl}` } : {});
};
// 运行模式release打包模式debug调试模式
let mode = 'release';
// mode = 'debug';
// 编译模式production发布版、development开发版
let node_env = 'production';
// node_env = 'development';
// 是否是自定义路径模式,自定义模式可以自己写完整地址
const custom = true;
if (custom) {
// 自定义路径
const customAppName = 'more';
module.exports = config.create(({
//前台调试主入口
"index":{
entry: "./pc/main/index.js",
output: "D:/weaver/ecology/spa/main/index.js",
styleUrl: "D:/weaver/ecology/spa/main/index.css"
},
//前台调试主入口
"portal":{
entry: "./pc/portal/index.js",
output: "E:/workspace/ecology/spa/portal/index.js",
styleUrl: "E:/workspace/ecology/spa/portal/index.css",
outputlib: {
library: "weaPortal",
libraryTarget: "umd"
}
},
//前台调试主入口
"portalengine":{
entry: "./pc4backstage/portal4engine/index.js",
output: "E:/workspace/ecology/spa/portal/static4engine/engine.js",
styleUrl: "E:/workspace/ecology/spa/portal/static4engine/engine.css",
outputlib: {
library: "weaPortalEngine",
libraryTarget: "umd"
}
},
//前台调试主入口
"theme":{
entry: "./pc4mobx/portal4theme/index.js",
output: "E:/workspace/ecology/wui/theme/ecology9/js/index-mobx.js",
styleUrl: "E:/workspace/ecology/wui/theme/ecology9/css/index-mobx.css",
outputlib: {
library: "weaPortalTheme",
libraryTarget: "umd"
}
},
//前台调试主入口
"more":{
entry: "./pc/portal/elementmore/single.js",
output: "E:/workspace/ecology/spa/portal/index_more.js",
styleUrl: "E:/workspace/ecology/spa/portal/index_more.css",
},
//前台调试主入口
"single":{
entry: "./pc/portal/single.js",
output: "E:/workspace/ecology/spa/portal/index-indie.js",
styleUrl: "E:/workspace/ecology/spa/portal/index-indie.css",
},
//E9 主题
"E9_theme_mobx": {
entry: "./pc4mobx/portal4theme/index.js",
output: "E:/workspace/ecology/wui/theme/ecology9/js/index-mobx.js",
styleUrl: "E:/workspace/ecology/wui/theme/ecology9/css/index-mobx.css",
outputlib: {
library: "weaPortalTheme",
libraryTarget: "umd"
}
},
//正式系统打包文件
"portal_fs":{
entry: "./pc/portal_fs_2/index.js",
output: "E:/workspace/ecology/spa/portal_fs/index.js",
styleUrl: "E:/workspace/ecology/spa/portal_fs/index.css",
outputlib: {
library: "weaPortal",
libraryTarget: "umd"
}
},
//前台调试主入口
"mobx_index":{
entry: "./pc4mobx/amain/index.js",
output: "E:/workspace/ecology/spa/main/index-mobx.js",
},
//引擎主入口
"engine_index":{
entry: "./pc4backstage/amain/index.js",
output: "E:/workspace/ecology/spa/main/engine.js",
},
//SAP集成
"sapIntegration":{
entry: "./pc4backstage/sapIntegration/index.js",
output: "E:/workspace/ecology/spa/sapIntegration/index.js",
styleUrl: "E:/workspace/ecology/spa/sapIntegration/index.css",
outputlib: {
library: "weaSapIntegration",
libraryTarget: "umd"
}
},
//SAP集成
"sapBrowseConfiguration":{
entry: "./pc4backstage/sapIntegration/public/index.js",
output: "E:/workspace/ecology/spa/sapIntegration/index_sapBrowse.js",
styleUrl: "E:/workspace/ecology/spa/sapIntegration/index_sapBrowse.css",
outputlib: {
library: "weaSapIntegrationPublic",
libraryTarget: "umd"
}
},
})[customAppName], mode, node_env);
} else {
// 已内置配置
const pathConfig = {
name: 'document_redux', // 查阅底部注释列表
srcPath: '../', // 本地源码路径src4js 上一层, 或本地 svn 绝对路径 'D:/ecology'
runPath: 'D:/ecology/ecology9/ecology', // 打包后路径spa wui 等上一层, 或本地绝对路径 'D:/ecology'
mode,
};
argv.pubModule && (pathConfig.name = argv.pubModule);
module.exports = config.create(getPath(
pathConfig,
Object.assign(path_e9, path_e9_coms, path_e9_eng)
), mode, node_env);
}
// ************ APP NAME ************
/*
antd - antd
ecCom - E9 基础组件库
coms_demo - 组件库 API 文档 demo
coms_mobx - mobx 公共组件
coms_redux - 前台 redux 公共组件 即将废弃
coms_global - 流程单页公共文件整合包
weaCom - 云商店应用组件库
*/
/* A -> Z
main - 主入口
theme - 主题
portal - 门户
album_redux - 相册 redux 迁移后废弃
blog - 微博
blog_single - 微博单页入口
cowork - 协作
cowork_single - 协作单页入口
cpt - 资产
cpt_single - 资产单页入口
crm - 客户
crm_single - 客户单页入口
document - 文档
document_single - 文档单页入口
document_redux - 文档 redux迁移后废弃
document_redux_single - 文档 redux 单页入口迁移后废弃
email - 邮件
email_single - 邮件单页入口
esearch - 微搜
esearch_single - 微搜单页入口
fna - 财务
fnaSpecial - 财务流程
hrm - 人力
hrm_single - 人力单页入口
inte - 集成
inte_single - 集成单页入口
meeting - 会议
meeting_single - 会议单页入口
odoc - 公文
odoc_single - 公文单页入口
prj - 项目
prj_single - 项目单页入口
smallApp - 小模块
smallApp_single - 小模块单页入口
workplan - 日程
workplan_single - 日程单页入口
workflow - 流程
workflow_single - 流程单页入口
workflow_redux - 流程 redux迁移后废弃
workflow_redux_single - 流程 redux 单页入口迁移后废弃
*/
/*
bs_main - 主入口
bs_theme - 门户主题
bs_portal - 门户
bs_cpt - 资产
bs_crm - 客户
bs_hrm - 人力
bs_hrm_single - 人力单页入口
bs_mobilemode - 移动建模
bs_workflow - 流程
bs_workflow_single - 流程单页入口
bs_smallApp - 小应用
bs_smallApp_single - 小应用单页入口
*/