Jelajahi Sumber

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

outaozhen 4 tahun lalu
induk
melakukan
8d0b940d13

+ 3 - 6
config/config.js

@@ -60,6 +60,9 @@ export default defineConfig({
   },
   exportStatic: {},
   esbuild: {},
+  nodeModulesTransform: {
+    type: 'none'
+  },
   fastRefresh: {},
   nodeModulesTransform: {
     type: 'none' // 提升编译速度加速,加速
@@ -101,12 +104,6 @@ export default defineConfig({
                 test: /[\\/]node_modules[\\/]antd[\\/]/,
                 chunks: 'all',
                 priority: 9
-              },
-              lodash: {
-                name: 'lodash',
-                test: /[\\/]node_modules[\\/]lodash[\\/]/,
-                chunks: 'all',
-                priority: -2
               }
             }
           }

+ 5 - 7
package.json

@@ -47,7 +47,7 @@
     "not ie <= 10"
   ],
   "dependencies": {
-    "@ant-design/charts": "^1.1.20",
+    "@ant-design/charts": "1.2.14",
     "@ant-design/icons": "^4.0.0",
     "@ant-design/pro-descriptions": "^1.0.19",
     "@ant-design/pro-form": "1.42.1",
@@ -58,21 +58,17 @@
     "ahooks": "^2.10.0",
     "antd": "4.16.12",
     "classnames": "^2.2.6",
-    "copy-to-clipboard": "^3.3.1",
     "crypto-js": "^4.0.0",
     "dayjs": "^1.10.4",
-    "dragm": "^0.0.5",
     "install": "^0.13.0",
-    "lodash": "^4.17.11",
+    "lodash-es": "^4.17.21",
     "omit.js": "^2.0.2",
     "qs": "^6.9.4",
     "react": "17.0.2",
     "react-copy-to-clipboard": "^5.0.4",
     "react-dom": "17.0.2",
     "react-helmet-async": "^1.0.4",
-    "umi": "3.5.4",
-    "upgrade": "^1.1.0",
-    "use-merge-value": "^1.0.1"
+    "umi": "3.5.4"
   },
   "devDependencies": {
     "@ant-design/pro-cli": "^1.0.18",
@@ -120,6 +116,8 @@
     "puppeteer-core": "^5.0.0",
     "stylelint": "^13.9.0",
     "typescript": "^4.0.3",
+    "upgrade": "^1.1.0",
+    "use-merge-value": "^1.0.1",
     "webpack": "^5.40.0",
     "windicss": "3.1.7",
     "windicss-webpack-plugin": "1.4.5"

+ 19 - 19
src/components/Modal/src/components/DragIniter.tsx

@@ -1,22 +1,22 @@
-/* eslint-disable */
-import React, { PureComponent } from 'react'
-import DragM from 'dragm'
+// /* eslint-disable */
+// import React, { PureComponent } from 'react'
+// import DragM from 'dragm'
 
-export default class DragIniter extends PureComponent<{ uid: string; title?: string }> {
-  updateTransform = transformStr => {
-    this.modalDom.style.transform = transformStr
-  }
+// export default class DragIniter extends PureComponent<{ uid: string; title?: string }> {
+//   updateTransform = transformStr => {
+//     this.modalDom.style.transform = transformStr
+//   }
 
-  componentDidMount() {
-    this.modalDom = document.getElementsByClassName(`d_${this.props.uid}`)[0]
-  }
+//   componentDidMount() {
+//     this.modalDom = document.getElementsByClassName(`d_${this.props.uid}`)[0]
+//   }
 
-  render() {
-    const { title } = this.props
-    return (
-      <DragM updateTransform={this.updateTransform}>
-        <div className="py-16px px-24px w-full min-h-56px">{title}</div>
-      </DragM>
-    )
-  }
-}
+//   render() {
+//     const { title } = this.props
+//     return (
+//       <DragM updateTransform={this.updateTransform}>
+//         <div className="py-16px px-24px w-full min-h-56px">{title}</div>
+//       </DragM>
+//     )
+//   }
+// }

+ 1 - 1
src/components/RightContent/Book/index.tsx

@@ -1,6 +1,6 @@
 import { useState, useEffect } from 'react'
 import ws, { CmdType, onMessage } from '@/utils/ws'
-import { debounce } from 'lodash'
+import { debounce } from 'lodash-es'
 import UesrList from './components/UserList'
 import { useModel } from 'umi'
 

+ 1 - 1
src/components/RightContent/NoticeIcon/index.tsx

@@ -1,6 +1,6 @@
 import { useCallback, useEffect, useState } from 'react'
 import { Tag, message } from 'antd'
-import { groupBy } from 'lodash'
+import { groupBy } from 'lodash-es'
 import { useModel } from 'umi'
 
 import NoticeIcon from './NoticeIcon'

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

@@ -7,7 +7,7 @@ import AddBusiness from './components/AddBusiness'
 import Detail from './components/BusinessDetail'
 import { useModal } from '@/components/Modal'
 import CompanyDetail from '../Company/components/CompanyDetail'
-import { Funnel } from '@ant-design/charts'
+import Funnel from '@ant-design/charts/es/plots/funnel'
 import BasicTable from '@/components/Table'
 import { getAuthCache, getPermAuthCache, setAuthCache } from '@/utils/auth'
 import { PermDataTypeEunm } from '@/pages/Customer/Company/components/PermSelect'

+ 11 - 7
src/pages/Customer/Company/components/CompanyDetail/TabList.jsx

@@ -99,7 +99,8 @@ const CompanyTabList = ({
         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>
@@ -118,7 +119,8 @@ const CompanyTabList = ({
         <Dropdown
           overlay={priorityMenu(text, record.id)}
           trigger="click"
-          className="hover:cursor-pointer">
+          className="hover:cursor-pointer"
+        >
           <span>
             {text} <DownOutlined />
           </span>
@@ -182,7 +184,8 @@ const CompanyTabList = ({
       render: (clientName, record) => (
         <span
           onClick={() => showLongleDrawer(record.id)}
-          className="text-primary cursor-pointer hover:text-[#967bbd]">
+          className="text-primary cursor-pointer hover:text-[#967bbd]"
+        >
           {clientName}
         </span>
       )
@@ -214,7 +217,8 @@ const CompanyTabList = ({
       render: (text, record) => (
         <span
           onClick={() => showDrawerBusiness(record.id)}
-          className="text-primary cursor-pointer hover:text-[#967bbd]">
+          className="text-primary cursor-pointer hover:text-[#967bbd]"
+        >
           {text}
         </span>
       )
@@ -279,7 +283,7 @@ const CompanyTabList = ({
     <div>
       <div className="pl-15px">
         <Tabs>
-          <TabPane tab={<span>客户{renderBadge(client.total, true)}</span>} key="客户">
+          <TabPane tab={<span>客户{renderBadge(client.total, true)}</span>} key="1">
             <div className="sheet-right-panel" ref={tRef}>
               <ProTable
                 size="small"
@@ -292,7 +296,7 @@ const CompanyTabList = ({
               />
             </div>
           </TabPane>
-          <TabPane tab="软件锁" key="软件锁">
+          <TabPane tab={<span>软件锁{renderBadge(software.total, true)}</span>} key="2">
             <div className="sheet-right-panel">
               <ProTable
                 size="small"
@@ -305,7 +309,7 @@ const CompanyTabList = ({
               />
             </div>
           </TabPane>
-          <TabPane tab="商机" key="商机">
+          <TabPane tab={<span>商机{renderBadge(business.total, true)}</span>} key="3">
             <div className="sheet-right-panel">
               <ProTable
                 size="small"

+ 53 - 107
src/pages/Customer/Test/index.jsx

@@ -1,108 +1,54 @@
-import BasicTable from '@/components/Table'
-import consts from '@/consts'
-import { queryCompany } from '@/services/customer'
-import { refactorSortField } from '@/utils/utils'
-import React from 'react'
+// import * as echarts from 'echarts/core'
+// import { useEffect } from 'react'
+// // 引入柱状图图表,图表后缀都为 Chart
+// import { BarChart } from 'echarts/charts'
+// // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
+// import {
+//   TitleComponent,
+//   TooltipComponent,
+//   GridComponent,
+//   DatasetComponent,
+//   DatasetComponentOption,
+//   TransformComponent
+// } from 'echarts/components'
+// // 标签自动布局,全局过渡动画等特性
+// import { LabelLayout, UniversalTransition } from 'echarts/features'
+// // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
+// import { CanvasRenderer } from 'echarts/renderers'
 
-export default function Index() {
-  const columns = [
-    {
-      title: '客户名称',
-      dataIndex: 'companyName',
-      width: 150,
-      fixed: 'left',
-      sorter: true
-    },
-    {
-      title: '地区',
-      dataIndex: 'districtName',
-      width: 100
-    },
-    {
-      title: '客户电话',
-      dataIndex: 'phone',
-      width: 80
-    },
-    {
-      title: '联系人',
-      dataIndex: 'clientTotal',
-      width: 80
-    },
-    {
-      title: '客户性质',
-      dataIndex: 'nature',
-      width: 80
-    },
-    {
-      title: '客户地址',
-      dataIndex: 'address',
-      width: 80
-    },
-    {
-      title: '客户传真',
-      dataIndex: 'fax',
-      width: 80
-    },
-    {
-      title: '网址',
-      dataIndex: 'webservice',
-      search: false,
-      width: 80
-    },
-    {
-      title: '乘车路线',
-      dataIndex: 'ride',
-      search: false,
-      width: 80
-    },
-    {
-      title: '地标建筑',
-      dataIndex: 'landmarks',
-      search: false,
-      width: 80
-    },
-    {
-      title: '参考住宿',
-      dataIndex: 'stay',
-      search: false,
-      width: 80
-    },
-    {
-      title: '备注',
-      dataIndex: 'remarks',
-      search: false,
-      width: 80
-    },
-    {
-      title: '创建人',
-      dataIndex: 'staffName',
-      search: false,
-      width: 80
-    }
-  ]
-  return (
-    <BasicTable
-      resizable={true}
-      columns={columns}
-      rowKey={row => row.id}
-      search={false}
-      headerTitle="客户列表"
-      mainMenuType="customer"
-      columnStateType="COMPANY"
-      rowSelection={{
-        type: 'checkbox',
-        columnWidth: 25
-      }}
-      request={async (params, sort, filter) => {
-        const srotOrder = refactorSortField(sort)
-        const { code = -1, data: { customer = [], total = 0 } = { customer: [], total: 0 } } =
-          await queryCompany({ ...params, ...srotOrder, ...filter })
-        return {
-          data: customer,
-          success: code === consts.RET_CODE.SUCCESS,
-          total
-        }
-      }}
-    />
-  )
-}
+// // 注册必须的组件
+// echarts.use([
+//   TitleComponent,
+//   TooltipComponent,
+//   GridComponent,
+//   DatasetComponent,
+//   TransformComponent,
+//   BarChart,
+//   LabelLayout,
+//   UniversalTransition,
+//   CanvasRenderer
+// ])
+
+// export default function Index() {
+//   useEffect(() => {
+//     const myChart = echarts.init(document.getElementById('mian11'))
+//     myChart.setOption({
+//       title: {
+//         text: 'ECharts 入门示例'
+//       },
+//       tooltip: {},
+//       xAxis: {
+//         data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
+//       },
+//       yAxis: {},
+//       series: [
+//         {
+//           name: '销量',
+//           type: 'bar',
+//           data: [5, 20, 36, 10, 10, 20]
+//         }
+//       ]
+//     })
+//   }, [])
+//   return <div id="mian11" style={{ width: '300px', height: '500px' }} />
+// }

+ 2 - 2
src/pages/Hr/Employee/components/RoleMenu/index.jsx

@@ -51,7 +51,7 @@ const RoleMenu = props => {
   const hasPerm = useAccess()?.validatePermByType('employee_add_department')
 
   return (
-    <div className="h-full w-max-234px rounded-4px">
+    <div className="h-full w-12rem rounded-4px">
       <div className="p-4 pb-3 border-b-1 border-solid border-black border-opacity-10 bg-[#f7f9fa] flex justify-around items-center">
         <span className="text-[0.9375rem]">组织架构</span>
         {hasPerm && (
@@ -90,7 +90,7 @@ const RoleMenu = props => {
           </ModalDragForm>
         )}
       </div>
-      <div className="p-4 bg-white" style={{ height: 'calc(100% - 1rem*2 - 20px)' }}>
+      <div className="py-4 pt-4 bg-white" style={{ height: 'calc(100% - 1rem*2 - 20px)' }}>
         {departments.length ? (
           <DirectoryTree
             multiple

+ 1 - 1
src/pages/Hr/Employee/index.jsx

@@ -114,7 +114,7 @@ const Employee = props => {
   return (
     <div className="h-full w-full flex flex-row">
       <RoleMenu onSelect={onSelect} />
-      <div className="w-full">
+      <div style={{ width: 'calc(100% - 12rem)' }}>
         <div className="ml-8 shadow-hex-3e2c5a">
           {/* <div className="absolute right-33 top-3 z-100">
             {hasPerm && state.params.id && (

+ 39 - 39
src/pages/Product/Cloud/index.jsx

@@ -115,6 +115,45 @@ const Cloud = () => {
       width: 100
     },
     {
+      title: '截至上一次登录时长',
+      dataIndex: 'onlineTimes',
+      key: 'onlineTimes',
+      filters: true,
+      filterMultiple: false,
+      width: 100,
+      valueEnum: {
+        1: { text: '超过30分钟' },
+        2: { text: '超过1小时' },
+        3: { text: '超过2小时' },
+        4: { text: '超过3小时' }
+      },
+      renderText: (t, record) => {
+        if (record.all_online_times && record.online_list?.length) {
+          return (
+            <Tooltip
+              title={
+                <div>
+                  <div>最近登陆:</div>
+                  {record.online_list?.map(
+                    (item, i) =>
+                      i < 10 && (
+                        <div className="flex justify-between" key={item.dateString}>
+                          <span>{item.online_times}</span>
+                          <span className="ml-4">{item.dateString}</span>
+                        </div>
+                      )
+                  )}
+                </div>
+              }
+            >
+              {record.all_online_times}
+            </Tooltip>
+          )
+        }
+        return '-'
+      }
+    },
+    {
       title: 'CLD联系人',
       dataIndex: 'cld',
       key: 'cld',
@@ -157,45 +196,6 @@ const Cloud = () => {
       width: 50
     },
     {
-      title: '截至上一次登录时长',
-      dataIndex: 'onlineTimes',
-      key: 'onlineTimes',
-      filters: true,
-      filterMultiple: false,
-      width: 100,
-      valueEnum: {
-        1: { text: '超过30分钟' },
-        2: { text: '超过1小时' },
-        3: { text: '超过2小时' },
-        4: { text: '超过3小时' }
-      },
-      renderText: (t, record) => {
-        if (record.all_online_times && record.online_list?.length) {
-          return (
-            <Tooltip
-              title={
-                <div>
-                  <div>最近登陆:</div>
-                  {record.online_list?.map(
-                    (item, i) =>
-                      i < 10 && (
-                        <div className="flex justify-between" key={item.dateString}>
-                          <span>{item.online_times}</span>
-                          <span className="ml-4">{item.dateString}</span>
-                        </div>
-                      )
-                  )}
-                </div>
-              }
-            >
-              {record.all_online_times}
-            </Tooltip>
-          )
-        }
-        return '-'
-      }
-    },
-    {
       title: '注册时间',
       dataIndex: 'create_time',
       key: 'create_time',

+ 14 - 9
src/pages/Product/Lock/LockStore/components/LocksDetail/LockModal.jsx

@@ -257,7 +257,8 @@ const LockModal = props => {
             </Button>
           </div>
         )
-      }>
+      }
+    >
       {type === lockTypeEnum.SALE ? (
         <div className="text-center mb-6">
           <Radio.Group value={state.sellStatus} buttonStyle="solid" onChange={checkGroupOnChange}>
@@ -272,7 +273,8 @@ const LockModal = props => {
           className={styles.modalContainer}
           ref={scrollRef}
           onScroll={handleListScroll}
-          style={{ paddingBottom: 0 }}>
+          style={{ paddingBottom: 0 }}
+        >
           <div className={styles.modalContent}>
             <Spin spinning={state.loading}>
               {type === lockTypeEnum.SALE &&
@@ -287,7 +289,8 @@ const LockModal = props => {
                         title="确认选择ta"
                         onConfirm={() => connectClient(item.id)}
                         okText="确认"
-                        cancelText="取消">
+                        cancelText="取消"
+                      >
                         <Button type="primary" size="small">
                           选择ta
                         </Button>
@@ -305,7 +308,8 @@ const LockModal = props => {
                         title="确认选择ta"
                         onConfirm={() => connectLongle(item.id)}
                         okText="确认"
-                        cancelText="取消">
+                        cancelText="取消"
+                      >
                         <Button type="primary" size="small">
                           更换
                         </Button>
@@ -339,7 +343,8 @@ const LockModal = props => {
                     return Promise.resolve(value)
                   }
                 })
-              ]}>
+              ]}
+            >
               <Select
                 placeholder="请选择产品"
                 onDropdownVisibleChange={async e => {
@@ -357,10 +362,10 @@ const LockModal = props => {
           </>
         ) : null}
 
-        {type === lockTypeEnum.RECOVER ? (
+        {type === lockTypeEnum.RECOVER || type === lockTypeEnum.RECEIVE ? (
           <>
             <p>
-              收回锁号 <b>{keyNum}</b>
+              {type === lockTypeEnum.RECOVER ? '收回锁号' : '确认接收锁'} <b>{keyNum}</b>
             </p>
             <Form.Item name="longleId" hidden>
               <Input />
@@ -368,7 +373,7 @@ const LockModal = props => {
           </>
         ) : null}
 
-        {type === lockTypeEnum.RECEIVE ? (
+        {/* {type === lockTypeEnum.RECEIVE ? (
           <>
             <p>
               确认接收锁 <b>{keyNum}</b>
@@ -377,7 +382,7 @@ const LockModal = props => {
               <Input />
             </Form.Item>
           </>
-        ) : null}
+        ) : null} */}
       </Form>
     </Modal>
   )

+ 1 - 1
src/pages/Workbench/Dashboard/components/BusinessChar.jsx

@@ -1,4 +1,4 @@
-import { DualAxes } from '@ant-design/charts'
+import DualAxes from '@ant-design/charts/es/plots/dualAxes'
 import { Card, Select } from 'antd'
 import { connect } from 'umi'
 import React, { useEffect } from 'react'

+ 1 - 1
src/utils.js

@@ -1,5 +1,5 @@
 import utils, { importAll } from '@/src/basic/utils'
-import merge from 'lodash/merge'
+import merge from 'lodash-es/merge'
 
 const baseUtils = importAll(require.context('./utils', true, /\.js$/))