Browse Source

refactor: 登录日志的调整+事项列表弹窗的表格样式修改

outaozhen 3 years ago
parent
commit
09ae6037ba

+ 0 - 1
src/pages/Business/Matter/components/AddAssemblyModal.tsx

@@ -14,7 +14,6 @@ type AddAssemblyProps = {
 
 const AddAssemblyModal: React.FC<AddAssemblyProps> = ({ defaultData, close, refresh }) => {
   const [assemblyList, setAssemblyList] = useState(defaultData?.assembly || [])
-  console.log('aaa')
 
   const handleAssemblyOnchange = (checked: boolean, checkName: string) => {
     let newAssemblyList

+ 26 - 27
src/pages/Business/Matter/components/AssemblyDetail.tsx

@@ -1,6 +1,5 @@
 import ProTable from '@ant-design/pro-table'
 import React from 'react'
-import { createUid } from '@/utils/util'
 import { Button, Tag } from 'antd'
 import { ColumnsType } from 'antd/lib/table'
 import { isNullOrUnDef } from '@/utils/is'
@@ -39,11 +38,12 @@ type AssemblyDetailProps = {
 
 const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ record, refresh }) => {
   const [modal, ModalDOM] = useModal()
+
   const columns: ColumnsType<API.AssemblyItem> = [
     {
       title: '组件名称',
       dataIndex: 'name',
-      align: 'center',
+      onHeaderCell: () => ({ style: { textAlign: 'center' } }),
       renderText: name => <span>{assemblyToNameMap[name]}</span>
     },
     {
@@ -55,13 +55,18 @@ const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ record, refresh }) => {
     {
       title: '组件标题',
       dataIndex: 'title',
-      align: 'center',
+      onHeaderCell: () => ({ style: { textAlign: 'center' } }),
       renderText: title => <span>{assemblyToTitleMap[title]}</span>
     },
     {
       title: '操作',
       dataIndex: 'operate',
-      align: 'center'
+      align: 'center',
+      renderText: () => (
+        <div className="divide-x divide-bg-gray-400 flex flex-row items-center">
+          <span className="px-2 text-primary cursor-pointer hover:text-hex-967bbd">组件配置</span>
+        </div>
+      )
     }
   ]
 
@@ -69,12 +74,11 @@ const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ record, refresh }) => {
     <div className={styles.drawerTableBox}>
       <ProTable
         search={false}
-        rowKey="ID"
+        rowKey="id"
         columns={columns}
         dataSource={
           !isNullOrUnDef(record?.assembly)
             ? record?.assembly.map(item => ({
-                ID: createUid(),
                 name: item,
                 type: item,
                 title: item
@@ -83,28 +87,23 @@ const AssemblyDetail: React.FC<AssemblyDetailProps> = ({ record, refresh }) => {
         }
         className="absolute"
         pagination={false}
-        toolbar={{
-          actions: [
-            <Button
-              key="key"
-              onClick={() => {
-                modal.open({
-                  title: '添加组件',
-                  okText: '确认',
-                  cancelText: '取消',
-                  width: 1000,
-                  wrapClassName: 'modalTableBox',
-                  children: (
-                    <AddAssemblyModal defaultData={record} refresh={refresh} close={() => modal.close()} />
-                  ),
-                  footer: null
-                })
-              }}>
-              添加组件
-            </Button>
-          ]
-        }}
+        toolBarRender={false}
       />
+      <Button
+        className="buttonBox"
+        onClick={() => {
+          modal.open({
+            title: '添加组件',
+            okText: '确认',
+            cancelText: '取消',
+            width: 1000,
+            wrapClassName: 'modalTableBox',
+            children: <AddAssemblyModal defaultData={record} refresh={refresh} close={() => modal.close()} />,
+            footer: null
+          })
+        }}>
+        添加组件
+      </Button>
       {ModalDOM}
     </div>
   )

+ 6 - 3
src/pages/Business/Matter/components/index.less

@@ -2,10 +2,13 @@
   :global(.ant-pro-table) {
     width: calc(100% - 48px);
   }
-  :global(.ant-space-item button) {
+  :global(.buttonBox) {
     position: absolute;
-    top: -51px;
-    right: 0;
+    top: 17px;
+    right: 15px;
+  }
+  :global(.ant-pro-card-body) {
+    padding: 0;
   }
 }
 .modalTableBox {

+ 1 - 1
src/pages/Business/Matter/hooks/useRowScript.tsx

@@ -111,7 +111,7 @@ export function useRowScript(modal: ModalAction) {
             <ProFormSelect
               name="parentID"
               label="分类名称"
-              options={state.list?.map(item => ({ label: item.name, value: item.ID }))}
+              options={state.treeList?.map(item => ({ label: item.name, value: item.ID }))}
               rules={[{ required: true, message: '请选择' }]}
             />
           ) : null}

+ 2 - 2
src/pages/Business/Matter/index.tsx

@@ -14,7 +14,7 @@ interface IState {
     gatherID?: Nullable<string>
     businessType?: Nullable<string>
   }
-  expandTreeIds: []
+  expandTreeIds: string[]
 }
 
 const Matter: React.FC = () => {
@@ -44,7 +44,7 @@ const Matter: React.FC = () => {
     drawer.open({
       title: '组件配置',
       closeIcon: null,
-      children: <AssemblyDetail record={record} refresh={refresh} />
+      children: <AssemblyDetail record={record} assemblyList={state.assemblyList} refresh={refresh} />
     })
   }
 

+ 1 - 1
src/pages/Schema/Option/index.tsx

@@ -173,7 +173,7 @@ const Option = () => {
         activeID: state.menuData[0].ID
       })
     }
-    const menuTitleCopyUrl = `/api/form/v1/ds/items?ID=${
+    const menuTitleCopyUrl = `/api/form/v1/ds/items?name=${
       state.menuData.find(i => i.ID === state.activeID)?.name
     }`
     if (isNullOrUnDef(menuTitleCopyUrl) || isEmpty(menuTitleCopyUrl)) return null

+ 9 - 3
src/pages/System/Log/index.tsx

@@ -36,7 +36,7 @@ const LoginLog = () => {
       renderText: (browser, record) => (
         <>
           <span className="mr-1">{browser}</span>
-          <span>{record.os}</span>
+          <span>{record.os}</span>
         </>
       )
     },
@@ -45,13 +45,19 @@ const LoginLog = () => {
       title: '登录时间',
       align: 'center',
       onHeaderCell: () => ({ style: { textAlign: 'center' } }),
-      renderText: text => dayjs(text).format('YYYY-MM-DD')
+      renderText: text => dayjs(text).format('YYYY-MM-DD HH:mm:ss')
     },
     {
       dataIndex: 'ipInfo',
       title: '登录地址',
       align: 'center',
-      onHeaderCell: () => ({ style: { textAlign: 'center' } })
+      onHeaderCell: () => ({ style: { textAlign: 'center' } }),
+      renderText: (ipInfo, record) => (
+        <>
+          <span className="mr-1">{ipInfo}</span>
+          <span>({record.ip})</span>
+        </>
+      )
     }
   ]
   return (

+ 7 - 0
src/services/api/business.ts

@@ -132,6 +132,13 @@ export async function queryMatterTree(params: {
   })
 }
 
+/** 获得事项详情 */
+export async function queryMatterDetail(params: { ID: string }) {
+  return request('/Matter/detail', {
+    params
+  })
+}
+
 /** 新建事项分类 */
 export async function addMatter(params: API.MatterItem) {
   return request('/matter/add', {

+ 2 - 0
src/services/api/typings.d.ts

@@ -496,6 +496,8 @@ declare namespace API {
 
   type MatterItem = Omit<MatterTreeItem, 'children'>
 
+  type MatterDetailItem = Pick<MatterTreeItem, 'assembly'>
+
   type AddMatterParams = Pick<MatterTreeItem, 'gatherID' | 'businessType' | 'matterType' | 'name'>
 
   type UpdateMatterParams = Pick<MatterTreeItem, 'ID' | 'parentID' | 'name'>