outaozhen 3 år sedan
förälder
incheckning
7bd62eeb42

+ 31 - 9
src/pages/Business/Attendance/index.tsx

@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import React, { useState, useEffect, useRef } from 'react'
 import ShowTitleMenu from './components/ShowTitleMenu'
 import { useRequest } from 'umi'
 import { Plus, Delete } from '@icon-park/react'
@@ -7,29 +7,34 @@ import {
   fetchAttendanceList,
   unlinkAttendance,
   deleteAttendance,
+  fetchParametersDetail,
   updateParameters
 } from '@/services/user/system'
 import ConnectModal from '@/pages/role/System/components/ConnectModal'
 import ProForm, { ProFormText } from '@ant-design/pro-form'
 
 const titleOptions = [
-  { label: '加班申请人', value: '0' },
-  { label: '销假参数', value: '1' }
+  { label: '加班申请人', value: 0 },
+  { label: '销假参数', value: 1 }
 ]
 export enum modalType {
   addobjectModal = 0,
   linkAttendance = 1
 }
 const Attendance: React.FC = () => {
+  const formRef = useRef<FormInstance>(null)
   const [state, setState] = useState({
     id: '0',
+    menuId: 0,
     attendanceList: [],
+    contentValue: '',
+    parametersType: 1,
     visible: false,
     type: modalType.addobjectModal
   })
 
-  const onSelect = (id: string) => {
-    setState({ ...state, id })
+  const onSelect = (menuId: string) => {
+    setState({ ...state, menuId })
   }
 
   const { run: tryGetRoleStaffList } = useRequest(fetchAttendanceList, {
@@ -39,6 +44,18 @@ const Attendance: React.FC = () => {
     }
   })
 
+  const { run: tryGetParametersDetail } = useRequest(
+    (params: API.ParametersDetail) => {
+      return fetchParametersDetail(params)
+    },
+    {
+      manual: true,
+      onSuccess: result => {
+        setState({ ...state, contentVlue: result })
+      }
+    }
+  )
+
   const { run: tryunlinkAttendance } = useRequest(
     (params: API.LinkAttendance) => {
       return unlinkAttendance(params)
@@ -78,8 +95,12 @@ const Attendance: React.FC = () => {
   useEffect(() => {
     if (state.id) {
       tryGetRoleStaffList(state.id)
+      tryGetParametersDetail(state.parametersType)
+    }
+    if (state.menuId === 1) {
+      formRef.current?.setFieldsValue(...state.contentValue)
     }
-  }, [state.id])
+  }, [state.id, state.menuId])
 
   const columns: ColumnsType<API.AttendanceItem> = [
     {
@@ -143,10 +164,10 @@ const Attendance: React.FC = () => {
 
   return (
     <div className="h-full w-full flex flex-row">
-      <ShowTitleMenu onSelect={onSelect} options={titleOptions} defaultValue="0" />
+      <ShowTitleMenu onSelect={onSelect} options={titleOptions} defaultValue={0} />
       <div className="w-max-3/4">
         <div className="ml-8 bg-white p-4 shadow-md shadow-hex-3e2c5a relative">
-          {state.id === '0' ? (
+          {state.menuId === 0 ? (
             <>
               <div className="absolute right-7 top-7 z-100">
                 <Button
@@ -178,10 +199,11 @@ const Attendance: React.FC = () => {
               />
             </>
           ) : null}
-          {state.id === '1' ? (
+          {state.menuId === 1 ? (
             <>
               <div>
                 <ProForm
+                  formRef={formRef}
                   onFinish={async values => {
                     await tryUpdateParameters(values)
                     message.success('更新成功')

+ 5 - 0
src/services/user/system.ts

@@ -42,6 +42,11 @@ export async function deleteAttendance(params: API.DeleteAttendance) {
   })
 }
 
+/** 获取销假参数 */
+export async function fetchParametersDetail() {
+  return request<API.ParametersDetail[]>('/parameters/detail')
+}
+
 /** 设置销假参数 */
 export async function updateParameters(params: API.UpdateParameters) {
   return request('/parameters/update', {

+ 4 - 0
src/services/user/typings.d.ts

@@ -242,6 +242,10 @@ declare namespace API {
     isLeaf: boolean
   }
 
+  type ParametersDetail = {
+    parametersType: string
+  }
+
   type UpdateParameters = {
     parametersType: string
     content: string