From 6a50694b1ff7d566aa0b4acbe20f34a95bbab6af Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 12 十二月 2022 22:28:49 +0800
Subject: [PATCH] 2022-12-12

---
 src/views/systemproc/proc/index.jsx |   89 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 74 insertions(+), 15 deletions(-)

diff --git a/src/views/systemproc/proc/index.jsx b/src/views/systemproc/proc/index.jsx
index 51811aa..6f13864 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'
@@ -16,6 +17,9 @@
     content: '',
     loading: false,
     visible: false,
+    searchable: false,
+    inputing: false,
+    procList: [],
     permFuncs: []
   }
 
@@ -23,7 +27,7 @@
     if (sessionStorage.getItem('permFuncField')) {
       this.setState({permFuncs: JSON.parse(sessionStorage.getItem('permFuncField'))})
     } else {
-      Api.getSystemConfig({func: 'sPC_Get_Roles_sModular'}).then(res => {
+      Api.getCloudConfig({func: 'sPC_Get_Roles_sModular'}).then(res => {
         if (res.status) {
           let _permFuncs = []
   
@@ -108,17 +112,21 @@
       ]
 
       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
@@ -299,26 +307,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} onChange={(val) => this.setState({content: val})}/>
+          </div>
         </div>
         <Modal
           title="鏂板缓"

--
Gitblit v1.8.0