1178232204@qq.com 3 лет назад
Родитель
Сommit
2d7ea26cb6

+ 1 - 1
src/api/index.js

@@ -2,7 +2,7 @@ import api from './request';
 import { getCookie,setCookie } from '@utils/index'
 import {message} from 'antd'
 const axios=require('axios');
-// axios.defaults.baseURL = 'http://192.168.3.237:8871';//'http://192.168.2.237:8871/';
+axios.defaults.baseURL = 'http://192.168.2.237:8871';//'http://192.168.2.237:8871/';
 const post=(url,data)=>{
     return axios({
         method:'post',

+ 9 - 2
src/api/request.js

@@ -108,8 +108,15 @@ const request = {
     importOperation:'/daqe-center/operationManage/importOperation',  //手术导入
 	
 
-    getColumnVerifyPage:'/daqe-center/fieldCalibrationManagement/getColumnVerifyPage',//字段校验规则维护列表
-
+    getColumnVerifyPage:'/daqe-center/columnVerifyManagement/getColumnVerifyPage',//字段校验规则维护列表
+    getRegular:'/daqe-center/columnVerifyManagement/getRegular',//正则式列表
+    getColumnName:'/daqe-center/columnVerifyManagement/getColumnName',//获取字段名称
+    getTableName:'/daqe-center/columnVerifyManagement/getTableName',//获取表名称
+    addColumnVerify:'/daqe-center/columnVerifyManagement/addColumnVerify',//新增字段校验规则维护
+    delColumnVerify:'/daqe-center/columnVerifyManagement/delColumnVerify',//删除字段校验规则维护
+    
+    getColumnResultPage:'/daqe-center/columnResultManagement/getColumnResultPage',//字段校验问题明细列表
+    
 }
 
 export default request;

+ 4 - 2
src/components/AMenu/index.js

@@ -19,7 +19,9 @@ import DocTemplate from "../DocTemplate";
 import DutyRecord from "../DutyRecord";
 import MedicalTeam from "../MedicalTeam";
 import FieldRules from "../FieldRules";
-import SurgeryManager from "../SurgeryManager";
+import FieldProblem from "../FieldProblem";
+
+// import SurgeryManager from "../SurgeryManager";
 import apiObj from '@api/index';
 
 const { post, api } = apiObj;
@@ -44,7 +46,7 @@ const pageMap = {
     'JCSJ-ZWZCBGJL': <DutyRecord />,
     'QXGL-YLZGL': <MedicalTeam />,
     'SJZL-ZDJYGZWH': <FieldRules />,
-    'JCSJ-SSXXWH': <SurgeryManager />,
+    'SJZL-ZDJYWTMX': <FieldProblem />,
 }
 
 let firstMenuPage = {};         //第一个菜单,自动激活时用

+ 334 - 0
src/components/FieldProblem/index.js

@@ -0,0 +1,334 @@
+import React, { useState, useEffect, useRef } from 'react';
+import { Form, Input, Button, Table, Row, Col, Select, Modal, DatePicker, Space } from 'antd';
+import { DeleteOutlined, PlusOutlined } from '@ant-design/icons';
+import '@common/common.less';
+import apiObj from '@api/index';
+// import AddRules from './addRules';
+// import FiledContext from './filed-context';
+import { message } from "antd/lib/index";
+const { post, api, xPost } = apiObj;
+const { RangePicker } = DatePicker;
+const { Option } = Select;
+function FieldRules() {
+    useEffect(() => {
+        getColumnResultPage();
+    }, []);
+    const [addVisible, setAddVisible] = useState(false);         //新增页面显示
+    const [logList, setLogList] = useState([]);
+    const [total, setTotal] = useState(0);
+    const [type, setType] = useState(0);//1新增 2修改
+    const [visible, setVisible] = useState(false);
+    const [size, setSize] = useState(15);
+    const [current, setCurrent] = useState(1);
+    const [regularList, setRegularList] = useState([]);//正则式数据
+    const [selectedRowKeys, setSelectedRowKeys] = useState([]);
+    const [tableList, setTableList] = useState([]);//表名称
+    const [colList, setColList] = useState([]);//字段名称
+    const [filedDetail, setFiledDetail] = useState(null);//详情数据
+    const [params, setParams] = useState({
+        pages: 1,
+        current: 1,
+        size: 15
+    });
+    const [form] = Form.useForm();
+    let data = {
+        pages: 1,
+        current: 1,
+        size: size
+    }
+    //表格数据
+    function getColumnResultPage(param) {
+        post(api.getColumnResultPage, param || params).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setLogList(data.records);
+                setTotal(data.total)
+            }
+        })
+    }
+    //获取正则式名称
+    function getRegular(name) {
+        const param = {
+            name: name || ''
+        }
+        post(api.getRegular, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setRegularList(data);
+            }
+        })
+    }
+    //获取字段名
+    function getColumnName(columnCname, columnEname) {
+        const param = {
+            columnCname: columnCname,
+            columnEname: columnEname
+        }
+        post(api.getColumnName, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setColList([...data]);
+            }
+        })
+    }
+    //获取表名称
+    function getTableName(tableCname, tableEname) {
+        const param = {
+            tableCname: tableCname,
+            tableEname: tableEname
+        }
+        post(api.getTableName, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setTableList([...data]);
+            }
+        })
+    }
+    //表名称搜索(中文)
+    function cnameSearch(val) {
+        getTableName(val, '')
+    }
+    //表名称搜索(英文)
+    function enameSearch(val) {
+        getTableName('', val)
+    }
+    //字段名称搜索(中文)
+    function colmeSearch(val) {
+        getColumnName(val, '')
+    }
+    //字段名称搜索(英文)
+    function coleneSearch(val) {
+        getColumnName('', val)
+    }
+    //正则式名称搜索
+    function onSearch(val) {
+        getRegular(val)
+    }
+
+    //新增修改跳转
+    function showModal(type) {
+        setAddVisible(true)
+        setType(type)
+        setFiledDetail({
+            columnList: [{
+                columnCname: "",
+                columnEname: "",
+                ableCname: "",
+                tableEname: ""
+            }],
+            standardValueList: [{
+                tit: ''
+            }]
+        })
+    }
+    function onSizeChange(current, pageSize) {
+        params.current = current
+        params.size = pageSize
+        setSize(pageSize)
+        setCurrent(current)
+        setParams(params)
+        getColumnResultPage()
+    }
+    function changePage(page, pageSize) {
+        params.current = page
+        params.size = pageSize
+        setParams(params)
+        setCurrent(page)
+        getColumnResultPage()
+    }
+    function onTypeChange() {
+
+    }
+    function onSelectChange(selectedRowKeys) {
+        setSelectedRowKeys(selectedRowKeys);
+    };
+    //返回
+    function goBack() {
+        setAddVisible(false);
+        // setOrgDetail(null)
+        // getTableData();
+    }
+    //保存
+    function addSubFiled() {
+
+    }
+    const onFinish = (value) => {
+        const param = {
+            ...data,
+            ...value,
+        }
+        setCurrent(1)
+        setParams(param)
+        getColumnResultPage(param);
+    };
+    const onReset = () => {
+        setCurrent(1)
+        setParams(data)
+        form.resetFields();
+        getColumnResultPage(data);
+    };
+    const columns = [
+        { title: '序号', dataIndex: 'index', render: (text, record, index) => (current - 1) * params.size + index + 1 },
+        { title: '住院序号', dataIndex: 'behospitalCode', key: 'behospitalCode' },
+        { title: '文书编号', dataIndex: 'hosptialDatatmpCode', key: 'hosptialDatatmpCode' },
+        { title: '文书标题', dataIndex: 'hosptialDatatmpName', key: 'hosptialDatatmpName' },
+        { title: '质控模块名称', dataIndex: 'modeName', key: 'modeName' },
+        { title: '表名称(中文)', dataIndex: 'tableCname', key: 'tableCname' },
+        { title: '表名称(英文)', dataIndex: 'tableEname', key: 'tableEname' },
+        { title: '字段名称(中文)', dataIndex: 'columnCname', key: 'columnCname' },
+        { title: '字段名称(英文)', dataIndex: 'columnEname', key: 'columnEname' },
+        { title: '上传字段值', dataIndex: 'optimizeCountSql', key: 'optimizeCountSql' },
+        { title: '备注', dataIndex: 'standardValue', key: 'standardValue' },
+        { title: '问题类型', dataIndex: 'regularName', key: 'regularName' },
+        { title: '更新事件', dataIndex: 'regularName', key: 'regularName' },
+        {
+            title: '状态', dataIndex: 'isRequired', key: 'isRequired', render: (text, record) => {
+                return record.isSolved == 1 ? "已解决" : "未解决";
+            }
+        },
+        {
+            title: '操作', dataIndex: 'key', render: (text, record) => (
+                <Space size="middle">
+                    <a >修改</a>
+                </Space>
+            )
+        }
+    ];
+    const rowSelection = {
+        selectedRowKeys,
+        onChange: onSelectChange,
+    };
+    // if (addVisible && filedDetail) {
+    //     return (
+    //         <FiledContext.Provider value={{ type, save: addSubFiled, detail: filedDetail }}>
+    //             <AddRules back={goBack} />
+    //         </FiledContext.Provider>
+    //     )
+    // }
+    return (
+        <div className="wrapper">
+            <div className="filter-box">
+                <Form
+                    form={form}
+                    name="normal_login"
+                    onFinish={onFinish}
+                >
+                    <Row gutter={24}>
+                        <Col span={5} key={0}>
+                            <Form.Item label="表名称(中文)" name="tableCname">
+                                <Select showSearch allowClear onSearch={cnameSearch} placeholder="请选择">
+                                    {tableList.map((item) => {
+                                        return (
+                                            <Option value={item.tableCname} key={item.tableCname}>{item.tableCname}</Option>
+                                        )
+                                    })}
+                                </Select>
+                            </Form.Item>
+                        </Col>
+                        <Col span={5} key={1}>
+                            <Form.Item label="表名称(英文)" name="tableEname">
+                                <Select showSearch allowClear onSearch={enameSearch} placeholder="请选择">
+                                    {tableList.map((item) => {
+                                        return (
+                                            <Option value={item.tableEname} key={item.tableEname}>{item.tableEname}</Option>
+                                        )
+                                    })}
+                                </Select>
+                            </Form.Item>
+                        </Col>
+                        <Col span={5} key={2}>
+                            <Form.Item label="字段名称(中文)" name="columnCname">
+                                <Select showSearch allowClear onSearch={colmeSearch} placeholder="请选择">
+                                    {colList.map((item) => {
+                                        return (
+                                            <Option value={item.columnCname} key={item.columnCname}>{item.columnCname}</Option>
+                                        )
+                                    })}
+                                </Select>
+                            </Form.Item>
+                        </Col>
+                        <Col span={5} key={3}>
+                            <Form.Item label="字段名称(英文)" name="columnEname">
+                                <Select showSearch allowClear onSearch={coleneSearch} placeholder="请选择">
+                                    {colList.map((item) => {
+                                        return (
+                                            <Option value={item.columnEname} key={item.columnEname}>{item.columnEname}</Option>
+                                        )
+                                    })}
+                                </Select>
+                            </Form.Item>
+                        </Col>
+                        <Col span={5} key={4}>
+                            <Form.Item label="是否必填" name="isRequired">
+                                <Select
+                                    placeholder="请选择"
+                                    onChange={onTypeChange}
+                                    allowClear
+                                >
+                                    <Option value="1" key={1}>是</Option>
+                                    <Option value="0" key={0}>否</Option>
+                                </Select>
+                            </Form.Item>
+                        </Col>
+                        <Col span={5} key={5}>
+                            <Form.Item label="标准值" name="standardValue">
+                                <Input placeholder="请输入" autoComplete='off' />
+                            </Form.Item>
+                        </Col>
+                        <Col span={7} key={6}>
+                            <Form.Item label="正则名称" name="regularName">
+                                <Select showSearch allowClear onSearch={onSearch} placeholder="请选择">
+                                    {regularList.map((item) => {
+                                        return (
+                                            <Option value={item.name} key={item.id}>{item.name}</Option>
+                                        )
+                                    })}
+                                </Select>
+                            </Form.Item>
+                        </Col>
+                        <Col span={6} key={7}>
+                            <Form.Item>
+                                <Button type="primary" htmlType="submit">
+                                    查询
+                                </Button>
+                                <Button onClick={onReset}>
+                                    重置
+                                </Button>
+                            </Form.Item>
+                        </Col>
+                    </Row>
+                </Form>
+            </div>
+
+            <div className="table">
+                <div className="table-header">
+                    <h2 className="table-title">职务职称变更记录</h2>
+                    <Space size="middle">
+                        <Button type="primary" icon={<PlusOutlined />} onClick={() => showModal(1)}>新增</Button>
+                    </Space>
+
+                </div>
+
+                <Table
+                    columns={columns}
+                    rowSelection={rowSelection}
+                    scroll={{ y: 'calc(100vh - 380px)' }}
+                    dataSource={logList}
+                    rowKey={record => record.columnId}
+                    pagination={{
+                        pageSize: size,
+                        size: 'small',
+                        current: current,
+                        showSizeChanger: true,
+                        pageSizeOptions: ['15', '30', '60', '120'],
+                        showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`,
+                        onShowSizeChange: (current, pageSize) => onSizeChange(current, pageSize), // 改变每页数量时更新显示
+                        onChange: (page, pageSize) => changePage(page, pageSize),//点击页码事件
+                        total: total
+                    }} />
+            </div>
+        </div >
+    )
+}
+
+export default FieldRules;

+ 254 - 26
src/components/FieldRules/addRules.js

@@ -1,19 +1,19 @@
 import { useEffect, useState, useContext } from 'react';
-import { Form, Input, Checkbox, Button, Select, Tabs, InputNumber, Space, Switch, Breadcrumb, Modal } from 'antd';
+import { Form, Input, Radio, Button, Select, message, Breadcrumb, Modal } from 'antd';
 import './index.less';
 import apiObj from '@api/index';
 import backIcon from "@images/back.png";
 import FiledContext from './filed-context';
+import add from '@images/add-icon.png';
+import del from '@images/del-icon.png';
 const { post, api, xPost } = apiObj;
-
-const { TabPane } = Tabs;
 const { Option } = Select;
-function AddRules(props){
+const { TextArea } = Input;
+function AddRules(props) {
     const [form] = Form.useForm();
     const { back } = props;
-    const [isChange, setIsChange] = useState(false);
     const [visible, setVisible] = useState(false);
-    const { type,detail } = useContext(FiledContext);
+    const { type } = useContext(FiledContext);
     function handleOk() {
         back()
     }
@@ -30,13 +30,13 @@ function AddRules(props){
     return (
         <>
             <Breadcrumb separator="">
-                <Breadcrumb.Item><img className='back-icon' src={backIcon} onClick={goback} alt="返回上一页"/></Breadcrumb.Item>
+                <Breadcrumb.Item><img className='back-icon' src={backIcon} onClick={goback} alt="返回上一页" /></Breadcrumb.Item>
                 <Breadcrumb.Item>字段校验规则维护</Breadcrumb.Item>
                 <Breadcrumb.Separator />
-                <Breadcrumb.Item>{type == 1?"新增字段校验":"修改字段校验"}</Breadcrumb.Item>
+                <Breadcrumb.Item>{type == 1 ? "新增字段校验" : "修改字段校验"}</Breadcrumb.Item>
             </Breadcrumb>
             <div className="add-container">
-                <ContentForm back={goback} form={form}></ContentForm>
+                <ContentForm back={goback} form={form} cancel={back}></ContentForm>
             </div>
             <Modal
                 title="提示"
@@ -53,32 +53,260 @@ function AddRules(props){
     )
 }
 function ContentForm(props) {
-
-    const [treeDatas, setTreeDatas] = useState([]);
-    const [tabDatas, setTabDatas] = useState([]);
-    const [activeTab, setActiveTab] = useState('');
-    const [sysCheckeds, setSysCheckeds] = useState([]);
-    const [name, setName] = useState('');
-    const [hisTypeList, setHisTypeList] = useState([]);
-    const [orgType, setOrgType] = useState(localStorage.getItem('type'));
-    const { type, save, detail } = useContext(FiledContext);
-    const { current, pre, next, form } = props;
+    const [columnList, setColumnList] = useState([]);
+    const [standardValueList, setStandardValueList] = useState([]);
+    const [regularList, setRegularList] = useState([]);//正则式数据
+    const [tableList, setTableList] = useState([]);//表名称
+    const [colList, setColList] = useState([]);//字段名称
+    const { detail } = useContext(FiledContext);
+    const { back, form,cancel } = props;
     const initialValues = detail
     const vilidateRules = {
         required: '${label}不能为空!',
-        types: {
-            email: '${label} is not a valid email!',
-            number: '${label} is not a valid number!',
-        },
     };
+    //获取正则式名称
+    function getRegular(name) {
+        const param = {
+            name: name || ''
+        }
+        post(api.getRegular, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setRegularList(data);
+            }
+        })
+    }
+    //获取字段名
+    function getColumnName(columnCname, columnEname) {
+        const param = {
+            columnCname: columnCname,
+            columnEname: columnEname
+        }
+        post(api.getColumnName, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setColList([...data]);
+            }
+        })
+    }
+    //获取表名称
+    function getTableName(tableCname, tableEname) {
+        const param = {
+            tableCname: tableCname,
+            tableEname: tableEname
+        }
+        post(api.getTableName, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setTableList([...data]);
+            }
+        })
+    }
+    function modifyData(i) {
+        const formData = form.getFieldsValue();
+        let columnList = formData.columnList;
+        if (i == 0) {
+            columnList.push({
+                columnCname: "",
+                columnEname: "",
+                ableCname: "",
+                tableEname: ""
+            })
+        } else {
+            columnList.splice(i, 1)
+        }
+        setColumnList([...columnList])
+        form.setFieldsValue({
+            columnList: columnList
+        });
+    }
+    //标准值维护
+    function modifyStand(i) {
+        const formData = form.getFieldsValue();
+        let standardValueList = formData.standardValueList;
+        if (i == 0) {
+            standardValueList.push({
+                tit: ''
+            })
+        } else {
+            standardValueList.splice(i, 1)
+        }
+        setStandardValueList([...standardValueList])
+        form.setFieldsValue({
+            standardValueList: standardValueList
+        });
+    }
 
+    //表名称搜索(中文)
+    function cnameSearch(val) {
+        getTableName(val, '')
+    }
+    //表名称搜索(英文)
+    function enameSearch(val) {
+        getTableName('', val)
+    }
+    //字段名称搜索(中文)
+    function colmeSearch(val) {
+        getColumnName(val, '')
+    }
+    //字段名称搜索(英文)
+    function coleneSearch(val) {
+        getColumnName('', val)
+    }
+    //正则式名称搜索
+    function onSearch(val) {
+        getRegular(val)
+    }
+    //正则式选择获取id
+    function onChange(value, options) {
+        form.setFieldsValue({
+            regularId: options.key
+        });
+    }
+    function handleSave() {
+        form.validateFields().then((values) => {
+            addColumnVerify()
+        }).catch((error) => {
+            console.log('验证失败', error)
+        })
+    }
+    function addColumnVerify() {
+        const formData = form.getFieldsValue();
+        let arr = []
+        formData.standardValueList.forEach(it => {
+            arr.push(it.tit)
+        });
+        formData.standardValueList = arr
+        post(api.addColumnVerify, formData).then((res) => {
+            if (res.data.code === 200) {
+                message.success(res.data.message);
+                cancel()
+            } else {
+                message.error(res.data.message);
+            }
+        })
+    }
     useEffect(() => {
-       
+        getRegular()
+        getTableName()
+        getColumnName()
+        if (detail) {
+            const columnList = detail.columnList
+            const standardValueList = detail.standardValueList
+            setColumnList(columnList)
+            setStandardValueList(standardValueList)
+        }
     }, []);
- 
+
     return (
         <>
-           11
+            <Form
+                labelCol={{ span: 4 }}
+                wrapperCol={{ span: 16 }}
+                layout="horizontal"
+                validateMessages={vilidateRules}
+                initialValues={initialValues}
+                form={form}
+            >
+                <Form.Item>
+                    {
+                        columnList.map((it, i) => {
+                            return (
+                                <div className='box' key={i}>
+                                    <div className='item'>
+                                        <div className='item-box'>
+                                            <Form.Item label="表名称(中文):" rules={[{ required: true }]} style={{ width: '50%' }} name={['columnList', i, 'tableCname']} labelAlign="right" >
+                                                <Select showSearch allowClear onSearch={cnameSearch} style={{ width: 160 }} placeholder="请选择">
+                                                    {tableList.map((item) => {
+                                                        return (
+                                                            <Option value={item.tableCname} key={item.tableCname}>{item.tableCname}</Option>
+                                                        )
+                                                    })}
+                                                </Select>
+                                            </Form.Item>
+                                            <Form.Item label="表名称(英文):" rules={[{ required: true }]} name={['columnList', i, 'tableEname']} labelAlign="right">
+                                                <Select showSearch allowClear onSearch={enameSearch} style={{ width: 160 }} placeholder="请选择">
+                                                    {tableList.map((item) => {
+                                                        return (
+                                                            <Option value={item.tableEname} key={item.tableEname}>{item.tableEname}</Option>
+                                                        )
+                                                    })}
+                                                </Select>
+                                            </Form.Item>
+                                        </div>
+                                        <div className='item-box'>
+                                            <Form.Item label="字段名称(中文):" rules={[{ required: true }]} style={{ width: '50%' }} name={['columnList', i, 'columnCname']} labelAlign="right">
+                                                <Select showSearch allowClear onSearch={colmeSearch} style={{ width: 160 }} placeholder="请选择">
+                                                    {colList.map((item) => {
+                                                        return (
+                                                            <Option value={item.columnCname} key={item.columnCname}>{item.columnCname}</Option>
+                                                        )
+                                                    })}
+                                                </Select>
+                                            </Form.Item>
+                                            <Form.Item label="字段名称(英文):" rules={[{ required: true }]} name={['columnList', i, 'columnEname']} labelAlign="right">
+                                                <Select showSearch allowClear onSearch={coleneSearch} style={{ width: 160 }} placeholder="请选择">
+                                                    {colList.map((item) => {
+                                                        return (
+                                                            <Option value={item.columnEname} key={item.columnEname}>{item.columnEname}</Option>
+                                                        )
+                                                    })}
+                                                </Select>
+                                            </Form.Item>
+                                        </div>
+                                    </div>
+                                    <img onClick={() => modifyData(i)} src={i == 0 ? add : del} />
+                                </div>
+
+                            )
+                        })
+                    }
+
+                </Form.Item>
+                <Form.Item label="是否必填数据:" name="isRequired">
+                    <Radio.Group>
+                        <Radio value={1}>是</Radio>
+                        <Radio value={0}>否</Radio>
+                    </Radio.Group>
+                </Form.Item>
+                <Form.Item label="标准值维护:">
+                    {
+                        standardValueList.map((it, i) => {
+                            return (
+                                <div className='box-2' key={i} >
+                                    <Form.Item name={['standardValueList', i, 'tit']} style={{ width: 159 }}>
+                                        <Input autoComplete='off' />
+                                    </Form.Item>
+                                    <img onClick={() => modifyStand(i)} src={i == 0 ? add : del} />
+                                </div>
+
+                            )
+                        })
+                    }
+
+                </Form.Item>
+                <Form.Item label="正则式名称:" name="regularName">
+                    <Select showSearch allowClear onSearch={onSearch} onChange={onChange} style={{ width: 160 }} placeholder="请选择">
+                        {regularList.map((item) => {
+                            return (
+                                <Option value={item.name} key={item.id}>{item.name}</Option>
+                            )
+                        })}
+                    </Select>
+                </Form.Item>
+                <Form.Item hidden={true} name="regularId" noStyle>
+                    <Input />
+                </Form.Item>
+                <Form.Item label="说明:" name="description">
+                    <TextArea
+                        autoSize={{ minRows: 3, maxRows: 5 }}
+                    />
+                </Form.Item>
+            </Form>
+            <div className="button-box">
+                <Button onClick={back}>取消</Button>
+                <Button onClick={handleSave} type='primary'>保存</Button>
+            </div>
         </>
     )
 }

+ 136 - 39
src/components/FieldRules/index.js

@@ -1,5 +1,5 @@
 import React, { useState, useEffect, useRef } from 'react';
-import { Form, Input, Button, Table, Pagination, Row, Col, Select, Modal, DatePicker, Space } from 'antd';
+import { Form, Input, Button, Table, Row, Col, Select, Modal, DatePicker, Space } from 'antd';
 import { DeleteOutlined, PlusOutlined } from '@ant-design/icons';
 import '@common/common.less';
 import apiObj from '@api/index';
@@ -11,6 +11,9 @@ const { RangePicker } = DatePicker;
 const { Option } = Select;
 function FieldRules() {
     useEffect(() => {
+        getRegular()
+        getTableName()
+        getColumnName()
         getColumnVerifyPage();
     }, []);
     const [addVisible, setAddVisible] = useState(false);         //新增页面显示
@@ -20,7 +23,10 @@ function FieldRules() {
     const [visible, setVisible] = useState(false);
     const [size, setSize] = useState(15);
     const [current, setCurrent] = useState(1);
+    const [regularList, setRegularList] = useState([]);//正则式数据
     const [selectedRowKeys, setSelectedRowKeys] = useState([]);
+    const [tableList, setTableList] = useState([]);//表名称
+    const [colList, setColList] = useState([]);//字段名称
     const [filedDetail, setFiledDetail] = useState(null);//详情数据
     const [params, setParams] = useState({
         pages: 1,
@@ -28,10 +34,6 @@ function FieldRules() {
         size: 15
     });
     const [form] = Form.useForm();
-    const typeMap = {
-        '1': '职务变更',
-        '2': '职称变更'
-    };
     let data = {
         pages: 1,
         current: 1,
@@ -47,12 +49,71 @@ function FieldRules() {
             }
         })
     }
+    //获取正则式名称
+    function getRegular(name) {
+        const param = {
+            name: name || ''
+        }
+        post(api.getRegular, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setRegularList(data);
+            }
+        })
+    }
+    //获取字段名
+    function getColumnName(columnCname, columnEname) {
+        const param = {
+            columnCname: columnCname,
+            columnEname: columnEname
+        }
+        post(api.getColumnName, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setColList([...data]);
+            }
+        })
+    }
+    //获取表名称
+    function getTableName(tableCname, tableEname) {
+        const param = {
+            tableCname: tableCname,
+            tableEname: tableEname
+        }
+        post(api.getTableName, param).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                setTableList([...data]);
+            }
+        })
+    }
+    //表名称搜索(中文)
+    function cnameSearch(val) {
+        getTableName(val, '')
+    }
+    //表名称搜索(英文)
+    function enameSearch(val) {
+        getTableName('', val)
+    }
+    //字段名称搜索(中文)
+    function colmeSearch(val) {
+        getColumnName(val, '')
+    }
+    //字段名称搜索(英文)
+    function coleneSearch(val) {
+        getColumnName('', val)
+    }
+    //正则式名称搜索
+    function onSearch(val) {
+        getRegular(val)
+    }
     //删除记录
-    function delRecord() {
-        post(api.delOfficialCapacityPage, { id: selectedRowKeys }).then((res) => {
+    function delColumnVerify() {
+        post(api.delColumnVerify, { ids: selectedRowKeys }).then((res) => {
             if (res.data.code === 200) {
                 //刷新列表
                 getColumnVerifyPage()
+                message.success(res.data.msg);
             } else {
                 message.warning(res.data.msg || '操作失败,请重试~');
             }
@@ -61,7 +122,6 @@ function FieldRules() {
     }
     //删除弹窗确认
     function showDelModal(flag) {
-        console.log(selectedRowKeys)
         if (flag && !selectedRowKeys.length) {
             message.warning("请先选择要删除的记录~", 1);
             return;
@@ -72,7 +132,17 @@ function FieldRules() {
     function showModal(type) {
         setAddVisible(true)
         setType(type)
-        setFiledDetail([])
+        setFiledDetail({
+            columnList: [{
+                columnCname: "",
+                columnEname: "",
+                ableCname: "",
+                tableEname: ""
+            }],
+            standardValueList: [{
+                tit: ''
+            }]
+        })
     }
     function onSizeChange(current, pageSize) {
         params.current = current
@@ -121,18 +191,18 @@ function FieldRules() {
         getColumnVerifyPage(data);
     };
     const columns = [
-        { title: '序号', dataIndex: 'index', render: (text, record, index) => (current - 1) * params.size + index + 1 },
-        { title: '表名称(中文)', dataIndex: 'tableCname', key: 'tableCname' },
-        { title: '表名称(英文)', dataIndex: 'tableEname', key: 'tableEname' },
-        { title: '字段名称(中文)', dataIndex: 'columnCname', key: 'columnCname' },
-        { title: '字段名称(英文)', dataIndex: 'columnEname', key: 'columnEname' },
+        { title: '序号', dataIndex: 'index', render: (text, record, index) => (current - 1) * params.size + index + 1,width: 60 },
+        { title: '表名称(中文)', dataIndex: 'tableCname', key: 'tableCname',width: 130, },
+        { title: '表名称(英文)', dataIndex: 'tableEname', key: 'tableEname',width: 130, },
+        { title: '字段名称(中文)', dataIndex: 'columnCname', key: 'columnCname',width: 145, },
+        { title: '字段名称(英文)', dataIndex: 'columnEname', key: 'columnEname',width: 145, },
         {
             title: '是否必填', dataIndex: 'isRequired', key: 'isRequired', render: (text, record) => {
                 return record.isRequired == 1 ? "是" : "否";
             }
         },
-        { title: '标准值维护', dataIndex: 'standardValue', key: 'standardValue' },
-        { title: '正则式名称', dataIndex: 'regularName', key: 'regularName' },
+        { title: '标准值维护', dataIndex: 'standardValue', key: 'standardValue',width: 110 },
+        { title: '正则式名称', dataIndex: 'regularName', key: 'regularName',width: 110 },
         { title: '说明', dataIndex: 'regularName', key: 'regularName' },
         {
             title: '操作', dataIndex: 'key', render: (text, record) => (
@@ -148,7 +218,7 @@ function FieldRules() {
     };
     if (addVisible && filedDetail) {
         return (
-            <FiledContext.Provider value={{ type,save: addSubFiled, detail: filedDetail }}>
+            <FiledContext.Provider value={{ type, save: addSubFiled, detail: filedDetail }}>
                 <AddRules back={goBack} />
             </FiledContext.Provider>
         )
@@ -163,51 +233,78 @@ function FieldRules() {
                 >
                     <Row gutter={24}>
                         <Col span={5} key={0}>
-                            <Form.Item label="表名称(中文)" name="doctorName">
-                                <Input placeholder="请输入" autoComplete='off' />
+                            <Form.Item label="表名称(中文)" name="tableCname">
+                                <Select showSearch allowClear onSearch={cnameSearch} placeholder="请选择">
+                                    {tableList.map((item) => {
+                                        return (
+                                            <Option value={item.tableCname} key={item.tableCname}>{item.tableCname}</Option>
+                                        )
+                                    })}
+                                </Select>
                             </Form.Item>
                         </Col>
                         <Col span={5} key={1}>
-                            <Form.Item label="表名称(英文)" name="deptName">
-                                <Input placeholder="请输入" autoComplete='off' />
+                            <Form.Item label="表名称(英文)" name="tableEname">
+                                <Select showSearch allowClear onSearch={enameSearch} placeholder="请选择">
+                                    {tableList.map((item) => {
+                                        return (
+                                            <Option value={item.tableEname} key={item.tableEname}>{item.tableEname}</Option>
+                                        )
+                                    })}
+                                </Select>
                             </Form.Item>
                         </Col>
                         <Col span={5} key={2}>
-                            <Form.Item label="字段名称(中文)" name="doctorCode">
-                                <Input placeholder="请输入" autoComplete='off' />
+                            <Form.Item label="字段名称(中文)" name="columnCname">
+                                <Select showSearch allowClear onSearch={colmeSearch} placeholder="请选择">
+                                    {colList.map((item) => {
+                                        return (
+                                            <Option value={item.columnCname} key={item.columnCname}>{item.columnCname}</Option>
+                                        )
+                                    })}
+                                </Select>
                             </Form.Item>
                         </Col>
                         <Col span={5} key={3}>
-                            <Form.Item label="字段名称(英文)" name="name">
-                                <Input placeholder="请输入" autoComplete='off' />
+                            <Form.Item label="字段名称(英文)" name="columnEname">
+                                <Select showSearch allowClear onSearch={coleneSearch} placeholder="请选择">
+                                    {colList.map((item) => {
+                                        return (
+                                            <Option value={item.columnEname} key={item.columnEname}>{item.columnEname}</Option>
+                                        )
+                                    })}
+                                </Select>
                             </Form.Item>
                         </Col>
                         <Col span={5} key={4}>
-                            <Form.Item label="是否必填" name="type">
+                            <Form.Item label="是否必填" name="isRequired">
                                 <Select
                                     placeholder="请选择"
                                     onChange={onTypeChange}
                                     allowClear
                                 >
-                                    <Option value="0" key={0}>全部</Option>
-                                    <Option value="1" key={1}>{typeMap['1']}</Option>
-                                    <Option value="2" key={2}>{typeMap['2']}</Option>
+                                    <Option value="1" key={1}>是</Option>
+                                    <Option value="0" key={0}>否</Option>
                                 </Select>
                             </Form.Item>
                         </Col>
-                        <Col span={5} key={3}>
-                            <Form.Item label="标准值" name="name">
+                        <Col span={5} key={5}>
+                            <Form.Item label="标准值" name="standardValue">
                                 <Input placeholder="请输入" autoComplete='off' />
                             </Form.Item>
                         </Col>
-                        <Col span={7} key={5}>
-                            <Form.Item label="正则名称" name="changeTime">
-                                <RangePicker
-                                    placeholder={['开始时间', '结束时间']}
-                                />
+                        <Col span={7} key={6}>
+                            <Form.Item label="正则名称" name="regularName">
+                                <Select showSearch allowClear onSearch={onSearch} placeholder="请选择">
+                                    {regularList.map((item) => {
+                                        return (
+                                            <Option value={item.name} key={item.id}>{item.name}</Option>
+                                        )
+                                    })}
+                                </Select>
                             </Form.Item>
                         </Col>
-                        <Col span={6} key={6}>
+                        <Col span={6} key={7}>
                             <Form.Item>
                                 <Button type="primary" htmlType="submit">
                                     查询
@@ -255,11 +352,11 @@ function FieldRules() {
                 cancelText='取消'
                 width={400}
                 visible={visible}
-                onOk={delRecord}
+                onOk={delColumnVerify}
                 /*confirmLoading={confirmLoading}*/
                 onCancel={() => showDelModal(false)}
             >
-                <p>职务职称变更记录删除后将无法恢复,确认删除这{selectedRowKeys.length}条变更记录?</p>
+                <p>字段校验规则删除后将无法恢复,确认删除这{selectedRowKeys.length}条变更记录?</p>
             </Modal>
         </div >
     )

+ 35 - 0
src/components/FieldRules/index.less

@@ -0,0 +1,35 @@
+.box {
+  display: inline-flex;
+  overflow: hidden;
+  align-items: center;
+  .item {
+    width: 740px;
+    height: 140px;
+    border: 1px solid #d3d7e4;
+    padding: 16px;
+    border-radius: 2px;
+    .ant-form-item-label {
+      width: 140px;
+    }
+    .item-box {
+      display: flex;
+    }
+  }
+  & img{
+      width: 30px;
+      height: 30px;
+      margin-left: 20px;
+      cursor: pointer;
+  }
+}
+.box-2 {
+    display: flex;
+    overflow: hidden;
+    & img{
+        width: 30px;
+        height: 30px;
+        margin-left: 20px;
+        cursor: pointer;
+    }
+  }
+  

BIN
src/images/add-icon.png


BIN
src/images/del-icon.png


BIN
src/images/增表格.png