ソースを参照

feat: 服务记录增加删除、编辑功能

lanjianrong 4 年 前
コミット
19ef821c40

+ 9 - 3
src/pages/Customer/Client/components/ClientDetail/AddRecord.tsx

@@ -1,5 +1,5 @@
 import React, { useState, useEffect } from 'react'
-import { Form, Radio, DatePicker, Switch, Modal } from 'antd'
+import { Form, Radio, DatePicker, Switch, Modal, Input } from 'antd'
 import { dayjsFormat } from '@/utils/utils'
 import dayjs from 'dayjs'
 import { ProFormTextArea } from '@ant-design/pro-form'
@@ -28,7 +28,11 @@ const AddRecord: React.FC<AddRecordProps> = ({ defaultValues, onConfirm, ...rese
       if (Reflect.has(defaultValues, 'remindTime') || Reflect.has(defaultValues, 'remarks')) {
         setState({ ...state, showExtraItem: true })
       }
-      formRef?.setFieldsValue({ ...defaultValues })
+      formRef?.setFieldsValue({
+        ...defaultValues,
+        remindTime: defaultValues?.remindTime && dayjs(defaultValues.remindTime),
+        date: defaultValues?.date && dayjs(defaultValues.date)
+      })
     }
   }, [defaultValues])
 
@@ -67,7 +71,9 @@ const AddRecord: React.FC<AddRecordProps> = ({ defaultValues, onConfirm, ...rese
       }}
       confirmLoading={state.loading}>
       <Form layout="vertical" form={formRef}>
-        <Form.Item name="id" hidden />
+        <Form.Item name="id" hidden>
+          <Input />
+        </Form.Item>
         <Form.Item name="status" label="服务类型" rules={[{ required: true, message: '请选择类型' }]}>
           <Radio.Group options={options} />
         </Form.Item>

+ 46 - 21
src/pages/Customer/Client/components/ClientDetail/LowerList.tsx

@@ -7,9 +7,14 @@ import { VList } from 'virtuallist-antd'
 import consts from '@/consts'
 import type { ProColumns } from '@ant-design/pro-table'
 import ProTable from '@ant-design/pro-table'
-import { updateCustomerService, delCustomerService } from '@/services/customer'
+import {
+  updateCustomerService,
+  delCustomerService,
+  updateClientService,
+  delClientService
+} from '@/services/customer'
 import { useModal } from '@/components/ModalStore'
-import { useRequest } from 'umi'
+import { useDispatch, useRequest } from 'umi'
 const { TabPane } = Tabs
 
 export enum Servicelog {
@@ -23,6 +28,11 @@ export enum Servicelog {
   ONLINE = '4'
 }
 
+export enum ServiceLogType {
+  CLIENT,
+  COMPANY
+}
+
 export const servicelogEnum = {
   [Servicelog.VISIT]: {
     title: '上门服务',
@@ -57,26 +67,41 @@ type ClientLowerListProps = {
   serviceList: API.ServiceLogItem[]
 }
 
-export const ServiceLogItem: React.FC<{ item: API.ServiceLogItem }> = ({ item }) => {
+type ServiceLogItemProps = {
+  item: API.ServiceLogItem
+  logType: ServiceLogType
+  updatePayload: { main: string; target: string }
+}
+export const ServiceLogItem: React.FC<ServiceLogItemProps> = ({ item, logType, updatePayload }) => {
   const dispatchModal = useModal()
+  const dispatch = useDispatch()
+  const { run: truUpdate, loading: comfirmLoading } = useRequest(
+    logType === ServiceLogType.COMPANY ? updateCustomerService : updateClientService,
+    {
+      manual: true,
+      onSuccess: () => {
+        dispatch({
+          type: 'refresh/commitAction',
+          payload: updatePayload
+        })
+      }
+    }
+  )
+  const { run: truDel, loading: delLoading } = useRequest(
+    logType === ServiceLogType.COMPANY ? delCustomerService : delClientService,
+    {
+      manual: true,
+      onSuccess: () => {
+        dispatch({
+          type: 'refresh/commitAction',
+          payload: updatePayload
+        })
+      }
+    }
+  )
 
-  const { run: truUpdate, loading: comfirmLoading } = useRequest(updateCustomerService, {
-    manual: true
-  })
-  const { run: truDel, loading: delLoading } = useRequest(delCustomerService, {
-    manual: true
-  })
-  const handleOnUpdateComfirm = async (serviceLog: API.ServiceLogItem) => {
-    const data = await truUpdate(serviceLog)
-    console.log(data)
-
-    return true
-  }
-  const handleOnDelComfirm = async (id: string) => {
-    truDel({ id })
-  }
   const handleOnEdit = async (defaultValues: API.ServiceLogItem) => {
-    dispatchModal('M_RECORD_ADD', { defaultValues, onConfirm: handleOnUpdateComfirm })
+    dispatchModal('M_RECORD_ADD', { defaultValues, onConfirm: truUpdate })
   }
   return (
     <div
@@ -131,7 +156,7 @@ export const ServiceLogItem: React.FC<{ item: API.ServiceLogItem }> = ({ item })
               size="small"
               danger
               loading={delLoading}
-              onClick={() => handleOnDelComfirm(item.id)}
+              onClick={() => truDel({ id: item.id })}
               className="ml-1">
               删除
             </Button>
@@ -188,7 +213,7 @@ const ClientLowerList: React.FC<ClientLowerListProps> = ({ logList: { log: logs
             <div className="sheet-panel-record">
               {serviceList.map(item => (
                 <div className="mb-3" key={item.id}>
-                  <ServiceLogItem item={item} />
+                  <ServiceLogItem item={item} logType={ServiceLogType.CLIENT} />
                 </div>
               ))}
             </div>

+ 12 - 9
src/pages/Customer/Company/components/CompanyDetail/LowerList.tsx

@@ -1,11 +1,5 @@
 import { Tabs } from 'antd'
-import consts from '@/consts'
-import { isDevMode } from '@/utils/env'
-import TimeLineList from '@/components/TimeLineList'
-import {
-  renderServiceLogItem,
-  ServiceLogItem
-} from '@/pages/Customer/Client/components/ClientDetail/LowerList'
+import { ServiceLogItem, ServiceLogType } from '@/pages/Customer/Client/components/ClientDetail/LowerList'
 import { useMemo } from 'react'
 import { VList } from 'virtuallist-antd'
 import type { ProColumns } from '@ant-design/pro-table'
@@ -16,9 +10,14 @@ type CompanyLowerListProps = {
     log: any[]
   }
   serviceList: API.ServiceLogItem[]
+  updatePayload?: { main: string; target: string }
 }
 
-const CompanyLowerList: React.FC<CompanyLowerListProps> = ({ logList: { log: logs = [] }, serviceList }) => {
+const CompanyLowerList: React.FC<CompanyLowerListProps> = ({
+  logList: { log: logs = [] },
+  serviceList,
+  updatePayload
+}) => {
   const tableHeight = (document.body.clientHeight - 124 - 54 - 40 - 40 - 4) / 2
   const columns: ProColumns<API.LogItem>[] = [
     {
@@ -77,7 +76,11 @@ const CompanyLowerList: React.FC<CompanyLowerListProps> = ({ logList: { log: log
             <div className="sheet-panel-record">
               {serviceList.map(item => (
                 <div className="mb-2" key={item.id}>
-                  <ServiceLogItem item={item} />
+                  <ServiceLogItem
+                    item={item}
+                    logType={ServiceLogType.COMPANY}
+                    updatePayload={updatePayload}
+                  />
                 </div>
               ))}
             </div>

+ 5 - 1
src/pages/Customer/Company/components/CompanyDetail/index.jsx

@@ -127,7 +127,11 @@ const CompanyDetail = props => {
                   customer={state.customer}
                   business={state.business}
                 />
-                <CompanyLowerList logList={state.log} serviceList={state.serviceLog} />
+                <CompanyLowerList
+                  logList={state.log}
+                  serviceList={state.serviceLog}
+                  updatePayload={{ main: updateKey, target: dataId }}
+                />
               </Col>
             </Row>
           </div>

+ 0 - 1
src/pages/Hr/Notification/index.less

@@ -4,7 +4,6 @@
     padding-left: 2rem;
     list-style: decimal;
   }
-  ,
   .mt-3 {
     margin-top: 10px !important;
   }

+ 17 - 2
src/services/customer.ts

@@ -280,7 +280,22 @@ export async function queryClientSourceList() {
   return request('/client/source')
 }
 
-/** 编辑客户服务日志 */
+/** 编辑客户-客户服务日志 */
+export async function updateClientService(params: API.ServiceLogItem) {
+  return request('/serviceLog/update', {
+    method: 'POST',
+    data: params
+  })
+}
+
+/** 删除客户-客户服务日志 */
+export async function delClientService(params: { id: string }) {
+  return request('/serviceLog/delete', {
+    method: 'POST',
+    data: params
+  })
+}
+/** 编辑客户-单位服务日志 */
 export async function updateCustomerService(params: API.ServiceLogItem) {
   return request('/customer/service/update', {
     method: 'POST',
@@ -288,7 +303,7 @@ export async function updateCustomerService(params: API.ServiceLogItem) {
   })
 }
 
-/** 删除客户服务日志 */
+/** 删除客户-单位服务日志 */
 export async function delCustomerService(params: { id: string }) {
   return request('/customer/service/delete', {
     method: 'POST',