zhouna 3 лет назад
Родитель
Сommit
bf84a4b26f

+ 1 - 1
src/common/common.less

@@ -75,7 +75,7 @@
   position: absolute;
   left: 8px;
   top: 24px;
-  background: #1690FF;
+  background: @link-color;
   border-radius: 50%;
 }
 //禁用

+ 18 - 17
src/components/OrgManager/AddSubOrg.js

@@ -149,12 +149,6 @@ function StepContent(props){
     function onTabChange(activeTab){
         setActiveTab(activeTab)
     }
-    //状态开关
-    function switchStatus(checked){
-        form.setFieldsValue({
-            status:checked?1:0
-        });
-    }
     //开放系统勾选事件
     function softwareChange(checkedValue){
         let arr = [],item;
@@ -181,7 +175,7 @@ function StepContent(props){
                 label="上级组织ID"
                 hidden={true}
                 name='parentId'>
-                <Input  placeholder='请输入上级组织ID'/>
+                <Input  placeholder='请输入上级组织ID' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="上级组织"
@@ -193,34 +187,37 @@ function StepContent(props){
             <Form.Item
                 label="组织名称"
                 name='name'
+                required
                 hidden={current!==0}
-                rules={[{ required: true},() => ({
+                rules={[() => ({
                     validator(_, value) {
-                        if (value.length<51) {
+                        if(!value){
+                            return Promise.reject(new Error('组织名称不能为空!'));
+                        }else if (value.length<51) {
                             return Promise.resolve();
                         }
                         return Promise.reject(new Error('格式错误!'));
                     },
                 }),]}>
-                <Input placeholder='请输入组织名称'/>
+                <Input placeholder='请输入组织名称' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="组织编码"
                 hidden={current!==0}
                 name='code'>
-                <Input placeholder='请输入组织编码' />
+                <Input placeholder='请输入组织编码' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="联系人"
                 hidden={current!==0}
                 name={['addHospitalUserVO','name']}>
-                <Input  placeholder='请输入联系人'/>
+                <Input  placeholder='请输入联系人' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="手机号码"
                 hidden={current!==0}
                 name={['addHospitalUserVO','mobilePhone']}>
-                <Input  placeholder='请输入手机号码'/>
+                <Input  placeholder='请输入手机号码' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="类型"
@@ -246,7 +243,7 @@ function StepContent(props){
                 hidden={current!==1}
                 name={['addHospitalUserVO','username']}
                 rules={[{ required: true}]}>
-                <Input placeholder='请输入用户名'/>
+                <Input placeholder='请输入用户名' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="初始密码"
@@ -254,7 +251,7 @@ function StepContent(props){
                 hidden={current!==1}
                 name={['addHospitalUserVO','password']}
                 rules={[{ required: true}]}>
-                <Input placeholder='请输入初始密码'/>
+                <Input placeholder='请输入初始密码' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="确认密码"
@@ -270,7 +267,7 @@ function StepContent(props){
                         return Promise.reject(new Error('两次密码输入不一致!'));
                     },
                 }),]}>
-                <Input placeholder='请输入确认密码'/>
+                <Input placeholder='请输入确认密码' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="开放系统"
@@ -320,8 +317,12 @@ function StepContent(props){
                 <Space>
                     <Form.Item
                         name='status'
+                        valuePropName='checked'
+                        getValueFromEvent={(checked)=>{
+                            return +checked+'';
+                        }}
                         noStyle>
-                        <Switch checked={form.status} onChange={switchStatus} />
+                        <Switch />
                     </Form.Item>
                     <span>启用</span>
                 </Space>

+ 39 - 21
src/components/RoleManager/AddRole.js

@@ -17,7 +17,7 @@ function AddRole(props){
         <>
             <Breadcrumb separator="">
                 <Breadcrumb.Item><img className='back-icon' src={backIcon} onClick={back} alt="返回上一页"/></Breadcrumb.Item>
-                <Breadcrumb.Item>组织管理</Breadcrumb.Item>
+                <Breadcrumb.Item>角色管理</Breadcrumb.Item>
                 <Breadcrumb.Separator />
                 <Breadcrumb.Item>新增角色</Breadcrumb.Item>
             </Breadcrumb>
@@ -33,10 +33,10 @@ function ContentForm(props){
     const [treeDatas, setTreeDatas] = useState([]);
     const [tabDatas, setTabDatas] = useState([]);
     const [activeTab, setActiveTab] = useState('');
-    const [sysCheckeds, setSysCheckeds] = useState([]);
-    const {save}  = useContext(RoleContext);
-    const initialValues={
-        status:1
+    const { save,detail }  = useContext(RoleContext);
+    const [sysCheckeds, setSysCheckeds] = useState();
+    const initialValues=detail||{
+        status:'1'
     };
     const vilidateRules = {
         required: '${label}不能为空!',
@@ -53,8 +53,11 @@ function ContentForm(props){
                 const data = res.data.data;
                 const treeDatas = structureTreeData(data);
                 setTreeDatas(treeDatas);
+                console.log(43,detail)
+                //默认选中第一个tab
                 setTabDatas([treeDatas[0]]);
                 setActiveTab(treeDatas[0].key);
+                setSysCheckeds(treeDatas[0]?[treeDatas[0].key]:[]);
             }
 
         })
@@ -71,12 +74,20 @@ function ContentForm(props){
                 children:JSON.parse(obj)
             }
         });
-        setSysCheckeds(arr[0]?[arr[0].key]:[]);
         //form.setFieldsValue({softwares:[{id:arr[0]?[arr[0].key]:''}]});   //默认选中第一个
         return arr;
     }
     useEffect(()=>{
-        getTreeData();
+        if(detail){
+        //编辑时权限树从详情中获取,tab数据也是
+            const treeDatas = structureTreeData(detail.loginUserMenuResourceTree);
+            setTreeDatas(treeDatas);
+            setSysCheckeds(detail.sids);
+            setTabDatas(treeDatas);
+        }else{
+            getTreeData();
+        }
+
     },[]);
     function handleCancel(){
 
@@ -89,7 +100,6 @@ function ContentForm(props){
     }
     //树形结构选中事件
     function checkTreeEvent(i,idsArr,sourceIds){
-        console.log(32,i,idsArr,sourceIds,activeTab)
         const formData=form.getFieldsValue();
         let arr=formData.softwares;
         arr[i]={
@@ -104,12 +114,6 @@ function ContentForm(props){
     function onTabChange(activeTab){
         setActiveTab(activeTab)
     }
-    //状态开关
-    function switchStatus(checked){
-        form.setFieldsValue({
-            status:checked?1:0
-        });
-    }
     //开放系统勾选事件
     function softwareChange(checkedValue){
         let arr = [],item;
@@ -135,20 +139,23 @@ function ContentForm(props){
             <Form.Item
                 label="角色名称"
                 name='name'
-                rules={[{ required: true},({ getFieldValue }) => ({
+                required
+                rules={[({ getFieldValue }) => ({
                     validator(_, value) {
-                        if (value.length<51) {
+                        if(!value){
+                            return Promise.reject(new Error('角色名称不能为空!'));
+                        }else if (value.length<51) {
                             return Promise.resolve();
                         }
                         return Promise.reject(new Error('格式错误!'));
                     },
                 }),]}>
-                <Input placeholder='请输入角色名称'/>
+                <Input placeholder='请输入角色名称' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="角色描述"
                 name='remark'>
-                <Input placeholder='请输入角色描述' />
+                <Input placeholder='请输入角色描述' autoComplete='off'/>
             </Form.Item>
             <Form.Item
                 label="排序"
@@ -178,8 +185,15 @@ function ContentForm(props){
                         tabDatas.map((it,i)=>{
                             return (
                                 <TabPane tab={it.title} key={i}>
-                                    <Form.Item key={i} name={['softwares', i, 'softwareMenuIds']} noStyle>
-                                        <MenuTree data={it} checkEv={(checkedKeys,sourceIds)=>checkTreeEvent(i,checkedKeys,sourceIds)}/>
+                                    <Form.Item
+                                        key={i}
+                                        name={['softwares', i, 'softwareMenuIds']}
+                                        valuePropName='checked'
+                                        getValueFromEvent={(checked)=>{
+                                            console.log(321,checked)
+                                            return [];
+                                        }} noStyle>
+                                        <MenuTree data={it} checkeds={form.getFieldValue().softwares?form.getFieldValue().softwares[i]:[]} checkEv={(checkedKeys,sourceIds)=>checkTreeEvent(i,checkedKeys,sourceIds)}/>
                                     </Form.Item>
                                     <Form.Item key={i+"a"} hidden={true} name={['softwares', i, 'id']} noStyle>
                                         <Input/>
@@ -198,8 +212,12 @@ function ContentForm(props){
                 <Space>
                     <Form.Item
                         name='status'
+                        valuePropName='checked'
+                        getValueFromEvent={(checked)=>{
+                            return +checked;
+                        }}
                         noStyle>
-                        <Switch checked={form.status} onChange={switchStatus} />
+                        <Switch />
                     </Form.Item>
                     <span>启用</span>
                 </Space>

+ 3 - 2
src/components/RoleManager/MenuTree.js

@@ -1,8 +1,8 @@
 import { Tree  } from 'antd';
 
 function MenuTree(props){
-    const {data,checkEv} = props;
-
+    const {data,checkEv,checkeds} = props;
+    //console.log(42,checkeds)
     //菜单选中事件
     function onCheck(checkedKeys,e){
         const {checkedNodes} = e;
@@ -21,6 +21,7 @@ function MenuTree(props){
     return (
         <Tree
             checkable
+            defaultCheckedKeys={checkeds?checkeds.softwareMenuIds:[]}
             onCheck={onCheck}
             onSelect={onSelect}
             treeData={treeData}

+ 30 - 19
src/components/RoleManager/index.js

@@ -7,8 +7,10 @@ import AddRole from './AddRole';
 import './index.less';
 import apiObj from '@api/index';
 import RoleContext from './role-context';
+import utils from '@utils/index'
 
 const {post,api,xPost} = apiObj;
+const { pickCheckedTreeIds } = utils;
 const { Option } = Select;
 function RoleManager(){
     useEffect(() => {
@@ -16,7 +18,7 @@ function RoleManager(){
     },[]);
 
     const [dataSource, setDataSource] = useState([]);   //列表数据
-    const [roleDetail, setRoleDetail] = useState([]);   //角色详情数据
+    const [roleDetail, setRoleDetail] = useState(null);   //角色详情数据
     const [visible,setVisible] = useState(false);   //删除禁用确认弹窗显示
     const [addVisible,setAddVisible] = useState(false);         //新增页面显示
     const [confirmLoading, setConfirmLoading] = useState(false);
@@ -101,33 +103,42 @@ function RoleManager(){
     function showAddRole(){
         setAddVisible(true);
     }
-    function getRoleDetail(id,type){
-        xPost(api.getRoleById,{roleId:id,type}).then((res)=>{
-            if(res.data.code===200){
-                console.log(res.data.data)
-                //setRoleDetail(res.data.data);
-            }else{
-                message.warning(res.data.msg||'获取详情失败')
-            }
-        });
+    function getRoleDetail(id){
+        return xPost(api.getRoleById,{roleId:id});
     }
     //修改角色
-    function editRole(id,type){
-        getRoleDetail(id,type);
+    async function editRole(id){
+        const data = await getRoleDetail(id);
+        const detail = data.data;
+        if(detail.code===200){
+            const content= detail.data;
+            const menuData = content.loginUserMenuResourceTree;
+            let softwares=[],sids=[];
+            for(let i=0;i<menuData.length;i++){
+                const obj = pickCheckedTreeIds(menuData[i]);
+                softwares.push(obj);
+                sids.push(obj.id);
+            }
+            const fData = Object.assign({},content,{sids,softwares});
+            setRoleDetail(fData);
+        }
         setAddVisible(true);
     }
+
     //保存
     function addRole(formData){
-        console.log('保存参数:',formData);
-        console.log(12,formData)
-
+        let url = api.addRole;
         const arr = formData.softwares.filter((it)=>{
             if(Object.keys(it).length&&it.softwareMenuIds&&it.softwareMenuIds.length){
                 return it;
             }
         });
+        if(roleDetail){     //修改角色
+            formData.id=roleDetail.id;
+            url=api.updateRole;
+        }
         formData.softwares=arr;
-        post(api.addRole,formData).then((res)=>{
+        post(url,formData).then((res)=>{
             if(res.data.code===200){
                 getTableData();
                 setAddVisible(false);
@@ -173,7 +184,7 @@ function RoleManager(){
     }
     //筛选项渲染
     const [form] = Form.useForm();
-    const onFinish = (values: any) => {
+    const onFinish = (values) => {
         getTableData(values);
         console.log('筛选项:',values);
     };
@@ -183,7 +194,7 @@ function RoleManager(){
     };
     if(addVisible){
         return (
-            <RoleContext.Provider value={{save:addRole}}>
+            <RoleContext.Provider value={{save:addRole,detail:roleDetail}}>
                 <AddRole back={goBack}/>
             </RoleContext.Provider>
         )
@@ -195,7 +206,7 @@ function RoleManager(){
                     <Row gutter={24}>
                         <Col span={5} key={0}>
                             <Form.Item name="name" label="角色名称">
-                                <Input placeholder='角色名称'/>
+                                <Input placeholder='角色名称' autoComplete='off'/>
                             </Form.Item>
                         </Col>
                         <Col span={5} key={2}>

+ 21 - 1
src/utils/index.js

@@ -9,7 +9,27 @@ function handleResponse(res,callback,error){
         error();
     }
 }
+
+function pickCheckedTreeIds(data,menuIds=[],resourceIds=[]){
+    let arr = data.children;
+    if(data.relation==='1'){
+        data.softwareMenuId&&menuIds.push(data.softwareMenuId);
+        data.softwareResourceId&&resourceIds.push(data.softwareResourceId);
+    }
+    if(arr){
+        arr.map((it)=>{
+            pickCheckedTreeIds(it,menuIds,resourceIds);
+        });
+    }
+    return {
+        id:data.softwareId,
+        name:data.softwareName,
+        softwareMenuIds:menuIds,
+        softwareResourceIds:resourceIds
+    }
+}
 const obj = {
-    handleResponse
+    handleResponse,
+    pickCheckedTreeIds
 };
 export default obj;