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:
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 0 1 2 3 4 5
, dataIndex: 'tj', key: 'tj', width: 750, render: (text, record,index) => { console.log(record,77777) if(index == 0) { return (
) } else if(index == 1) { return (
) } else if(index == 2) { return (
) } else if(index == 3) { return (
) } else if(index == 4) { return (
) } else if(index == 5) { return (
) } else if(index == 6) { return (
) } else if(index == 7) { return (
) } else if(index == 8) { return (
) } } }, { title: '数据来源', dataIndex: 'sjly', key: 'sjly', width: 100, }, { title: '操作', fixed: 'right', width: 100, render: (text, record) => { return ( 修改 ) } }, ] 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: , 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: , 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 } 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 } 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 ( <>
{this.renderForm()}
this.handleCollapse()}> {toggleExpand ? <> 收起 : <> 展开}
名称
张三
考勤类型
排班制
出勤人效(件/小时)
10000
作业人效(件/小时)
12000
人效出勤工时(小时)
8
出勤工时占比(%)
100%
工号
123456
在职时长(小时)
1200
外出就餐时长(小时)
0
直接作业工时(小时)
7
间接作业工时(小时)
1
闲置工时(小时)
0
工作性质
外包
总件数(件)
9000
离岗休息时长(小时)
0
直接作业工时占比(%)
84
闲置工时占比(%)
0
闲置工时(小时)
0
排班时间
考勤时间
修改状态
闲置工时
直接工时
离岗休息
共20项
total} />
{modalVisible && } {updateFormValues && Object.keys(updateFormValues).length ? ( ) : null} {viewFormValues && Object.keys(viewFormValues).length ? ( ) : null} ) } } export default StaffSheetList