diff --git a/config/authRoutes.js b/config/authRoutes.js
index fe4803cb78c7c99f35f16ff0663838ca719e7bdb..e1089accfff0e96335f8769f49ec0b5d226acfe0 100644
--- a/config/authRoutes.js
+++ b/config/authRoutes.js
@@ -331,6 +331,12 @@ export default [
         icon: '',
         component: './lease/devicedata',
       },
+      {
+        name: '租赁合同',
+        path: '/lease/contract',
+        icon: '',
+        component: './lease/contract',
+      },
     ],
   },
 ];
diff --git a/src/components/AutoTable/mtable.jsx b/src/components/AutoTable/mtable.jsx
index 6a77d8b05f6414d4e30c2d5ef3511b42d73fad28..03ea077b1147ab0b30e33402d708ab30fcd120bf 100644
--- a/src/components/AutoTable/mtable.jsx
+++ b/src/components/AutoTable/mtable.jsx
@@ -43,6 +43,8 @@ const Mtable = (props) => {
     resizeable = false,
     dataSource,
     iscurrent = true,
+    toolBarRender = false,
+    dataSourceFieldsChange
   } = props;
   const actionRefs = actionRef ?? useRef(),
     formRefs = formRef ?? useRef(),
@@ -358,7 +360,7 @@ const Mtable = (props) => {
     }
     : {};
 
-  const datas = dataSource ? { dataSource, toolBarRender: false } : { request };
+  const datas = dataSource ? { dataSource, toolBarRender: toolBarRender == false ? false : () => { } } : { request };
   return (
     <ProTable
       {...props}
@@ -385,6 +387,7 @@ const Mtable = (props) => {
             ...newparams,
           }));
         }
+        dataSourceFieldsChange && dataSourceFieldsChange(params)
       }}
       onSizeChange={(size) => {
         localStorage.setItem('size', size); //设置全局表格规格缓存
diff --git a/src/components/DetailPro/index.jsx b/src/components/DetailPro/index.jsx
index 420a48feb88b7534090e0daf054d01da2c6178d5..2e66f61fead2a40c1b45bc42715c470da136838b 100644
--- a/src/components/DetailPro/index.jsx
+++ b/src/components/DetailPro/index.jsx
@@ -74,7 +74,7 @@ function DetailPro(props) {
             return (
               <>
                 <Col span={24}>
-                  <div className={styles.title} style={{ borderWidth: i == 0 ? 0 : 1 }}>
+                  <div className={styles.title} style={{ borderWidth: i == 0 ? 0 : 1, '--before': !(it.title || it?.render) ? 'none' : 'block', '--after': !(it.title || it?.render) ? '100%' : 'calc(100% - 160px)','--padb':!(it.title || it?.render) ? '20px' : '0' }}>
                     {it?.render ? it?.render?.(curitem[it.dataIndex], curitem) : it.title}
                   </div>
                 </Col>
diff --git a/src/components/DetailPro/index.less b/src/components/DetailPro/index.less
index c3ee7ed55518bdfba219ccdd47a9b852fe23fe84..3fc280b2c2b218606526b3bdb5f2e056a4600b3a 100644
--- a/src/components/DetailPro/index.less
+++ b/src/components/DetailPro/index.less
@@ -1,10 +1,13 @@
 @import '~antd/es/style/variable.less';
+
 .title {
   position: relative;
   width: 100%;
   padding-top: 8px;
   padding-left: 12px;
   font-weight: bolder;
+  padding-bottom: var(--padb);
+
   &::before {
     position: absolute;
     top: 11px;
@@ -14,15 +17,17 @@
     background-color: @primary-color;
     border-radius: 4px;
     content: '';
+    display: var(--before);
   }
+
   &::after {
     position: absolute;
     top: 18px;
     right: 0px;
-    width: calc(100% - 160px);
+    width: var(--after);
     height: 1px;
     border-bottom: 1px dotted rgba(0, 0, 0, 0.1);
     border-radius: 4px;
     content: '';
   }
-}
+}
\ No newline at end of file
diff --git a/src/components/InitForm/FormItems.jsx b/src/components/InitForm/FormItems.jsx
index 3e5d24cbac59a5f892aaf1779a562961b74e1418..ca2ed3b9eb8b304b1b6977f40963db1c85389342 100644
--- a/src/components/InitForm/FormItems.jsx
+++ b/src/components/InitForm/FormItems.jsx
@@ -336,14 +336,14 @@ function Textarea({ item, colProps }) {
 }
 
 //digit
-function Digit({ item, colProps }) {
+function Digit({ item, colProps, curindex = 0 }) {
   return (
     <>
       <ProFormDigit
         formItemProps={item.formItemProps}
         name={item?.key ?? item?.dataIndex}
         colProps={item.colProps ?? colProps}
-        label={item.title}
+        label={curindex == 0 ? item.title : ""}
         placeholder={`请输入${item.title}`}
         min={item.min}
         max={item.max}
diff --git a/src/components/InitForm/index.jsx b/src/components/InitForm/index.jsx
index 7c3a681c1f8b7b96040c7a0f2ee92b664a3e5b03..956e36361e7015a3164cd12276d0ab49e4195d7f 100644
--- a/src/components/InitForm/index.jsx
+++ b/src/components/InitForm/index.jsx
@@ -115,7 +115,7 @@ function InitForm(props) {
 
   function formartData(item, val) {
     let formartValue = val;
-    if (item.valueType == 'uploadBtn' || item.valueType == "uploadImage" || item.valueType == "uploadDragger") {
+    if (item?.valueType == 'uploadBtn' || item?.valueType == "uploadImage" || item?.valueType == "uploadDragger") {
       let stepval = val?.filter(it => {
         if (!it?.response) {
           return it;
diff --git a/src/global.less b/src/global.less
index f277ca96bd59331fa5b12fef903ff9351e738362..a635f524412e834198d41aef189d3fa6fad09798 100644
--- a/src/global.less
+++ b/src/global.less
@@ -566,4 +566,14 @@ ol {
       }
     }
   }
+}
+
+.ledgerf {
+  .ant-card-head {
+    display: none !important;
+  }
+
+  .ant-card-body {
+    padding: 0 !important;
+  }
 }
\ No newline at end of file
diff --git a/src/pages/device/account/index.jsx b/src/pages/device/account/index.jsx
index 8960640a7693d81b04b1f44c4016c4fc2c8c020a..802d59db4afbf5bea305bb88baae6d6ceaa2c466 100644
--- a/src/pages/device/account/index.jsx
+++ b/src/pages/device/account/index.jsx
@@ -712,7 +712,7 @@ function Model(props) {
           render: (text, row) => <Image width={70} src={row.qrCodeUrl} />,
         },
       ];
-      const [newfieldscolumns, setnewfieldscolumns] = useState(columns);
+      const [newfieldscolumns, setnewfieldscolumns] = useState([]);
       const selectValueType = (type, options) => {
         switch (type) {
           case 1:
@@ -741,25 +741,25 @@ function Model(props) {
       const [request, setrequest] = useState();
       useEffect(() => {
         const fn = async () => {
-            let res = await doFetch({
-              url: '/base/paFormField/queryList',
-              params: {
-                formId: '2',
-              },
-            });
-            if (res?.data?.dataList) {
-              let column = [];
-              res?.data?.dataList?.forEach?.((el) => {
-                column.push({
-                  ...selectValueType(el.fieldChar, el.valueList),
-                  title: el.fieldName,
-                  dataIndex: el.id,
-                  key: el.id,
-                });
+          let res = await doFetch({
+            url: '/base/paFormField/queryList',
+            params: {
+              formId: '2',
+            },
+          });
+          if (res?.data?.dataList) {
+            let column = [];
+            res?.data?.dataList?.forEach?.((el) => {
+              column.push({
+                ...selectValueType(el.fieldChar, el.valueList),
+                title: el.fieldName,
+                dataIndex: el.id,
+                key: el.id,
               });
-              setnewfieldscolumns(column);
-            }
-          },
+            });
+            setnewfieldscolumns(column);
+          }
+        },
           fn2 = async () => {
             const res = await doFetch({
               url: urlParams.detail,
diff --git a/src/pages/lease/contract/columns.js b/src/pages/lease/contract/columns.js
new file mode 100644
index 0000000000000000000000000000000000000000..7a30b5c7e87f0c94afb2af41762453845cc337c9
--- /dev/null
+++ b/src/pages/lease/contract/columns.js
@@ -0,0 +1,383 @@
+import { Tooltip, Image } from 'antd';
+import Filedetail from "@/components/Filedetail";
+function getcolumns(setdrawer, drawer) {
+    let common = [
+        {
+            title: '合同单号',
+            dataIndex: 'contractNo',
+            key: 'contractNo',
+            formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+            colProps: { span: 8 },
+        },
+        {
+            title: '客户',
+            dataIndex: 'customerName',
+            key: 'customerId',
+            colProps: { span: 8 },
+            formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+            valueType: 'select',
+            options: { path: '/lease/umLeaseCustomer/getSelection', params: {} },
+            fieldProps: {
+                showSearch: true
+            },
+        },
+        {
+            title: '合同金额(元)',
+            dataIndex: 'amount',
+            key: 'amount',
+            hideInSearch: true,
+            hideInForm: true,
+        },
+        {
+            title: '合同起租日',
+            dataIndex: 'startLeaseDate',
+            key: 'startLeaseDateList',
+            hideInForm: true,
+            valueType: 'dateRange'
+        },
+        {
+            title: '本期应收回款',
+            dataIndex: 'amount',
+            key: 'amount',
+            hideInSearch: true,
+            hideInForm: true,
+        },
+        {
+            title: '设备台数',
+            dataIndex: 'amount',
+            key: 'amount',
+            hideInSearch: true,
+            hideInForm: true,
+            render: (_, row) => {
+                return (
+                    <a
+                        className="table-cell"
+                        onClick={() => {
+                            // setdrawer && setdrawer((s) => ({
+                            //     ...s,
+                            //     open: true,
+                            //     item: row,
+                            //     val: 'only',
+                            //     title: '租赁设备'
+                            // }));
+                        }}
+                    >
+                        {row.amount}
+                    </a>
+                );
+            }
+        },
+        {
+            title: '去程运费',
+            dataIndex: 'tripFreight',
+            key: 'tripFreight',
+            colProps: { span: 8 },
+            valueType: 'digit',
+            hideInSearch: true,
+            hideInTable: true,
+            precision: 2
+        },
+        {
+            title: '去程运费承担方',
+            dataIndex: 'tripBear',
+            key: 'tripBear',
+            hideInSearch: true,
+            valueType: 'select',
+            options: [
+                { label: '客户', value: '1' },
+                { label: '平台', value: '2' },
+            ],
+            colProps: { span: 8 },
+            hideInTable: true,
+        },
+        {
+            title: '回款设置',
+            dataIndex: 'collectionSet',
+            key: 'collectionSet',
+            valueType: 'digit',
+            hideInSearch: true,
+            formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+            colProps: { span: 8 },
+            hideInTable: true
+        },
+        {
+            title: '预警设置',
+            dataIndex: 'warnSet',
+            key: 'warnSet',
+            hideInSearch: true,
+            formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+            colProps: { span: 8 },
+            valueType: 'digit',
+            hideInTable: true
+        },
+        {
+            title: '合同租期(月)',
+            dataIndex: 'tenancy',
+            key: 'tenancy',
+            formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+            colProps: { span: 8 },
+            hideInSearch: true,
+            valueType: 'digit',
+            hideInTable: true,
+        },
+        {
+            title: '租赁设备',
+            dataIndex: 'contractEquipmentList',
+            key: 'contractEquipmentList',
+            hideInSearch: true,
+            valueType: 'formList',
+            hideInTable: true,
+            initialValue: [
+                {
+                    state: 'all',
+                    title: '标题',
+                },
+            ],
+            colProps: {
+                xs: 24,
+                sm: 24,
+            },
+            columns: [
+                {
+                    title: '设备',
+                    dataIndex: 'equipmentName',
+                    key: 'equipmentId',
+                    valueType: 'select',
+                    fieldProps: {
+                        placeholder: '请选择',
+                        showSearch: true
+                    },
+                    formItemProps: {
+                        rules: [
+                            {
+                                required: true,
+                                message: '此项为必填项',
+                            },
+                        ],
+                    },
+                    colProps: {
+                        sm: 6,
+                    },
+                    options: {
+                        path: '/',
+                        params: {},
+                    },
+                },
+                {
+                    title: '每期单价(元)',
+                    dataIndex: 'unitPrice',
+                    key: 'unitPrice',
+                    valueType: 'digit',
+                    precision: 2,
+                    formItemProps: {
+                        rules: [
+                            {
+                                required: true,
+                                message: '此项为必填项',
+                            },
+                        ],
+                    },
+                    colProps: {
+                        sm: 3,
+                    },
+                },
+                {
+                    title: '智享价(元)',
+                    dataIndex: 'zxPrice',
+                    key: 'zxPrice',
+                    valueType: 'digit',
+                    precision: 2,
+                    formItemProps: {
+                        rules: [
+                            {
+                                required: true,
+                                message: '此项为必填项',
+                            },
+                        ],
+                    },
+                    colProps: {
+                        sm: 3,
+                    },
+                },
+                {
+                    title: '返利金额(元)',
+                    dataIndex: 'rebatePrice',
+                    key: 'rebatePrice',
+                    valueType: 'digit',
+                    precision: 2,
+                    formItemProps: {
+                        rules: [
+                            {
+                                required: true,
+                                message: '此项为必填项',
+                            },
+                        ],
+                    },
+                    colProps: {
+                        sm: 3,
+                    },
+                },
+                {
+                    title: '押金(元)',
+                    dataIndex: 'deposit',
+                    key: 'deposit',
+                    valueType: 'digit',
+                    precision: 2,
+                    formItemProps: {
+                        rules: [
+                            {
+                                required: true,
+                                message: '此项为必填项',
+                            },
+                        ],
+                    },
+                    colProps: {
+                        sm: 3,
+                    },
+                },
+                {
+                    title: '备注',
+                    dataIndex: 'remark',
+                    key: 'remark',
+                    colProps: {
+                        sm: 6,
+                    },
+                }
+            ],
+        },
+        {
+            title: '营销区域',
+            dataIndex: 'marketRegion',
+            key: 'marketRegion',
+            hideInSearch: true,
+            colProps: { span: 8 },
+            hideInTable: true,
+        },
+        {
+            title: '智享店',
+            dataIndex: 'zxstore',
+            key: 'zxstore',
+            colProps: { span: 8 },
+            hideInSearch: true,
+            hideInTable: true,
+        },
+        {
+            title: '登记日期',
+            dataIndex: 'registrationDate',
+            key: 'registrationDate',
+            colProps: { span: 8 },
+            hideInSearch: true,
+            hideInTable: true,
+            valueType: 'date',
+        },
+        {
+            title: '承接合同编号',
+            dataIndex: 'undertakingNo',
+            key: 'undertakingNo',
+            colProps: { span: 8 },
+            hideInSearch: true,
+            hideInTable: true,
+            valueType: 'select',
+            options: { path: '/', params: {} },
+        },
+        {
+            title: '合同负责人',
+            dataIndex: 'head',
+            key: 'head',
+            hideInSearch: true,
+            hideInTable: true,
+            colProps: { span: 8 },
+        },
+        {
+            title: '合同上传(最多5个)',
+            dataIndex: 'contractFileList',
+            key: 'contractFileList',
+            hideInSearch: true,
+            hideInTable: false,
+            valueType: 'uploadBtn',
+            span: 3,
+            fieldProps: {
+                limit: 5,
+            },
+            render: (_, row) => {
+                return <Filedetail files={drawer?.val == 'only' ? row?.['contractFileList'] : (row?.['contractFileList']?.[0] ?? [])} />
+            }
+        },
+    ];
+    return [
+        {
+            tab: '未完成',
+            key: '1',
+            columns: [
+                ...common,
+                {
+                    title: '状态',
+                    dataIndex: 'statusName',
+                    key: 'status',
+                    options: [
+                        {
+                            label: '未开始',
+                            value: 1
+                        }, {
+                            label: '进行中',
+                            value: 2
+                        }, {
+                            label: '已到期',
+                            value: 3
+                        }, {
+                            label: '待押金退还',
+                            value: 4
+                        },
+                    ],
+                    fieldProps: {
+                        dropdownMatchSelectWidth: 150,
+                    },
+                    valueType: 'select',
+                    hideInForm: true
+                },
+            ],
+            pathconfig: {
+                enableadd: true,
+                add: '/lease/umContract/save',
+                edit: '/lease/umContract/save',
+                list: '/lease/umContract/queryIncomplete',
+                delete: '/lease/umContract/deleteById',
+                detail: '/lease/umContract/queryDetail',
+            },
+        },
+        {
+            tab: '已完成',
+            key: '2',
+            columns: [
+                ...common,
+                {
+                    title: '状态',
+                    dataIndex: 'statusName',
+                    key: 'status',
+                    options: [
+                        {
+                            label: '正常完成',
+                            value: 5
+                        }, {
+                            label: '提前退租',
+                            value: 6
+                        },
+                    ],
+                    fieldProps: {
+                        dropdownMatchSelectWidth: 150,
+                    },
+                    valueType: 'select',
+                    hideInForm: true
+                },
+            ],
+            pathconfig: {
+                add: '',
+                edit: '',
+                list: '/lease/umContract/queryComplete',
+                delete: '',
+                detail: '/lease/umContract/queryDetail',
+            },
+        },
+    ];
+}
+export default getcolumns;
diff --git a/src/pages/lease/contract/index.jsx b/src/pages/lease/contract/index.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..c2f063fd021fe928782615401416cd50958353ba
--- /dev/null
+++ b/src/pages/lease/contract/index.jsx
@@ -0,0 +1,167 @@
+/* 故障报修
+ * @Author: Li Hanlin
+ * @Date: 2022-12-02 11:41:03
+ * @Last Modified by: Li Hanlin
+ * @Last Modified time: 2023-02-10 17:58:21
+ */
+
+import * as React from 'react';
+import { useState, useMemo, useRef } from 'react';
+import DrawerPro from '@/components/DrawerPro';
+import AutoTable from '@/components/AutoTable';
+import PremButton from '@/components/PremButton';
+import getcolumns from './columns';
+import { useRequest } from 'ahooks';
+import { doFetch } from '@/utils/doFetch';
+import Addform from '@/components/Addform';
+import Detail from '@/components/RepaireDetail/Detail';
+
+function Contract(props) {
+  let actionRef = useRef(),
+    formRef = useRef();
+  const [drawer, setdrawer] = useState({
+    open: false,
+  }),
+    [activeTabKey, setactiveTabKey] = useState('1');
+
+  const { run, loading } = useRequest(doFetch, {
+    manual: true,
+    onSuccess: (res, params) => {
+      if (res?.code == '0000') {
+        actionRef?.current?.reload();
+        setdrawer((s) => ({
+          ...s,
+          open: false,
+        }));
+      }
+    },
+  });
+
+  const edit = (text, row, _, action) => {
+    return (
+      <PremButton
+        btn={{
+          size: 'small',
+          onClick: () => {
+            setdrawer((s) => ({
+              ...s,
+              open: true,
+              item: row,
+              title: '编辑',
+              val: 'edit',
+            }));
+          },
+        }}
+      >
+        编辑
+      </PremButton>
+    );
+  };
+
+  const remove = (text, row, _, action) => {
+    if (row?.status == 1) {
+      return (
+        <PremButton
+          pop={{
+            title: '是否删除?',
+            okText: '确认',
+            cancelText: '取消',
+            onConfirm: () => {
+              run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } });
+            },
+          }}
+          btn={{
+            size: 'small',
+            type: 'danger',
+          }}
+        >
+          删除
+        </PremButton>
+      );
+    } else {
+      return <></>;
+    }
+  };
+
+  const columns = useMemo(() => {
+    let defcolumn = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.columns;
+    let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
+    if (activeTabKey == 1) {
+      return defcolumn.concat({
+        title: '操作',
+        valueType: 'option',
+        width: 150,
+        render: (text, row, _, action) => [],
+      });
+    } else {
+      return defcolumn;
+    }
+  }, [activeTabKey]);
+
+  const pathconfig = useMemo(() => {
+    let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
+    return defpath;
+  }, [activeTabKey]);
+  return (
+    <div style={{ position: 'relative' }}>
+      <AutoTable
+        pagetitle={<h3 className="page-title">租赁合同</h3>}
+        columns={columns}
+        path={pathconfig?.list}
+        actionRef={actionRef}
+        pageextra={pathconfig?.enableadd ? 'add' : null}
+        resizeable={false}
+        addconfig={{
+          // access: 'sysDepartment_save',
+          name: '新增',
+          btn: {
+            disabled: false,
+            type: 'primary',
+            onClick: () => {
+              setdrawer((s) => ({
+                ...s,
+                open: true,
+                item: {},
+                title: '新增',
+                val: 'add'
+              }));
+            },
+          },
+        }}
+        tabList={getcolumns()}
+        activeTabKey={activeTabKey}
+        onTabChange={(key) => {
+          setactiveTabKey(key);
+        }}
+      />
+
+      <DrawerPro
+        fields={columns}
+        detailpath={pathconfig?.detail || null}
+        detailData={drawer?.item}
+        defaultFormValue={drawer?.item}
+        params={{ id: drawer?.item?.id }}
+        formRef={formRef}
+        placement="right"
+        onClose={() => {
+          setdrawer((s) => ({
+            ...s,
+            open: false,
+          }));
+        }}
+        {...drawer}
+        onFinish={(vals) => {
+          if (drawer?.val == 'add') {
+            run({ url: pathconfig?.add || '/add', params: { ...vals } });
+          } else if (drawer?.val == 'edit') {
+            run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } });
+          }
+        }}
+      >
+        {/* {selectType(drawer?.val)} */}
+      </DrawerPro>
+    </div>
+  );
+}
+
+export default Contract;
diff --git a/src/pages/lease/custom/columns.js b/src/pages/lease/custom/columns.js
index 206ac640b1f67b0fd5684f83ecc6122ee995ea42..cd3acbf4035688c8840fa615f687a5d6f79eacb0 100644
--- a/src/pages/lease/custom/columns.js
+++ b/src/pages/lease/custom/columns.js
@@ -24,7 +24,7 @@ function getcolumns(setdrawer) {
                                 onClick={() => {
                                     setdrawer((s) => ({
                                         ...s,
-                                        visible: true,
+                                        open: true,
                                         item: row,
                                         val: 'detailaddon',
                                         title: '客户信息'
diff --git a/src/pages/lease/custom/index.jsx b/src/pages/lease/custom/index.jsx
index ca86bcc540fa23adc148cfac9073ef9bd0435996..3033c7bddabfd95516bf8580b66277ec914ccd59 100644
--- a/src/pages/lease/custom/index.jsx
+++ b/src/pages/lease/custom/index.jsx
@@ -8,7 +8,7 @@ import { useRequest } from "ahooks";
 const Custom = () => {
     let actionRef = useRef();
     const [drawer, setdrawer] = useState({
-        visible: false,
+        open: false,
     });
     const { run, loading, runAsync } = useRequest(doFetch, {
         manual: true,
@@ -17,7 +17,7 @@ const Custom = () => {
                 actionRef?.current?.reload();
                 setdrawer((s) => ({
                     ...s,
-                    visible: false,
+                    open: false,
                     item: {}
                 }));
             }
@@ -33,7 +33,7 @@ const Custom = () => {
                     onClick: () => {
                         setdrawer((s) => ({
                             ...s,
-                            visible: true,
+                            open: true,
                             item: row,
                             val: 'edit',
                             title: '编辑'
@@ -106,7 +106,7 @@ const Custom = () => {
                         // let res = await doFetch({url:})
                         setdrawer((s) => ({
                             ...s,
-                            visible: true,
+                            open: true,
                             item: {},
                             params: {},
                             title: '新增',
@@ -126,7 +126,7 @@ const Custom = () => {
             onClose={() => {
                 setdrawer((s) => ({
                     ...s,
-                    visible: false,
+                    open: false,
                 }));
             }}
             onFinish={async (vals) => {
diff --git a/src/pages/lease/devicedata/Account.jsx b/src/pages/lease/devicedata/Account.jsx
index 564504afae14d8cc490518c345049a03ec0f13c0..28181c40ebfafd18252c7e941968c93c3ace48af 100644
--- a/src/pages/lease/devicedata/Account.jsx
+++ b/src/pages/lease/devicedata/Account.jsx
@@ -31,7 +31,7 @@ import dayjs from 'dayjs';
 
 const { Sider, Content } = Layout;
 
-function Account(props) {
+function Account({ boxRef }) {
     const disabledDateOfDay = (current) => {
         // Can not select days before today and today
         return current && current > dayjs().endOf('day');
@@ -40,11 +40,11 @@ function Account(props) {
     let actionRef = useRef(),
         formRef = useRef(),
         [drawer, setDrawer] = useState({
-            visible: false,
+            open: false,
         }),
         [extraparams, setextraparams] = useState({}),
         [currDrawer, setCurrDrawer] = useState({
-            visible: false,
+            open: false,
         }),
         [resumeTab, setresumeTab] = useState(null),
         currfields = {
@@ -112,9 +112,9 @@ function Account(props) {
                     render: (text, row) => {
                         return (
                             <div>
-                                {row?.urlIds.map((it) => (
+                                {row?.urlIds.map((it, i) => (
                                     // eslint-disable-next-line react/jsx-key
-                                    <div style={{ marginBottom: '8px' }}>
+                                    <div style={{ marginBottom: '8px' }} key={i}>
                                         <a href={it?.url} download target="_blank" rel="noopener noreferrer">
                                             {it?.name}
                                         </a>
@@ -169,9 +169,9 @@ function Account(props) {
                     render: (text, row) => {
                         return (
                             <div>
-                                {row?.urlIds.map((it) => (
+                                {row?.urlIds.map((it, i) => (
                                     // eslint-disable-next-line react/jsx-key
-                                    <div style={{ marginBottom: '8px' }}>
+                                    <div style={{ marginBottom: '8px' }} key={i} >
                                         <a href={it?.url} download target="_blank" rel="noopener noreferrer">
                                             {it?.name}
                                         </a>
@@ -580,7 +580,7 @@ function Account(props) {
                     render: (text, row) => <Image width={70} src={row.qrCodeUrl} />,
                 },
             ];
-            const [newfieldscolumns, setnewfieldscolumns] = useState(columns);
+            const [newfieldscolumns, setnewfieldscolumns] = useState([]);
             const selectValueType = (type, options) => {
                 switch (type) {
                     case 1:
@@ -637,10 +637,6 @@ function Account(props) {
                         res?.data?.data['equipmentCharList']?.forEach?.((it) => {
                             obj[it?.fieldId] = it?.fieldRealValue;
                         });
-                        console.log('drawerpro:', {
-                            ...(res?.data?.data ?? {}),
-                            ...obj,
-                        });
                         setrequest(
                             {
                                 ...(res?.data?.data ?? {}),
@@ -1010,7 +1006,7 @@ function Account(props) {
                                             onClick={() => {
                                                 setCurrDrawer((s) => ({
                                                     ...s,
-                                                    visible: true,
+                                                    open: true,
                                                     item: row,
                                                     val: 'only',
                                                     title: `${row.logTypeName}详情`,
@@ -1067,7 +1063,6 @@ function Account(props) {
                     url: '/asset/equipment/children/selected/queryList',
                     params: { id: drawer?.item?.id },
                 });
-                // //console.log(result);
                 if (!result?.data?.dataList.length == 0) {
                     setSelectArr(result?.data?.dataList.map((it) => it.id));
                 }
@@ -1320,13 +1315,11 @@ function Account(props) {
                         selectedRowKeys: selectArr,
                         // defaultSelectedRowKeys: ,
                         onSelect: (record, selected, selectedRows, nativeEvent) => {
-                            //console.log('selectedRowKeys changed: ', record, selected, selectedRows);
                             setSelectArr(() => {
                                 return selectedRows.map((it) => it.id);
                             });
                         },
                         onSelectAll: (selected, selectedRows, changeRows) => {
-                            //console.log(selected, selectedRows, changeRows);
                             if (selected) {
                                 let arr = selectArr.concat(changeRows.map((it) => it.id));
                                 setSelectArr(arr);
@@ -1335,7 +1328,6 @@ function Account(props) {
                             }
                         },
                         onSelectNone: () => {
-                            //console.log(11);
                             setSelectArr([]);
                         },
                     }}
@@ -1343,10 +1335,9 @@ function Account(props) {
                 <Space style={{ marginTop: 16 }}>
                     <Button
                         onClick={() => {
-                            //console.log(drawer);
                             setDrawer((s) => ({
                                 ...s,
-                                visible: false,
+                                open: false,
                                 item: null,
                                 detailpath: null,
                                 params: null,
@@ -1361,7 +1352,6 @@ function Account(props) {
                     <Button
                         type="primary"
                         onClick={async () => {
-                            //console.log(selectArr);
                             let res = await doFetch({
                                 url: urlParams_childEquipment.save,
                                 params: {
@@ -1373,7 +1363,7 @@ function Account(props) {
                                 message.success('新增成功!');
                                 setDrawer((s) => ({
                                     ...s,
-                                    visible: false,
+                                    open: false,
                                     item: null,
                                 }));
                                 setSelectArr([]);
@@ -1398,7 +1388,6 @@ function Account(props) {
                     url: '/asset/equipment/children/selected/queryList',
                     params: { id: drawer?.item?.id },
                 });
-                // //console.log(result);
                 if (!result?.data?.dataList.length == 0) {
                     setSelectArr(result?.data?.dataList.map((it) => it.id));
                 }
@@ -1415,7 +1404,6 @@ function Account(props) {
         }, []);
 
         const menulist = useMemo(() => {
-            console.log(activeTab);
             const fields = {
                 1: [
                     {
@@ -1795,7 +1783,6 @@ function Account(props) {
                             fields={fields[activeTab]}
                             defaultFormValue={drawer?.item}
                             onFinish={async (vals) => {
-                                //console.log(vals);
                                 let res = await doFetch({
                                     url: urlParams_resume.save,
                                     params: { ...vals, type: '1', equipmentId: drawer?.item?.id },
@@ -1804,7 +1791,7 @@ function Account(props) {
                                     message.success('登记成功!');
                                     await setDrawer((s) => ({
                                         ...s,
-                                        visible: false,
+                                        open: false,
                                         item: null,
                                     }));
                                     actionRef.current.reload();
@@ -1829,7 +1816,7 @@ function Account(props) {
                                     message.success('登记成功!');
                                     await setDrawer((s) => ({
                                         ...s,
-                                        visible: false,
+                                        open: false,
                                         item: null,
                                     }));
                                     actionRef.current.reload();
@@ -1846,7 +1833,6 @@ function Account(props) {
                             fields={fields[activeTab]}
                             defaultFormValue={drawer?.item}
                             onFinish={async (vals) => {
-                                //console.log(vals);
                                 let res = await doFetch({
                                     url: urlParams_resume.save,
                                     params: { ...vals, type: '3', equipmentId: drawer?.item?.id },
@@ -1855,7 +1841,7 @@ function Account(props) {
                                     message.success('登记成功!');
                                     await setDrawer((s) => ({
                                         ...s,
-                                        visible: false,
+                                        open: false,
                                         item: null,
                                     }));
                                     actionRef.current.reload();
@@ -1872,7 +1858,6 @@ function Account(props) {
                             defaultFormValue={drawer?.item}
                             fields={fields[activeTab]}
                             onFinish={async (vals) => {
-                                //console.log(vals);
                                 let res = await doFetch({
                                     url: urlParams_resume.save,
                                     params: { ...vals, type: '4', equipmentId: drawer?.item?.id },
@@ -1881,7 +1866,7 @@ function Account(props) {
                                     message.success('登记成功!');
                                     await setDrawer((s) => ({
                                         ...s,
-                                        visible: false,
+                                        open: false,
                                         item: null,
                                     }));
                                     actionRef.current.reload();
@@ -1898,7 +1883,6 @@ function Account(props) {
                             fields={fields[activeTab]}
                             defaultFormValue={drawer?.item}
                             onFinish={async (vals) => {
-                                //console.log(vals);
                                 let res = await doFetch({
                                     url: urlParams_resume.save,
                                     params: { ...vals, type: '5', equipmentId: drawer?.item?.id },
@@ -1907,7 +1891,7 @@ function Account(props) {
                                     message.success('登记成功!');
                                     await setDrawer((s) => ({
                                         ...s,
-                                        visible: false,
+                                        open: false,
                                         item: null,
                                     }));
                                     actionRef.current.reload();
@@ -2012,14 +1996,14 @@ function Account(props) {
     };
 
     const columns = useMemo(() => {
-        let defcolumn = getcolumns(setDrawer);
+        let defcolumn = getcolumns(setDrawer)?.columns;
         defcolumn[1].render = (text, row) => {
             return (
                 <a
                     onClick={() => {
                         setDrawer((s) => ({
                             ...s,
-                            visible: true,
+                            open: true,
                             type: 'detail',
                             item: row,
                             val: 'only',
@@ -2045,7 +2029,7 @@ function Account(props) {
 
     const containderef = useRef();
     return (
-        <div style={{ position: 'relative' }}>
+        <div>
             <AutoTable
                 columns={columns}
                 path={urlParams.list}
@@ -2053,6 +2037,7 @@ function Account(props) {
                 resizeable={false}
                 x={1500}
                 extraparams={extraparams}
+                bordered={false}
             />
             <DrawerPro
                 fields={columns}
@@ -2061,15 +2046,16 @@ function Account(props) {
                 onClose={() => {
                     setDrawer((s) => ({
                         ...s,
-                        visible: false,
+                        open: false,
                     }));
                 }}
                 {...drawer}
                 colProps={{
                     span: 8,
                 }}
+                getContainer={() => boxRef.current}
             >
-                {drawer?.visible && selectMoreDrawerType(drawer?.type)}
+                {drawer?.open && selectMoreDrawerType(drawer?.type)}
             </DrawerPro>
 
             <DrawerPro
@@ -2078,7 +2064,7 @@ function Account(props) {
                     await setactiveTab(3);
                     await setCurrDrawer((s) => ({
                         ...s,
-                        visible: false,
+                        open: false,
                         item: null,
                     }));
                 }}
@@ -2086,6 +2072,7 @@ function Account(props) {
                 colProps={{
                     span: 8,
                 }}
+                getContainer={() => boxRef.current}
             >
                 <ProDescriptions
                     title="设备信息"
diff --git a/src/pages/lease/devicedata/Basemsg.jsx b/src/pages/lease/devicedata/Basemsg.jsx
index acb08b0fb65693cb61d7f4688c363680b8c0ca67..a3c0450bab60521fa955460fbb18acb718bf1ac3 100644
--- a/src/pages/lease/devicedata/Basemsg.jsx
+++ b/src/pages/lease/devicedata/Basemsg.jsx
@@ -1,8 +1,8 @@
 import React, { useMemo } from 'react';
 import DetailPro from '@/components/DetailPro';
 import getcolumns from './columns';
-
-const Basemsg = ({ drawer, activeKey }) => {
+import { doFetch } from '@/utils/doFetch';
+const Basemsg = ({ drawer, activeKey, setdrawer }) => {
     const columns = useMemo(() => {
         let defcolumn = [];
         if (activeKey == 'item-1') {
@@ -29,14 +29,13 @@ const Basemsg = ({ drawer, activeKey }) => {
     const detailData = useMemo(() => {
         let data = {};
         if (activeKey == 'item-1') {
-            doFetch({ url: '/asset/equipment/detail', params: { id: row.id } }).then(res => {
+            doFetch({ url: '/asset/equipment/detail', params: { id: drawer?.item?.id } }).then(res => {
                 if (res.code == '0000') {
                     data = res?.data?.data ?? {};
                 }
             })
         } else {
-
-            doFetch({ url: '/asset/equipment/detail', params: { id: row.id } }).then(res => {
+            doFetch({ url: '/asset/equipment/detail', params: { id: drawer?.item?.id } }).then(res => {
                 if (res.code == '0000') {
                     let obj = {};
                     res?.data?.data['equipmentCharList']?.forEach?.((it) => {
@@ -51,7 +50,7 @@ const Basemsg = ({ drawer, activeKey }) => {
     }, [activeKey]);
     return <DetailPro
         fields={columns}
-        detailpath="/"
+        detailData={detailData}
         params={{ id: drawer?.item?.id }}
     />
 }
diff --git a/src/pages/lease/devicedata/columns.js b/src/pages/lease/devicedata/columns.js
index 8be7173a287f33fca942a5bd4bc4406658eb7104..008aff731de29fe618c07c9ee3592f45117576ef 100644
--- a/src/pages/lease/devicedata/columns.js
+++ b/src/pages/lease/devicedata/columns.js
@@ -3,6 +3,10 @@ import { doFetch } from '@/utils/doFetch';
 function getcolumns(setdrawer, activeKey) {
     return activeKey == 'item-1' ? {
         columns: [
+            {
+                title: '设备信息',
+                valueType: 'split'
+            },
             {
                 title: '设备编号',
                 dataIndex: 'f1',
@@ -21,10 +25,10 @@ function getcolumns(setdrawer, activeKey) {
                         <Tooltip title={row.f2}>
                             <a
                                 className="table-cell"
-                                onClick={async () => {
+                                onClick={() => {
                                     setdrawer && setdrawer((s) => ({
                                         ...s,
-                                        visible: true,
+                                        open: true,
                                         item: row,
                                         val: 'only',
                                         title: '设备详情'
@@ -43,12 +47,40 @@ function getcolumns(setdrawer, activeKey) {
                 key: 'f3',
                 colProps: { span: 8 }
             },
+            {
+                title: '关联设备',
+                dataIndex: 'f18',
+                key: 'f18',
+                hideInForm: true,
+                colProps: { span: 8 }
+            },
             {
                 title: '设备品牌',
                 dataIndex: 'f4',
                 key: 'f4',
                 colProps: { span: 8 }
             },
+            {
+                title: '开始租赁日期',
+                dataIndex: 'f3',
+                key: 'f3',
+                valueType: 'dateRange',
+                hideInDescriptions: true,
+            },
+            {
+                title: '结束租赁日期',
+                dataIndex: 'f4',
+                key: 'f4',
+                valueType: 'dateRange',
+                hideInDescriptions: true,
+            },
+            {
+                title: '租赁合同单号',
+                dataIndex: 'f5',
+                key: 'f5',
+                valueType: 'dateRange',
+                hideInDescriptions: true,
+            },
             {
                 title: '设备型号',
                 dataIndex: 'f5',
@@ -58,6 +90,23 @@ function getcolumns(setdrawer, activeKey) {
                 options: { path: '/', params: {} },
                 colProps: { span: 8 }
             },
+            {
+                title: '设备类型',
+                dataIndex: 'f12',
+                key: 'f12',
+                formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+                hideInSearch: false,
+                valueType: 'select',
+                options: [
+                    { label: '设备', value: '1' },
+                    { label: '智能单元', value: '2' },
+                ],
+                colProps: { span: 8 }
+            },
+            {
+                title: '所属信息',
+                valueType: 'split'
+            },
             {
                 title: '公司名称',
                 dataIndex: 'f6',
@@ -139,6 +188,22 @@ function getcolumns(setdrawer, activeKey) {
                 },
                 colProps: { span: 8 }
             },
+            {
+                title: '关联客户',
+                dataIndex: 'f19',
+                key: 'f19',
+                hideInSearch: false,
+                hideInTable: false,
+                hideInForm: true,
+                valueType: 'select',
+                options: { path: '/', params: {} },
+                colProps: { span: 8 },
+                span: 3
+            },
+            {
+                title: '其他信息',
+                valueType: 'split'
+            },
             {
                 title: '供应商',
                 dataIndex: 'f13',
@@ -176,6 +241,7 @@ function getcolumns(setdrawer, activeKey) {
                 dataIndex: 'f21',
                 key: 'f21',
                 hideInSearch: true,
+                hideInForm: true,
                 render: (_, row) => {
                     return row.f21?.length && <Image src={row?.f21?.[0]?.url} />
                 }
@@ -185,25 +251,22 @@ function getcolumns(setdrawer, activeKey) {
                 dataIndex: 'f22',
                 key: 'f22',
                 hideInSearch: true,
+                hideInForm: true,
                 render: (_, row) => {
                     return row.f22?.length && <Image src={row?.f22?.[0]?.url} />
                 }
             },
             {
-                title: '经营状态',
+                title: '采集状态',
                 dataIndex: 'f20',
                 key: 'f20',
                 hideInForm: true,
                 valueType: 'select',
                 options: [
-                    { label: '闲置', value: '1' },
-                    { label: '预占', value: '2' },
-                    { label: '租赁', value: '3' },
-                    { label: '待复检', value: '4' },
-                    { label: '报废', value: '5' },
-                    { label: '未绑定', value: '6' },
-                    { label: '绑定', value: '7' },
-                    { label: '销售', value: '8' },
+                    { label: '工作', value: '1' },
+                    { label: '待机', value: '2' },
+                    { label: '报警', value: '3' },
+                    { label: '关机', value: '4' }
                 ],
                 fixed: 'right'
             },
diff --git a/src/pages/lease/devicedata/index.jsx b/src/pages/lease/devicedata/index.jsx
index 6ff1347410e5cf16ad47b495d32308aa971d2f94..c4043cf33d8e40ce16f5147172f953d67c56076d 100644
--- a/src/pages/lease/devicedata/index.jsx
+++ b/src/pages/lease/devicedata/index.jsx
@@ -11,13 +11,13 @@ import { Divider, Tabs, ProDescriptions } from "antd";
 import Account from "./Account";
 import Basemsg from "./Basemsg";
 const Devicedata = () => {
-    let actionRef = useRef();
+    let actionRef = useRef(), formRef = useRef(), boxRef = useRef();
     const [drawer, setdrawer] = useState({
-        visible: false,
+        open: false,
     }),
         [activeKey, catk] = useState('item-1'),
         [currDrawer, setCurrDrawer] = useState({
-            visible: false,
+            open: false,
         });
     const { run, loading, runAsync } = useRequest(doFetch, {
         manual: true,
@@ -26,7 +26,7 @@ const Devicedata = () => {
                 actionRef?.current?.reload();
                 setdrawer((s) => ({
                     ...s,
-                    visible: false,
+                    open: false,
                 }));
             }
         },
@@ -41,7 +41,7 @@ const Devicedata = () => {
         if (drawer.val == 'only') {
             if (activeKey == 'item-1') {
                 return [
-                    { label: '基础信息', key: 'item-1', children: <Basemsg drawer={drawer} activeKey={activeKey} /> }
+                    { label: '基础信息', key: 'item-1', children: <Basemsg drawer={drawer} activeKey={activeKey} setdrawer={setdrawer} /> }
                 ]
             }
         }
@@ -52,7 +52,6 @@ const Devicedata = () => {
                 label: '租赁设备',
                 key: 'item-1',
                 children: <AutoTable
-                    pagetitle={'设备列表'}
                     columns={columns}
                     path=''
                     actionRef={actionRef}
@@ -60,15 +59,20 @@ const Devicedata = () => {
                     dataSource={[{ 'f1': '111', 'f2': '222', id: 1, status: 1, f12: 1, intelligentUnit: '11' }]}
                     bordered={false}
                     x={1500}
+                    toolBarRender={true}
+                    formRef={formRef}
+                    dataSourceFieldsChange={(val) => {
+                        console.log(val);
+                    }}
                 />
             },
             {
                 label: '自主设备',
                 key: 'item-2',
-                children: <Account />
+                children: <Account boxRef={boxRef} />
             }
         ]
-    }, [columns]);
+    }, []);
     const onselecteTree = async (selectedKeys, e, alldata) => {
         // let params = {
         //   treeNodeType: e.node.type,
@@ -76,54 +80,9 @@ const Devicedata = () => {
         // };
         // setextraparams(params);
     };
-    const selectValueType = (type, options) => {
-        switch (type) {
-            case 1:
-                return {
-                    valueType: 'input',
-                };
-            case 2:
-                return {
-                    valueType: 'select',
-                    options,
-                };
-            case 3:
-                return {
-                    valueType: 'radio',
-                    options,
-                };
-            case 4:
-                return {
-                    valueType: 'select',
-                    options,
-                };
-            default:
-                break;
-        }
-    };
-    const fn2 = async () => {
-        const res = await doFetch({
-            url: urlParams.detail,
-            params: { id: drawer?.item?.id },
-        });
-        let obj = {};
-        res?.data?.data['equipmentCharList']?.forEach?.((it) => {
-            obj[it?.fieldId] = it?.fieldRealValue;
-        });
-        console.log('drawerpro:', {
-            ...(res?.data?.data ?? {}),
-            ...obj,
-        });
-        setrequest(
-            {
-                ...(res?.data?.data ?? {}),
-                ...obj,
-            } ?? {},
-        );
-    };
 
 
-    return <div className={styles.ledgerbox}>
+    return <div className={styles.ledgerbox} ref={boxRef}>
         <div className={styles.ledgerheader}>
             <div className="ant-card-head" style={{ backgroundColor: 'white' }}>
                 <div className="ant-card-head-wrapper">
@@ -137,7 +96,7 @@ const Devicedata = () => {
             <div className={styles.ledgerleft}>
                 <TreeRender url="/auth/sysFactory/getTree" onselected={onselecteTree} noaction={true} />
             </div>
-            <div className={styles.ledgerright}>
+            <div className={`${styles.ledgerright} ledgerf`}>
                 <Tabs activeKey={activeKey} onChange={(key) => {
                     catk(key);
                 }} items={tableItems} />
@@ -154,7 +113,7 @@ const Devicedata = () => {
             onClose={() => {
                 setdrawer((s) => ({
                     ...s,
-                    visible: false,
+                    open: false,
                 }));
             }}
         >
diff --git a/src/pages/lease/devicedata/index.less b/src/pages/lease/devicedata/index.less
index 18834f985b197516639fa56856ef20014bc63570..18602c6dcd7b166b120a12f9bf69d348bb5d8802 100644
--- a/src/pages/lease/devicedata/index.less
+++ b/src/pages/lease/devicedata/index.less
@@ -31,6 +31,7 @@
         }
 
         .ledgerright {
+            padding: 0 16px;
             flex: 1;
             border-left: 1px solid #f0f0f0;
             overflow: hidden;
diff --git a/src/pages/lease/ledger/columns.js b/src/pages/lease/ledger/columns.js
index fadb4b0320fdeec6caf2acfe9d1158d1c5631fae..6928fe3badfcc6380436ee071bc1d977d24c0cf7 100644
--- a/src/pages/lease/ledger/columns.js
+++ b/src/pages/lease/ledger/columns.js
@@ -2,35 +2,39 @@ import { Tooltip, Image } from 'antd';
 function getcolumns(setdrawer) {
     return {
         columns: [
+            {
+                title: '设备信息',
+                valueType: 'split'
+            },
             {
                 title: '设备编号',
-                dataIndex: 'f1',
-                key: 'f1',
+                dataIndex: 'equipmentNo',
+                key: 'equipmentNo',
                 formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
                 colProps: { span: 8 },
             },
             {
                 title: '设备名称',
-                dataIndex: 'f2',
-                key: 'f2',
+                dataIndex: 'equipmentName',
+                key: 'equipmentName',
                 formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
                 colProps: { span: 8 },
                 render: (_, row) => {
                     return (
-                        <Tooltip title={row.f2}>
+                        <Tooltip title={row.equipmentName}>
                             <a
                                 className="table-cell"
                                 onClick={() => {
                                     setdrawer && setdrawer((s) => ({
                                         ...s,
-                                        visible: true,
+                                        open: true,
                                         item: row,
                                         val: 'only',
                                         title: '设备详情'
                                     }));
                                 }}
                             >
-                                {row.f2}
+                                {row.equipmentName}
                             </a>
                         </Tooltip>
                     );
@@ -38,52 +42,68 @@ function getcolumns(setdrawer) {
             },
             {
                 title: '资产编号',
-                dataIndex: 'f3',
-                key: 'f3',
+                dataIndex: 'assetNumber',
+                key: 'assetNumber',
                 colProps: { span: 8 }
             },
             {
                 title: '关联设备',
-                dataIndex: 'f18',
-                key: 'f18',
+                dataIndex: 'ledgerEquipment',
+                key: 'ledgerEquipment',
                 hideInForm: true,
-                hideInDescriptions: true,
                 colProps: { span: 8 }
             },
             {
                 title: '设备品牌',
-                dataIndex: 'f4',
-                key: 'f4',
+                dataIndex: 'brand',
+                key: 'brand',
                 colProps: { span: 8 }
             },
             {
                 title: '设备型号',
-                dataIndex: 'f5',
-                key: 'f5',
+                dataIndex: 'equipmentModelName',
+                key: 'equipmentModelId',
+                formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+                valueType: 'select',
+                options: { path: '/asset/equipmentModel/query/selection', params: {} },
+                colProps: { span: 8 }
+            },
+            {
+                title: '设备类型',
+                dataIndex: 'equipmentTypeName',
+                key: 'equipmentType',
                 formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
+                hideInSearch: false,
                 valueType: 'select',
-                options: { path: '/', params: {} },
+                options: [
+                    { label: '设备', value: '1' },
+                    { label: '智能单元', value: '2' },
+                ],
                 colProps: { span: 8 }
             },
+            {
+                title: '所属信息',
+                valueType: 'split'
+            },
             {
                 title: '公司名称',
-                dataIndex: 'f6',
-                key: 'f6',
+                dataIndex: 'organizationName',
+                key: 'organizationId',
                 hideInSearch: true,
                 hideInTable: true,
                 valueType: 'select',
-                options: { path: '/', params: {} },
+                options: { path: '/auth/sysDepartment/query/organization/selectbox', params: {} },
                 colProps: { span: 8 }
             },
             {
                 title: '部门名称',
-                dataIndex: 'f7',
-                key: 'f7',
+                dataIndex: 'departmentName',
+                key: 'departmentId',
                 formItemProps: { rules: [{ required: false, message: '此项为必填项' }] },
                 hideInSearch: true,
                 hideInTable: true,
-                valueType: 'select',
-                options: { path: '/', linkParams: { f6: '' } },
+                valueType: 'treeSelect',
+                options: { path: '/auth/sysDepartment/query/children/tree', linkParams: { organizationId: '' } },
                 colProps: { span: 8 }
             },
             {
@@ -146,55 +166,46 @@ function getcolumns(setdrawer) {
                 },
                 colProps: { span: 8 }
             },
-            {
-                title: '设备类型',
-                dataIndex: 'f12',
-                key: 'f12',
-                formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
-                hideInSearch: false,
-                valueType: 'select',
-                options: [
-                    { label: '设备', value: '1' },
-                    { label: '智能单元', value: '2' },
-                ],
-                colProps: { span: 8 }
-            },
             {
                 title: '关联客户',
-                dataIndex: 'f19',
-                key: 'f19',
+                dataIndex: 'ledgerCustomer',
+                key: 'ledgerCustomer',
                 hideInSearch: false,
                 hideInTable: false,
                 hideInForm: true,
-                hideInDescriptions: true,
                 valueType: 'select',
-                options: { path: '/', params: {} },
-                colProps: { span: 8 }
+                options: { path: '/lease/umLeaseCustomer/getSelection', params: {} },
+                colProps: { span: 8 },
+                span: 3
+            },
+            {
+                title: '其他信息',
+                valueType: 'split'
             },
             {
                 title: '供应商',
-                dataIndex: 'f13',
-                key: 'f13',
+                dataIndex: 'supplierName',
+                key: 'supplierId',
                 valueType: 'select',
-                options: { path: '/', params: {} },
+                options: { path: '/lease/umEquipmentSupplier/getSelection', params: {} },
                 colProps: { span: 8 }
             },
             {
                 title: '保管单位',
-                dataIndex: 'f14',
-                key: 'f14',
+                dataIndex: 'custodyUnit',
+                key: 'custodyUnit',
                 colProps: { span: 8 }
             },
             {
                 title: '产权单位',
-                dataIndex: 'f15',
-                key: 'f15',
+                dataIndex: 'propertyUnit',
+                key: 'propertyUnit',
                 colProps: { span: 8 }
             },
             {
                 title: '上传图片',
-                dataIndex: 'f16',
-                key: 'f16',
+                dataIndex: 'picList',
+                key: 'picList',
                 hideInSearch: true,
                 hideInTable: true,
                 hideInDescriptions: true,
@@ -205,46 +216,49 @@ function getcolumns(setdrawer) {
             },
             {
                 title: '图片',
-                dataIndex: 'f21',
-                key: 'f21',
+                dataIndex: 'imageUrl',
+                key: 'imageUrl',
                 hideInSearch: true,
+                hideInForm: true,
                 render: (_, row) => {
-                    return row.f21?.length && <Image src={row?.f21?.[0]?.url} />
+                    return <Image src={row?.imageUrl} />
                 }
             },
             {
                 title: '二维码',
-                dataIndex: 'f22',
-                key: 'f22',
+                dataIndex: 'qrCodeUrl',
+                key: 'qrCodeUrl',
                 hideInSearch: true,
+                hideInForm: true,
                 render: (_, row) => {
-                    return row.f22?.length && <Image src={row?.f22?.[0]?.url} />
+                    return <Image src={row?.qrCodeUrl} />
                 }
             },
             {
                 title: '经营状态',
-                dataIndex: 'f20',
-                key: 'f20',
+                dataIndex: 'statusName',
+                key: 'status',
                 hideInForm: true,
                 valueType: 'select',
                 options: [
-                    { label: '闲置', value: '1' },
-                    { label: '预占', value: '2' },
-                    { label: '租赁', value: '3' },
-                    { label: '待复检', value: '4' },
-                    { label: '报废', value: '5' },
+                    { label: '报废', value: '0' },
+                    { label: '预占', value: '1' },
+                    { label: '租赁', value: '2' },
+                    { label: '销售', value: '3' },
+                    { label: '闲置', value: '4' },
+                    { label: '待复检', value: '5' },
                     { label: '未绑定', value: '6' },
                     { label: '绑定', value: '7' },
-                    { label: '销售', value: '8' },
                 ],
                 fixed: 'right'
             },
         ],
         pathconfig: {
-            add: '',
-            edit: '',
-            list: '',
-            delete: '',
+            add: '/lease/umLeaseLedger/save',
+            edit: '/lease/umLeaseLedger/save',
+            list: '/lease/umLeaseLedger/queryList',
+            delete: '/lease/umLeaseLedger/deleteById',
+            detail: '/lease/umLeaseLedger/queryById'
         },
     };
 }
diff --git a/src/pages/lease/ledger/index.jsx b/src/pages/lease/ledger/index.jsx
index ec014fba4523bdadee0d62b6f243bbaad5926cbb..445e6b3fb603a45a632450d8563e18c110098059 100644
--- a/src/pages/lease/ledger/index.jsx
+++ b/src/pages/lease/ledger/index.jsx
@@ -4,7 +4,7 @@ import AutoTable from '@/components/AutoTable';
 import PremButton from '@/components/PremButton';
 import getcolumns from './columns';
 import { doFetch } from '@/utils/doFetch';
-import { useRequest } from "ahooks";
+import { useRequest, useAsyncEffect } from "ahooks";
 import styles from "./index.less";
 import TreeRender from '@/components/TreeRender';
 import { Divider, Tabs } from "antd";
@@ -15,8 +15,14 @@ import Basemsg from "./Basemsg";
 const Ledger = () => {
     let actionRef = useRef();
     const [drawer, setdrawer] = useState({
-        visible: false,
-    });
+        open: false,
+    }),
+        [defaultmsg, cds] = useState({
+            supplier: {},
+            factory: {}
+        }),
+        [node, cnode] = useState({}),
+        [extraparams, setextraparams] = useState({});
     const { run, loading, runAsync } = useRequest(doFetch, {
         manual: true,
         onSuccess: (res, params) => {
@@ -24,7 +30,7 @@ const Ledger = () => {
                 actionRef?.current?.reload();
                 setdrawer((s) => ({
                     ...s,
-                    visible: false,
+                    open: false,
                 }));
             }
         },
@@ -45,36 +51,49 @@ const Ledger = () => {
         let pathconf = getcolumns(setdrawer)?.pathconfig ?? {};
         return pathconf;
     }, []);
+    useAsyncEffect(async () => {
+        let res = await doFetch({ url: "/lease/umEquipmentSupplier/queryByDefault", params: {} }),
+            res2 = await doFetch({ url: "/auth/sysFactory/queryByDefault", params: {} });
+        cds({
+            supplier: res?.data?.data ?? {},
+            factory: res2?.data?.data ?? {}
+        });
+    }, [])
+
 
     const onselecteTree = async (selectedKeys, e, alldata) => {
-        // let params = {
-        //   treeNodeType: e.node.type,
-        //   treeNodeKey: e.node.key,
-        // };
-        // setextraparams(params);
+        let params = {};
+        switch (e.node.type) {
+            case 1:
+                params = { factoryId: e.node.key }
+                break;
+            case 2:
+                params = { shopId: e.node.key }
+                break;
+            case 3:
+                params = { sectionId: e.node.key }
+                break;
+            case 4:
+                params = { productionLineId: e.node.key }
+                break;
+            default:
+                params = {};
+        }
+        setextraparams(params);
     };
     const getExtra = (text, row, _, action) => {
-        /**
-         * 1:闲置
-         * 2:预占
-         * 3:租赁
-         * 4:待复检
-         * 5:报废
-         * 6:未绑定
-         * 7:绑定
-         * 8:销售
-         */
-        let ifs = row.status == 1,
-            ifsa = row.status == 2,
-            ifsb = row.status == 3,
-            ifsc = row.status == 4,
-            ifsd = row.status == 5,
+        //0: 报废 1: 预占 2: 租赁 3: 销售 4: 闲置 5:待复检 6: 未绑定 7: 绑定
+        let ifsd = row.status == 0,
+            ifsa = row.status == 1,
+            ifsb = row.status == 2,
+            ifsg = row.status == 3,
+            ifs = row.status == 4,
+            ifsc = row.status == 5,
             ifse = row.status == 6,
             ifsf = row.status == 7,
-            ifsg = row.status == 8,
-            devicetype1 = row.f12 == 1,
-            devicetype2 = row.f12 == 2,
-            intelligentUnit = row.intelligentUnit;
+            devicetype1 = row.equipmentType == 1,
+            devicetype2 = row.equipmentType == 2,
+            intelligentUnit = row.ledgerEquipment;
 
         return [
             (ifs || ifse || ifsd) && <PremButton
@@ -84,7 +103,7 @@ const Ledger = () => {
                     onClick: () => {
                         setdrawer((s) => ({
                             ...s,
-                            visible: true,
+                            open: true,
                             item: row,
                             val: 'edit',
                             title: '编辑'
@@ -197,7 +216,7 @@ const Ledger = () => {
     }
     const items = useMemo(() => {
         if (drawer.val == 'only') {
-            if (drawer.item.f12 == 1) {
+            if (drawer.item.equipmentType == 1) {
                 return [
                     { label: '基础信息', key: 'item-1', children: <Basemsg drawer={drawer} /> },
                     { label: '绑定履历', key: 'item-2', children: <Resume drawer={drawer} /> },
@@ -222,9 +241,13 @@ const Ledger = () => {
                     onClick: () => {
                         setdrawer((s) => ({
                             ...s,
-                            visible: true,
+                            open: true,
                             val: 'add',
-                            title: '新增'
+                            title: '新增',
+                            item: {
+                                factoryName: defaultmsg?.factory?.factoryName,
+                                supplierId: defaultmsg?.supplier?.id
+                            }
                         }));
                     }
                 }}
@@ -291,10 +314,10 @@ const Ledger = () => {
                     path={pathconfig?.list}
                     actionRef={actionRef}
                     resizeable={false}
-                    dataSource={[{ 'f1': '111', 'f2': '222', id: 1, status: 1, f12: 1, intelligentUnit: '11' }]}
                     pageextra={rightExtra}
                     bordered={false}
                     x={1500}
+                    extraparams={extraparams}
                 />
             </div>
         </div>
@@ -310,7 +333,7 @@ const Ledger = () => {
             onClose={() => {
                 setdrawer((s) => ({
                     ...s,
-                    visible: false,
+                    open: false,
                 }));
             }}
             onFinish={async (vals) => {
diff --git a/src/pages/lease/supplier/index.jsx b/src/pages/lease/supplier/index.jsx
index bae166fc73ead7cfcf794bb4dce77ddb5a246689..e0475ce41b5fbddf037f0cc16d7a76c630270d3a 100644
--- a/src/pages/lease/supplier/index.jsx
+++ b/src/pages/lease/supplier/index.jsx
@@ -22,6 +22,187 @@ const urlParams = {
   list: '/lease/umEquipmentSupplier/queryList',
   detail: '/lease/umEquipmentSupplier/queryById'
 };
+const detailcolumns = [
+  {
+    title: '供应商编号',
+    dataIndex: 'supplierNo',
+    key: 'supplierNo',
+  },
+  {
+    title: '供应商名称',
+    dataIndex: 'supplierName',
+    key: 'supplierName',
+  },
+  {
+    title: '纳税人识别号',
+    dataIndex: 'taxpayerIdentificationNumber',
+    key: 'taxpayerIdentificationNumber'
+  },
+  { title: '公司官网', dataIndex: 'companyWebsite', key: 'companyWebsite' },
+  {
+    title: '联系电话',
+    dataIndex: 'phone',
+    key: 'phone',
+  },
+  {
+    title: '公司邮箱',
+    dataIndex: 'companyEmail',
+    key: 'companyEmail',
+  },
+  {
+    title: '地址',
+    dataIndex: 'address',
+    key: 'address',
+  },
+  {
+    title: '状态',
+    dataIndex: 'statusName',
+    key: 'status',
+  },
+  {
+    title: '评分',
+    dataIndex: 'score',
+    key: 'score',
+  },
+  {
+    title: '备注',
+    dataIndex: 'remark',
+    key: 'remark',
+  },
+];
+
+
+const Details = ({ drawer }) => {
+  const [newfieldscolumns, setnewfieldscolumns] = useState([]);
+  const [request, setrequest] = useState();
+  const selectValueType = (type, options) => {
+    switch (type) {
+      case 1:
+        return {
+          valueType: 'input',
+        };
+      case 2:
+        return {
+          valueType: 'select',
+          options,
+        };
+      case 3:
+        return {
+          valueType: 'radio',
+          options,
+        };
+      case 4:
+        return {
+          valueType: 'select',
+          options,
+        };
+      default:
+        break;
+    }
+  };
+
+  useEffect(() => {
+    fn();
+    fn2();
+  }, []);
+  const fn = async () => {
+    let res = await doFetch({
+      url: '/base/paFormField/queryList',
+      params: {
+        formId: '3',
+      },
+    });
+    if (res?.data?.dataList) {
+      let column = [];
+      res?.data?.dataList?.forEach?.((el) => {
+        column.push({
+          ...selectValueType(el.fieldChar, el.valueList),
+          title: el.fieldName,
+          dataIndex: el.id,
+          key: el.id,
+        });
+      });
+      setnewfieldscolumns(column);
+    }
+  },
+    fn2 = async () => {
+      const res = await doFetch({
+        url: urlParams.detail,
+        params: { id: drawer?.item?.id },
+      });
+      let obj = {};
+      res?.data?.data['equipmentSupplierCharList']?.forEach?.((it) => {
+        obj[it?.fieldId] = it?.fieldRealValue;
+      });
+      setrequest(
+        {
+          ...(res?.data?.data ?? {}),
+          ...obj,
+        } ?? {},
+      );
+    };
+  return (
+    <>
+      <ProDescriptions dataSource={request} columns={detailcolumns} />
+      <AutoTable
+        pagetitle="联系信息"
+        columns={[
+          {
+            title: '联系人',
+            dataIndex: 'contactsName',
+            key: 'contactsName',
+            search: false,
+            formItemProps: {
+              rules: [
+                {
+                  required: true,
+                  message: '此项为必填项',
+                },
+              ],
+            },
+          },
+          {
+            title: '手机号码',
+            search: false,
+            dataIndex: 'mobilePhone',
+            key: 'mobilePhone',
+          },
+          {
+            title: '邮箱',
+            search: false,
+            dataIndex: 'email',
+            key: 'email',
+          },
+          {
+            title: '职务',
+            search: false,
+            dataIndex: 'postName',
+            key: 'postName',
+            fieldProps: {
+              placeholder: '请选择',
+            },
+            formItemProps: {
+              rules: [
+                {
+                  required: false,
+                  message: '此项为必填项',
+                },
+              ],
+            },
+          },
+        ]}
+        dataSource={request?.supplierContactsList}
+        resizeable={false}
+        pagination={false}
+      />
+      <Divider />
+      <h3 className="page-title" style={{ marginBottom: 16 }}>
+        扩展字段
+      </h3>
+      <ProDescriptions dataSource={request} columns={newfieldscolumns} />
+    </>
+  );
+};
 function Supplier(props) {
   let actionRef = useRef(),
     formRef = useRef();
@@ -31,6 +212,7 @@ function Supplier(props) {
   const edit = (text, row, _, action) => {
     return (
       <PremButton
+        key='edit'
         btn={{
           size: 'small',
           onClick: () => {
@@ -42,39 +224,7 @@ function Supplier(props) {
               title: '编辑',
               val: 'only',
               type: 'edit',
-              item: row,
-              // onFinish: async (vals) => {
-              //   let equipmentSupplierCharReqList = [];
-              //   //console.log('id:', row.id);
-              //   for (let i in vals) {
-              //     if (!isNaN(Number(i))) {
-              //       equipmentSupplierCharReqList.push({
-              //         fieldId: i,
-              //         fieldRealValue: vals[i],
-              //       });
-              //       delete vals[i];
-              //     }
-              //   }
-              //   let params = {
-              //     ...vals,
-              //     id: row?.id,
-              //     shopIdList: vals.shopId,
-              //     equipmentSupplierCharReqList,
-              //   };
-              //   delete params.shopId;
-              //   let res = await doFetch({
-              //     url: urlParams.save,
-              //     params,
-              //   });
-              //   if (res.code === '0000') {
-              //     message.success('编辑成功!');
-              //     setDrawer((s) => ({
-              //       ...s,
-              //       visible: false,
-              //     }));
-              //     actionRef.current.reload();
-              //   }
-              // },
+              item: row
             }));
           },
         }}
@@ -87,6 +237,7 @@ function Supplier(props) {
   const remove = (text, row, _, action) => {
     return (
       <PremButton
+        key='remove'
         pop={{
           title: '是否删除该供应商?',
           okText: '确认',
@@ -94,7 +245,6 @@ function Supplier(props) {
           onConfirm: async () => {
             let res = await doFetch({ url: urlParams.remove, params: { id: row.id } });
             if (res.code === '0000') {
-              message.success('删除成功!');
               setDrawer((s) => ({
                 ...s,
                 visible: false,
@@ -112,187 +262,6 @@ function Supplier(props) {
       </PremButton>
     );
   };
-
-  const Details = () => {
-    const columns = [
-      {
-        title: '供应商编号',
-        dataIndex: 'supplierNo',
-        key: 'supplierNo',
-      },
-      {
-        title: '供应商名称',
-        dataIndex: 'supplierName',
-        key: 'supplierName',
-      },
-      {
-        title: '纳税人识别号',
-        dataIndex: 'taxpayerIdentificationNumber',
-        key: 'taxpayerIdentificationNumber'
-      },
-      { title: '公司官网', dataIndex: 'companyWebsite', key: 'companyWebsite' },
-      {
-        title: '联系电话',
-        dataIndex: 'phone',
-        key: 'phone',
-      },
-      {
-        title: '公司邮箱',
-        dataIndex: 'email',
-        key: 'email',
-      },
-      {
-        title: '地址',
-        dataIndex: 'address',
-        key: 'address',
-      },
-      {
-        title: '状态',
-        dataIndex: 'statusName',
-        key: 'status',
-      },
-      {
-        title: '评分',
-        dataIndex: 'score',
-        key: 'score',
-      },
-      {
-        title: '备注',
-        dataIndex: 'remark',
-        key: 'remark',
-      },
-    ];
-
-    const [newfieldscolumns, setnewfieldscolumns] = useState([]);
-    const selectValueType = (type, options) => {
-      switch (type) {
-        case 1:
-          return {
-            valueType: 'input',
-          };
-        case 2:
-          return {
-            valueType: 'select',
-            options,
-          };
-        case 3:
-          return {
-            valueType: 'radio',
-            options,
-          };
-        case 4:
-          return {
-            valueType: 'select',
-            options,
-          };
-        default:
-          break;
-      }
-    };
-    const [request, setrequest] = useState();
-    useEffect(() => {
-      fn();
-      fn2();
-    }, []);
-    const fn = async () => {
-      let res = await doFetch({
-        url: '/base/paFormField/queryList',
-        params: {
-          formId: '3',
-        },
-      });
-      if (res?.data?.dataList) {
-        let column = [];
-        res?.data?.dataList?.forEach?.((el) => {
-          column.push({
-            ...selectValueType(el.fieldChar, el.valueList),
-            title: el.fieldName,
-            dataIndex: el.id,
-            key: el.id,
-          });
-        });
-        setnewfieldscolumns(column);
-      }
-    },
-      fn2 = async () => {
-        const res = await doFetch({
-          url: urlParams.detail,
-          params: { id: drawer?.item?.id },
-        });
-        let obj = {};
-        res?.data?.data['equipmentSupplierCharList']?.forEach?.((it) => {
-          obj[it?.fieldId] = it?.fieldRealValue;
-        });
-
-        setrequest(
-          {
-            ...(res?.data?.data ?? {}),
-            ...obj,
-          } ?? {},
-        );
-      };
-    return (
-      <>
-        <ProDescriptions dataSource={request} columns={columns} />
-        <AutoTable
-          pagetitle="联系信息"
-          columns={[
-            {
-              title: '联系人',
-              dataIndex: 'contactsName',
-              key: 'contactsName',
-              search: false,
-              formItemProps: {
-                rules: [
-                  {
-                    required: true,
-                    message: '此项为必填项',
-                  },
-                ],
-              },
-            },
-            {
-              title: '手机号码',
-              search: false,
-              dataIndex: 'mobilePhone',
-              key: 'mobilePhone',
-            },
-            {
-              title: '邮箱',
-              search: false,
-              dataIndex: 'email',
-              key: 'email',
-            },
-            {
-              title: '职务',
-              search: false,
-              dataIndex: 'postName',
-              key: 'postName',
-              fieldProps: {
-                placeholder: '请选择',
-              },
-              formItemProps: {
-                rules: [
-                  {
-                    required: false,
-                    message: '此项为必填项',
-                  },
-                ],
-              },
-            },
-          ]}
-          dataSource={request?.supplierContactsList}
-          resizeable={false}
-          pagination={false}
-        />
-        <Divider />
-        <h3 className="page-title" style={{ marginBottom: 16 }}>
-          扩展字段
-        </h3>
-        <ProDescriptions dataSource={request} columns={newfieldscolumns} />
-      </>
-    );
-  };
   const columns = useMemo(() => {
     let defcolumn = getcolumns(false, actionRef);
     defcolumn[1].render = (text, row) => {
@@ -324,7 +293,7 @@ function Supplier(props) {
   const selectMoreDrawerType = (type) => {
     switch (type) {
       case 'detail':
-        return <Details />;
+        return <Details drawer={drawer} />;
       case 'add':
         return (
           <ExtendField
@@ -357,11 +326,6 @@ function Supplier(props) {
                 params,
               });
               if (res.code === '0000') {
-                if (drawer?.title == '编辑') {
-                  message.success('编辑成功!');
-                } else {
-                  message.success('新增成功!');
-                }
                 setDrawer((s) => ({
                   ...s,
                   visible: false,
@@ -402,11 +366,6 @@ function Supplier(props) {
                 params,
               });
               if (res.code === '0000') {
-                if (drawer?.title == '编辑') {
-                  message.success('编辑成功!');
-                } else {
-                  message.success('新增成功!');
-                }
                 setDrawer((s) => ({
                   ...s,
                   visible: false,