From 0a1173faaa72e2eb6250199d9b9e8746000f17f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 13 Nov 2023 10:41:47 +0800 Subject: [PATCH] =?UTF-8?q?feature/2.9.42311.02-=E6=88=91=E7=9A=84?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E7=A6=8F=E5=88=A9=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/index.js | 3 + .../components/mobileDatePicker/index.js | 101 ++++++++++++ .../components/payrollList/index.js | 36 +++++ .../hrmSalary/pages/mySalaryMobile/index.js | 144 ++++++++++++++++++ .../hrmSalary/pages/mySalaryMobile/index.less | 101 ++++++++++++ 5 files changed, 385 insertions(+) create mode 100644 pc4mobx/hrmSalary/pages/mySalaryMobile/components/mobileDatePicker/index.js create mode 100644 pc4mobx/hrmSalary/pages/mySalaryMobile/components/payrollList/index.js create mode 100644 pc4mobx/hrmSalary/pages/mySalaryMobile/index.js create mode 100644 pc4mobx/hrmSalary/pages/mySalaryMobile/index.less diff --git a/pc4mobx/hrmSalary/index.js b/pc4mobx/hrmSalary/index.js index af5bbfb0..4781c1cc 100644 --- a/pc4mobx/hrmSalary/index.js +++ b/pc4mobx/hrmSalary/index.js @@ -1,6 +1,7 @@ import React from "react"; import Route from "react-router/lib/Route"; import { WeaLocaleProvider } from "ecCom"; +import MySalaryMobile from "./pages/mySalaryMobile"; import MySalary from "./pages/mySalary"; import Programme from "./pages/socialSecurityBenefits/programme"; import Archives from "./pages/socialSecurityBenefits/archives"; @@ -59,6 +60,7 @@ const Home = (props) => props.children; const SocialSecurityBenefits = (props) => props.children; const DataAcquisition = (props) => props.children; +// mySalaryMobile 我的薪资福利-移动端 // mySalary 我的薪资福利 // mySalaryView 我的薪资福利-查看工资单 // socialSecurityBenefits 社保福利 @@ -102,6 +104,7 @@ const Routes = ( path="hrmSalary" onEnter={getLocaleLabel} component={Home}> + { + console.log(this.state); + }); + } + } + + handleChangeYear = (year) => { + this.setState({ + yearList: { + ...this.state.yearList, + defaultValue: year + } + }, () => this.props.onChange(this.props.type, "defaultValueYear", year)); + }; + handleChangeMonth = (month) => { + this.setState({ + monthList: { + ...this.state.monthList, + defaultValue: "" + } + }, () => this.props.onChange(this.props.type, "defaultValueMonth", month)); + }; + + render() { + const { yearList, monthList } = this.state; + return ( +
+ + + + +
+ ); + } +} + +export default Index; +const YearFn = (lowEnd, highEnd) => { + let list = []; + for (let i = lowEnd; i <= highEnd; i++) { + list.push(i.toString()); + } + return list; +}; diff --git a/pc4mobx/hrmSalary/pages/mySalaryMobile/components/payrollList/index.js b/pc4mobx/hrmSalary/pages/mySalaryMobile/components/payrollList/index.js new file mode 100644 index 00000000..ce3d6de2 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/mySalaryMobile/components/payrollList/index.js @@ -0,0 +1,36 @@ +/* + * Author: 黎永顺 + * name: 我的薪资福利-移动端列表数据 + * Description: + * Date: 2023/11/13 + */ +import React, { Component } from "react"; +import { WeaLocaleProvider } from "ecCom"; +import moment from "moment"; + +const getLabel = WeaLocaleProvider.getLabel; + +class Index extends Component { + + render() { + const { dataSource } = this.props; + return ( +
    + { + _.map(dataSource, it => { + return
  • +
    {moment(it.salaryYearMonth).format("YYYY-MM")}
    +
    + {getLabel(111, "发放时间")} + {moment(it.sendTime).format("YYYY-MM")} +
    + {`${getLabel(33564, "查看")}>`} +
  • ; + }) + } +
+ ); + } +} + +export default Index; diff --git a/pc4mobx/hrmSalary/pages/mySalaryMobile/index.js b/pc4mobx/hrmSalary/pages/mySalaryMobile/index.js new file mode 100644 index 00000000..ede6ce6f --- /dev/null +++ b/pc4mobx/hrmSalary/pages/mySalaryMobile/index.js @@ -0,0 +1,144 @@ +/* + * Author: 黎永顺 + * name: 我的薪资福利-移动端列表 + * Description: + * Date: 2023/11/10 + */ +import React, { Component } from "react"; +import { WeaLocaleProvider, WeaTab } from "ecCom"; +import { message } from "antd"; +import moment from "moment"; +import MobileDatePicker from "./components/mobileDatePicker"; +import PayrollList from "./components/payrollList"; +import { mySalaryBillList } from "../../apis/mySalaryBenefits"; +import "./index.less"; + +const getLabel = WeaLocaleProvider.getLabel; + +class Index extends Component { + constructor(props) { + super(props); + this.state = { + dataSource: [], loading: false, pageInfo: { current: 1, pageSize: 10, total: 0 }, + salaryYearMonth: [moment().startOf("year").format("YYYY-MM"), moment().startOf("month").format("YYYY-MM")], + salaryStart: { + visible: false, type: "", + salaryStart: { + defaultValueYear: moment().year().toString(), + defaultValueMonth: (moment().startOf("year").month() + 1).toString() + } + }, + salaryEnd: { + visible: false, + salaryEnd: { + defaultValueYear: moment().year().toString(), + defaultValueMonth: (moment().month() + 1).toString() + } + } + }; + } + + componentDidMount() { + this.getMySalaryBillList(); + const mySalaryMobile = document.getElementById("mySalaryMobile"); + mySalaryMobile.addEventListener("scroll", this.handleScroll, true); + } + + handleScroll = () => { + this.isTouchBottom(this.handleLoadMore); + }; + + componentWillUnmount() { + const mySalaryMobile = document.getElementById("mySalaryMobile"); + mySalaryMobile.removeEventListener("scroll", this.handleScroll, true); + } + + getMySalaryBillList = () => { + const { salaryYearMonth, pageInfo } = this.state; + this.setState({ loading: true }); + mySalaryBillList({ salaryYearMonth, ...pageInfo }).then(({ status, data }) => { + this.setState({ loading: false }); + if (status) { + const { datas: dataSource, pageInfo } = data; + const { pageNum: current, pageSize, total } = pageInfo; + this.setState({ + dataSource, pageInfo: { ...pageInfo, current, pageSize, total } + }); + } + }).catch(() => this.setState({ loading: false })); + }; + handleLoadMore = () => { + // 为测试效果临时使用 message + message.info("触底了~"); + }; + isTouchBottom = (handler) => { + const div = document.getElementById("mySalaryMobile"); + if ((div.scrollHeight - div.scrollTop) === div.clientHeight) handler(); + }; + handleChange = (type, key, val) => { + this.setState({ + [type]: { + ...this.state[type], + [type]: { + ...this.state[type][type], + [key]: val + } + } + }); + }; + handleCancel = () => { + this.setState({ + salaryStart: { + visible: false, type: "", + salaryStart: { + defaultValueYear: moment().year().toString(), + defaultValueMonth: (moment().startOf("year").month() + 1).toString() + } + }, + salaryEnd: { + visible: false, + salaryEnd: { + defaultValueYear: moment().year().toString(), + defaultValueMonth: (moment().month() + 1).toString() + } + } + }); + }; + handleConfirm = () => { + this.handleCancel(); + }; + + render() { + const { salaryStart, salaryEnd, salaryYearMonth, dataSource } = this.state; + const [salaryStartYearMonth, salaryEndYearMonth] = salaryYearMonth; + const mobilePorps = { ...salaryStart, ...salaryEnd, visible: salaryEnd.visible || salaryStart.visible }; + return ( +
+
+ +
+
+ this.setState({ + salaryStart: { ...salaryStart, visible: true, type: "salaryStart" } + })}>{salaryStartYearMonth} + {getLabel(15322, "至")} + this.setState({ + salaryEnd: { ...salaryEnd, visible: true, type: "salaryEnd" } + })}>{salaryEndYearMonth} +
+ + +
+ ); + } +} + +export default Index; diff --git a/pc4mobx/hrmSalary/pages/mySalaryMobile/index.less b/pc4mobx/hrmSalary/pages/mySalaryMobile/index.less new file mode 100644 index 00000000..259f5e9e --- /dev/null +++ b/pc4mobx/hrmSalary/pages/mySalaryMobile/index.less @@ -0,0 +1,101 @@ +.salary-mobile-list-wrapper { + height: 100%; + overflow-y: auto; + background: #f6f6f6; + position: relative; + + .salary-mobile-list-tab { + background: #fff; + position: fixed; + width: 100%; + } + + .wea-tab { + display: flex; + justify-content: center; + } + + .searchWrapper { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding: 10px 0; + background: #fff; + height: 40px; + position: fixed; + top: 47px; + + .date { + color: #333; + } + + .to { + margin: 0 10px; + color: #999; + } + } + + .ui-picker-address { + .ui-popup-title { + font-size: 12px !important; + } + + .ui-popup-content { + display: flex; + + .ui-picker-wrapper { + flex: 1; + + .ui-picker-item { + font-size: 12px !important; + } + } + } + } +} + +.payrollList-wrapper { + padding: 8px 0; + margin-top: 87px; + + li { + display: flex; + flex-direction: column; + border-radius: 5px; + background: #FFF; + margin: 0 8px 8px; + + .salaryMonth { + display: flex; + padding: 10px; + border-bottom: 1px solid #e5e5e5; + + & > span:first-child { + color: #2db7f5; + font-size: 14px; + } + } + + .sendTime { + padding: 10px; + + & > span:first-child { + color: #999; + margin-right: 80px; + } + + & > span:last-child { + color: #333; + } + } + + a { + color: #2db7f5; + display: inline-block; + width: 100%; + text-align: center; + padding-bottom: 10px; + } + } +}