Procházet zdrojové kódy

Merge branch 'dev' of http://192.168.1.41:3000/outaozhen/cldV2react into dev

outaozhen před 4 roky
rodič
revize
0a10b4b944

+ 5 - 7
config/config.js

@@ -1,14 +1,12 @@
 // https://umijs.org/config/
 
-const CompressionWebpackPlugin = require('compression-webpack-plugin')
-const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin')
+import CompressionWebpackPlugin from 'compression-webpack-plugin'
 const prodGzipList = ['js', 'css', 'html']
 
 import { defineConfig } from 'umi'
 import defaultSettings from './defaultSettings'
 import proxy from './proxy'
 import routes from './routes'
-import windicss from 'windicss-webpack-plugin/dist/index'
 const { REACT_APP_ENV } = process.env
 export default defineConfig({
   hash: true,
@@ -94,11 +92,11 @@ export default defineConfig({
       }
     ]
   ],
-  chainWebpack(config) {
-    config.plugin('windicss').use(windicss)
-    config.plugin('antd-dayjs-webpack-plugin').use(AntdDayjsWebpackPlugin)
+  chainWebpack(config, { env }) {
+    config.plugin('windicss').use('windicss-webpack-plugin')
+    config.plugin('moment2dayjs').use('antd-dayjs-webpack-plugin')
 
-    if (REACT_APP_ENV === 'prod') {
+    if (env === 'production') {
       config.merge({
         optimization: {
           minimize: true,

+ 5 - 4
package.json

@@ -60,8 +60,9 @@
     "antd-img-crop": "^3.16.0",
     "classnames": "^2.2.6",
     "crypto-js": "^4.0.0",
-    "dayjs": "^1.10.4",
+    "dayjs": "1.11.2",
     "lodash-es": "^4.17.21",
+    "moment": "^2.29.3",
     "omit.js": "^2.0.2",
     "qs": "^6.9.4",
     "rc-util": "^5.16.1",
@@ -98,7 +99,7 @@
     "@umijs/preset-react": "1.8.12",
     "@umijs/yorkie": "^2.0.3",
     "antd-dayjs-webpack-plugin": "^1.0.6",
-    "babel-plugin-import": "^1.13.3",
+    "babel-plugin-import": "^1.13.5",
     "carlo": "^0.9.46",
     "compression-webpack-plugin": "4.0.1",
     "cross-env": "^7.0.0",
@@ -116,9 +117,9 @@
     "puppeteer-core": "^5.0.0",
     "stylelint": "^13.9.0",
     "typescript": "^4.0.3",
-    "webpack": "^5.40.0",
+    "webpack": "5.69.1",
     "windicss": "3.1.7",
-    "windicss-webpack-plugin": "1.4.5"
+    "windicss-webpack-plugin": "1.7.3"
   },
   "engines": {
     "node": ">=10.0.0"

+ 3 - 1
src/global.less

@@ -50,7 +50,9 @@ body,
 .ant-menu-inline .ant-menu-submenu-title {
   margin-bottom: 0;
 }
-
+.ant-switch-checked {
+  background: @primary-color;
+}
 // 修复proTable中的列设置,tree list hover效果异常
 .ant-pro-table-column-setting-list > .ant-tree .ant-tree-node-content-wrapper:hover {
   background-color: unset;

+ 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>

+ 57 - 30
src/pages/Customer/Client/components/ClientDetail/LowerList.tsx

@@ -1,4 +1,4 @@
-import { Button, Tabs } from 'antd'
+import { Button, Popconfirm, Tabs } from 'antd'
 import React, { useMemo } from 'react'
 import { dayjsFormat } from '@/utils/utils'
 import classNames from 'classnames'
@@ -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: '上门服务',
@@ -55,28 +65,44 @@ type ClientLowerListProps = {
     log: any[]
   }
   serviceList: API.ServiceLogItem[]
+  updatePayload: { main: string; target: string }
 }
 
-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 } = 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
@@ -127,14 +153,11 @@ export const ServiceLogItem: React.FC<{ item: API.ServiceLogItem }> = ({ item })
             <Button size="small" onClick={() => handleOnEdit(item)} loading={comfirmLoading}>
               编辑
             </Button>
-            <Button
-              size="small"
-              danger
-              loading={delLoading}
-              onClick={() => handleOnDelComfirm(item.id)}
-              className="ml-1">
-              删除
-            </Button>
+            <Popconfirm title="确认删除该服务记录吗?" onConfirm={() => truDel({ id: item.id })}>
+              <Button size="small" danger className="ml-1">
+                删除
+              </Button>
+            </Popconfirm>
           </div>
         ) : null}
       </div>
@@ -142,7 +165,11 @@ export const ServiceLogItem: React.FC<{ item: API.ServiceLogItem }> = ({ item })
   )
 }
 
-const ClientLowerList: React.FC<ClientLowerListProps> = ({ logList: { log: logs = [] }, serviceList }) => {
+const ClientLowerList: React.FC<ClientLowerListProps> = ({
+  logList: { log: logs = [] },
+  serviceList,
+  updatePayload
+}) => {
   const tableHeight = (document.body.clientHeight - 124 - 54 - 40 - 40 - 4) / 2
   const columns: ProColumns<API.LogItem>[] = [
     {
@@ -188,7 +215,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} updatePayload={updatePayload} />
                 </div>
               ))}
             </div>

+ 5 - 1
src/pages/Customer/Client/components/ClientDetail/index.jsx

@@ -115,7 +115,11 @@ const ClientDetail = props => {
                   software={state.software}
                   updatePayload={{ main: updateKey, target: dataId }}
                 />
-                <ClientLowerList logList={state.log} serviceList={state.serviceLog} />
+                <ClientLowerList
+                  logList={state.log}
+                  serviceList={state.serviceLog}
+                  updatePayload={{ main: updateKey, target: dataId }}
+                />
               </Col>
             </Row>
           </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',