Kaynağa Gözat

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

outaozhen 4 yıl önce
ebeveyn
işleme
a0b68c441a

+ 42 - 18
src/pages/Customer/Client/components/AddClient/index.jsx

@@ -9,17 +9,30 @@ import TelephoneFormItem from './TelephoneFormItem'
 import { validateEnum } from '@/pages/Customer/Company/components/AddCompany/CompanyFormItem'
 
 const AddClient = props => {
-  const { visible, onCancel, reload, onConfirm, dataId, dataType, defaultValues, sourceList, ...resetModalProps } =
-    props
-
+  const {
+    visible,
+    onCancel,
+    reload,
+    onConfirm,
+    dataId,
+    dataType,
+    defaultValues,
+    sourceList,
+    ...resetModalProps
+  } = props
+  const dispatch = useDispatch()
   const [formRef] = Form.useForm()
   const layout = {
     layout: 'horizontal',
     labelCol: { flex: '100px' }
   }
-  const [showDataItem, setShowDataItem] = useState(false)
-  const [validStatusFtl, setValidStatusFtl] = useState('')
-  const dispatch = useDispatch()
+
+  const [state, setState] = useState({
+    validStatusFtl: '',
+    confirmLoading: false,
+    extraConfirmLoading: false
+  })
+
   useEffect(() => {
     if (visible && !sourceList?.length) {
       dispatch({
@@ -52,21 +65,24 @@ const AddClient = props => {
     formRef
       ?.validateFields()
       .then(async values => {
+        setState({ ...state, [dataId ? 'extraConfirmLoading' : 'confirmLoading']: true })
         try {
           const success = await onConfirm(values)
           if (success) {
             !isNullOrUnDef(reload) && reload()
             formRef?.resetFields()
             setTimeout(() => {
-              setValidStatusFtl('')
+              setState({ ...state, validStatusFtl: '' })
               onCancel()
             }, 80)
           }
-        } catch (error) {}
+        } finally {
+          setState({ ...state, [dataId ? 'extraConfirmLoading' : 'confirmLoading']: false })
+        }
       })
       .catch(({ values }) => {
         if ('telephone' in values && !values.telephone) {
-          setValidStatusFtl(validateEnum.Error)
+          setState({ ...state, validStatusFtl: validateEnum.Error })
         }
       })
   }
@@ -84,29 +100,31 @@ const AddClient = props => {
           <Button type="default" className="mr-2" onClick={onCancel}>
             取消
           </Button>
-          <Button type="primary" onClick={handleOnOk}>
+          <Button type="primary" onClick={handleOnOk} loading={state.confirmLoading}>
             确认
           </Button>
           {dataId ? (
             <Button
               type="primary"
               className="ml-2"
+              loading={state.extraConfirmLoading}
               onClick={() => {
-                setShowDataItem(true)
                 const values = {}
                 if (dataType === ChangeCompMap.BUSINESS.key) {
                   values.businessId = dataId
                 }
                 formRef?.setFieldsValue(values)
                 handleOnOk()
-              }}>
+              }}
+            >
               添加并关联
             </Button>
           ) : null}
         </div>
-      }>
+      }
+    >
       <Form {...layout} form={formRef} onValuesChange={handleChange} initialValues={defaultValues}>
-        {showDataItem ? <ProFormText name={`${dataType}Id`} hidden /> : null}
+        {dataId ? <ProFormText name={`${dataType}Id`} hidden /> : null}
         <ProFormText
           name="clientName"
           label="姓名"
@@ -133,12 +151,18 @@ const AddClient = props => {
             <Form.Item
               label="手机"
               name="telephone"
-              validateStatus={validStatusFtl}
+              validateStatus={state.validStatusFtl}
               hasFeedback
-              rules={[{ required: true, message: '请输入手机号码' }]}>
-              <TelephoneFormItem validateFn={status => setValidStatusFtl(status)} />
+              rules={[{ required: true, message: '请输入手机号码' }]}
+            >
+              <TelephoneFormItem validateFn={status => setState({ ...state, validStatusFtl: status })} />
             </Form.Item>
-            <ProFormText label="电话" name="phone" rules={[{ message: '请输入电话/座机号' }]} placeholder="" />
+            <ProFormText
+              label="电话"
+              name="phone"
+              rules={[{ message: '请输入电话/座机号' }]}
+              placeholder=""
+            />
           </Col>
           <Col span={12}>
             <ProFormText label="昵称" name="niceName" placeholder="" />

+ 22 - 11
src/pages/Customer/Company/components/AddCompany/index.jsx

@@ -26,7 +26,11 @@ const AddCompanyModal = ({
     layout: 'horizontal',
     labelCol: { flex: '100px' }
   }
-  const [validStatusFcn, setValidStatusFcn] = useState('')
+  const [state, setState] = useState({
+    validStatusFcn: '',
+    confirmLoading: false,
+    extraConfirmLoading: false
+  })
   useEffect(() => {
     if (visible) {
       if (defaultValue) {
@@ -51,21 +55,24 @@ const AddCompanyModal = ({
     formRef
       ?.validateFields()
       .then(async values => {
+        setState({ ...state, [dataId ? 'extraConfirmLoading' : 'confirmLoading']: true })
         try {
           const successs = await onConfirm(values)
           if (successs) {
             !isNullOrUnDef(reload) && reload()
             formRef?.resetFields()
             setTimeout(() => {
-              setValidStatusFcn('')
+              setState({ ...state, validStatusFcn: '' })
             }, 80)
             onCancel()
           }
-        } catch (error) {}
+        } finally {
+          setState({ ...state, [dataId ? 'extraConfirmLoading' : 'confirmLoading']: false })
+        }
       })
       .catch(({ values }) => {
         if ('companyName' in values && !values.companyName) {
-          setValidStatusFcn(validateEnum.Error)
+          setState({ ...state, validStatusFcn: validateEnum.Error })
         }
       })
   }
@@ -82,13 +89,14 @@ const AddCompanyModal = ({
           <Button type="default" className="mr-2" onClick={onCancel}>
             取消
           </Button>
-          <Button type="primary" onClick={handleOnOk}>
+          <Button type="primary" onClick={handleOnOk} loading={state.confirmLoading}>
             确认
           </Button>
           {dataId ? (
             <Button
               type="primary"
               className="ml-2"
+              loading={state.extraComfirmLoading}
               onClick={() => {
                 const values = {}
                 if (dataType === ChangeCompMap.CLIENT.key) {
@@ -99,22 +107,25 @@ const AddCompanyModal = ({
                 }
                 formRef?.setFieldsValue(values)
                 handleOnOk()
-              }}>
+              }}
+            >
               添加并关联
             </Button>
           ) : null}
         </div>
-      }>
+      }
+    >
       <Form {...layout} form={formRef}>
         <Form.Item
           name="companyName"
           label="单位名称"
-          validateStatus={validStatusFcn}
+          validateStatus={state.validStatusFcn}
           hasFeedback
-          rules={[{ required: true, message: '请输入单位全称' }]}>
-          <CompanyFormItem validateFn={status => setValidStatusFcn(status)} />
+          rules={[{ required: true, message: '请输入单位全称' }]}
+        >
+          <CompanyFormItem validateFn={status => setState({ ...state, validStatusFcn: status })} />
         </Form.Item>
-        <ProFormText name={`${dataType}Id`} hidden />
+        {dataId ? <ProFormText name={`${dataType}Id`} hidden /> : null}
         <Form.Item name="districtIds" label="单位地区" rules={[{ required: true, message: '请选择地区' }]}>
           <LazyCascader showFooter={true} />
         </Form.Item>

+ 3 - 2
src/pages/Product/Lock/LockStore/components/ChangeClient/index.jsx

@@ -10,7 +10,6 @@ import { useModal } from '@/components/ModalStore'
 const ChangeClient = ({ actionPayload, dataSource: { clientName = '', longleId, clientId } } = {}) => {
   const dispatchModal = useModal()
   const dispatch = useDispatch()
-  if (isNullOrUnDef(clientName) || isEmpty(clientName)) return null
 
   const refreshClient = () => {
     dispatch({
@@ -39,7 +38,8 @@ const ChangeClient = ({ actionPayload, dataSource: { clientName = '', longleId,
       <div className="flex justify-between">
         <div
           className={styles.nameContent}
-          onClick={() => dispatchModal('D_CLIENT_DETAIL', { dataId: clientId })}>
+          onClick={() => dispatchModal('D_CLIENT_DETAIL', { dataId: clientId })}
+        >
           {clientName}
         </div>
         <div className="max-w-55px">
@@ -52,6 +52,7 @@ const ChangeClient = ({ actionPayload, dataSource: { clientName = '', longleId,
       </div>
     </Card>
   )
+  if (isNullOrUnDef(clientName) || isEmpty(clientName)) return null
   return (
     <div className={styles.companyInput}>
       {clientId && clientId !== consts.ENCRYPTION_ZERO ? normalValueRender : notValueRender}

+ 16 - 7
src/pages/Product/Lock/LockStore/components/ReceiveLock.jsx

@@ -1,4 +1,4 @@
-import { Button, Input, message, Modal } from 'antd'
+import { Button, Input, message, Modal, Popconfirm } from 'antd'
 import React, { useState, useRef } from 'react'
 import styles from '@/pages/Customer/Company/components/ConnectCompany/index.less'
 import consts from '@/basic/consts'
@@ -39,9 +39,14 @@ const ReceiveLock = ({ refresh, ...resetModalProps }) => {
       dataIndex: 'opreate',
       title: '操作',
       render: (_, record) => (
-        <Button size="small" onClick={() => receiveLongle(record.keyNum, record.id)}>
-          接收
-        </Button>
+        <Popconfirm
+          title="确定接收该锁吗?"
+          cancelText="取消"
+          okText="确定"
+          onConfirm={() => receiveLongle(record.keyNum, record.id)}
+        >
+          <Button size="small">接收</Button>
+        </Popconfirm>
       )
     }
   ]
@@ -51,9 +56,10 @@ const ReceiveLock = ({ refresh, ...resetModalProps }) => {
   }
   return (
     <Modal
-      width="50vw"
       {...resetModalProps}
+      width="50vw"
       bodyStyle={{ padding: '24px 24px 0' }}
+      footer={false}
       getContainer={() => document.getElementById('root')}
       title={
         <div className="flex items-center justify-between">
@@ -70,7 +76,8 @@ const ReceiveLock = ({ refresh, ...resetModalProps }) => {
             onSearch={handleOnSearch}
           />
         </div>
-      }>
+      }
+    >
       <div className={styles.modalContent}>
         <ProTable
           rowKey={record => record.id}
@@ -82,7 +89,9 @@ const ReceiveLock = ({ refresh, ...resetModalProps }) => {
           bordered={true}
           scroll={{ y: 460 }}
           request={async params => {
-            const { data: { longle, total } = { longle: [], total: 0 }, code = -1 } = await queryOldLockList(params)
+            const { data: { longle, total } = { longle: [], total: 0 }, code = -1 } = await queryOldLockList(
+              params
+            )
             return {
               data: longle,
               success: code === consts.RET_CODE.SUCCESS,