bill 2 anni fa
parent
commit
3e223ed093

+ 5 - 0
src/api/example.ts

@@ -6,6 +6,7 @@ import {
   EXAMPLE_SCENE_LIST,
   REP_EXAMPLE_SCENES,
   SceneType,
+  GET_EXAMPLE,
  } from 'constant'
 
 import type { 
@@ -33,6 +34,10 @@ export type GetExamplesParams = PagingRequest<{caseTitle?: string}>
 export const getExamples = (props: GetExamplesParams) => 
   axios.post<PagingResult<Example[]>>(EXAMPLE_LIST, props)
 
+export const getExample = (props: Pick<Example, 'caseId'>) => {
+  return axios.get<Example>(GET_EXAMPLE, { params: props })
+}
+
 export type SetExampleParams = Pick<Example, 'caseTitle'> & Partial<Pick<Example, 'caseId'>>
 export const setExample = (props: SetExampleParams) =>
   axios.post<undefined>(SET_EXAMPLE, props)

+ 1 - 0
src/constant/api.ts

@@ -34,6 +34,7 @@ export const SET_EXAMPLE = `/fusion/case/addOrUpdate`
 export const DELETE_EXAMPLE = `/fusion/case/delete`
 export const EXAMPLE_SCENE_LIST = `/fusion/case/sceneList`
 export const REP_EXAMPLE_SCENES = `/fusion/case/addScene`
+export const GET_EXAMPLE = `/fusion/case/getInfo`
 
 // 案件卷宗
 export const EXAMPLE_FILE_TYPE_LIST = `/fusion/caseFilesType/allList`

+ 7 - 0
src/hook/refersh.ts

@@ -8,4 +8,11 @@ export const useRefersh = () => {
     setRefershCount(refershCount + 1)
   // eslint-disable-next-line react-hooks/exhaustive-deps
   }, [])
+}
+export const useRefershFoce = () => {
+  const [refershCount, setRefershCount] = useState(0)
+
+  return () => {
+    setRefershCount(refershCount + 1)
+  }
 }

+ 23 - 0
src/layout/header/FilesHeader.tsx

@@ -0,0 +1,23 @@
+import { getExample } from 'api'
+import { useEffect, useState } from 'react'
+import { usePathData } from 'router'
+import { HeaderContent } from './index'
+import style from './style.module.scss'
+
+export const FilesHeader = () => {
+  const data = usePathData()
+  const caseId = data?.id ? Number(data.id) : -1
+  const [title, setTitle] = useState("")
+  useEffect(() => {
+    getExample({caseId}).then(example => setTitle(example.caseTitle))
+  }, [caseId])
+  
+  
+  return (
+    <HeaderContent>
+      <div className={style['file-title']}>{title} | 卷宗管理</div>
+    </HeaderContent>
+  )
+}
+
+export default FilesHeader

+ 3 - 1
src/layout/header/index.tsx

@@ -4,9 +4,10 @@ import style from './style.module.scss'
 import { title } from 'constant'
 import { useSelector, useDispatch, postLogout } from 'store'
 import { useNavigate, RoutePath } from 'router'
+import { ReactElement } from 'react'
 
 
-export const HeaderContent = () => {
+export const HeaderContent = (props: { children?: ReactElement }) => {
   const user = useSelector(store => store.user.value)
   const dispatch = useDispatch()
   const navigate = useNavigate()
@@ -25,6 +26,7 @@ export const HeaderContent = () => {
   return (
     <>
       <h2 className={style.title}>{title}</h2>
+      { props.children }
       <div className={style.avatar}>
         <Dropdown 
           overlay={<Menu style={{width: '100px'}} items={items} />} 

+ 6 - 0
src/layout/header/style.module.scss

@@ -18,4 +18,10 @@
 
 :global(.ant-dropdown) {
   min-width: auto !important;
+}
+
+.file-title {
+  color: #fff;
+  font-size: 24px;
+  font-weight: bold;
 }

+ 6 - 4
src/layout/top/index.tsx

@@ -2,8 +2,10 @@ import { Layout } from 'antd'
 import { Outlet, useRoute, useNavigate, RouteConfigTree } from 'router'
 import { RouteMenu } from 'components'
 import { HeaderContent } from '../header'
+import { FilesHeader } from '../header/FilesHeader'
 
 import style from './style.module.scss'
+import { ReactElement } from 'react'
 
 const { Header, Sider, Content  } = Layout
 
@@ -28,11 +30,11 @@ export const ASider = () => {
   )
 }
 
-export const Base = ({ showMenu }: {showMenu: boolean}) => {
+export const Base = ({ showMenu, header }: { showMenu: boolean, header: ReactElement  }) => {
   return (
     <Layout>
       <Header className={style.header}>
-        <HeaderContent />
+        { header }
       </Header>
       <Layout>
         { showMenu && <ASider /> }
@@ -44,7 +46,7 @@ export const Base = ({ showMenu }: {showMenu: boolean}) => {
   )
 }
 
-export const Top = () => <Base showMenu />
-export const Second = () => <Base showMenu={false} />
+export const Top = () => <Base showMenu header={<HeaderContent />} />
+export const Second = () => <Base showMenu={false} header={<FilesHeader />} />
 
 export default Top

+ 1 - 1
src/version.json

@@ -2,5 +2,5 @@
   "env": "dev",
   "main": 1.2,
   "append": "alpha",
-  "version": 6
+  "version": 7
 }

+ 2 - 3
src/views/draw-file/board/index.js

@@ -47,7 +47,6 @@ export const create = (store, canvas) => {
         ]
         shape.data.content = data
         shape.setContent = (newData) => {
-          console.log(newData)
           shape.data.content = newData
           update(newData)
         }
@@ -66,9 +65,9 @@ export const create = (store, canvas) => {
       }
       case compass: {
         data = data || 0
-        shape.data.rotate = 0
+        console.log(data)
+        shape.data.rotate = data
         shape.setRotate = (newData) => {
-          console.log(newData)
           shape.data.rotate = newData
           update(newData)
         }

+ 2 - 1
src/views/draw-file/eshape.tsx

@@ -48,6 +48,7 @@ const TextInput = ({ shape }: { shape: ExtractShape<'text'> }) => {
     <Form.Item label="内容">
       <Input.Group compact>
         <Input 
+          maxLength={50}
           style={{ width: 120 }}
           value={text}
           onKeyDown={
@@ -160,7 +161,7 @@ const ContentInput = ({ shape }: { shape: ExtractShape<'content'> }) => {
   return (
     <Form.Item label="内容">
       <Button type="primary" onClick={() => setEdit(true)}>编辑</Button>
-      <Modal open={edit} onCancel={() => setEdit(false)} onOk={onSubmit} width="430px">
+      <Modal open={edit} onCancel={() => setEdit(false)} onOk={onSubmit} width="430px" className="edit-table-layout">
         <div id="edit-table" onKeyDown={ev => ev.stopPropagation()}>
           <ReactEditeTable 
             {...tableAttrs}

+ 2 - 2
src/views/draw-file/header.tsx

@@ -137,8 +137,8 @@ const Header = ({ board, type }: HeaderProps) => {
             <i className="iconfont icon-keyboard" />
           </Popover>
         </div>
-        <Button type="primary" size="middle" onClick={save}>保存</Button>
-        <Button type="default" size="middle" onClick={exportPng}>导出</Button>
+        <Button className={style['def-btn']} type="primary" size="middle" onClick={save}>保存</Button>
+        <Button className={style['def-btn']} type="default" size="middle" onClick={exportPng}>导出</Button>
       </div>
     </>
   )

+ 17 - 0
src/views/draw-file/style.module.scss

@@ -331,4 +331,21 @@ body {
     right: 0;
     cursor: pointer;
   }
+}
+
+.def-btn:focus {
+  color: rgba(0, 0, 0, 0.85);
+  border-color: #d9d9d9;
+  background: #fff;
+
+  &:global(.ant-btn-primary:focus) {
+    color: #fff;
+    border-color: #26559B;
+    background: #26559B;
+  }
+}
+
+:global(.edit-table-layout .ant-modal-body) {
+  max-height: 451px;
+  overflow-y: auto;
 }

+ 22 - 18
src/views/example/scene/select.tsx

@@ -3,19 +3,19 @@ import { Table } from 'components'
 import { Modal, Input } from 'antd'
 import { ScenePage, sceneTitleColumn, sceneTimeColumn, modelSceneTimeColumn, modelSceneRawTypeColumn } from 'views/scene'
 import { fetchScenes, filterScenesSelector, useSelector, getSceneIdent } from 'store'
-import { useThunkPaging, useRefersh } from 'hook'
+import { useThunkPaging, useRefershFoce } from 'hook'
 import style from '../style.module.scss'
 
 import type { Scene, SceneIdents } from "api";
 
-export type SelectScenesProps = { 
+export type SelectScenesProps = {
   sceneIdents: SceneIdents
   onClose: () => void,
   onSelect: (ids: SelectScenesProps['sceneIdents']) => void
 }
 
 export const SelectScenes = ({ sceneIdents, ...props }: SelectScenesProps) => {
-  let idents:SceneIdents = sceneIdents.map(ident => ({
+  let idents: SceneIdents = sceneIdents.map(ident => ({
     ...ident,
     numList: [...ident.numList]
   }))
@@ -44,38 +44,42 @@ export const SelectScenes = ({ sceneIdents, ...props }: SelectScenesProps) => {
         typeIdents.numList.push(sceneIdent)
       }
     }
+
+    console.log(typeIdents)
   }
 
-  const Content = ({type}: {type: SceneType}) => {
+  const Content = ({ type }: { type: SceneType }) => {
     const scenes = useSelector((state) => filterScenesSelector(state, { type }))
     const states = useThunkPaging({ type, sceneName: '', status: QuoteSceneStatus.SUCCESS }, fetchScenes)
     const [[paging, setPaging], [params, setParams]] = states
     const selectedIds = getSelectIds(type, scenes)
-    const refersh = useRefersh()
+    const refersh = useRefershFoce()
+    console.log(selectedIds)
 
-    const rowSelection: any = { 
-      selectedRowKeys: selectedIds, 
+    const rowSelection: any = {
+      selectedRowKeys: selectedIds,
       onChange(ids: string, selectScenes: Scene[]) {
+        console.log(ids, selectScenes)
         replaceIdents(type, scenes, selectScenes)
         refersh()
       }
     };
-    const columns = type === SceneType.SWMX 
-      ? [modelSceneRawTypeColumn, modelSceneTimeColumn] 
+    const columns = type === SceneType.SWMX
+      ? [modelSceneRawTypeColumn, modelSceneTimeColumn]
       : [sceneTimeColumn]
-    
+
     return (
       <div>
         <div className={style['model-header']}>
           <Input.Search
             allowClear
             className='content-header-search'
-            placeholder="输入名称搜索" 
-            onSearch={sceneName => setParams({ sceneName }) }
-            style={{ width: 264, marginTop: '15px' }} 
+            placeholder="输入名称搜索"
+            onSearch={sceneName => setParams({ sceneName })}
+            style={{ width: 264, marginTop: '15px' }}
           />
         </div>
-        <Table 
+        <Table
           columns={[sceneTitleColumn, ...columns] as any}
           rowSelection={rowSelection}
           data={scenes}
@@ -88,11 +92,11 @@ export const SelectScenes = ({ sceneIdents, ...props }: SelectScenesProps) => {
   }
 
   return (
-    <Modal 
+    <Modal
       width="800px"
-      title="添加场景" 
-      visible={true} 
-      onOk={() => props.onSelect(idents)} 
+      title="添加场景"
+      visible={true}
+      onOk={() => props.onSelect(idents)}
       onCancel={props.onClose}
       okText="确定"
       cancelText="取消"