index.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. import React, { useState, useEffect, useRef } from 'react';
  2. import { Form, Input, Button, Table, Pagination, Row, Col, Select, Modal, DatePicker, Space } from 'antd';
  3. import { DeleteOutlined, PlusOutlined } from '@ant-design/icons';
  4. import '@common/common.less';
  5. import apiObj from '@api/index';
  6. import AddRules from './addRules';
  7. import FiledContext from './filed-context';
  8. import { message } from "antd/lib/index";
  9. const { post, api, xPost } = apiObj;
  10. const { RangePicker } = DatePicker;
  11. const { Option } = Select;
  12. function FieldRules() {
  13. useEffect(() => {
  14. getColumnVerifyPage();
  15. }, []);
  16. const [addVisible, setAddVisible] = useState(false); //新增页面显示
  17. const [logList, setLogList] = useState([]);
  18. const [total, setTotal] = useState(0);
  19. const [type, setType] = useState(0);//1新增 2修改
  20. const [visible, setVisible] = useState(false);
  21. const [size, setSize] = useState(15);
  22. const [current, setCurrent] = useState(1);
  23. const [selectedRowKeys, setSelectedRowKeys] = useState([]);
  24. const [filedDetail, setFiledDetail] = useState(null);//详情数据
  25. const [params, setParams] = useState({
  26. pages: 1,
  27. current: 1,
  28. size: 15
  29. });
  30. const [form] = Form.useForm();
  31. const typeMap = {
  32. '1': '职务变更',
  33. '2': '职称变更'
  34. };
  35. let data = {
  36. pages: 1,
  37. current: 1,
  38. size: size
  39. }
  40. //表格数据
  41. function getColumnVerifyPage(param) {
  42. post(api.getColumnVerifyPage, param || params).then((res) => {
  43. if (res.data.code === 200) {
  44. const data = res.data.data;
  45. setLogList(data.records);
  46. setTotal(data.total)
  47. }
  48. })
  49. }
  50. //删除记录
  51. function delRecord() {
  52. post(api.delOfficialCapacityPage, { id: selectedRowKeys }).then((res) => {
  53. if (res.data.code === 200) {
  54. //刷新列表
  55. getColumnVerifyPage()
  56. } else {
  57. message.warning(res.data.msg || '操作失败,请重试~');
  58. }
  59. });
  60. showDelModal(false);
  61. }
  62. //删除弹窗确认
  63. function showDelModal(flag) {
  64. console.log(selectedRowKeys)
  65. if (flag && !selectedRowKeys.length) {
  66. message.warning("请先选择要删除的记录~", 1);
  67. return;
  68. }
  69. setVisible(flag)
  70. }
  71. //新增修改跳转
  72. function showModal(type) {
  73. setAddVisible(true)
  74. setType(type)
  75. setFiledDetail([])
  76. }
  77. function onSizeChange(current, pageSize) {
  78. params.current = current
  79. params.size = pageSize
  80. setSize(pageSize)
  81. setCurrent(current)
  82. setParams(params)
  83. getColumnVerifyPage()
  84. }
  85. function changePage(page, pageSize) {
  86. params.current = page
  87. params.size = pageSize
  88. setParams(params)
  89. setCurrent(page)
  90. getColumnVerifyPage()
  91. }
  92. function onTypeChange() {
  93. }
  94. function onSelectChange(selectedRowKeys) {
  95. setSelectedRowKeys(selectedRowKeys);
  96. };
  97. //返回
  98. function goBack() {
  99. setAddVisible(false);
  100. // setOrgDetail(null)
  101. // getTableData();
  102. }
  103. //保存
  104. function addSubFiled() {
  105. }
  106. const onFinish = (value) => {
  107. const param = {
  108. ...data,
  109. ...value,
  110. }
  111. setCurrent(1)
  112. setParams(param)
  113. getColumnVerifyPage(param);
  114. };
  115. const onReset = () => {
  116. setCurrent(1)
  117. setParams(data)
  118. form.resetFields();
  119. getColumnVerifyPage(data);
  120. };
  121. const columns = [
  122. { title: '序号', dataIndex: 'index', render: (text, record, index) => (current - 1) * params.size + index + 1 },
  123. { title: '表名称(中文)', dataIndex: 'tableCname', key: 'tableCname' },
  124. { title: '表名称(英文)', dataIndex: 'tableEname', key: 'tableEname' },
  125. { title: '字段名称(中文)', dataIndex: 'columnCname', key: 'columnCname' },
  126. { title: '字段名称(英文)', dataIndex: 'columnEname', key: 'columnEname' },
  127. {
  128. title: '是否必填', dataIndex: 'isRequired', key: 'isRequired', render: (text, record) => {
  129. return record.isRequired == 1 ? "是" : "否";
  130. }
  131. },
  132. { title: '标准值维护', dataIndex: 'standardValue', key: 'standardValue' },
  133. { title: '正则式名称', dataIndex: 'regularName', key: 'regularName' },
  134. { title: '说明', dataIndex: 'regularName', key: 'regularName' },
  135. {
  136. title: '操作', dataIndex: 'key', render: (text, record) => (
  137. <Space size="middle">
  138. <a >修改</a>
  139. </Space>
  140. )
  141. }
  142. ];
  143. const rowSelection = {
  144. selectedRowKeys,
  145. onChange: onSelectChange,
  146. };
  147. if (addVisible && filedDetail) {
  148. return (
  149. <FiledContext.Provider value={{ type,save: addSubFiled, detail: filedDetail }}>
  150. <AddRules back={goBack} />
  151. </FiledContext.Provider>
  152. )
  153. }
  154. return (
  155. <div className="wrapper">
  156. <div className="filter-box">
  157. <Form
  158. form={form}
  159. name="normal_login"
  160. onFinish={onFinish}
  161. >
  162. <Row gutter={24}>
  163. <Col span={5} key={0}>
  164. <Form.Item label="表名称(中文)" name="doctorName">
  165. <Input placeholder="请输入" autoComplete='off' />
  166. </Form.Item>
  167. </Col>
  168. <Col span={5} key={1}>
  169. <Form.Item label="表名称(英文)" name="deptName">
  170. <Input placeholder="请输入" autoComplete='off' />
  171. </Form.Item>
  172. </Col>
  173. <Col span={5} key={2}>
  174. <Form.Item label="字段名称(中文)" name="doctorCode">
  175. <Input placeholder="请输入" autoComplete='off' />
  176. </Form.Item>
  177. </Col>
  178. <Col span={5} key={3}>
  179. <Form.Item label="字段名称(英文)" name="name">
  180. <Input placeholder="请输入" autoComplete='off' />
  181. </Form.Item>
  182. </Col>
  183. <Col span={5} key={4}>
  184. <Form.Item label="是否必填" name="type">
  185. <Select
  186. placeholder="请选择"
  187. onChange={onTypeChange}
  188. allowClear
  189. >
  190. <Option value="0" key={0}>全部</Option>
  191. <Option value="1" key={1}>{typeMap['1']}</Option>
  192. <Option value="2" key={2}>{typeMap['2']}</Option>
  193. </Select>
  194. </Form.Item>
  195. </Col>
  196. <Col span={5} key={3}>
  197. <Form.Item label="标准值" name="name">
  198. <Input placeholder="请输入" autoComplete='off' />
  199. </Form.Item>
  200. </Col>
  201. <Col span={7} key={5}>
  202. <Form.Item label="正则名称" name="changeTime">
  203. <RangePicker
  204. placeholder={['开始时间', '结束时间']}
  205. />
  206. </Form.Item>
  207. </Col>
  208. <Col span={6} key={6}>
  209. <Form.Item>
  210. <Button type="primary" htmlType="submit">
  211. 查询
  212. </Button>
  213. <Button onClick={onReset}>
  214. 重置
  215. </Button>
  216. </Form.Item>
  217. </Col>
  218. </Row>
  219. </Form>
  220. </div>
  221. <div className="table">
  222. <div className="table-header">
  223. <h2 className="table-title">职务职称变更记录</h2>
  224. <Space size="middle">
  225. <Button type="primary" icon={<PlusOutlined />} onClick={() => showModal(1)}>新增</Button>
  226. <Button type="primary" icon={<DeleteOutlined />} onClick={() => showDelModal(true)} danger>删除</Button>
  227. </Space>
  228. </div>
  229. <Table
  230. columns={columns}
  231. rowSelection={rowSelection}
  232. scroll={{ y: 'calc(100vh - 380px)' }}
  233. dataSource={logList}
  234. rowKey={record => record.columnId}
  235. pagination={{
  236. pageSize: size,
  237. size: 'small',
  238. current: current,
  239. showSizeChanger: true,
  240. pageSizeOptions: ['15', '30', '60', '120'],
  241. showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`,
  242. onShowSizeChange: (current, pageSize) => onSizeChange(current, pageSize), // 改变每页数量时更新显示
  243. onChange: (page, pageSize) => changePage(page, pageSize),//点击页码事件
  244. total: total
  245. }} />
  246. </div>
  247. <Modal
  248. title="删除职务职称变更记录"
  249. okText='确定'
  250. cancelText='取消'
  251. width={400}
  252. visible={visible}
  253. onOk={delRecord}
  254. /*confirmLoading={confirmLoading}*/
  255. onCancel={() => showDelModal(false)}
  256. >
  257. <p>职务职称变更记录删除后将无法恢复,确认删除这{selectedRowKeys.length}条变更记录?</p>
  258. </Modal>
  259. </div >
  260. )
  261. }
  262. export default FieldRules;