瀏覽代碼

refactor: responseInterceptors support throw error

lanjianrong 3 年之前
父節點
當前提交
58551b9ddc

+ 6 - 0
config/routes.ts

@@ -56,6 +56,12 @@
         ]
       },
       {
+        path: '/project/approval',
+        name: 'approval',
+        // access: 'authRouteFilter',
+        component: './Project/Approval'
+      },
+      {
         path: '/project/verification',
         name: 'verification',
         access: 'authRouteFilter',

+ 1 - 0
src/locales/zh-CN/menu.ts

@@ -20,6 +20,7 @@ export default {
   'menu.project.management.management-list': '项目列表',
   'menu.project.management.management-detail': '项目详情',
   'menu.project.created': '项目创建人',
+  'menu.project.approval': '审批角色',
   'menu.project.verification': '审批流程模板',
   'menu.institutions': '企事业单位',
   'menu.institutions.company': '单位管理',

+ 11 - 0
src/pages/Project/Approval/index.tsx

@@ -0,0 +1,11 @@
+import React from 'react'
+
+const index = () => {
+  return (
+    <div>
+      <span>审批角色</span>
+    </div>
+  )
+}
+
+export default index

+ 32 - 19
src/pages/Project/Verification/Detail/Flow/components/Drawer/ParticipantCard.tsx

@@ -1,4 +1,4 @@
-import React, { useContext, useEffect, useMemo, useState } from 'react'
+import React, { useContext, useEffect, useState } from 'react'
 import { ApprovalWay, approvalWayConfigurationsEnum, ParticipantMode } from '../../enum'
 import { ConfigureType } from '../../enum'
 import { queryAccountList } from '@/services/api/institution'
@@ -47,6 +47,10 @@ const configureItemTitle = {
   }
 }
 
+interface iState {
+  configureArr: string[]
+  staffList: { label: string; value: string }[]
+}
 const ParticipantCard: React.FC<ParticipantCardProps> = ({
   approvalWay,
   updateAction,
@@ -58,7 +62,7 @@ const ParticipantCard: React.FC<ParticipantCardProps> = ({
   const curNode = elements.filter(item => isNode(item)).find(item => item.id === nodeID)
   const lastEdge = elements.filter(item => isEdge(item)).find(item => item.target === eId)
 
-  const [state, setState] = useState({
+  const [state, setState] = useState<iState>({
     configureArr: approvalWayConfigurationsEnum[approvalWay],
     staffList: []
   })
@@ -89,7 +93,12 @@ const ParticipantCard: React.FC<ParticipantCardProps> = ({
     ) {
       // 当前的node元素
       // 最后一个edge及诶单
-      if (lastEdge && curNode && lastEdge.source === curNode.id) {
+      if (
+        lastEdge &&
+        curNode &&
+        lastEdge.source === curNode.id &&
+        !state.configureArr.includes(ConfigureType.NEXTSECTOR)
+      ) {
         setState({ ...state, configureArr: [...state.configureArr, ConfigureType.NEXTSECTOR] })
       }
     }
@@ -103,8 +112,8 @@ const ParticipantCard: React.FC<ParticipantCardProps> = ({
             className="w-full"
             defaultValue={defaultData.participantMode}
             options={[
-              { label: '仅用户模式', value: ParticipantMode.ACCOUNT }
-              // { label: '角色模式', value: ParticipantMode.ROLE }
+              { label: '仅用户模式', value: ParticipantMode.ACCOUNT },
+              { label: '单位角色模式', value: ParticipantMode.ROLE }
             ]}
             onChange={value => {
               updateAction({ ...defaultData, participantMode: value })
@@ -114,24 +123,28 @@ const ParticipantCard: React.FC<ParticipantCardProps> = ({
         <div>
           <Select
             className="w-full"
-            defaultValue={defaultData.institutionID}
+            value={defaultData.institutionID}
             options={institutionList}
-            onChange={value => {
-              if (value) tryUpdateStaffList(value)
-              updateAction({ ...defaultData, institutionID: value })
-            }}
-          />
-        </div>
-        <div>
-          <Select
-            className="w-full"
-            defaultValue={defaultData.ID}
-            options={state.staffList}
-            onChange={(_, options) => {
-              updateAction({ ...defaultData, ID: options?.value, name: options?.label })
+            onChange={async value => {
+              if (value && defaultData.participantMode === ParticipantMode.ACCOUNT) {
+                await tryUpdateStaffList(value)
+              }
+              updateAction({ ...defaultData, institutionID: value, ID: null, name: null })
             }}
           />
         </div>
+        {defaultData.participantMode === ParticipantMode.ACCOUNT ? (
+          <div>
+            <Select
+              className="w-full"
+              value={defaultData.ID}
+              options={state.staffList}
+              onChange={(_, options) => {
+                updateAction({ ...defaultData, ID: options?.value, name: options?.label })
+              }}
+            />
+          </div>
+        ) : null}
       </div>
       <Collapse
         defaultActiveKey={['1']}

+ 2 - 9
src/pages/Project/Verification/Detail/Flow/components/Drawer/index.tsx

@@ -1,14 +1,8 @@
 import { useState, useEffect, useContext, useMemo } from 'react'
-import { Button, Drawer, message, Radio, Select, Tabs, Tooltip } from 'antd'
+import { Button, Drawer, message, Radio, Tabs, Tooltip } from 'antd'
 import { Actions, FlowContext } from '../../context'
 import type { RadioChangeEvent } from 'antd'
-import {
-  ApprovalWay,
-  approvalWayConfigurationsEnum,
-  ConfigureType,
-  ParticipantMode,
-  VoteOption
-} from '../../enum'
+import { ApprovalWay, approvalWayConfigurationsEnum, ParticipantMode } from '../../enum'
 import { QuestionCircleFilled } from '@ant-design/icons'
 import { queryInstitutionList } from '@/services/api/institution'
 import { buildUUID } from '@/utils/uuid'
@@ -26,7 +20,6 @@ const FlowDrawer = () => {
     loading: false,
     institutionList: [],
     approvalWay: ApprovalWay.ACCOUNT,
-    // voteWay: null, // 投票方式,仅会签模式下
     accounts: [],
     validityIDs: []
   })

+ 1 - 1
src/pages/Project/Verification/Detail/Flow/enum/index.ts

@@ -27,7 +27,7 @@ export enum ApprovalWay {
 export enum ParticipantMode {
   /** @name 用户模式 */
   ACCOUNT = 'account',
-  /** @name 角色模式 */
+  /** @name 单位角色模式 */
   ROLE = 'role'
 }