Переглянути джерело

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

outaozhen 4 роки тому
батько
коміт
679f960ec9

+ 46 - 13
src/components/EditableForm/src/useOptions.js

@@ -10,11 +10,22 @@ const marriageOptions = [
   { label: '未婚', value: '0' },
   { label: '已婚', value: '1' }
 ]
+
+// 优先级选择
+export const priorityOptions = [
+  { label: '1', value: '1' },
+  { label: '2', value: '2' },
+  { label: '3', value: '3' },
+  { label: '4', value: '4' },
+  { label: '5', value: '5' }
+]
+
 const typeEnum = {
   NATUREIDS: 'natureIds',
   GENDER: 'gender',
   DEPARTMENTID: 'departmentId',
-  MARRIAGE: 'marriage'
+  MARRIAGE: 'marriage',
+  PRIORITY: 'priority'
 }
 
 export default function useOptions(type) {
@@ -37,18 +48,40 @@ export default function useOptions(type) {
       }
     }
   }, [type])
-  if (type === typeEnum.GENDER) {
-    return genderOptions
-  }
-  if (type === typeEnum.NATUREIDS) {
-    return store.getState().company.natures
-  }
-  if (type === typeEnum.DEPARTMENTID) {
-    return store.getState().staff.departments
-  }
+  let options = null
+  switch (type) {
+    case typeEnum.GENDER:
+      options = genderOptions
+      break
+    case typeEnum.NATUREIDS:
+      options = store.getState().company.natures
+      break
+    case typeEnum.DEPARTMENTID:
+      options = store.getState().staff.departments
+      break
+    case typeEnum.MARRIAGE:
+      options = marriageOptions
+      break
+    case typeEnum.PRIORITY:
+      options = priorityOptions
+      break
 
-  if (type === typeEnum.MARRIAGE) {
-    return marriageOptions
+    default:
+      break
   }
-  return null
+  // if (type === typeEnum.GENDER) {
+  //   return genderOptions
+  // }
+  // if (type === typeEnum.NATUREIDS) {
+  //   return store.getState().company.natures
+  // }
+  // if (type === typeEnum.DEPARTMENTID) {
+  //   return store.getState().staff.departments
+  // }
+
+  // if (type === typeEnum.MARRIAGE) {
+  //   return marriageOptions
+  // }
+
+  return options
 }

+ 1 - 1
src/pages/Customer/Client/components/AddClient/TelephoneFormItem.jsx

@@ -96,7 +96,7 @@ const TelephoneFormItem = ({ value, onChange, validateFn }) => {
       }
     >
       <Input
-        type="text"
+        type="tel"
         autoComplete="false"
         value={inputVal}
         placeholder="请输入手机号码"

+ 1 - 0
src/pages/Customer/Client/components/AddClient/index.jsx

@@ -67,6 +67,7 @@ const AddClient = props => {
       onFinish={async values => {
         await onConfirm(values)
         formRef.current?.resetFields()
+        setValidStatusFtl('')
         !isNullOrUnDef(reload) && reload()
         return true
       }}

+ 6 - 0
src/pages/Customer/Client/components/ClientDetail/Form.jsx

@@ -161,6 +161,12 @@ const ContanctForm = props => {
         label: '备注',
         span: 24,
         editCellType: 'textarea'
+      },
+      {
+        dataIndex: 'priority',
+        label: '优先级',
+        span: 24,
+        editCellType: 'select'
       }
     ]
     if (!filterTag) {

+ 54 - 5
src/pages/Customer/Company/components/CompanyDetail/TabList.jsx

@@ -1,9 +1,9 @@
 import ContactDetail from '@/pages/Customer/Client/components/ClientDetail'
 import LocksDetail from '@/pages/Product/Lock/LockStore/components/LocksDetail'
 import React, { useRef, useState } from 'react'
-import { Tabs, message } from 'antd'
+import { Tabs, message, Dropdown, Menu } from 'antd'
 import AddContact from '@/pages/Customer/Client/components/AddClient'
-import { apiAddClient, apiAddCustomerService } from '@/services/customer'
+import { apiAddClient, apiAddCustomerService, updateClient } from '@/services/customer'
 import { formatValues } from '@/components/LazyCascader'
 import consts from '@/consts'
 import ProTable from '@ant-design/pro-table'
@@ -14,8 +14,17 @@ import Detail from '@/pages/Customer/Business/components/BusinessDetail'
 import SyncClient from './SyncClient'
 import { longleSellStatusNum } from '@/pages/Product/Lock/LockStore/index'
 import { renderBadge } from '@/pages/Workbench/Dashboard/components/RatioPanels'
+import { DownOutlined } from '@ant-design/icons'
 
-const CompanyTabList = ({ initData, customerId, client, software, customer, business }) => {
+const CompanyTabList = ({
+  initData,
+  customerId,
+  client,
+  software,
+  customer,
+  business,
+  updateKey
+}) => {
   const dispatch = useDispatch()
   const { toggleDrawer, setDrawerProps } = useModal()
   const { TabPane } = Tabs
@@ -70,13 +79,53 @@ const CompanyTabList = ({ initData, customerId, client, software, customer, busi
     })
     toggleDrawer(true)
   }
+  const changePriority = async (key, clientId) => {
+    const { code = -1 } = await updateClient({
+      id: clientId,
+      priority: key
+    })
+    if (code === consts.RET_CODE.SUCCESS) {
+      dispatch({
+        type: 'refresh/commitAction',
+        payload: updateKey
+      })
+    }
+  }
+  const priorityMenu = (defaultSelectedKey, id) => (
+    <Menu
+      multiple={false}
+      selectedKeys={[defaultSelectedKey]}
+      onClick={({ key }) => {
+        if (key !== defaultSelectedKey) {
+          changePriority(key, id)
+        }
+      }}
+    >
+      <Menu.Item key="1">1</Menu.Item>
+      <Menu.Item key="2">2</Menu.Item>
+      <Menu.Item key="3">3</Menu.Item>
+      <Menu.Item key="4">4</Menu.Item>
+      <Menu.Item key="5">5</Menu.Item>
+    </Menu>
+  )
+
   const columns = [
     {
       title: '优先级',
       dataIndex: 'priority',
-      onFilter: true,
       width: '17%',
-      sorter: true
+      sorter: true,
+      render: (text, record) => (
+        <Dropdown
+          overlay={priorityMenu(text, record.id)}
+          trigger="click"
+          className="hover:cursor-pointer"
+        >
+          <span>
+            {text} <DownOutlined />
+          </span>
+        </Dropdown>
+      )
       // filters: Array.from(
       //   new Set(client.client?.map(item => item.priority)).map(item => ({
       //     text: item,

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

@@ -53,7 +53,8 @@ const CompanyDetail = props => {
             md={{ span: 24 }}
             lg={{ span: 9 }}
             xl={{ span: 9 }}
-            className="sheet-box-left">
+            className="sheet-box-left"
+          >
             {orderIds.length ? (
               <div className="mb-3">
                 <Tooltip title="上一条记录">
@@ -90,8 +91,10 @@ const CompanyDetail = props => {
             lg={{ span: 15 }}
             xl={{ span: 15 }}
             flex={{ flexDirection: 'column' }}
-            className="sheet-box-right">
+            className="sheet-box-right"
+          >
             <CompanyTabList
+              updateKey={updateKey}
               initData={initData}
               customerId={flipConsts.curId}
               software={state.software}

+ 10 - 4
src/pages/Product/Lock/LockStore/index.jsx

@@ -196,7 +196,8 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
       render: (keyNum, record) => (
         <span
           onClick={() => showDrawer(record.id)}
-          className="text-primary cursor-pointer hover:text-[#967bbd]">
+          className="text-primary cursor-pointer hover:text-[#967bbd]"
+        >
           {keyNum}
         </span>
       )
@@ -283,11 +284,13 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
       title: '客户',
       dataIndex: 'client',
       key: 'client',
+      sorter: true,
       width: 150,
       render: (text, record) => (
         <span
           onClick={() => showDrawerClient(record.clientId)}
-          className="text-primary cursor-pointer hover:text-[#967bbd]">
+          className="text-primary cursor-pointer hover:text-[#967bbd]"
+        >
           {text}
         </span>
       )
@@ -296,11 +299,13 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
       title: '单位名称',
       dataIndex: 'customerName',
       key: 'customerName',
+      sorter: true,
       width: 300,
       render: (text, record) => (
         <span
           onClick={() => showCompanyDrawer(record.customerId)}
-          className="text-primary cursor-pointer hover:text-[#967bbd]">
+          className="text-primary cursor-pointer hover:text-[#967bbd]"
+        >
           {text}
         </span>
       )
@@ -312,7 +317,8 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
       render: (text, record) => (
         <span
           onClick={() => showDrawerResponsible(record.responsibleId)}
-          className="text-primary cursor-pointer hover:text-[#967bbd]">
+          className="text-primary cursor-pointer hover:text-[#967bbd]"
+        >
           {text}
         </span>
       )

+ 26 - 34
src/services/customer.js

@@ -6,10 +6,9 @@ import request from '@/basic/utils/request'
  * @returns 结果集
  */
 export async function queryCustomers(payload) {
-  const data = await request.post('/customer/list', {
+  return request.post('/customer/list', {
     data: payload
   })
-  return data
 }
 
 /**
@@ -18,10 +17,9 @@ export async function queryCustomers(payload) {
  * @returns
  */
 export async function createCustomer(payload) {
-  const data = await request.post('/customer/add', {
+  return request.post('/customer/add', {
     data: { ...payload }
   })
-  return data
 }
 
 /**
@@ -29,8 +27,7 @@ export async function createCustomer(payload) {
  * @param {*} params
  */
 export async function queryTagList(params) {
-  const data = await request('/tag/list', { params })
-  return data
+  return request('/tag/list', { params })
 }
 
 /**
@@ -44,8 +41,7 @@ export async function apiConnOrDelTag({ type, payload }) {
   if (type) {
     url = '/tag/link'
   }
-  const data = await request.post(url, { data: payload })
-  return data
+  return request.post(url, { data: payload })
 }
 
 /**
@@ -54,8 +50,7 @@ export async function apiConnOrDelTag({ type, payload }) {
  * @returns
  */
 export async function apiUpdateTag(payload) {
-  const data = await request.post('/tag/update', { data: payload })
-  return data
+  return request.post('/tag/update', { data: payload })
 }
 
 /**
@@ -64,8 +59,7 @@ export async function apiUpdateTag(payload) {
  * @returns
  */
 export async function apiBatchLink(payload) {
-  const data = await request.post('/tag/batch/link', { data: payload })
-  return data
+  return request.post('/tag/batch/link', { data: payload })
 }
 
 /**
@@ -73,10 +67,18 @@ export async function apiBatchLink(payload) {
  * @param {*} payload 载荷
  */
 export async function queryClient(payload) {
-  const data = await request.post('/client/list', {
+  return request.post('/client/list', {
+    data: payload
+  })
+}
+
+/**
+ * 修改客户信息
+ */
+export async function updateClient(payload) {
+  return request.post('/client/update', {
     data: payload
   })
-  return data
 }
 
 /**
@@ -85,8 +87,7 @@ export async function queryClient(payload) {
  */
 export async function apiContactDetail(id) {
   const params = { id }
-  const data = await request('/client/detail', { params })
-  return data
+  return request('/client/detail', { params })
 }
 
 /**
@@ -94,8 +95,7 @@ export async function apiContactDetail(id) {
  * @param {*} payload 载荷
  */
 export async function apiAddClient(payload) {
-  const data = await request.post('/client/add', { data: { ...payload } })
-  return data
+  return request.post('/client/add', { data: { ...payload } })
 }
 
 /**
@@ -103,8 +103,7 @@ export async function apiAddClient(payload) {
  * @param {*} payload 载荷
  */
 export async function apiAddService(payload) {
-  const data = await request.post('/serviceLog/add', { data: { ...payload } })
-  return data
+  return request.post('/serviceLog/add', { data: { ...payload } })
 }
 
 /**
@@ -112,8 +111,7 @@ export async function apiAddService(payload) {
  * @param {*} payload 载荷
  */
 export async function apiAddBusiService(payload) {
-  const data = await request.post('/business/service/add', { data: { ...payload } })
-  return data
+  return request.post('/business/service/add', { data: { ...payload } })
 }
 
 /**
@@ -122,8 +120,7 @@ export async function apiAddBusiService(payload) {
  * @returns
  */
 export async function apiChangeCustomer(preUrl, payload) {
-  const data = await request.post(`/${preUrl}/change/customer`, { data: { ...payload } })
-  return data
+  return request.post(`/${preUrl}/change/customer`, { data: { ...payload } })
 }
 
 /**
@@ -132,8 +129,7 @@ export async function apiChangeCustomer(preUrl, payload) {
  * @returns
  */
 export async function apiDelCustomer(preUrl, payload) {
-  const data = await request.post(`/${preUrl}/customer/delete`, { data: { ...payload } })
-  return data
+  return request.post(`/${preUrl}/customer/delete`, { data: { ...payload } })
 }
 
 /**
@@ -141,8 +137,7 @@ export async function apiDelCustomer(preUrl, payload) {
  * @returns
  */
 export async function queryNatures() {
-  const data = await request('/customer/nature')
-  return data
+  return request('/customer/nature')
 }
 
 /**
@@ -161,8 +156,7 @@ export async function queryCompany(params) {
  */
 export async function apiCompanyDetail(id) {
   const params = { id }
-  const data = await request('/customer/detail', { params })
-  return data
+  return request('/customer/detail', { params })
 }
 
 /**
@@ -170,8 +164,7 @@ export async function apiCompanyDetail(id) {
  * @param {string} data
  */
 export async function apiAddCompany(payload) {
-  const data = await request.post('/customer/add', { data: payload })
-  return data
+  return request.post('/customer/add', { data: payload })
 }
 
 /**
@@ -179,8 +172,7 @@ export async function apiAddCompany(payload) {
  * @param {*} payload 载荷
  */
 export async function apiAddCustomerService(payload) {
-  const data = await request.post('/customer/service/add', { data: { ...payload } })
-  return data
+  return request.post('/customer/service/add', { data: { ...payload } })
 }
 
 /** 获取商机组列表 */