From 0c1a33a33b45fc3265cb7fef20beb48407cd6c98 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 24 八月 2023 14:54:06 +0800 Subject: [PATCH] 2023-08-24 --- src/views/systemproc/proc/index.jsx | 106 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 87 insertions(+), 19 deletions(-) diff --git a/src/views/systemproc/proc/index.jsx b/src/views/systemproc/proc/index.jsx index 51811aa..62ce63a 100644 --- a/src/views/systemproc/proc/index.jsx +++ b/src/views/systemproc/proc/index.jsx @@ -1,5 +1,6 @@ import React, {Component} from 'react' -import { Input, notification, Button, Form, Modal } from 'antd' +import { Input, notification, Button, Form, Modal, Empty } from 'antd' +import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons' import moment from 'moment' import Utils from '@/utils/utils.js' @@ -12,18 +13,24 @@ class ProcControl extends Component { state = { - procName: '', + procName: this.props.func || '', content: '', loading: false, visible: false, + searchable: false, + inputing: false, + procList: [], permFuncs: [] } componentDidMount () { + sessionStorage.setItem('User_Name', sessionStorage.getItem('CloudUserName')) + sessionStorage.setItem('Full_Name', sessionStorage.getItem('CloudFullName')) + if (sessionStorage.getItem('permFuncField')) { this.setState({permFuncs: JSON.parse(sessionStorage.getItem('permFuncField'))}) - } else { - Api.getSystemConfig({func: 'sPC_Get_Roles_sModular'}).then(res => { + } else if (sessionStorage.getItem('UserID')) { + Api.getCloudConfig({func: 'sPC_Get_Roles_sModular'}).then(res => { if (res.status) { let _permFuncs = [] @@ -49,6 +56,12 @@ }) } }) + } + + if (this.props.func && sessionStorage.getItem('UserID')) { + setTimeout(() => { + this.search(this.props.func) + }, 500) } } @@ -104,21 +117,26 @@ {key: 'alter', reg: /(^|\s)alter\s/ig}, {key: 'object', reg: /(^|\s)object(\s|\()/ig}, {key: 'kill', reg: /(^|\s)kill\s/ig}, - {key: '--', reg: /--/ig} + {key: '--', reg: /--/ig}, + {key: ',,', reg: /,,/ig} ] let error = '' + + if (!/create(\s+)proc/ig.test(value)) { + error = '鑴氭湰涓繀椤讳娇鐢╟reate proc' + } chars.forEach(char => { if (!error && char.reg.test(value)) { - error = char.key + error = '涓嶅彲浣跨敤' + char.key } }) if (error) { notification.warning({ top: 92, - message: '涓嶅彲浣跨敤' + error, + message: error, duration: 5 }) return @@ -150,7 +168,6 @@ dropParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') dropParam.secretkey = Utils.encrypt(dropParam.LText, dropParam.timestamp) dropParam.open_key = Utils.encryptOpenKey(dropParam.secretkey, dropParam.timestamp) - let createParam = { func: 'sPC_TableData_InUpDe', @@ -299,26 +316,77 @@ }) } + searchAll = (value) => { + let param = { + func: 's_proc_search', + proc_name: value || '' + } + + this.setState({loading: true}) + + Api.genericInterface(param).then(res => { + this.setState({loading: false}) + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + return + } + + this.setState({procList: res.data || []}) + }) + } + + changeProc = (name) => { + const { loading } = this.state + + if (loading) { + notification.warning({ + top: 92, + message: '鏌ヨ涓绋嶅悗銆�', + duration: 5 + }) + return + } + + this.setState({inputing: true, procName: name}, () => { + this.setState({inputing: false}) + this.search(name) + }) + } + render () { const { getFieldDecorator } = this.props.form - const { loading, content, procName, visible, permFuncs } = this.state + const { loading, content, procName, visible, permFuncs, searchable, procList, inputing } = this.state let _patten = permFuncs.length ? new RegExp('^(' + permFuncs.join('|') + ')[0-9a-zA-Z_]*$', 'g') : '' return ( <div className="mk-proc-wrap"> - <div className="control-wrap"> - <div className="search-wrap"> - <Search placeholder="璇疯緭鍏ュ瓨鍌ㄨ繃绋嬪悕绉�" disabled={loading} enterButton="纭畾" onSearch={this.search}/> - </div> - <div className="action-wrap"> - <Button key="save" className="mk-btn mk-green" disabled={loading} onClick={() => this.save()}>淇濆瓨</Button> - <Button key="prev" className="mk-btn mk-primary" disabled={!procName || loading} onClick={this.prev}>涓婁竴鐗堟湰</Button> - <Button key="next" className="mk-btn mk-primary" disabled={!procName || loading} onClick={this.next}>涓嬩竴鐗堟湰</Button> + <div className={'searh-list' + (searchable ? ' open' : '')}> + <Search placeholder="瀛樺偍杩囩▼鍚嶇О鏌ヨ" disabled={loading} onSearch={this.searchAll}/> + <div className="proc-list"> + {procList.map((item, index) => (<div className="proc-item" onClick={() => this.changeProc(item.proc_name)} key={index}>{item.proc_name}</div>))} + {procList.length === 0 ? <Empty /> : null} </div> </div> - <div className="edit-wrap"> - <CodeMirror value={content} onChange={(val) => this.setState({content: val})}/> + <div className="proc-wrap"> + <div className="control-wrap"> + <div className="search-wrap"> + {searchable ? <MenuUnfoldOutlined onClick={() => this.setState({searchable: !searchable})}/> : <MenuFoldOutlined onClick={() => this.setState({searchable: !searchable})}/>} + {!inputing ? <Search placeholder="璇疯緭鍏ュ瓨鍌ㄨ繃绋嬪悕绉�" defaultValue={procName} disabled={loading} enterButton="纭畾" onSearch={this.search}/> : null} + </div> + <div className="action-wrap"> + <Button key="save" className="mk-btn mk-green" disabled={loading} onClick={() => this.save()}>淇濆瓨</Button> + <Button key="prev" className="mk-btn mk-primary" disabled={!procName || loading} onClick={this.prev}>涓婁竴鐗堟湰</Button> + <Button key="next" className="mk-btn mk-primary" disabled={!procName || loading} onClick={this.next}>涓嬩竴鐗堟湰</Button> + </div> + </div> + <div className="edit-wrap"> + <CodeMirror value={content} func={true} onChange={(val) => this.setState({content: val})}/> + </div> </div> <Modal title="鏂板缓" -- Gitblit v1.8.0