Browse Source

Merge branch 'master' of http://192.168.1.41:3000/outaozhen/cldV2react

outaozhen 5 years ago
parent
commit
5d3096a3df

+ 21 - 21
config/routes.js

@@ -104,28 +104,28 @@ export default [
           //   component: './Product/Lock/LockCount'
           // }
         ]
-      },
-      {
-        path: '/product/cloud',
-        name: 'cloud',
-        icon: 'icon-cloud',
-        routes: [
-          {
-            path: '/product/cloud',
-            redirect: '/product/cloud/building'
-          },
-          {
-            path: '/product/cloud/building',
-            name: 'build',
-            component: './Product/Cloud/Building'
-          },
-          {
-            path: '/product/cloud/curing',
-            name: 'curing',
-            component: './Product/Cloud/Curing'
-          }
-        ]
       }
+      // {
+      //   path: '/product/cloud',
+      //   name: 'cloud',
+      //   icon: 'icon-cloud',
+      //   routes: [
+      //     {
+      //       path: '/product/cloud',
+      //       redirect: '/product/cloud/building'
+      //     },
+      //     {
+      //       path: '/product/cloud/building',
+      //       name: 'build',
+      //       component: './Product/Cloud/Building'
+      //     },
+      //     {
+      //       path: '/product/cloud/curing',
+      //       name: 'curing',
+      //       component: './Product/Cloud/Curing'
+      //     }
+      //   ]
+      // }
     ]
   },
   {

+ 0 - 1
src/hooks/web/useFlipOver.ts

@@ -1,4 +1,3 @@
-import { useCallback } from 'react'
 import { useEffect } from 'react'
 import { useState, useMemo } from 'react'
 

+ 3 - 1
src/pages/Customer/Company/components/CustomPerm.jsx

@@ -300,7 +300,9 @@ const CustomPerm = ({ onConfirm }) => {
 
             if (direction === 'right') {
               return (
-                <ul className="ant-transfer-list-content ant-transfer-list-content-show-remove">
+                <ul
+                  className="ant-transfer-list-content ant-transfer-list-content-show-remove overflow-y-auto"
+                  style={{ height: state.height }}>
                   {(state.rightTargetId
                     ? state.targetKeys.filter(item => item === state.rightTargetId)
                     : state.targetKeys

+ 1 - 3
src/pages/Customer/Company/components/PermSelect.jsx

@@ -14,9 +14,7 @@ const PermSelect = ({ dataType, onConfirm, ...resetProps }) => {
   const { initialState: { permData } = { permData: {} } } = useModel('@@initialState')
   const { toggleModal, setModalProps } = useModal()
   const options = [...(permData[dataType] || [])]
-  if (permData[dataType]?.findIndex(item => item.value === 'all') !== -1) {
-    options.push({ value: 'custom', label: '自定义' })
-  }
+
   return (
     <Select
       {...resetProps}

+ 36 - 6
src/pages/Product/Lock/Lockstore/components/LocksDetail/index.jsx

@@ -1,25 +1,27 @@
 import React, { useState, useEffect } from 'react'
-import { Row, Col } from 'antd'
+import { Row, Col, Tooltip } from 'antd'
 import consts from '@/consts'
 import { apiSoftwareDetail } from '@/services/lock'
 import LockForm from './Form.jsx'
 import LockLowerList from './LowerList'
 import LockTabList from './TabList'
 import { connect } from 'dva'
+import { Down, Up } from '@icon-park/react'
+import { FlipOverEnum, useFlipOver } from '@/hooks/web/useFlipOver'
 
 const Index = props => {
-  const { dispatch, visible, id = '', shouldUpdate } = props
+  const { dispatch, visible, dataId = '', shouldUpdate, orderIds } = props
   const [state, setState] = useState({
     longle: {},
     log: [],
     total: 0,
     longleLog: []
   })
-  const initData = async () => {
+  const initData = async id => {
     const {
       data: { longle = {}, log = [], longleLog = [] } = { longle: {}, longleLog: [] },
       code = -1
-    } = await apiSoftwareDetail(id)
+    } = await apiSoftwareDetail({ id })
     if (code === consts.RET_CODE.SUCCESS) {
       if (shouldUpdate) {
         dispatch({
@@ -32,19 +34,47 @@ const Index = props => {
   }
   useEffect(() => {
     if (shouldUpdate) {
-      initData()
+      initData(dataId)
     }
   }, [shouldUpdate])
   useEffect(() => {
     if (visible) {
-      initData()
+      initData(dataId)
     }
   }, [visible])
+
+  const { flipFn, flipConsts } = useFlipOver(initData, dataId, orderIds)
+
   return (
     <div>
       <div className="sheet-box">
         <Row>
           <Col span={12} className="sheet-box-left">
+            {orderIds.length ? (
+              <div className="mb-3">
+                <Tooltip title="上一条记录">
+                  <Up
+                    fill={flipConsts.disableUpBtn ? '#BDBDBE' : '#886ab5'}
+                    size="20"
+                    onClick={() => flipFn(FlipOverEnum.UP)}
+                    className={[
+                      flipConsts.disableUpBtn ? 'cursor-not-allowed' : 'cursor-pointer'
+                    ].join(' ')}
+                  />
+                </Tooltip>
+                <Tooltip title="下一条记录">
+                  <Down
+                    fill={flipConsts.disableDownBtn ? '#BDBDBE' : '#886ab5'}
+                    size="20"
+                    onClick={() => flipFn(FlipOverEnum.DOWN)}
+                    className={[
+                      flipConsts.disableDownBtn ? 'cursor-not-allowed' : 'cursor-pointer',
+                      'ml-1'
+                    ].join(' ')}
+                  />
+                </Tooltip>
+              </div>
+            ) : null}
             <div className="sheet-left-panel pr-4">
               <LockForm longle={state.longle} />
             </div>

+ 6 - 3
src/pages/Product/Lock/Lockstore/index.jsx

@@ -90,7 +90,8 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
     data: [],
     totalOld: 0, // 待接收锁总数
     totalNew: 0,
-    id: ''
+    id: '',
+    orderIds: []
   })
 
   // 获取软件锁产品列表
@@ -124,7 +125,7 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
         height: '100vh',
         overflowY: 'hidden'
       },
-      children: <LocksDetail id={id} orderIds={state.orderIds} />
+      children: <LocksDetail dataId={id} orderIds={state.orderIds} />
     })
     toggleDrawer()
   }
@@ -174,6 +175,7 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
       title: '锁号',
       dataIndex: 'keyNum',
       width: 150,
+      fixed: 'left',
       render: (keyNum, record) => (
         <span
           onClick={() => showDrawer(record.id)}
@@ -186,6 +188,7 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
       title: '产品',
       dataIndex: 'product',
       width: 200,
+      fixed: 'left',
       render: text => <ProductLabel data={text} />
     },
     {
@@ -291,7 +294,7 @@ const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
             totalNew: 0
           }
         } = await queryLock({ ...params, ...srotOrder, ...filter })
-        setState({ ...state, totalOld, totalNew })
+        setState({ ...state, totalOld, totalNew, orderIds: longle.map(item => item.id) })
         return {
           data: longle,
           success: code === consts.RET_CODE.SUCCESS,

+ 45 - 28
src/pages/workbench/Dashboard/components/RatioPanels.jsx

@@ -8,9 +8,22 @@ import { Badge } from 'antd'
 import { cardTypeMap } from '../consts'
 
 const dataTypeEunm = {
-  0: 'client',
-  1: 'customer',
-  2: 'business'
+  0: {
+    key: 'client',
+    title: '新增联系人'
+  },
+  1: {
+    key: 'customer',
+    title: '新增客户'
+  },
+  2: {
+    key: 'business',
+    title: '新增商机'
+  },
+  3: {
+    key: 'service',
+    title: '新增服务记录'
+  }
 }
 
 const renderBadge = (count, active = false) => {
@@ -20,8 +33,8 @@ const renderBadge = (count, active = false) => {
       style={{
         marginTop: -2,
         marginLeft: 4,
-        color: active ? '#1890FF' : '#999',
-        backgroundColor: active ? '#E6F7FF' : '#eee'
+        color: '#531dab',
+        backgroundColor: '#f9f0ff'
       }}
     />
   ) : null
@@ -60,6 +73,7 @@ const ServiceRatioPanels = ({ cyclical, dataPermission }) => {
       params={{ dataType: state.activeKey, cyclical, dataPermission }}
       rowKey={record => record.id}
       scroll={{ y: 400 }}
+      border={true}
       columns={columns}
       search={false}
       toolbar={{
@@ -72,7 +86,7 @@ const ServiceRatioPanels = ({ cyclical, dataPermission }) => {
               key: '0',
               label: (
                 <span>
-                  联系人服务记录
+                  联系人
                   {renderBadge(state.total, state.activeKey === '0')}
                 </span>
               )
@@ -81,7 +95,7 @@ const ServiceRatioPanels = ({ cyclical, dataPermission }) => {
               key: '1',
               label: (
                 <span>
-                  客户服务记录
+                  客户
                   {renderBadge(state.total, state.activeKey === '1')}
                 </span>
               )
@@ -90,7 +104,7 @@ const ServiceRatioPanels = ({ cyclical, dataPermission }) => {
               key: '2',
               label: (
                 <span>
-                  商机服务记录
+                  商机
                   {renderBadge(state.total, state.activeKey === '2')}
                 </span>
               )
@@ -213,29 +227,32 @@ const RatioPanels = ({ dataType, retioCyclical, dataPermission }) => {
   }
 
   return (
-    <CustomModal title="卡片详情">
-      <div className="mx-4 pb-4">
+    <CustomModal title={`卡片详情(${dataTypeEunm[dataType].title})`}>
+      <div className="pb-4">
         {dataType === cardTypeMap.SERVICE ? (
           <ServiceRatioPanels cyclical={retioCyclical} dataPermission={dataPermission} />
         ) : (
-          <ProTable
-            size="small"
-            pagination={{ defaultPageSize: 10 }}
-            rowKey={record => record.id}
-            scroll={{ y: 400 }}
-            columns={columnsMap[dataType]}
-            params={{ dataType, dataPermission, cyclical: retioCyclical }}
-            request={async params => {
-              const { code = -1, data } = await queryRatioPanelsList(params)
-              return {
-                data: data[dataTypeEunm[dataType]],
-                success: code === consts.RET_CODE.SUCCESS,
-                total: data.total
-              }
-            }}
-            search={false}
-            toolBarRender={false}
-          />
+          <div className="mx-4">
+            <ProTable
+              size="small"
+              border={true}
+              pagination={{ defaultPageSize: 10 }}
+              rowKey={record => record.id}
+              scroll={{ y: 400 }}
+              columns={columnsMap[dataType]}
+              params={{ dataType, dataPermission, cyclical: retioCyclical }}
+              request={async params => {
+                const { code = -1, data } = await queryRatioPanelsList(params)
+                return {
+                  data: data[dataTypeEunm[dataType].key],
+                  success: code === consts.RET_CODE.SUCCESS,
+                  total: data.total
+                }
+              }}
+              search={false}
+              toolBarRender={false}
+            />
+          </div>
         )}
       </div>
       {/* <div className={styles.modalFooter}>

+ 1 - 2
src/services/lock.js

@@ -11,8 +11,7 @@ export async function queryLock(params) {
  * 获得软件锁详情
  * @param {string} id 软件锁记录id
  */
-export async function apiSoftwareDetail(id) {
-  const params = { id }
+export async function apiSoftwareDetail(params) {
   return request('/software/detail', { params })
 }