lanjianrong 5 年 前
コミット
71fdf8c84e

+ 14 - 14
src/pages/Customer/Client/components/ConnectClient/index.jsx

@@ -4,13 +4,12 @@ import styles from '@/pages/Customer/Company/components/ConnectCompany/index.les
 import { SearchOutlined, CloseOutlined } from '@ant-design/icons'
 import { useDebounceFn } from 'ahooks'
 import { useDispatch } from 'dva'
-import { apiAddClient, linkBusiWithClient, queryClient } from '@/services/customer'
-import { apiChangeClient } from '@/services/lock'
+import { apiAddClient, apiChangeClient, queryClient } from '@/services/customer'
 import consts from '@/basic/consts'
 import { formatValues } from '@/components/LazyCascader'
 import AddClient from '../AddClient'
 
-const ConnectClient = ({ longleId, dataId, onSelect, preUrl }) => {
+const ConnectClient = ({ dataId, onSelect, preUrl = 'client', showFooter = true }) => {
   const dispatch = useDispatch()
   const scrollRef = useRef()
   const [state, setState] = useState({
@@ -75,8 +74,7 @@ const ConnectClient = ({ longleId, dataId, onSelect, preUrl }) => {
 
   // 商机/软件锁关联联系人
   const connectClient = async clientId => {
-    // const { code = -1 } = await apiChangeClient(preUrl, { id: dataId, clientId })
-    const { code = -1 } = await apiChangeClient(preUrl, { id: longleId, clientId })
+    const { code = -1 } = await apiChangeClient(preUrl, { id: dataId, clientId })
     if (code === consts.RET_CODE.SUCCESS) {
       onSelect()
       closeModal()
@@ -127,15 +125,17 @@ const ConnectClient = ({ longleId, dataId, onSelect, preUrl }) => {
           ))}
         </Spin>
       </div>
-      <div className={styles.modalFooter}>
-        <AddClient
-          onConfirm={addConfirm}
-          dataId={dataId}
-          dataType={preUrl}
-          buttonProps={{ ghost: true }}
-          btnTitle={'添加并关联到新联系人'}
-        />
-      </div>
+      {showFooter ? (
+        <div className={styles.modalFooter}>
+          <AddClient
+            onConfirm={addConfirm}
+            dataId={dataId}
+            dataType={preUrl}
+            buttonProps={{ ghost: true }}
+            btnTitle={'添加并关联到新联系人'}
+          />
+        </div>
+      ) : null}
     </div>
   )
 }

+ 34 - 4
src/pages/Customer/Company/components/CustomPerm.jsx

@@ -194,12 +194,42 @@ const CustomPerm = () => {
                       onItemSelect(key, !isChecked(checkedKeys, key))
                     }
                   }}
-                  onSelect={(_, { checkedNodes, node: { isDepartment, key } }) => {
-                    if (isDepartment) {
-                      itemIsChecked(onItemSelectAll)(checkedNodes, checkedKeys)
+                  onSelect={(_, { selected: checked, node: { isDepartment, key, parentId } }) => {
+                    if (!checked) {
+                      handleUnCheckItem(checkedKeys, key)
                     } else {
-                      onItemSelect(key, !isChecked(checkedKeys, key))
+                      const treeKeys = [...state.treeKeys]
+                      if (!isDepartment) {
+                        const samePidArr = state.transferDataSource.filter(
+                          item => item.key === parentId
+                        )
+                        const count = checkedKeys.reduce((prev, curr) => {
+                          if (samePidArr.includes(curr)) {
+                            return prev + 1
+                          }
+                          return prev
+                        }, 0)
+                        if (samePidArr.length - count === 1) {
+                          treeKeys.push(parentId)
+                        }
+                      }
+                      setState({
+                        ...state,
+                        treeKeys
+                      })
                     }
+                    isDepartment &&
+                      itemIsChecked(onItemSelectAll)(
+                        state.transferDataSource.filter(
+                          item => item.key === key || item.parentId === key
+                        ),
+                        checkedKeys,
+                        checked,
+                        state.transferDataSource
+                          .filter(item => item.parentId === key)
+                          .map(item => item.key)
+                      )
+                    !isDepartment && onItemSelect(key, !isChecked(checkedKeys, key))
                   }}
                 />
               ) : null

+ 1 - 1
src/pages/Customer/Company/index.jsx

@@ -493,7 +493,7 @@ const Company = props => {
               // }
               setState({ ...state, params: { ...state.params, dataPermission: e } })
             }}
-            options={[...(permData?.customer || []), { label: '自定义', value: 'custom' }]}
+            options={[...(permData?.customer || [])]}
           />
         }
         rowSelection={{

+ 1 - 5
src/pages/Product/Lock/Lockstore/components/ChangeClient/index.jsx

@@ -21,11 +21,7 @@ const ChangeClient = props => {
     setModalProps({
       width: '60vw',
       modalRender: () => (
-        <ConnectClient
-          onSelect={refreshClient}
-          longleId={longleId}
-          preUrl="/software/changeClient"
-        />
+        <ConnectClient onSelect={refreshClient} dataId={longleId} preUrl="software" />
       ),
       onCancel: () => toggleModal()
     })

+ 7 - 3
src/services/customer.js

@@ -210,9 +210,13 @@ export async function getBusinessDetailById(params) {
   })
 }
 
-/** 商机关联联系人 */
-export async function linkBusiWithClient(params) {
-  return request.post('/business/link/client', {
+/** 商机/锁库关联联系人 */
+export async function apiChangeClient(preUrl, params) {
+  let url = '/business/link/client'
+  if (preUrl === 'software') {
+    url = '/software/change/client'
+  }
+  return request.post(url, {
     data: params
   })
 }

+ 0 - 10
src/services/lock.js

@@ -42,13 +42,3 @@ export async function apiReceiveOldLock(params) {
     data: params
   })
 }
-
-/**
- * 软件锁更换联系人
- * @param {*} payload
- * @returns
- */
-export async function apiChangeClient(preUrl, payload) {
-  const data = await request.post(`/${preUrl}/changeClient`, { data: { ...payload } })
-  return data
-}