personnelInformation.jsx 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. import React,{ useState,useEffect,useRef } from 'react';
  2. // import {getGroupManaList,addGroupMana,delGroupMana,
  3. // editGroupMana,getPersonList,groupBindPerson,getCheckPointList,groupBindCheckPoint
  4. // } from "@/api/groupManage.js";
  5. import {getPersonnelInfoList,addUser,editUser,deleteUsers} from "@/api/personnelManagement.js";
  6. import { Button,Form,Input,Select} from 'antd';
  7. import EditableFormTable from './table';
  8. import ModalWrap from '@/components/Modal/modal.js';
  9. const { Option } = Select;
  10. const {Search} = Input;
  11. class TableForm extends React.Component {
  12. state = {
  13. BindStatus:'',
  14. BindCheckPointStatus:'',
  15. groupList:[],
  16. checkPointList:[]
  17. }
  18. handleCommit = () => {
  19. console.log('开始校验表单');
  20. // let data;
  21. return new Promise((resolve,reject)=>{
  22. this.props.form.validateFields((err,values) => {
  23. // console.log({err,values});
  24. if (!err) {
  25. console.log({'success':values});
  26. let data = {
  27. ...this.props.content,
  28. ...values
  29. }
  30. // this.props.form.resetFields();
  31. resolve(data);
  32. }
  33. });
  34. });
  35. };
  36. shouldComponentUpdate(nextProps,nextState){
  37. // this.props.form.resetFields();
  38. return true;
  39. }
  40. componentDidMount(){
  41. // getGroupListForBind().then(data=>{
  42. // this.setState({
  43. // groupList:data.data.data
  44. // })
  45. // });
  46. // getCheckPointList().then(data=>{
  47. // this.setState({
  48. // checkPointList:data.data.data
  49. // })
  50. // });
  51. }
  52. render(){
  53. const { getFieldDecorator,resetFields } = this.props.form;
  54. const {content,edit} = this.props;
  55. // const {BindStatus,groupList,BindCheckPointStatus,checkPointList} = this.state;
  56. const {name,telPhone,password,code} = content;
  57. // console.log({content,edit});
  58. const formItemLayout = {
  59. labelCol: {
  60. xs: { span: 24 },
  61. sm: { span:6 },
  62. },
  63. wrapperCol: {
  64. xs: { span: 12 },
  65. sm: { span: 12 },
  66. },
  67. };
  68. const config =(key,rules)=>{
  69. return {
  70. initialValue:edit?key:'',
  71. rules: [
  72. ...rules
  73. ],
  74. }
  75. }
  76. return (
  77. <Form {...formItemLayout} >
  78. <Form.Item label="姓名">
  79. {
  80. getFieldDecorator('name',config(name,[{required: true,message: '请输入姓名!',}]))(<Input />)
  81. }
  82. </Form.Item>
  83. {
  84. !edit&&<Form.Item label="账号">
  85. {getFieldDecorator('code',config(code,[{required:true,message: '请输入账号!',}])
  86. )(<Input />)}
  87. </Form.Item>
  88. }
  89. <Form.Item label="密码">
  90. {getFieldDecorator('password',config(password,[{required: true,message: '请输入密码!',}])
  91. )(<Input />)}
  92. </Form.Item>
  93. <Form.Item label="电话号码">
  94. {getFieldDecorator('telPhone',config(telPhone,[{required: false,message: '请输入号码!',}])
  95. )(<Input />)}
  96. </Form.Item>
  97. {/* <Form.Item label="绑定单位"
  98. hasFeedback
  99. validateStatus={BindStatus} //validating,success,warning
  100. >
  101. {
  102. getFieldDecorator('bindGroup',config('',[{required: false,}]))(
  103. <Select
  104. placeholder=""
  105. onChange={this.handleSelectChange}
  106. >
  107. {
  108. groupList.map((v,k)=>{
  109. return (
  110. <Option key={k} value={v.id}>{v.name}</Option>
  111. )
  112. })
  113. }
  114. </Select>,
  115. )
  116. }
  117. </Form.Item> */}
  118. {/* <Form.Item label="绑定查核要点"
  119. hasFeedback
  120. validateStatus={BindCheckPointStatus} //validating,success,warning
  121. >
  122. {
  123. getFieldDecorator('bindCheckPoint',config('',[{required: false,}]))(
  124. <Select
  125. placeholder=""
  126. onChange={this.handleSelectCheckPointChange}
  127. >
  128. {
  129. checkPointList.map((v,k)=>{
  130. return (
  131. <Option key={k} value={v.id}>{v.name}</Option>
  132. )
  133. })
  134. }
  135. </Select>,
  136. )
  137. }
  138. </Form.Item> */}
  139. </Form>
  140. )
  141. }
  142. }
  143. const WrappedTableForm = Form.create({ name: 'register' })(TableForm);
  144. const GroupMana = () => {
  145. let [arr,setarr] = useState([]);
  146. let [pages,setpages] = useState({});
  147. let [ifUpdateList,setifUpdateList]=useState(false);
  148. let [ifRender,setifRender] = useState(false);
  149. let [ifShowDialog,setifShowDialog] = useState(false);
  150. const [item,setitem]=useState({});
  151. const [ifEdit,setifEdit]=useState(false);
  152. const modalNode = useRef(null);
  153. const formNode = useRef(null);
  154. const thisForm = useRef(null);
  155. const [searchKey,setsearchKey] = useState('');
  156. // let [editingKey,seteditingKey] = useState('');
  157. const columns = [
  158. {
  159. title: 'id',
  160. dataIndex: 'id',
  161. key: 'id',
  162. render: text => <a>{text}</a>,
  163. },
  164. {
  165. title: '姓名',
  166. dataIndex: 'name',
  167. key: 'name',
  168. editable: true,
  169. },
  170. {
  171. title: '电话号码',
  172. dataIndex: 'telPhone',
  173. key: 'telPhone',
  174. editable: true,
  175. },
  176. // {
  177. // title: '门诊管理员',
  178. // dataIndex: 'deptManagerName',
  179. // key: 'deptManagerName',
  180. // editable: true,
  181. // },
  182. ];
  183. const getData = async (pageObj)=>{
  184. let data = await getPersonnelInfoList(pageObj);
  185. const renderData = data.data.data.list.map((item,index)=>{
  186. return {
  187. ...item,
  188. key:item['id'],
  189. // editable: true,
  190. }
  191. });
  192. setifEdit(false);
  193. setarr(renderData);
  194. setpages({
  195. 'currPage':data.data.data.currPage,
  196. 'totalPage':data.data.data.totalPage,
  197. 'totalCount':data.data.data.totalCount,
  198. });
  199. setifRender(false);
  200. setifRender(true);
  201. }
  202. const callbackFromChild = (data)=>{
  203. setitem(data);
  204. setifEdit(true);
  205. thisForm.current&&thisForm.current.resetFields();
  206. modalNode.current.showModal();
  207. }
  208. const deleteCallback = (record)=>{
  209. // console.log('删除');
  210. deleteUsers([record.id]).then(res=>{
  211. if(res&&res.data.status==200){
  212. getData();
  213. }
  214. })
  215. }
  216. const handleAdd=()=>{
  217. setifEdit(false);
  218. //初始化表单
  219. setitem(arr[0]);
  220. modalNode.current.showModal();
  221. }
  222. const commitForm = async ()=>{ //表单提交
  223. console.log('提交表单');
  224. // console.log({formNode});
  225. const formData = await formNode.current.handleCommit()
  226. // console.log({ifEdit,formData,formNode});
  227. thisForm.current.resetFields();
  228. if(!ifEdit){
  229. const param = {
  230. "code":formData.code, // 登录账号 必填
  231. "headUrl":'url', // 头像url
  232. "name":formData.name, // 昵称 必填
  233. "password":formData.password, // 密码 必填
  234. "permissions": "", // 权限相关 必填 e.g.(admin,editor,guest,group-leader,company-manager)
  235. "telPhone":formData.telPhone // 电话
  236. }
  237. addUser(param).then(res=>{
  238. if(res&&res.data.status==200){
  239. modalNode.current.handleCancel();
  240. getData();
  241. }
  242. })
  243. }
  244. if(ifEdit){
  245. const param = {
  246. "id":item.id, // 需要编辑的人员ID
  247. "name":formData.name, // 需要编辑的人员名称
  248. "password":formData.password, // 密码
  249. "permissions": "", // 权限 e.g. admin,editor,guest,group-leader,company-manager
  250. "telPhone":formData.telPhone //
  251. }
  252. // console.log({param});
  253. editUser(param).then(res=>{
  254. if(res&&res.data.status==200){
  255. modalNode.current.handleCancel();
  256. getData({page:pages.currPage});
  257. }
  258. });
  259. }
  260. }
  261. const paginationCallback = (obj)=>{
  262. const {currPage} = obj;
  263. getData({page:currPage,pageSize:10,keyword:searchKey});
  264. }
  265. const onSearch = (searchKey)=>{
  266. setsearchKey(searchKey)
  267. getData({
  268. 'keyword':searchKey?searchKey:''
  269. });
  270. }
  271. useEffect(()=>{
  272. getData();
  273. },[]);
  274. return (
  275. <div className="app-container">
  276. <h1>人员信息维护</h1>
  277. <ModalWrap ref={modalNode} show={ifShowDialog} handleOkCallback={commitForm} >
  278. <WrappedTableForm edit={ifEdit} content={item} ref={thisForm} wrappedComponentRef={formNode} />
  279. </ModalWrap>
  280. <div style={{display:'flex',flexDirection:'row',marginBottom:16}}>
  281. <Button onClick={handleAdd} type="primary" style={{ marginBottom: 16,marginRight:20 }}>
  282. 新增人员
  283. </Button>
  284. <Search style={{ width: 200 }} allowClear placeholder="请输入员工名" onSearch={onSearch} enterButton />
  285. </div>
  286. {
  287. ifRender&& <EditableFormTable columns={columns} pages={pages} paginationCallback={paginationCallback} data={arr} deleteCallback={deleteCallback} callbackFromChild={callbackFromChild} ifUpdateList={ifUpdateList}/>
  288. }
  289. </div>
  290. );
  291. }
  292. export default GroupMana;