You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
861 lines
26 KiB
JavaScript
861 lines
26 KiB
JavaScript
|
1 month ago
|
import React, {Fragment, PureComponent} from 'react';
|
||
|
|
import {
|
||
|
|
DeleteOutlined,
|
||
|
|
EditOutlined,
|
||
|
|
PlusOutlined,
|
||
|
|
SearchOutlined,
|
||
|
|
RedoOutlined,
|
||
|
|
DownOutlined,
|
||
|
|
ExclamationCircleFilled,
|
||
|
|
UpOutlined,
|
||
|
|
} from '@ant-design/icons';
|
||
|
|
import {connect, history} from '@umijs/max';
|
||
|
|
import {Button, Card, Divider, Dropdown, message, Modal, Popconfirm, Space, Switch, Tag,Row,Col} from 'antd';
|
||
|
|
import StandardTable from '@/components/StandardTable';
|
||
|
|
|
||
|
|
import { MyIcon } from "@/components/Icon"
|
||
|
|
import style from "@/global.less";
|
||
|
|
import StaffSheetCreateForm from './form/StaffSheetCreateForm'; //新增表单
|
||
|
|
import StaffSheetUpdateForm from './form/StaffSheetUpdateForm'; //修改表单
|
||
|
|
import StaffSheetViewForm from './form/StaffSheetViewForm'; //查看表单
|
||
|
|
import StaffSheetRenderSimpleForm from './form/StaffSheetRenderSimpleForm'; //简单查询表单
|
||
|
|
import StaffSheetRenderAdvancedForm from './form/StaffSheetRenderAdvancedForm'; //高级查询表单
|
||
|
|
import styles from './StaffSheetList.less';
|
||
|
|
import datadictionary from "@/utils/dataDictionary";
|
||
|
|
import {formatDate} from "@/utils/formatUtils";
|
||
|
|
import { formatDictText, checkButtonAuthority } from "@/utils/globalCommon";
|
||
|
|
|
||
|
|
const { confirm } = Modal;
|
||
|
|
|
||
|
|
//预约类型
|
||
|
|
const sex_type = datadictionary.sex
|
||
|
|
const user_status = datadictionary.user_status
|
||
|
|
const sys_user_post = datadictionary.sys_user_post
|
||
|
|
|
||
|
|
const mockData = {
|
||
|
|
list: [
|
||
|
|
{
|
||
|
|
gx: "--",
|
||
|
|
gslx: "排班",
|
||
|
|
ks: "中医科",
|
||
|
|
lc: "11",
|
||
|
|
kssj: "08:00",
|
||
|
|
jssj: "18:00",
|
||
|
|
cxsc: "8",
|
||
|
|
sjly: ""
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "--",
|
||
|
|
gslx: "考勤",
|
||
|
|
ks: "中医科",
|
||
|
|
lc: "11",
|
||
|
|
kssj: "07:00",
|
||
|
|
jssj: "20:00",
|
||
|
|
cxsc: "11",
|
||
|
|
sjly: ""
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "照顾A",
|
||
|
|
gslx: "照顾",
|
||
|
|
ks: "中医科",
|
||
|
|
lc: "11",
|
||
|
|
kssj: "09:00",
|
||
|
|
jssj: "10:00",
|
||
|
|
cxsc: "1",
|
||
|
|
sjly: "人工上传"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "照顾B",
|
||
|
|
gslx: "照顾",
|
||
|
|
ks: "中医科",
|
||
|
|
lc: "11",
|
||
|
|
kssj: "10:00",
|
||
|
|
jssj: "11:00",
|
||
|
|
cxsc: "1",
|
||
|
|
sjly: "人工上传"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "照顾C",
|
||
|
|
gslx: "照顾",
|
||
|
|
ks: "中医科",
|
||
|
|
lc: "11",
|
||
|
|
kssj: "11:00",
|
||
|
|
jssj: "13:00",
|
||
|
|
cxsc: "2",
|
||
|
|
sjly: "人工上传"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "接病人D",
|
||
|
|
gslx: "接送",
|
||
|
|
ks: "急诊",
|
||
|
|
lc: "1",
|
||
|
|
kssj: "14:00",
|
||
|
|
jssj: "16:00",
|
||
|
|
cxsc: "2",
|
||
|
|
sjly: "his"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "照顾A",
|
||
|
|
gslx: "照顾",
|
||
|
|
ks: "心脏内科",
|
||
|
|
lc: "9",
|
||
|
|
kssj: "16:00",
|
||
|
|
jssj: "18:00",
|
||
|
|
cxsc: "2",
|
||
|
|
sjly: "his"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "送病人B",
|
||
|
|
gslx: "接送",
|
||
|
|
ks: "急诊",
|
||
|
|
lc: "1",
|
||
|
|
kssj: "18:00",
|
||
|
|
jssj: "20:00",
|
||
|
|
cxsc: "2",
|
||
|
|
sjly: "his"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
gx: "照顾C",
|
||
|
|
gslx: "照顾",
|
||
|
|
ks: "中医科",
|
||
|
|
lc: "11",
|
||
|
|
kssj: "20:00",
|
||
|
|
jssj: "21:00",
|
||
|
|
cxsc: "1",
|
||
|
|
sjly: "系统采集"
|
||
|
|
},
|
||
|
|
],
|
||
|
|
pagination: {},
|
||
|
|
}
|
||
|
|
@connect(({ staffsheet, loading }) => ({
|
||
|
|
staffsheet,
|
||
|
|
loading: loading.models.staffsheet,
|
||
|
|
}))
|
||
|
|
|
||
|
|
class StaffSheetList extends PureComponent {
|
||
|
|
state = {
|
||
|
|
modalVisible: false,
|
||
|
|
updateModalVisible: false,
|
||
|
|
viewModalVisible: false,
|
||
|
|
expandForm: false,
|
||
|
|
selectedRows: [],
|
||
|
|
formValues: {},
|
||
|
|
updateFormValues: {},
|
||
|
|
viewFormValues: {},
|
||
|
|
toggleExpand: false,
|
||
|
|
}
|
||
|
|
|
||
|
|
columns = [
|
||
|
|
{
|
||
|
|
title: '工序',
|
||
|
|
dataIndex: 'gx',
|
||
|
|
key: 'gx',
|
||
|
|
width: 80,
|
||
|
|
fixed: 'left',
|
||
|
|
}, {
|
||
|
|
title: '工时类型',
|
||
|
|
dataIndex: 'gslx',
|
||
|
|
key: 'gslx',
|
||
|
|
width: 100,
|
||
|
|
fixed: 'left',
|
||
|
|
},{
|
||
|
|
title: '科室',
|
||
|
|
dataIndex: 'ks',
|
||
|
|
key: 'ks',
|
||
|
|
width: 80,
|
||
|
|
}, {
|
||
|
|
title: '楼层',
|
||
|
|
dataIndex: 'lc',
|
||
|
|
key: 'lc',
|
||
|
|
width: 80,
|
||
|
|
},{
|
||
|
|
title: '开始时间',
|
||
|
|
dataIndex: 'kssj',
|
||
|
|
key: 'kssj',
|
||
|
|
width: 100,
|
||
|
|
}, {
|
||
|
|
title: '结束时间',
|
||
|
|
dataIndex: 'jssj',
|
||
|
|
key: 'jssj',
|
||
|
|
width: 100,
|
||
|
|
}, {
|
||
|
|
title: '持续时长(小时)',
|
||
|
|
dataIndex: 'cxsc',
|
||
|
|
key: 'cxsc',
|
||
|
|
width: 100,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
title: <div className={styles.timeGraphic}>
|
||
|
|
<span>6</span>
|
||
|
|
<span>7</span>
|
||
|
|
<span>8</span>
|
||
|
|
<span>9</span>
|
||
|
|
<span>10</span>
|
||
|
|
<span>11</span>
|
||
|
|
<span>12</span>
|
||
|
|
<span>13</span>
|
||
|
|
<span>14</span>
|
||
|
|
<span>15</span>
|
||
|
|
<span>16</span>
|
||
|
|
<span>17</span>
|
||
|
|
<span>18</span>
|
||
|
|
<span>19</span>
|
||
|
|
<span>20</span>
|
||
|
|
<span>21</span>
|
||
|
|
<span>22</span>
|
||
|
|
<span>23</span>
|
||
|
|
<span>0</span>
|
||
|
|
<span>1</span>
|
||
|
|
<span>2</span>
|
||
|
|
<span>3</span>
|
||
|
|
<span>4</span>
|
||
|
|
<span>5</span>
|
||
|
|
</div>,
|
||
|
|
dataIndex: 'tj',
|
||
|
|
key: 'tj',
|
||
|
|
width: 750,
|
||
|
|
render: (text, record,index) => {
|
||
|
|
console.log(record,77777)
|
||
|
|
if(index == 0) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.pbsjStyle}></div>
|
||
|
|
<div className={styles.pbsjStyle} style={{marginLeft: 73}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 1) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.kqsjStyle}></div>
|
||
|
|
<div className={styles.kqsjStyle} style={{marginLeft: 36,width: 232}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 2) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.xzStyle}></div>
|
||
|
|
<div className={styles.zjgsStyle}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 3) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.zjgsStyle} style={{marginLeft: 118}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 4) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.zjgsStyle} style={{marginLeft: 148, width: 60}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 5) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.zjgsStyle} style={{marginLeft: 246, width: 60}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 6) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.zjgsStyle} style={{marginLeft: 310, width: 60}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 7) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.zjgsStyle} style={{marginLeft: 370, width: 60}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
} else if(index == 8) {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<div className={styles.zjgsStyle} style={{marginLeft: 430, width: 30}}></div>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
title: '数据来源',
|
||
|
|
dataIndex: 'sjly',
|
||
|
|
key: 'sjly',
|
||
|
|
width: 100,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
title: '操作',
|
||
|
|
fixed: 'right',
|
||
|
|
width: 100,
|
||
|
|
render: (text, record) => {
|
||
|
|
return (
|
||
|
|
<Fragment>
|
||
|
|
<a className={style.iconstyle}> 修改 </a>
|
||
|
|
</Fragment>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
},
|
||
|
|
]
|
||
|
|
|
||
|
|
componentDidMount() {
|
||
|
|
// const { dispatch, staffsheet: { params } } = this.props
|
||
|
|
|
||
|
|
// dispatch({
|
||
|
|
// type: 'timesheet/query_page_for_prouser',
|
||
|
|
// })
|
||
|
|
|
||
|
|
// this.setState({
|
||
|
|
// expandForm: params?.expandForm || false,
|
||
|
|
// })
|
||
|
|
}
|
||
|
|
|
||
|
|
handleStandardTableChange = (pagination, sorter) => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
const { formValues } = this.state
|
||
|
|
|
||
|
|
const params = {
|
||
|
|
currentPage: pagination.current,
|
||
|
|
pageSize: pagination.pageSize,
|
||
|
|
...formValues
|
||
|
|
}
|
||
|
|
|
||
|
|
sorter.field && (params.sorter = `${sorter.field}_${sorter.order}`)
|
||
|
|
|
||
|
|
// dispatch({
|
||
|
|
// type: 'prouser/query_page_for_prouser',
|
||
|
|
// payload: params
|
||
|
|
// })
|
||
|
|
}
|
||
|
|
|
||
|
|
handleFormReset = () => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
this.setState({
|
||
|
|
formValues: {}
|
||
|
|
})
|
||
|
|
|
||
|
|
// dispatch({
|
||
|
|
// type: 'prouser/query_page_for_prouser',
|
||
|
|
// payload: {
|
||
|
|
// resetFlag: true
|
||
|
|
// }
|
||
|
|
// })
|
||
|
|
}
|
||
|
|
|
||
|
|
toggleForm = () => {
|
||
|
|
const { expandForm } = this.state
|
||
|
|
this.setState({
|
||
|
|
expandForm: !expandForm
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleSelectRows = rows => {
|
||
|
|
this.setState({
|
||
|
|
selectedRows: rows
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleSearch = values => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
const { expandForm } = this.state
|
||
|
|
|
||
|
|
this.setState({
|
||
|
|
formValues: values
|
||
|
|
})
|
||
|
|
|
||
|
|
// dispatch({
|
||
|
|
// type: 'prouser/query_page_for_prouser',
|
||
|
|
// payload: {
|
||
|
|
// ...values,
|
||
|
|
// resetFlag: true,
|
||
|
|
// expandForm
|
||
|
|
// }
|
||
|
|
// })
|
||
|
|
}
|
||
|
|
|
||
|
|
handleModalVisible = flag => {
|
||
|
|
this.setState({
|
||
|
|
modalVisible: !!flag
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleUpdateModalVisible = (flag, record) => {
|
||
|
|
this.setState({
|
||
|
|
updateModalVisible: !!flag,
|
||
|
|
updateFormValues: record || {}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleViewModalVisible = (flag, record) => {
|
||
|
|
this.setState({
|
||
|
|
viewModalVisible: !!flag,
|
||
|
|
viewFormValues: record || {}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleAdd = fields => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
|
||
|
|
dispatch({
|
||
|
|
type: 'prouser/insert_for_prouser',
|
||
|
|
payload: {
|
||
|
|
user_id: fields.user_id,
|
||
|
|
user_name: fields.user_name,
|
||
|
|
user_name_cn: fields.user_name_cn,
|
||
|
|
user_name_en: fields.user_name_en,
|
||
|
|
password: fields.password,
|
||
|
|
email: fields.email,
|
||
|
|
phone: fields.phone,
|
||
|
|
landline: fields.landline,
|
||
|
|
sex: fields.sex,
|
||
|
|
avatar: fields.avatar,
|
||
|
|
sign: fields.sign,
|
||
|
|
tags: fields.tags,
|
||
|
|
id_card: fields.id_card,
|
||
|
|
birthday: fields.birthday,
|
||
|
|
job_status: fields.job_status,
|
||
|
|
hiredate: fields.hiredate,
|
||
|
|
departure_time: fields.departure_time,
|
||
|
|
user_type: fields.user_type,
|
||
|
|
emp_no: fields.emp_no,
|
||
|
|
access_card_no: fields.access_card_no,
|
||
|
|
country: fields.country,
|
||
|
|
province: fields.province,
|
||
|
|
city: fields.city,
|
||
|
|
address: fields.address,
|
||
|
|
work_addr: fields.work_addr,
|
||
|
|
floor: fields.floor,
|
||
|
|
inprovince: fields.inprovince,
|
||
|
|
// dept_code: fields.dept_code,
|
||
|
|
// dept_name: fields.dept_name,
|
||
|
|
inner_dept_code: fields.inner_dept_code,
|
||
|
|
org_code: fields.org_code,
|
||
|
|
org_name: fields.org_name,
|
||
|
|
inner_org_code: fields.inner_org_code,
|
||
|
|
posts: fields.posts,
|
||
|
|
wx_openid: fields.wx_openid,
|
||
|
|
wx_mpopenid: fields.wx_mpopenid,
|
||
|
|
wx_miniopenid: fields.wx_miniopenid,
|
||
|
|
wx_unionid: fields.wx_unionid,
|
||
|
|
mobile_imei: fields.mobile_imei,
|
||
|
|
device_num: fields.device_num,
|
||
|
|
al_taobao: fields.al_taobao,
|
||
|
|
al_alipay: fields.al_alipay,
|
||
|
|
al_dingding: fields.al_dingding,
|
||
|
|
is_system_user: fields.is_system_user,
|
||
|
|
mgr_type: fields.mgr_type,
|
||
|
|
pwd_security_level: fields.pwd_security_level,
|
||
|
|
pwd_update_date: fields.pwd_update_date,
|
||
|
|
last_login_ip: fields.last_login_ip,
|
||
|
|
last_login_date: fields.last_login_date,
|
||
|
|
freeze_date: fields.freeze_date,
|
||
|
|
freeze_cause: fields.freeze_cause,
|
||
|
|
zindex: fields.zindex,
|
||
|
|
wx_msg: fields.wx_msg,
|
||
|
|
email_msg: fields.email_msg,
|
||
|
|
system_msg: fields.system_msg,
|
||
|
|
remarks: fields.remarks,
|
||
|
|
status: fields.status,
|
||
|
|
creator: fields.creator,
|
||
|
|
create_date: fields.create_date,
|
||
|
|
updater: fields.updater,
|
||
|
|
update_date: fields.update_date
|
||
|
|
},
|
||
|
|
callback: (res) => {
|
||
|
|
if(res.success == true) {
|
||
|
|
message.success('添加成功')
|
||
|
|
this.handleModalVisible()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleDeleteRecord = record => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
|
||
|
|
dispatch({
|
||
|
|
type: 'prouser/delete_by_primarykey_for_prouser',
|
||
|
|
payload: {
|
||
|
|
recordid: record.user_id
|
||
|
|
},
|
||
|
|
callback: res => {
|
||
|
|
if (res.success) {
|
||
|
|
message.success('删除成功')
|
||
|
|
|
||
|
|
this.setState({
|
||
|
|
selectedRows: []
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
handleUpdate = fields => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
|
||
|
|
dispatch({
|
||
|
|
type: 'prouser/update_for_prouser',
|
||
|
|
payload: {
|
||
|
|
user_id: fields.user_id,
|
||
|
|
user_name: fields.user_name,
|
||
|
|
user_name_cn: fields.user_name_cn,
|
||
|
|
user_name_en: fields.user_name_en,
|
||
|
|
password: fields.password,
|
||
|
|
email: fields.email,
|
||
|
|
phone: fields.phone,
|
||
|
|
landline: fields.landline,
|
||
|
|
sex: fields.sex,
|
||
|
|
avatar: fields.avatar,
|
||
|
|
sign: fields.sign,
|
||
|
|
tags: fields.tags,
|
||
|
|
id_card: fields.id_card,
|
||
|
|
birthday: fields.birthday,
|
||
|
|
job_status: fields.job_status,
|
||
|
|
hiredate: fields.hiredate,
|
||
|
|
departure_time: fields.departure_time,
|
||
|
|
user_type: fields.user_type,
|
||
|
|
emp_no: fields.emp_no,
|
||
|
|
access_card_no: fields.access_card_no,
|
||
|
|
country: fields.country,
|
||
|
|
province: fields.province,
|
||
|
|
city: fields.city,
|
||
|
|
address: fields.address,
|
||
|
|
work_addr: fields.work_addr,
|
||
|
|
floor: fields.floor,
|
||
|
|
inprovince: fields.inprovince,
|
||
|
|
// dept_code: fields.dept_code,
|
||
|
|
// dept_name: fields.dept_name,
|
||
|
|
inner_dept_code: fields.inner_dept_code,
|
||
|
|
org_code: fields.org_code,
|
||
|
|
org_name: fields.org_name,
|
||
|
|
inner_org_code: fields.inner_org_code,
|
||
|
|
posts: fields.posts,
|
||
|
|
wx_openid: fields.wx_openid,
|
||
|
|
wx_mpopenid: fields.wx_mpopenid,
|
||
|
|
wx_miniopenid: fields.wx_miniopenid,
|
||
|
|
wx_unionid: fields.wx_unionid,
|
||
|
|
mobile_imei: fields.mobile_imei,
|
||
|
|
device_num: fields.device_num,
|
||
|
|
al_taobao: fields.al_taobao,
|
||
|
|
al_alipay: fields.al_alipay,
|
||
|
|
al_dingding: fields.al_dingding,
|
||
|
|
is_system_user: fields.is_system_user,
|
||
|
|
mgr_type: fields.mgr_type,
|
||
|
|
pwd_security_level: fields.pwd_security_level,
|
||
|
|
pwd_update_date: fields.pwd_update_date,
|
||
|
|
last_login_ip: fields.last_login_ip,
|
||
|
|
last_login_date: fields.last_login_date,
|
||
|
|
freeze_date: fields.freeze_date,
|
||
|
|
freeze_cause: fields.freeze_cause,
|
||
|
|
zindex: fields.zindex,
|
||
|
|
wx_msg: fields.wx_msg,
|
||
|
|
email_msg: fields.email_msg,
|
||
|
|
system_msg: fields.system_msg,
|
||
|
|
remarks: fields.remarks,
|
||
|
|
status: fields.status,
|
||
|
|
creator: fields.creator,
|
||
|
|
create_date: fields.create_date,
|
||
|
|
updater: fields.updater,
|
||
|
|
update_date: fields.update_date
|
||
|
|
},
|
||
|
|
callback: (res) => {
|
||
|
|
if(res.success === true) {
|
||
|
|
message.success('修改成功')
|
||
|
|
this.handleUpdateModalVisible()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// 修改用户状态
|
||
|
|
handleUpdateUserStatus = (fields, status, msg) => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
|
||
|
|
confirm({
|
||
|
|
title: `确定要 ${ msg } 当前用户的吗?`,
|
||
|
|
icon: <ExclamationCircleFilled />,
|
||
|
|
onOk() {
|
||
|
|
dispatch({
|
||
|
|
type: 'prouser/update_for_prouser',
|
||
|
|
payload: {
|
||
|
|
user_id: fields.user_id,
|
||
|
|
status: status,
|
||
|
|
},
|
||
|
|
callback: (res) => {
|
||
|
|
if(res.success === true) {
|
||
|
|
message.success('修改成功')
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// 修改用户密码
|
||
|
|
handleUpdateUserPassword = fields => {
|
||
|
|
const { dispatch } = this.props
|
||
|
|
confirm({
|
||
|
|
title: '确定要重置当前用户的密码吗?',
|
||
|
|
icon: <ExclamationCircleFilled />,
|
||
|
|
onOk() {
|
||
|
|
dispatch({
|
||
|
|
type: 'prouser/resetpwd_for_prouser',
|
||
|
|
payload: {
|
||
|
|
user_id: fields.user_id
|
||
|
|
},
|
||
|
|
callback: (res) => {
|
||
|
|
if(res.success === true) {
|
||
|
|
message.success('重置成功')
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
renderSimpleForm() {
|
||
|
|
const { staffsheet: { params } } = this.props
|
||
|
|
const parentMethods = {
|
||
|
|
handleSearch: this.handleSearch,
|
||
|
|
handleFormReset: this.handleFormReset,
|
||
|
|
toggleForm: this.toggleForm,
|
||
|
|
params
|
||
|
|
}
|
||
|
|
|
||
|
|
return <StaffSheetRenderSimpleForm {...parentMethods} />
|
||
|
|
}
|
||
|
|
|
||
|
|
renderAdvancedForm() {
|
||
|
|
const { dispatch, prouser: { selectDeptTree, selectOrganTree, params } } = this.props
|
||
|
|
const parentMethods = {
|
||
|
|
handleSearch: this.handleSearch,
|
||
|
|
handleFormReset: this.handleFormReset,
|
||
|
|
toggleForm: this.toggleForm,
|
||
|
|
dispatch: dispatch,
|
||
|
|
selectDeptTree: selectDeptTree,
|
||
|
|
selectOrganTree: selectOrganTree,
|
||
|
|
params
|
||
|
|
}
|
||
|
|
|
||
|
|
return <StaffSheetRenderAdvancedForm {...parentMethods} />
|
||
|
|
}
|
||
|
|
|
||
|
|
renderForm() {
|
||
|
|
const { expandForm } = this.state
|
||
|
|
return expandForm ? this.renderAdvancedForm() : this.renderSimpleForm()
|
||
|
|
}
|
||
|
|
|
||
|
|
handleCollapse = () => {
|
||
|
|
const { toggleExpand } = this.state
|
||
|
|
this.setState({
|
||
|
|
toggleExpand: !toggleExpand
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
render() {
|
||
|
|
const {
|
||
|
|
staffsheet: {
|
||
|
|
data,
|
||
|
|
selectDeptTree,
|
||
|
|
selectOrganTree
|
||
|
|
},
|
||
|
|
loading,
|
||
|
|
dispatch
|
||
|
|
} = this.props
|
||
|
|
const {
|
||
|
|
selectedRows,
|
||
|
|
modalVisible,
|
||
|
|
updateModalVisible,
|
||
|
|
viewModalVisible,
|
||
|
|
updateFormValues,
|
||
|
|
viewFormValues,
|
||
|
|
toggleExpand
|
||
|
|
} = this.state
|
||
|
|
|
||
|
|
const parentMethods = {
|
||
|
|
handleAdd: this.handleAdd,
|
||
|
|
handleModalVisible: this.handleModalVisible,
|
||
|
|
dispatch: dispatch,
|
||
|
|
loading,
|
||
|
|
selectDeptTree: selectDeptTree,
|
||
|
|
selectOrganTree: selectOrganTree
|
||
|
|
}
|
||
|
|
|
||
|
|
const updateMethods = {
|
||
|
|
handleUpdateModalVisible: this.handleUpdateModalVisible,
|
||
|
|
handleUpdate: this.handleUpdate,
|
||
|
|
dispatch: dispatch,
|
||
|
|
loading,
|
||
|
|
selectDeptTree: selectDeptTree,
|
||
|
|
selectOrganTree: selectOrganTree
|
||
|
|
}
|
||
|
|
|
||
|
|
const viewMethods = {
|
||
|
|
handleViewModalVisible: this.handleViewModalVisible
|
||
|
|
}
|
||
|
|
|
||
|
|
return (
|
||
|
|
<>
|
||
|
|
<Card bordered={false}>
|
||
|
|
<div className={styles.proUsertableList}>
|
||
|
|
<div className={styles.proUsertableListForm}>{this.renderForm()}</div>
|
||
|
|
<Divider style={{ borderColor: '#cccccc',margin:0 }}>
|
||
|
|
<div className={styles.summaryButton} onClick={() => this.handleCollapse()}>
|
||
|
|
{toggleExpand ? <><UpOutlined /> 收起</> : <><DownOutlined /> 展开</>}
|
||
|
|
</div>
|
||
|
|
</Divider>
|
||
|
|
<div style={{display: toggleExpand?'block':'none'}}>
|
||
|
|
<div className={styles.summaryContent}>
|
||
|
|
<div style={{paddingLeft: 0}}>
|
||
|
|
<div className={styles.titleLabel}>名称</div>
|
||
|
|
<div className={styles.titleVal}>张三</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>考勤类型</div>
|
||
|
|
<div className={styles.titleVal}>排班制</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>出勤人效(件/小时)</div>
|
||
|
|
<div className={styles.titleVal}>10000</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>作业人效(件/小时)</div>
|
||
|
|
<div className={styles.titleVal}>12000</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>人效出勤工时(小时)</div>
|
||
|
|
<div className={styles.titleVal}>8</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>出勤工时占比(%)</div>
|
||
|
|
<div className={styles.titleVal}>100%</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div className={styles.summaryContent}>
|
||
|
|
<div style={{paddingLeft: 0}}>
|
||
|
|
<div className={styles.titleLabel}>工号</div>
|
||
|
|
<div className={styles.titleVal}>123456</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>在职时长(小时)</div>
|
||
|
|
<div className={styles.titleVal}>1200</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>外出就餐时长(小时)</div>
|
||
|
|
<div className={styles.titleVal}>0</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>直接作业工时(小时)</div>
|
||
|
|
<div className={styles.titleVal}>7</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>间接作业工时(小时)</div>
|
||
|
|
<div className={styles.titleVal}>1</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>闲置工时(小时)</div>
|
||
|
|
<div className={styles.titleVal}>0</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div className={styles.summaryContent}>
|
||
|
|
<div style={{paddingLeft: 0}}>
|
||
|
|
<div className={styles.titleLabel}>工作性质</div>
|
||
|
|
<div className={styles.titleVal}>外包</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>总件数(件)</div>
|
||
|
|
<div className={styles.titleVal}>9000</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>离岗休息时长(小时)</div>
|
||
|
|
<div className={styles.titleVal}>0</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>直接作业工时占比(%)</div>
|
||
|
|
<div className={styles.titleVal}>84</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>闲置工时占比(%)</div>
|
||
|
|
<div className={styles.titleVal}>0</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div className={styles.titleLabel}>闲置工时(小时)</div>
|
||
|
|
<div className={styles.titleVal}>0</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div className={styles.operateContent}>
|
||
|
|
<div>
|
||
|
|
<Button type='primary' style={{marginRight: 50}}>
|
||
|
|
同步
|
||
|
|
</Button>
|
||
|
|
<Button type='primary' danger>
|
||
|
|
考勤排查
|
||
|
|
</Button>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<div style={{display: 'inline-block'}}>
|
||
|
|
<div className={styles.workClass} style={{background: '#faf07a'}}></div>
|
||
|
|
排班时间
|
||
|
|
</div>
|
||
|
|
<div style={{display: 'inline-block'}}>
|
||
|
|
<div className={styles.workClass} style={{background: '#9cc5fc'}}></div>
|
||
|
|
考勤时间
|
||
|
|
</div>
|
||
|
|
<div style={{display: 'inline-block'}}>
|
||
|
|
<div className={styles.workClass} style={{background: '#aa02cf'}}></div>
|
||
|
|
修改状态
|
||
|
|
</div>
|
||
|
|
<div style={{display: 'inline-block'}}>
|
||
|
|
<div className={styles.workClass} style={{background: '#454545'}}></div>
|
||
|
|
闲置工时
|
||
|
|
</div>
|
||
|
|
<div style={{display: 'inline-block'}}>
|
||
|
|
<div className={styles.workClass} style={{background: '#8ddd15'}}></div>
|
||
|
|
直接工时
|
||
|
|
</div>
|
||
|
|
<div style={{display: 'inline-block'}}>
|
||
|
|
<div className={styles.workClass} style={{background: '#cecece'}}></div>
|
||
|
|
离岗休息
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div style={{display: 'flex',justifyContent: "space-between"}}>
|
||
|
|
<div>共20项</div>
|
||
|
|
</div>
|
||
|
|
<StandardTable
|
||
|
|
rowKey={'user_id'}
|
||
|
|
selectedRows={selectedRows}
|
||
|
|
loading={loading}
|
||
|
|
data={mockData}
|
||
|
|
columns={this.columns}
|
||
|
|
onSelectRow={this.handleSelectRows}
|
||
|
|
onChange={this.handleStandardTableChange}
|
||
|
|
scroll={{ x: 1000,y: 600 }}
|
||
|
|
showTotal={(total, range) => total}
|
||
|
|
/>
|
||
|
|
</div>
|
||
|
|
</Card>
|
||
|
|
|
||
|
|
{modalVisible && <StaffSheetCreateForm {...parerntMethods} modalVisible={modalVisible} />}
|
||
|
|
|
||
|
|
{updateFormValues && Object.keys(updateFormValues).length ? (
|
||
|
|
<StaffSheetUpdateForm
|
||
|
|
{...updateMethods}
|
||
|
|
updateModalVisible={updateModalVisible}
|
||
|
|
values={updateFormValues}
|
||
|
|
/>
|
||
|
|
) : null}
|
||
|
|
|
||
|
|
{viewFormValues && Object.keys(viewFormValues).length ? (
|
||
|
|
<StaffSheetViewForm
|
||
|
|
{...viewMethods}
|
||
|
|
viewModalVisible={viewModalVisible}
|
||
|
|
values={viewFormValues}
|
||
|
|
/>
|
||
|
|
) : null}
|
||
|
|
</>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export default StaffSheetList
|