Explorar el Código

feat(merge): merge wzy

Next wzy
Lind hace 3 años
padre
commit
01d9eca673
Se han modificado 46 ficheros con 216 adiciones y 12 borrados
  1. 3 0
      src/components/BaseCrud/index.tsx
  2. 3 0
      src/pages/Log/Access/index.tsx
  3. 3 0
      src/pages/Log/System/index.tsx
  4. 6 0
      src/pages/Northbound/AliCloud/index.tsx
  5. 6 0
      src/pages/Northbound/DuerOS/index.tsx
  6. 4 0
      src/pages/account/NotificationRecord/index.tsx
  7. 6 0
      src/pages/account/NotificationSubscription/index.tsx
  8. 5 1
      src/pages/device/Category/index.tsx
  9. 6 0
      src/pages/device/Instance/Detail/ChildDevice/index.tsx
  10. 1 0
      src/pages/device/Instance/Detail/Functions/form.tsx
  11. 10 1
      src/pages/device/Instance/Detail/MetadataMap/EditableTable/index.tsx
  12. 3 0
      src/pages/device/Instance/Detail/Modbus/index.tsx
  13. 5 0
      src/pages/device/Instance/Detail/Opcua/index.tsx
  14. 3 0
      src/pages/device/Instance/index.tsx
  15. 7 2
      src/pages/device/Product/index.tsx
  16. 2 0
      src/pages/device/components/Metadata/Base/columns.tsx
  17. 4 0
      src/pages/link/Certificate/index.tsx
  18. 26 6
      src/pages/link/Channel/Modbus/Access/addPoint/index.tsx
  19. 2 0
      src/pages/link/Channel/Modbus/Access/index.tsx
  20. 4 0
      src/pages/link/Channel/Modbus/index.tsx
  21. 2 0
      src/pages/link/Channel/Opcua/Access/bindDevice/index.tsx
  22. 5 0
      src/pages/link/Channel/Opcua/Access/index.tsx
  23. 6 0
      src/pages/link/Channel/Opcua/index.tsx
  24. 3 0
      src/pages/link/Protocol/index.tsx
  25. 5 0
      src/pages/link/Type/index.tsx
  26. 4 0
      src/pages/media/Cascade/Channel/BindChannel/index.tsx
  27. 8 0
      src/pages/media/Cascade/Channel/index.tsx
  28. 6 0
      src/pages/media/Cascade/index.tsx
  29. 4 0
      src/pages/media/Device/Channel/index.tsx
  30. 6 0
      src/pages/media/Device/index.tsx
  31. 1 0
      src/pages/notice/Config/Log/index.tsx
  32. 4 0
      src/pages/notice/Config/index.tsx
  33. 4 0
      src/pages/notice/Template/index.tsx
  34. 3 0
      src/pages/rule-engine/Alarm/Configuration/index.tsx
  35. 3 0
      src/pages/rule-engine/Alarm/Log/Detail/index.tsx
  36. 1 0
      src/pages/rule-engine/Alarm/Log/SolveLog/index.tsx
  37. 3 0
      src/pages/rule-engine/Instance/index.tsx
  38. 7 2
      src/pages/rule-engine/Scene/index.tsx
  39. 5 0
      src/pages/system/DataSource/index.tsx
  40. 6 0
      src/pages/system/Menu/index.tsx
  41. 5 0
      src/pages/system/Permission/index.tsx
  42. 1 0
      src/pages/system/Platforms/Api/basePage.tsx
  43. 4 0
      src/pages/system/Platforms/index.tsx
  44. 4 0
      src/pages/system/Relationship/index.tsx
  45. 4 0
      src/pages/system/Role/index.tsx
  46. 3 0
      src/pages/system/User/index.tsx

+ 3 - 0
src/components/BaseCrud/index.tsx

@@ -48,6 +48,7 @@ export type Props<T> = {
   moduleName?: string; //
   footer?: React.ReactNode;
   disableAdd?: boolean;
+  scroll?: any;
 };
 
 const BaseCrud = <T extends Record<string, any>>(props: Props<T>) => {
@@ -71,6 +72,7 @@ const BaseCrud = <T extends Record<string, any>>(props: Props<T>) => {
     form,
     moduleName,
     footer,
+    scroll,
   } = props;
 
   const [param, setParam] = useState({});
@@ -89,6 +91,7 @@ const BaseCrud = <T extends Record<string, any>>(props: Props<T>) => {
         formRef={ref}
         columns={columns}
         actionRef={actionRef}
+        scroll={scroll}
         options={{ fullScreen: true }}
         request={
           request ||

+ 3 - 0
src/pages/Log/Access/index.tsx

@@ -24,6 +24,7 @@ const Access = () => {
       title: 'IP',
       dataIndex: 'ip',
       ellipsis: true,
+      fixed: 'left',
     },
     {
       title: intl.formatMessage({
@@ -99,6 +100,7 @@ const Access = () => {
       }),
       valueType: 'option',
       align: 'center',
+      fixed: 'right',
       render: (text, record) => [
         <a
           key="editable"
@@ -127,6 +129,7 @@ const Access = () => {
       <ProTable<AccessLogItem>
         columns={columns}
         params={param}
+        scroll={{ x: 1366 }}
         request={async (params) =>
           service.query({ ...params, sorts: [{ name: 'responseTime', order: 'desc' }] })
         }

+ 3 - 0
src/pages/Log/System/index.tsx

@@ -26,6 +26,7 @@ const System = () => {
       }),
       dataIndex: 'name',
       ellipsis: true,
+      fixed: 'left',
     },
     {
       title: '日志级别',
@@ -91,6 +92,7 @@ const System = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <a
           key="editable"
@@ -119,6 +121,7 @@ const System = () => {
       <ProTable<SystemLogItem>
         columns={columns}
         params={param}
+        scroll={{ x: 1366 }}
         request={async (params) =>
           service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] })
         }

+ 6 - 0
src/pages/Northbound/AliCloud/index.tsx

@@ -128,14 +128,18 @@ const AliCloud = () => {
     {
       title: '名称',
       dataIndex: 'name',
+      ellipsis: true,
+      fixed: 'left',
     },
     {
       title: '网桥产品',
       dataIndex: 'bridgeProductName',
+      ellipsis: true,
     },
     {
       title: '说明',
       dataIndex: 'description',
+      ellipsis: true,
     },
     {
       title: '状态',
@@ -168,6 +172,7 @@ const AliCloud = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => Tools(record, 'table'),
     },
   ];
@@ -198,6 +203,7 @@ const AliCloud = () => {
       <ProTableCard<AliCloudType>
         rowKey="id"
         search={false}
+        scroll={{ x: 1366 }}
         columns={columns}
         actionRef={actionRef}
         params={searchParams}

+ 6 - 0
src/pages/Northbound/DuerOS/index.tsx

@@ -134,6 +134,8 @@ export default () => {
         defaultMessage: '名称',
       }),
       dataIndex: 'name',
+      fixed: 'left',
+      ellipsis: true,
     },
     {
       title: intl.formatMessage({
@@ -142,6 +144,7 @@ export default () => {
       }),
       dataIndex: 'productName',
       hideInSearch: true,
+      ellipsis: true,
       valueType: 'select',
       request: async () => {
         const res = await service.getProduct();
@@ -175,6 +178,7 @@ export default () => {
     {
       title: '状态',
       dataIndex: 'state',
+      width: 90,
       renderText: (data) => {
         const map = {
           disabled: <Badge status="error" text="禁用" />,
@@ -202,6 +206,7 @@ export default () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => Tools(record, 'table'),
     },
   ];
@@ -235,6 +240,7 @@ export default () => {
         columns={columns}
         actionRef={actionRef}
         params={searchParams}
+        scroll={{ x: 1366 }}
         options={{ fullScreen: true }}
         request={(params) =>
           service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] })

+ 4 - 0
src/pages/account/NotificationRecord/index.tsx

@@ -35,6 +35,7 @@ const NotificationRecord = () => {
     {
       dataIndex: 'topicProvider',
       title: '类型',
+      fixed: 'left',
       render: (text: any, record: any) => {
         return <span>{typeList[record?.topicProvider]?.text || text}</span>;
       },
@@ -50,6 +51,7 @@ const NotificationRecord = () => {
     {
       dataIndex: 'message',
       title: '消息',
+      ellipsis: true,
     },
     {
       dataIndex: 'notifyTime',
@@ -85,6 +87,7 @@ const NotificationRecord = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key={'update'}
@@ -143,6 +146,7 @@ const NotificationRecord = () => {
         params={param}
         columns={columns}
         rowKey="id"
+        scroll={{ x: 1366 }}
         search={false}
         request={async (params) =>
           service.queryList(encodeQuery({ ...params, sorts: { notifyTime: 'desc' } }))

+ 6 - 0
src/pages/account/NotificationSubscription/index.tsx

@@ -123,6 +123,9 @@ const NotificationSubscription = observer(() => {
     {
       dataIndex: 'subscribeName',
       title: '名称',
+      fixed: 'left',
+      ellipsis: true,
+      width: '25%',
     },
     {
       dataIndex: 'topicProvider',
@@ -136,6 +139,7 @@ const NotificationSubscription = observer(() => {
       dataIndex: 'topicConfig',
       title: '告警规则',
       hideInSearch: true,
+      ellipsis: true,
       render: (text: any, record: any) => (
         <span>{record?.topicConfig?.alarmConfigName || '-'}</span>
       ),
@@ -156,6 +160,7 @@ const NotificationSubscription = observer(() => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [Tools(record)],
     },
   ];
@@ -175,6 +180,7 @@ const NotificationSubscription = observer(() => {
         actionRef={actionRef}
         params={param}
         columns={columns}
+        scroll={{ x: 1366 }}
         search={false}
         rowKey="id"
         request={async (params) =>

+ 5 - 1
src/pages/device/Category/index.tsx

@@ -64,6 +64,9 @@ const Category = observer(() => {
         defaultMessage: '分类名称',
       }),
       dataIndex: 'name',
+      width: 300,
+      ellipsis: true,
+      fixed: 'left',
     },
     {
       title: '分类排序',
@@ -82,7 +85,6 @@ const Category = observer(() => {
         defaultMessage: '说明',
       }),
       dataIndex: 'description',
-      width: 300,
       ellipsis: true,
     },
     {
@@ -92,6 +94,7 @@ const Category = observer(() => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key="editable"
@@ -178,6 +181,7 @@ const Category = observer(() => {
       <ProTable
         params={param}
         search={false}
+        scroll={{ x: 1366 }}
         request={async (params) => {
           const response = await service.queryTree({
             paging: false,

+ 6 - 0
src/pages/device/Instance/Detail/ChildDevice/index.tsx

@@ -33,14 +33,18 @@ const ChildDevice = () => {
     {
       title: 'ID',
       dataIndex: 'id',
+      ellipsis: true,
+      fixed: 'left',
     },
     {
       title: '设备名称',
       dataIndex: 'name',
+      ellipsis: true,
     },
     {
       title: '所属产品',
       dataIndex: 'productName',
+      ellipsis: true,
     },
     {
       title: '注册时间',
@@ -87,6 +91,7 @@ const ChildDevice = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <Link
           to={`${getMenuPathByParams(MENUS_CODE['device/Instance/Detail'], record.id)}`}
@@ -143,6 +148,7 @@ const ChildDevice = () => {
         search={false}
         columns={columns}
         size="small"
+        scroll={{ x: 1366 }}
         actionRef={actionRef}
         params={searchParams}
         rowKey="id"

+ 1 - 0
src/pages/device/Instance/Detail/Functions/form.tsx

@@ -80,6 +80,7 @@ export default (props: FunctionProps) => {
       title: '名称',
       width: 200,
       editable: false,
+      ellipsis: true,
     },
     {
       dataIndex: 'type',

+ 10 - 1
src/pages/device/Instance/Detail/MetadataMap/EditableTable/index.tsx

@@ -122,7 +122,16 @@ const EditableTable = (props: Props) => {
     {
       title: '物模型属性',
       dataIndex: 'name',
-      render: (text: any, record: any) => <span>{`${record.name}(${record.id})`}</span>,
+      width: '30%',
+      ellipsis: {
+        showTitle: false,
+      },
+      render: (text: any, record: any) => (
+        <Tooltip placement="topLeft" title={`${record.name}(${record.id})`}>
+          {`${record.name}(${record.id})`}
+        </Tooltip>
+      ),
+      // render: (text: any, record: any) => <span>{`${record.name}(${record.id})`}</span>,
     },
     {
       title: (

+ 3 - 0
src/pages/device/Instance/Detail/Modbus/index.tsx

@@ -41,6 +41,7 @@ const Modbus = () => {
     {
       title: '属性ID',
       dataIndex: 'metadataId',
+      ellipsis: true,
     },
     {
       title: '功能码',
@@ -56,10 +57,12 @@ const Modbus = () => {
     },
     {
       title: '值',
+      width: 120,
       render: (record: any) => <>{propertyValue[record?.metadataId] || '-'}</>,
     },
     {
       title: '状态',
+      width: 90,
       dataIndex: 'state',
       renderText: (state) => (
         <Badge text={state?.text} status={state?.value === 'disabled' ? 'error' : 'success'} />

+ 5 - 0
src/pages/device/Instance/Detail/Opcua/index.tsx

@@ -43,14 +43,17 @@ const Opcua = () => {
     {
       title: '属性ID',
       dataIndex: 'property',
+      ellipsis: true,
     },
     {
       title: '名称',
       dataIndex: 'name',
+      ellipsis: true,
     },
     {
       title: 'OPC点位ID',
       dataIndex: 'opcPointId',
+      ellipsis: true,
     },
     {
       title: '数据类型',
@@ -58,11 +61,13 @@ const Opcua = () => {
     },
     {
       title: '值',
+      width: 120,
       render: (record: any) => <>{propertyValue[record?.property] || '-'}</>,
     },
     {
       title: '状态',
       dataIndex: 'state',
+      width: 90,
       renderText: (state) => (
         <Badge text={state?.text} status={state?.value === 'disable' ? 'error' : 'success'} />
       ),

+ 3 - 0
src/pages/device/Instance/index.tsx

@@ -210,6 +210,7 @@ const Instance = () => {
       dataIndex: 'id',
       width: 300,
       ellipsis: true,
+      fixed: 'left',
     },
     {
       title: intl.formatMessage({
@@ -394,6 +395,7 @@ const Instance = () => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (text, record) => tools(record),
     },
   ];
@@ -528,6 +530,7 @@ const Instance = () => {
       />
       <ProTableCard<DeviceInstance>
         columns={columns}
+        scroll={{ x: 1366 }}
         actionRef={actionRef}
         params={searchParams}
         options={{ fullScreen: true }}

+ 7 - 2
src/pages/device/Product/index.tsx

@@ -248,6 +248,7 @@ const Product = observer(() => {
       dataIndex: 'id',
       width: 300,
       ellipsis: true,
+      fixed: 'left',
     },
     {
       title: '名称',
@@ -258,7 +259,7 @@ const Product = observer(() => {
     {
       title: '接入方式',
       dataIndex: 'transportProtocol',
-      width: 120,
+      width: 150,
     },
     {
       title: '设备类型',
@@ -278,7 +279,7 @@ const Product = observer(() => {
           status: 'gateway',
         },
       },
-      width: 120,
+      width: 150,
       render: (_, row) => <>{row.deviceType ? row.deviceType.text : undefined}</>,
     },
     {
@@ -317,6 +318,8 @@ const Product = observer(() => {
         id: 'pages.system.description',
         defaultMessage: '说明',
       }),
+      ellipsis: true,
+      width: 300,
       // hideInSearch: true,
     },
     {
@@ -385,6 +388,7 @@ const Product = observer(() => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (_, record) => tools(record),
     },
   ];
@@ -405,6 +409,7 @@ const Product = observer(() => {
         columns={columns}
         actionRef={actionRef}
         options={{ fullScreen: true }}
+        scroll={{ x: 1366 }}
         // request={async (params = {}) => {
         //   return await lastValueFrom(
         //     service.queryZipCount(encodeQuery({ ...params, sorts: { id: 'ascend' } })),

+ 2 - 0
src/pages/device/components/Metadata/Base/columns.tsx

@@ -11,10 +11,12 @@ const BaseColumns: ProColumns<MetadataItem>[] = [
   {
     title: '标识',
     dataIndex: 'id',
+    ellipsis: true,
   },
   {
     title: '名称',
     dataIndex: 'name',
+    ellipsis: true,
   },
   {
     title: '说明',

+ 4 - 0
src/pages/link/Certificate/index.tsx

@@ -28,6 +28,7 @@ const Certificate = () => {
       title: '证书标准',
       render: (_, record: any) => <span>{record.type?.text || '-'}</span>,
       valueType: 'select',
+      fixed: 'left',
       valueEnum: {
         common: {
           text: '国际标准',
@@ -45,6 +46,7 @@ const Certificate = () => {
       dataIndex: 'description',
       title: '说明',
       width: '30%',
+      ellipsis: true,
       render: (text: any) => (
         <div style={{ width: '100%' }} className="ellipsis">
           <Tooltip placement="topLeft" title={text}>
@@ -61,6 +63,7 @@ const Certificate = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key={'update'}
@@ -125,6 +128,7 @@ const Certificate = () => {
         params={param}
         columns={columns}
         search={false}
+        scroll={{ x: 1366 }}
         rowKey="id"
         className={'link-certificate'}
         tableStyle={{ minHeight }}

+ 26 - 6
src/pages/link/Channel/Modbus/Access/addPoint/index.tsx

@@ -152,7 +152,7 @@ const AddPoint = (props: Props) => {
           </Col>
         </Row>
         <Row gutter={[24, 24]}>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item
               label="地址"
               name="address"
@@ -172,6 +172,25 @@ const AddPoint = (props: Props) => {
               <InputNumber style={{ width: '100%' }} placeholder="请输入" min={1} />
             </Form.Item>
           </Col>
+          <Col span={12}>
+            <Form.Item
+              label="寄存器数量"
+              name="quantity"
+              rules={[
+                { required: true, message: '请输入寄存器数量' },
+                ({}) => ({
+                  validator(_, value) {
+                    if (/(^[0-9]\d*$)/.test(value)) {
+                      return Promise.resolve();
+                    }
+                    return Promise.reject(new Error('请输入正整数'));
+                  },
+                }),
+              ]}
+            >
+              <InputNumber style={{ width: '100%' }} placeholder="请输入" min={1} />
+            </Form.Item>
+          </Col>
         </Row>
         <Row gutter={[24, 24]}>
           <Col span={12}>
@@ -212,14 +231,15 @@ const AddPoint = (props: Props) => {
         <Row gutter={[24, 24]}>
           <Col span={12}>
             <Form.Item
-              label="数据格式转换"
-              name={['codecConfig', 'unsigned']}
+              label="数据格式"
+              name={['codecConfig', 'format']}
               required
-              rules={[{ required: true, message: '数据格式转换必填' }]}
+              rules={[{ required: true, message: '数据格式必选' }]}
             >
               <Select placeholder="请选择">
-                <Select.Option value={false}>无符号数字</Select.Option>
-                <Select.Option value={true}>有符号数字</Select.Option>
+                <Select.Option value={'unsigned'}>无符号数字</Select.Option>
+                <Select.Option value={'signed'}>有符号数字</Select.Option>
+                <Select.Option value={'ieee754'}>IEEE754</Select.Option>
               </Select>
             </Form.Item>
           </Col>

+ 2 - 0
src/pages/link/Channel/Modbus/Access/index.tsx

@@ -43,6 +43,7 @@ const Access = () => {
     {
       title: '属性ID',
       dataIndex: 'metadataId',
+      ellipsis: true,
     },
     {
       title: '功能码',
@@ -58,6 +59,7 @@ const Access = () => {
     },
     {
       title: '值',
+      width: 100,
       render: (record: any) => <>{propertyValue[record?.metadataId] || '-'}</>,
     },
     {

+ 4 - 0
src/pages/link/Channel/Modbus/index.tsx

@@ -38,6 +38,8 @@ const Modbus = () => {
     {
       title: '通道名称',
       dataIndex: 'name',
+      ellipsis: true,
+      fixed: 'left',
     },
     {
       title: 'IP',
@@ -76,6 +78,7 @@ const Modbus = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           isPermission={permission.update}
@@ -238,6 +241,7 @@ const Modbus = () => {
         params={param}
         columns={columns}
         rowKey="id"
+        scroll={{ x: 1366 }}
         search={false}
         headerTitle={
           <PermissionButton

+ 2 - 0
src/pages/link/Channel/Opcua/Access/bindDevice/index.tsx

@@ -29,6 +29,7 @@ const BindDevice = (props: Props) => {
     {
       title: '设备ID',
       dataIndex: 'id',
+      ellipsis: true,
     },
     {
       title: '设备名称',
@@ -39,6 +40,7 @@ const BindDevice = (props: Props) => {
     {
       title: '产品名称',
       dataIndex: 'productName',
+      ellipsis: true,
     },
     {
       title: '注册时间',

+ 5 - 0
src/pages/link/Channel/Opcua/Access/index.tsx

@@ -46,14 +46,17 @@ const Access = () => {
     {
       title: '属性ID',
       dataIndex: 'property',
+      ellipsis: true,
     },
     {
       title: '名称',
       dataIndex: 'name',
+      ellipsis: true,
     },
     {
       title: 'OPC点位ID',
       dataIndex: 'opcPointId',
+      ellipsis: true,
     },
     {
       title: '数据类型',
@@ -61,11 +64,13 @@ const Access = () => {
     },
     {
       title: '值',
+      width: 100,
       render: (record: any) => <>{propertyValue[record?.property] || '-'}</>,
     },
     {
       title: '状态',
       dataIndex: 'state',
+      width: 100,
       renderText: (state) => (
         <Badge text={state?.text} status={state?.value === 'disable' ? 'error' : 'success'} />
       ),

+ 6 - 0
src/pages/link/Channel/Opcua/index.tsx

@@ -38,6 +38,9 @@ const Opcua = () => {
     {
       title: '通道名称',
       dataIndex: 'name',
+      fixed: 'left',
+      width: 300,
+      ellipsis: true,
     },
     {
       title: '服务地址',
@@ -52,6 +55,7 @@ const Opcua = () => {
       title: '状态',
       dataIndex: 'state',
       valueType: 'select',
+      width: 100,
       renderText: (state) => (
         <Badge text={state?.text} status={state?.value === 'disabled' ? 'error' : 'success'} />
       ),
@@ -77,6 +81,7 @@ const Opcua = () => {
       title: '操作',
       valueType: 'option',
       align: 'center',
+      fixed: 'right',
       width: 200,
       render: (text, record) => [
         <PermissionButton
@@ -243,6 +248,7 @@ const Opcua = () => {
       <ProTable<OpaUa>
         actionRef={actionRef}
         params={param}
+        scroll={{ x: 1366 }}
         columns={columns}
         rowKey="id"
         search={false}

+ 3 - 0
src/pages/link/Protocol/index.tsx

@@ -43,6 +43,7 @@ const Protocol = () => {
       title: 'ID',
       sorter: true,
       ellipsis: true,
+      fixed: 'left',
       defaultSortOrder: 'ascend',
     },
     {
@@ -87,6 +88,7 @@ const Protocol = () => {
         defaultMessage: '操作',
       }),
       valueType: 'option',
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           isPermission={permission.update}
@@ -183,6 +185,7 @@ const Protocol = () => {
       <ProTableCard<ProtocolItem>
         columns={columns}
         actionRef={actionRef}
+        scroll={{ x: 1366 }}
         params={searchParams}
         options={{ fullScreen: true }}
         request={(params) =>

+ 5 - 0
src/pages/link/Type/index.tsx

@@ -49,6 +49,8 @@ const Network = () => {
   const columns: ProColumns<NetworkItem>[] = [
     {
       dataIndex: 'name',
+      fixed: 'left',
+      ellipsis: true,
       title: intl.formatMessage({
         id: 'pages.table.name',
         defaultMessage: '名称',
@@ -88,6 +90,7 @@ const Network = () => {
     {
       dataIndex: 'configuration',
       title: '详情',
+      ellipsis: true,
       renderText: (text, record) => {
         if (record.shareCluster) {
           const publicHost = record.configuration.publicHost;
@@ -149,6 +152,7 @@ const Network = () => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           type="link"
@@ -241,6 +245,7 @@ const Network = () => {
         actionRef={actionRef}
         params={param}
         columns={columns}
+        scroll={{ x: 1366 }}
         search={false}
         headerTitle={
           <PermissionButton

+ 4 - 0
src/pages/media/Cascade/Channel/BindChannel/index.tsx

@@ -43,18 +43,22 @@ const BindChannel = (props: Props) => {
     {
       dataIndex: 'deviceName',
       title: '设备名称',
+      ellipsis: true,
     },
     {
       dataIndex: 'name',
       title: '通道名称',
+      ellipsis: true,
     },
     {
       dataIndex: 'address',
       title: '安装地址',
+      ellipsis: true,
     },
     {
       dataIndex: 'manufacturer',
       title: '厂商',
+      ellipsis: true,
     },
     {
       dataIndex: 'status',

+ 8 - 0
src/pages/media/Cascade/Channel/index.tsx

@@ -75,14 +75,18 @@ const Channel = () => {
     {
       dataIndex: 'deviceName',
       title: '设备名称',
+      ellipsis: true,
+      fixed: 'left',
     },
     {
       dataIndex: 'name',
       title: '通道名称',
+      ellipsis: true,
     },
     {
       dataIndex: 'gbChannelId',
       title: '国标ID',
+      // ellipsis:true,
       tooltip: '国标级联有18位、20位两种格式。在当前页面修改不会修改视频设备-通道页面中的国标ID',
       render: (text: any, record: any) => (
         <span>
@@ -126,10 +130,12 @@ const Channel = () => {
     {
       dataIndex: 'address',
       title: '安装地址',
+      ellipsis: true,
     },
     {
       dataIndex: 'manufacturer',
       title: '厂商',
+      ellipsis: true,
     },
     {
       dataIndex: 'status',
@@ -161,6 +167,7 @@ const Channel = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text: any, record: any) => [
         <PermissionButton
           isPermission={permission.channel}
@@ -196,6 +203,7 @@ const Channel = () => {
         actionRef={actionRef}
         params={param}
         columns={columns}
+        scroll={{ x: 1366 }}
         search={false}
         headerTitle={'通道列表'}
         request={async (params) => {

+ 6 - 0
src/pages/media/Cascade/index.tsx

@@ -128,6 +128,8 @@ const Cascade = () => {
   const columns: ProColumns<CascadeItem>[] = [
     {
       dataIndex: 'name',
+      ellipsis: true,
+      fixed: 'left',
       title: intl.formatMessage({
         id: 'pages.table.name',
         defaultMessage: '名称',
@@ -142,6 +144,7 @@ const Cascade = () => {
     {
       dataIndex: 'sipConfigs[0].publicHost',
       title: '上级SIP 地址',
+      ellipsis: true,
       hideInSearch: true,
       render: (text: any, record: any) => record.sipConfigs[0].publicHost,
     },
@@ -200,6 +203,8 @@ const Cascade = () => {
         id: 'pages.data.option',
         defaultMessage: '操作',
       }),
+      ellipsis: true,
+      fixed: 'right',
       valueType: 'option',
       align: 'center',
       render: (text, record) => [
@@ -319,6 +324,7 @@ const Cascade = () => {
         columns={columns}
         actionRef={actionRef}
         params={searchParams}
+        scroll={{ x: 1366 }}
         options={{ fullScreen: true }}
         request={async (params = {}) => {
           return await lastValueFrom(

+ 4 - 0
src/pages/media/Device/Channel/index.tsx

@@ -73,6 +73,7 @@ export default () => {
       dataIndex: 'channelId',
       title: '通道ID',
       width: 220,
+      ellipsis: true,
     },
     {
       dataIndex: 'name',
@@ -81,6 +82,7 @@ export default () => {
         defaultMessage: '名称',
       }),
       width: 220,
+      ellipsis: true,
     },
     {
       dataIndex: 'manufacturer',
@@ -93,6 +95,7 @@ export default () => {
     {
       dataIndex: 'address',
       title: '安装地址',
+      ellipsis: true,
     },
     {
       dataIndex: 'state',
@@ -230,6 +233,7 @@ export default () => {
           <ProTable<ChannelItem>
             columns={columns}
             actionRef={actionRef}
+            // scroll={{x:1366}}
             options={{ fullScreen: true }}
             params={queryParam}
             defaultParams={[

+ 6 - 0
src/pages/media/Device/index.tsx

@@ -90,9 +90,12 @@ const Device = () => {
     {
       dataIndex: 'id',
       title: 'ID',
+      ellipsis: true,
+      fixed: 'left',
     },
     {
       dataIndex: 'name',
+      ellipsis: true,
       title: intl.formatMessage({
         id: 'pages.table.name',
         defaultMessage: '名称',
@@ -128,6 +131,7 @@ const Device = () => {
     },
     {
       dataIndex: 'manufacturer',
+      ellipsis: true,
       title: intl.formatMessage({
         id: 'pages.media.device.manufacturer',
         defaultMessage: '设备厂家',
@@ -191,6 +195,7 @@ const Device = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key="edit"
@@ -299,6 +304,7 @@ const Device = () => {
         actionRef={actionRef}
         options={{ fullScreen: true }}
         params={queryParam}
+        scroll={{ x: 1366 }}
         request={(params = {}) =>
           service.query({
             ...params,

+ 1 - 0
src/pages/notice/Config/Log/index.tsx

@@ -15,6 +15,7 @@ const Log = observer(() => {
     {
       dataIndex: 'id',
       title: 'ID',
+      ellipsis: true,
     },
     {
       dataIndex: 'notifyTime',

+ 4 - 0
src/pages/notice/Config/index.tsx

@@ -55,6 +55,8 @@ const Config = observer(() => {
       dataIndex: 'name',
       title: '配置名称',
       ellipsis: true,
+      fixed: 'left',
+      width: '25%',
     },
     {
       dataIndex: 'provider',
@@ -74,6 +76,7 @@ const Config = observer(() => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         (id === 'dingTalk' || id === 'weixin') && (
           <PermissionButton
@@ -211,6 +214,7 @@ const Config = observer(() => {
         search={false}
         params={param}
         columns={columns}
+        scroll={{ x: 1366 }}
         headerTitle={
           <Space>
             <PermissionButton

+ 4 - 0
src/pages/notice/Template/index.tsx

@@ -99,6 +99,8 @@ const Template = observer(() => {
       dataIndex: 'name',
       title: '模版名称',
       ellipsis: true,
+      fixed: 'left',
+      width: '25%',
     },
     {
       dataIndex: 'provider',
@@ -120,6 +122,7 @@ const Template = observer(() => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key="edit"
@@ -226,6 +229,7 @@ const Template = observer(() => {
         rowKey="id"
         search={false}
         params={param}
+        scroll={{ x: 1366 }}
         columns={columns}
         headerTitle={
           <Space>

+ 3 - 0
src/pages/rule-engine/Alarm/Configuration/index.tsx

@@ -36,6 +36,7 @@ const Configuration = () => {
       dataIndex: 'name',
       title: '名称',
       ellipsis: true,
+      fixed: 'left',
     },
     {
       title: '类型',
@@ -99,6 +100,7 @@ const Configuration = () => {
       title: '操作',
       valueType: 'option',
       align: 'center',
+      fixed: 'right',
       render: (_, record) => [
         record.sceneTriggerType === 'manual' && (
           <PermissionButton
@@ -227,6 +229,7 @@ const Configuration = () => {
         actionRef={actionRef}
         rowKey="id"
         search={false}
+        scroll={{ x: 1366 }}
         params={param}
         columns={columns}
         request={(params) =>

+ 3 - 0
src/pages/rule-engine/Alarm/Log/Detail/index.tsx

@@ -41,6 +41,7 @@ const Detail = observer(() => {
       dataIndex: 'alarmTime',
       title: '告警时间',
       valueType: 'dateTime',
+      fixed: 'left',
       render: (text: any, record: any) => (
         <span>{moment(record.alarmTime).format('YYYY-MM-DD HH:mm:ss')}</span>
       ),
@@ -60,6 +61,7 @@ const Detail = observer(() => {
       title: '操作',
       hideInSearch: true,
       valueType: 'option',
+      fixed: 'right',
       render: (_: any, record: any) => (
         <Button type="link">
           <SearchOutlined
@@ -116,6 +118,7 @@ const Detail = observer(() => {
         params={param}
         columns={AlarmLogModel.columns}
         search={false}
+        scroll={{ x: 1366 }}
         headerTitle={'记录列表'}
         request={async (data) => {
           return service.queryHistoryList({

+ 1 - 0
src/pages/rule-engine/Alarm/Log/SolveLog/index.tsx

@@ -67,6 +67,7 @@ const SolveLog = (props: Props) => {
     {
       dataIndex: 'description',
       title: '告警处理',
+      ellipsis: true,
     },
   ];
 

+ 3 - 0
src/pages/rule-engine/Instance/index.tsx

@@ -120,6 +120,7 @@ const Instance = () => {
         defaultMessage: '名称',
       }),
       ellipsis: true,
+      fixed: 'left',
     },
     {
       dataIndex: 'state',
@@ -159,6 +160,7 @@ const Instance = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           isPermission={permission.update}
@@ -274,6 +276,7 @@ const Instance = () => {
         columns={columns}
         actionRef={actionRef}
         params={searchParams}
+        scroll={{ x: 1366 }}
         options={{ fullScreen: true }}
         request={(params) =>
           service.query({

+ 7 - 2
src/pages/rule-engine/Scene/index.tsx

@@ -162,6 +162,9 @@ const Scene = () => {
   const columns: ProColumns<SceneItem>[] = [
     {
       dataIndex: 'name',
+      fixed: 'left',
+      ellipsis: true,
+      width: 300,
       title: intl.formatMessage({
         id: 'pages.table.name',
         defaultMessage: '名称',
@@ -173,7 +176,7 @@ const Scene = () => {
         id: 'pages.ruleEngine.scene.triggers',
         defaultMessage: '触发方式',
       }),
-      width: 120,
+      // width: 120,
       valueType: 'select',
       valueEnum: {
         manual: {
@@ -205,7 +208,7 @@ const Scene = () => {
         id: 'pages.searchTable.titleStatus',
         defaultMessage: '状态',
       }),
-      width: '90px',
+      // width: '90px',
       valueType: 'select',
       renderText: (record) =>
         record ? (
@@ -240,6 +243,7 @@ const Scene = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => Tools(record, 'table'),
     },
   ];
@@ -257,6 +261,7 @@ const Scene = () => {
       <ProTableCard<SceneItem>
         columns={columns}
         actionRef={actionRef}
+        scroll={{ x: 1366 }}
         params={searchParams}
         options={{ fullScreen: true }}
         request={(params) =>

+ 5 - 0
src/pages/system/DataSource/index.tsx

@@ -47,6 +47,8 @@ const DataSource = observer(() => {
       title: '名称',
       dataIndex: 'name',
       ellipsis: true,
+      fixed: 'left',
+      width: 250,
     },
     {
       title: '类型',
@@ -78,6 +80,7 @@ const DataSource = observer(() => {
       }),
       dataIndex: 'state',
       valueType: 'select',
+      width: 120,
       valueEnum: {
         enabled: {
           text: intl.formatMessage({
@@ -108,6 +111,7 @@ const DataSource = observer(() => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (_, record) => [
         <PermissionButton
           style={{ padding: 0 }}
@@ -228,6 +232,7 @@ const DataSource = observer(() => {
         columns={columns}
         search={false}
         rowKey="id"
+        scroll={{ x: 1366 }}
         headerTitle={
           <PermissionButton
             onClick={() => {

+ 6 - 0
src/pages/system/Menu/index.tsx

@@ -79,6 +79,7 @@ export default observer(() => {
       }),
       width: 300,
       dataIndex: 'code',
+      fixed: 'left',
     },
     {
       title: intl.formatMessage({
@@ -87,6 +88,7 @@ export default observer(() => {
       }),
       width: 220,
       dataIndex: 'name',
+      ellipsis: true,
     },
     {
       title: intl.formatMessage({
@@ -94,6 +96,7 @@ export default observer(() => {
         defaultMessage: '页面地址',
       }),
       dataIndex: 'url',
+      ellipsis: true,
     },
     {
       title: intl.formatMessage({
@@ -112,6 +115,7 @@ export default observer(() => {
       width: 200,
       dataIndex: 'describe',
       hideInSearch: true,
+      ellipsis: true,
     },
     {
       title: intl.formatMessage({
@@ -132,6 +136,7 @@ export default observer(() => {
       }),
       valueType: 'option',
       width: 240,
+      fixed: 'right',
       render: (_, record) => [
         <Button
           type="link"
@@ -246,6 +251,7 @@ export default observer(() => {
         columns={columns}
         actionRef={actionRef}
         rowKey="id"
+        scroll={{ x: 1366 }}
         pagination={false}
         search={false}
         params={param}

+ 5 - 0
src/pages/system/Permission/index.tsx

@@ -115,6 +115,8 @@ const Permission: React.FC = observer(() => {
       dataIndex: 'id',
       // copyable: true,
       ellipsis: true,
+      fixed: 'left',
+      width: '30%',
       // sorter: true,
       defaultSortOrder: 'ascend',
     },
@@ -133,6 +135,7 @@ const Permission: React.FC = observer(() => {
         defaultMessage: '状态',
       }),
       dataIndex: 'status',
+      // width:120,
       // filters: true,
       valueType: 'select',
       valueEnum: {
@@ -162,6 +165,7 @@ const Permission: React.FC = observer(() => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key="editable"
@@ -262,6 +266,7 @@ const Permission: React.FC = observer(() => {
         params={param}
         columns={columns}
         search={false}
+        scroll={{ x: 1366 }}
         headerTitle={
           <Space>
             <PermissionButton

+ 1 - 0
src/pages/system/Platforms/Api/basePage.tsx

@@ -142,6 +142,7 @@ export default (props: TableProps) => {
           {
             title: '说明',
             dataIndex: 'summary',
+            ellipsis: true,
           },
         ]}
         pagination={false}

+ 4 - 0
src/pages/system/Platforms/index.tsx

@@ -46,6 +46,7 @@ export default () => {
     {
       dataIndex: 'name',
       title: '名称',
+      fixed: 'left',
       ellipsis: true,
     },
     {
@@ -101,6 +102,7 @@ export default () => {
       }),
       hideInSearch: true,
       ellipsis: true,
+      // width:'20%'
     },
     {
       title: intl.formatMessage({
@@ -110,6 +112,7 @@ export default () => {
       valueType: 'option',
       align: 'center',
       width: 250,
+      fixed: 'right',
       render: (_, record: any) => [
         <PermissionButton
           key={'update'}
@@ -261,6 +264,7 @@ export default () => {
       />
       <ProTable
         rowKey="id"
+        scroll={{ x: 1366 }}
         search={false}
         params={param}
         columns={columns}

+ 4 - 0
src/pages/system/Relationship/index.tsx

@@ -25,6 +25,8 @@ const Relationship = () => {
       dataIndex: 'name',
       title: '名称',
       ellipsis: true,
+      fixed: 'left',
+      width: '20%',
     },
     {
       dataIndex: 'objectTypeName',
@@ -46,6 +48,7 @@ const Relationship = () => {
       valueType: 'option',
       align: 'center',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           isPermission={permission.update}
@@ -108,6 +111,7 @@ const Relationship = () => {
         columns={columns}
         search={false}
         rowKey="id"
+        scroll={{ x: 1366 }}
         request={async (params) => {
           return service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] });
         }}

+ 4 - 0
src/pages/system/Role/index.tsx

@@ -34,6 +34,8 @@ const Role: React.FC = observer(() => {
         defaultMessage: '标识',
       }),
       dataIndex: 'id',
+      fixed: 'left',
+      width: '25%',
       // copyable: true,
       ellipsis: true,
       // sorter: true,
@@ -85,6 +87,7 @@ const Role: React.FC = observer(() => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           key="editable"
@@ -213,6 +216,7 @@ const Role: React.FC = observer(() => {
         moduleName="role"
         columns={columns}
         service={service}
+        scroll={{ x: 1366 }}
         search={false}
         title={intl.formatMessage({
           id: 'pages.system.role',

+ 3 - 0
src/pages/system/User/index.tsx

@@ -42,6 +42,7 @@ const User = observer(() => {
         defaultMessage: '姓名',
       }),
       dataIndex: 'name',
+      fixed: 'left',
       // copyable: true,
       ellipsis: true,
       // tip: intl.formatMessage({
@@ -125,6 +126,7 @@ const User = observer(() => {
       }),
       valueType: 'option',
       width: 200,
+      fixed: 'right',
       render: (text, record) => [
         <PermissionButton
           style={{ padding: 0 }}
@@ -228,6 +230,7 @@ const User = observer(() => {
         actionRef={actionRef}
         params={param}
         columns={columns}
+        scroll={{ x: 1366 }}
         search={false}
         headerTitle={
           <PermissionButton