wjx 5 giorni fa
parent
commit
29dbe4be97

+ 81 - 0
src/pages/launchSystemV3/monitorEWList/astraMsg.tsx

@@ -0,0 +1,81 @@
+import { useAjax } from '@/Hook/useAjax';
+import { getCorpUserLogListApi, GetCorpUserLogListProps } from '@/services/adqV3/monitorEWList';
+import { Button, Card, DatePicker, Input, Select, Table } from 'antd';
+import React, { useEffect, useState } from 'react';
+import { CorpUserLogTableConfig } from './tableConfig';
+import moment from 'moment';
+
+const AstraMsg: React.FC<{ localCorpCsgroupList: { label: string, value: string }[] }> = ({ localCorpCsgroupList }) => {
+
+    /*******************************************/
+    const [queryParamsNew, setQueryParamsNew] = useState<GetCorpUserLogListProps>({ pageNum: 1, pageSize: 20 });
+
+    const getCorpUserLogList = useAjax((params) => getCorpUserLogListApi(params))
+    /*******************************************/
+
+    useEffect(() => {
+        getCorpUserLogList.run(queryParamsNew)
+    }, [queryParamsNew])
+
+    return <Card
+        title={<div style={{ display: 'flex', gap: 8 }}>
+            <Input style={{ width: 135 }} placeholder='UUID' allowClear value={queryParamsNew.uuid} onChange={(e) => { setQueryParamsNew({ ...queryParamsNew, uuid: e.target.value, pageNum: 1 }) }} />
+            <Input style={{ width: 135 }} placeholder='下线用户ID' allowClear value={queryParamsNew.outlineCorpUserId} onChange={(e) => { setQueryParamsNew({ ...queryParamsNew, outlineCorpUserId: e.target.value, pageNum: 1 }) }} />
+            <DatePicker.RangePicker
+                value={(queryParamsNew?.dataTimeStart && queryParamsNew?.dataTimeEnd) ? [moment(queryParamsNew.dataTimeStart), moment(queryParamsNew.dataTimeEnd)] : undefined}
+                onChange={(_, dateString) => {
+                    setQueryParamsNew({ ...queryParamsNew, dataTimeStart: dateString?.[0] || undefined, dataTimeEnd: dateString?.[1] || undefined, pageNum: 1 })
+                }}
+            />
+            <Select
+                showSearch
+                placeholder="请选择本地客服组"
+                filterOption={(input, option) =>
+                    ((option?.label ?? '') as any).toLowerCase().includes(input.toLowerCase())
+                }
+                style={{ width: 200 }}
+                allowClear
+                value={queryParamsNew?.localCsgroupId}
+                onChange={(e) => {
+                    setQueryParamsNew({ ...queryParamsNew, localCsgroupId: e, pageNum: 1 })
+                }}
+                options={localCorpCsgroupList}
+            />
+            <Button type='primary' onClick={() => getCorpUserLogList.refresh()}>刷新</Button>
+        </div>}
+        headStyle={{ padding: '0 16px' }}
+        bodyStyle={{ padding: 16 }}
+    >
+        <Table
+            dataSource={getCorpUserLogList?.data?.records}
+            columns={CorpUserLogTableConfig()}
+            size='small'
+            bordered
+            rowKey={'uuid'}
+            loading={getCorpUserLogList.loading}
+            scroll={{ x: 1200 }}
+            pagination={{
+                total: getCorpUserLogList.data?.total,
+                defaultPageSize: 20,
+                current: queryParamsNew.pageNum,
+                pageSize: queryParamsNew.pageSize,
+            }}
+            onChange={(pagination, _, sorter: any) => {
+                const { current, pageSize } = pagination
+                const newQueryFormNew = JSON.parse(JSON.stringify(queryParamsNew))
+                if (sorter && sorter?.order) {
+                    newQueryFormNew['sortAsc'] = sorter?.order === 'ascend' ? true : false
+                    newQueryFormNew['sortFiled'] = sorter?.field
+                } else {
+                    delete newQueryFormNew['sortAsc']
+                    delete newQueryFormNew['sortFiled']
+                }
+                newQueryFormNew.pageNum = current || newQueryFormNew.pageNum
+                newQueryFormNew.pageSize = pageSize || newQueryFormNew.pageSize
+                setQueryParamsNew({ ...newQueryFormNew })
+            }}
+        />
+    </Card>
+};
+
+export default React.memo(AstraMsg);

+ 8 - 0
src/pages/launchSystemV3/monitorEWList/index.tsx

@@ -4,6 +4,7 @@ import AstraSupport from './astraSupport‌';
 import AstraGroup from './astraGroup';
 import { getLocalCorpCsgroupListAllApi } from '@/services/adqV3/global';
 import { useAjax } from '@/Hook/useAjax';
+import AstraMsg from './astraMsg';
 
 /**
  * 企微客服组监控
@@ -37,6 +38,13 @@ const MonitorEWList: React.FC = () => {
                     {currentTab === 'hao' && <AstraSupport localCorpCsgroupList={localCorpCsgroupList} />}
                 </>
             },
+            {
+                label: '客服号消息数据',
+                key: 'msg',
+                children: <>
+                    {currentTab === 'msg' && <AstraMsg localCorpCsgroupList={localCorpCsgroupList} />}
+                </>
+            },
             {
                 label: '客服组加粉数据',
                 key: 'zu',

+ 103 - 0
src/pages/launchSystemV3/monitorEWList/tableConfig.tsx

@@ -223,6 +223,109 @@ export const CorpUserDayListTableConfig = (updateLimitAddFansOfDay: (data: any)
     ]
 }
 
+// 客服号消息
+
+/** 客服组加粉 */
+export const CorpUserLogTableConfig = (): ColumnsType<never> => {
+
+    return [
+        {
+            title: 'UUID',
+            dataIndex: 'uuid',
+            key: 'uuid',
+            width: 200,
+            ellipsis: true,
+            align: 'center',
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value}</span>
+            },
+        },
+        {
+            title: '本地客服组ID',
+            dataIndex: 'localCsgroupId',
+            key: 'localCsgroupId',
+            width: 60,
+            align: 'center',
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value}</span>
+            },
+        },
+        {
+            title: '策略ID',
+            dataIndex: 'policyId',
+            key: 'policyId',
+            width: 60,
+            align: 'center',
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value}</span>
+            },
+        },
+        {
+            title: '操作类型',
+            dataIndex: 'operType',
+            key: 'operType',
+            width: 85,
+            align: 'center',
+            ellipsis: true,
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value}</span>
+            },
+        },
+        {
+            title: '下线用户ID',
+            dataIndex: 'outlineCorpUserId',
+            key: 'outlineCorpUserId',
+            width: 90,
+            align: 'center',
+            ellipsis: true,
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value}</span>
+            },
+        },
+        {
+            title: '下线用户归属池',
+            dataIndex: 'outlinePoolType',
+            key: 'outlinePoolType',
+            width: 140,
+            align: 'center',
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{POOLTYPEEle[value as keyof typeof POOLTYPEEle] || '--'}</span>
+            },
+        },
+        {
+            title: '操作状态',
+            dataIndex: 'operStatus',
+            key: 'operStatus',
+            width: 150,
+            ellipsis: true,
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value || '--'}</span>
+            },
+        },
+        {
+            title: '操作原因',
+            dataIndex: 'operMsg',
+            key: 'operMsg',
+            width: 450,
+            ellipsis: true,
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value || '--'}</span>
+            },
+        },
+        {
+            title: '数据更新时间',
+            dataIndex: 'dataTime',
+            key: 'dataTime',
+            width: 120,
+            ellipsis: true,
+            align: 'center',
+            sorter: true,
+            render(value) {
+                return <span style={{ fontSize: 12 }}>{value}</span>
+            },
+        }
+    ]
+}
 
 /** 客服组加粉 */
 export const LocalCsgroupDayListTableConfig = (): ColumnsType<never> => {

+ 24 - 0
src/services/adqV3/monitorEWList.ts

@@ -79,6 +79,30 @@ export async function getLocalCsgroupDayHourListApi(data: { day: string, localCs
     })
 }
 
+export interface GetCorpUserLogListProps {
+    pageNum: number,
+    pageSize: number,
+    uuid?: string,
+    outlineCorpUserId?: string,
+    localCsgroupId?: number,
+    dataTimeStart?: string,
+    dataTimeEnd?: string,
+    sortFiled?: string,
+    sortAsc?: boolean
+}
+
+/**
+ * 客服号消息数据
+ * @param data 
+ * @returns 
+ */
+export async function getCorpUserLogListApi(data: GetCorpUserLogListProps) {
+    return request(api + `/tencentMonitor/corpUser/log/list`, {
+        method: 'POST',
+        data
+    })
+}
+
 /**
  * 本地客服组单条天数据对应的索引数据
  * @param data