Procházet zdrojové kódy

首页、用户组织tree加载缓慢功能优化

songxy před 1 rokem
rodič
revize
82ddd77201

+ 1 - 0
client/package.json

@@ -8,6 +8,7 @@
     "i": "pnpm install",
     "local": "vite --mode base",
     "dev": "vite --mode dev",
+    "pro": "vite --mode pro",
     "front": "vite --mode front",
     "ts:check": "vue-tsc --noEmit",
     "build:pro": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode pro",

+ 3 - 12
client/src/views/OaSystem/financialManagement/clfbxPage/index.vue

@@ -7,17 +7,7 @@
       </div>
       <div class="form">
         <span class="formSpan">报销人:</span>
-        <el-tree-select
-          v-model="queryParams.userId"
-          :data="userList"
-          :props="defaultProps"
-          check-strictly
-          clearable
-          filterable
-          default-expand-all
-          node-key="id"
-          placeholder="请选择人员"
-        />
+        <UserOrgTree v-model="queryParams.userId" placeholder="请选择报销人" />
       </div>
       <div class="form">
         <span class="formSpan">报销人部门:</span>
@@ -147,9 +137,10 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import * as TravelCostApi from '@/api/oa/travelCost'
 import * as DeptApi from '@/api/system/dept'
 import { dateFormatter2 } from '@/utils/formatTime'
-import { defaultProps, handleTree } from '@/utils/tree'
+import { handleTree } from '@/utils/tree'
 import TableLayout from '../../oaViews/layout/TableLayout.vue'
 import DeptTree from '@/views/OaSystem/components/DeptTree/index.vue'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
 
 defineOptions({ name: 'ClfbxPage' })
 const queryParams = reactive({

+ 0 - 9
client/src/views/OaSystem/financialManagement/kpglPage/deptIndex.vue

@@ -65,15 +65,6 @@
           end-placeholder="结束日期"
         />
       </div>
-
-      <div class="form">
-        <span class="formSpan">是否回款:</span>
-        <el-select v-model="queryParams.isReturn" placeholder="请选择">
-          <el-option label="全部" value="" />
-          <el-option label="是" value="1" />
-          <el-option label="否" value="0" />
-        </el-select>
-      </div>
       <div class="from">
         <div class="btnBox">
           <el-button type="primary" style="background: #3485ff" @click="handleQuery">

+ 3 - 11
client/src/views/OaSystem/financialManagement/loan/loan.vue

@@ -3,17 +3,7 @@
     <div class="searchBox">
       <div class="form">
         <span class="formSpan">借款人:</span>
-        <el-tree-select
-          v-model="queryParams.workerId"
-          :data="userList"
-          :props="defaultProps"
-          check-strictly
-          clearable
-          filterable
-          default-expand-all
-          node-key="id"
-          placeholder="请选择人员"
-        />
+        <UserOrgTree v-model="queryParams.workerId" placeholder="请选择借款人" />
       </div>
       <div class="form">
         <span class="formSpan">借款单号:</span>
@@ -140,6 +130,8 @@ import TableLayout from '../../oaViews/layout/TableLayout.vue'
 import UserForm from './UserForm.vue'
 import * as DeptApi from '@/api/system/dept'
 import { defaultProps, handleTree } from '@/utils/tree'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
+
 defineOptions({ name: 'Loan' })
 const verifyMap: any = { null: '未核销', 1: '已核销', 0: '未核销' }
 const flowStatusMap: any = { 1: '办理中', 90: '已借' }

+ 2 - 11
client/src/views/OaSystem/financialManagement/ptbxPage/index.vue

@@ -11,17 +11,7 @@
       </div>
       <div class="form">
         <span class="formSpan">报销人:</span>
-        <el-tree-select
-          v-model="queryParams.userId"
-          :data="userList"
-          :props="defaultProps"
-          check-strictly
-          clearable
-          filterable
-          default-expand-all
-          node-key="id"
-          placeholder="请选择人员"
-        />
+        <UserOrgTree v-model="queryParams.userId" placeholder="请选择报销人" />
       </div>
       <div class="form">
         <span class="formSpan">报销人部门:</span>
@@ -124,6 +114,7 @@ import { dateFormatter2 } from '@/utils/formatTime'
 import { defaultProps, handleTree } from '@/utils/tree'
 import TableLayout from '../../oaViews/layout/TableLayout.vue'
 import DeptTree from '@/views/OaSystem/components/DeptTree/index.vue'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
 
 defineOptions({ name: 'PtbxPage' })
 

+ 1 - 5
client/src/views/OaSystem/home/homeLeader.vue

@@ -20,11 +20,7 @@
         <CardItemSeven3 v-else :type="1" />
       </div>
       <div class="card-item-common">
-        <CardTitle
-          title="回款通知"
-          @moreClick="toNewPageHandle('/oaSystem/marketCenter/returnMessage')"
-          showMore
-        />
+        <CardTitle title="回款通知" />
         <CardItemSeven />
       </div>
     </div>

+ 1 - 1
client/src/views/OaSystem/marketCenter/returnMessage/MessageTable.vue

@@ -24,7 +24,7 @@ interface IParam {
 }
 const queryParams = reactive<IParam>({
   pageNo: 1,
-  pageSize: 10,
+  pageSize: 20,
   year: curYear.value ?? ''
 })
 

+ 24 - 2
client/src/views/OaSystem/projectCenter/projectBook/common.ts

@@ -1,4 +1,5 @@
 import moment from 'moment'
+import download from '@/utils/download'
 
 interface QueryParam {
   xmbh: string
@@ -42,11 +43,32 @@ export const useMixins = () => {
       queryParams.hyId = null
     }
   }
-
+  const exportHandleCommon = (request, params, fileName: string): void => {
+    if (lxsjObj.value && lxsjObj.value.length > 0) {
+      queryParams.lxsjOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+      queryParams.lxsjOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    } else {
+      queryParams.lxsjOn = ''
+      queryParams.lxsjOff = ''
+    }
+    if (queryParams.hyId == 0) {
+      queryParams.hyId = null
+    }
+    const urlApi = `/project/list/excel`
+    setSearchParams()
+    const sendData = {
+      ...queryParams,
+      ...params
+    }
+    request.download({ url: urlApi, params: sendData }, '/business').then((blob) => {
+      download.excel(blob, fileName)
+    })
+  }
   return {
     queryParams,
     lxsjObj,
-    setSearchParams
+    setSearchParams,
+    exportHandleCommon
   }
 }
 

+ 7 - 4
client/src/views/OaSystem/projectCenter/projectBook/deptProject.vue

@@ -67,7 +67,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary">
+          <el-button type="primary" @click="exportHandle">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
@@ -106,8 +106,8 @@
               {{ district[scope.row.xzqdm] }}
             </template>
           </el-table-column>
-          <el-table-column prop="projectTypeName" label="项目类别" width="120" />
-          <el-table-column prop="zrbm" label="责任部门" width="200" />
+          <el-table-column prop="projectTypeName" label="项目类别" width="160" />
+          <el-table-column prop="zrbm" label="责任部门" :show-overflow-tooltip="true" width="200" />
           <el-table-column prop="xmjl" label="项目经理" width="120" />
           <el-table-column prop="lxsj" label="立项时间" width="120" />
           <el-table-column prop="yssj" label="验收时间" width="120" />
@@ -165,7 +165,7 @@ const user = wsCache.get(CACHE_KEY.USER)
 const deptId = user.user.deptId ? user.user.deptId : ''
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
-const { queryParams, lxsjObj, setSearchParams } = useMixins()
+const { queryParams, lxsjObj, setSearchParams, exportHandleCommon } = useMixins()
 
 const handleCurrentChange = (pageNo: number) => {
   queryParams.pageNo = pageNo
@@ -177,6 +177,9 @@ const operateClick = (row: any) => {
     query: { id: row.id, flowStatus: row.flowStatus }
   })
 }
+const exportHandle = () => {
+  exportHandleCommon(request, { deptId: deptId }, '部门项目台账')
+}
 const tableData = ref<Array<any>>([])
 const total = ref<number>()
 const searchHandle: () => void = () => {

+ 7 - 4
client/src/views/OaSystem/projectCenter/projectBook/myProject.vue

@@ -75,7 +75,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询
           </el-button>
-          <el-button type="primary">
+          <el-button type="primary" @click="exportHandle">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出
           </el-button>
@@ -114,8 +114,8 @@
               {{ district[scope.row.xzqdm] }}
             </template>
           </el-table-column>
-          <el-table-column prop="projectTypeName" label="项目类别" width="120" />
-          <el-table-column prop="zrbm" label="责任部门" width="200" />
+          <el-table-column prop="projectTypeName" label="项目类别" width="160" />
+          <el-table-column prop="zrbm" label="责任部门" :show-overflow-tooltip="true" width="200" />
           <el-table-column prop="xmjl" label="项目经理" width="120" />
           <el-table-column prop="lxsj" label="立项时间" width="120" />
           <el-table-column prop="yssj" label="验收时间" width="120" />
@@ -172,7 +172,7 @@ const user = wsCache.get(CACHE_KEY.USER)
 const userId = user.user.id ? user.user.id : ''
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
-const { queryParams, setSearchParams } = useMixins()
+const { queryParams, setSearchParams, exportHandleCommon } = useMixins()
 const lxsjObj = ref()
 
 const handleCurrentChange = (pageNo: number) => {
@@ -185,6 +185,9 @@ const operateClick = (row: any) => {
     query: { id: row.id, name: row.xmmc }
   })
 }
+const exportHandle = () => {
+  exportHandleCommon(request, { userId: userId }, '我的项目台账')
+}
 const tableData = ref<Array<any>>([])
 const total = ref<number>()
 const searchHandle: () => void = () => {

+ 6 - 3
client/src/views/OaSystem/projectCenter/projectBook/projectBook.vue

@@ -41,7 +41,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary">
+          <el-button type="primary" @click="exportHandle">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
@@ -75,7 +75,7 @@
           </el-table-column>
           <el-table-column :show-overflow-tooltip="true" prop="xmbh" label="项目编号" />
           <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" />
-          <el-table-column prop="zrbm" label="责任部门" width="200" />
+          <el-table-column prop="zrbm" label="责任部门" :show-overflow-tooltip="true" width="200" />
           <el-table-column prop="xmjl" label="项目经理" width="120" />
           <el-table-column prop="contractAmount" align="center" label="合同额" width="120">
             <template #default="scope">{{
@@ -133,7 +133,7 @@ defineOptions({ name: 'ProjectBook' })
 const router = useRouter()
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
-const { queryParams, setSearchParams } = useMixins()
+const { queryParams, setSearchParams, exportHandleCommon } = useMixins()
 
 const handleCurrentChange = (pageNo: number) => {
   queryParams.pageNo = pageNo
@@ -145,6 +145,9 @@ const operateClick = (row: any) => {
     query: { id: row.id }
   })
 }
+const exportHandle = () => {
+  exportHandleCommon(request, null, '公司项目台账')
+}
 const tableData = ref<Array<any>>([])
 const total = ref<number>()
 const searchHandle: () => void = () => {

+ 2 - 0
client/src/views/OaSystem/projectCenter/projectDetail/components/xmht/index.vue

@@ -642,6 +642,8 @@ const { refetch } = useQuery(
   async () => await getContractsByProject(unref(_currentProjectId)),
   {
     onSuccess: (tData: Contract[]) => {
+      console.log('tData---------------------')
+      console.log(tData)
       for (const contract of tData) {
         if (contract.contractSubList && contract.contractSubList.length > 0) {
           childrenContracts.value = contract.contractSubList

+ 53 - 0
client/src/views/OaSystem/projectCenter/purchaseContract/common.ts

@@ -0,0 +1,53 @@
+import { useRouter } from 'vue-router'
+import download from '@/utils/download'
+
+export const infoList: any = ref([
+  {
+    icon: 'xmzx/xmzcz',
+    name: '总合同金额(万元)',
+    key: 'contractAmount'
+  },
+  {
+    icon: 'xmzx/xmzcb',
+    name: '总开票金额(万元)',
+    key: 'invoiceAmount'
+  },
+  {
+    icon: 'xmzx/xmzlr',
+    name: '总回款金额(万元)',
+    key: 'returnAmount'
+  },
+  {
+    icon: 'xmzx/xmzlr',
+    name: '总应收款(万元)',
+    key: 'receivableAmount'
+  },
+  {
+    icon: 'xmzx/xmzlr',
+    name: '总合同余额(万元)',
+    key: 'contractBalance'
+  }
+])
+
+export const useMixins = () => {
+  const router = useRouter()
+  const exportHandleCommon = (request, queryParams, fileName) => {
+    const sendData = {
+      ...queryParams
+    }
+    const urlApi = `/contract/list/excel`
+    request.download({ url: urlApi, params: sendData }, '/business').then((blob) => {
+      download.excel(blob, fileName)
+    })
+  }
+  const operateClick = (row: any) => {
+    router.push({
+      path: '/projectDetail',
+      query: { id: row.projectId, contractId: row.id }
+    })
+  }
+  return {
+    exportHandleCommon,
+    operateClick
+  }
+}

+ 19 - 35
client/src/views/OaSystem/projectCenter/purchaseContract/deptContract.vue

@@ -102,7 +102,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary">
+          <el-button type="primary" @click="exportHandle">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
@@ -196,11 +196,11 @@
 </template>
 <script setup lang="ts">
 import moment from 'moment'
-import { useRouter } from 'vue-router'
 import request from '@/config/axios'
 import { DICT_TYPE, getDictLabel, getDictOptions } from '@/utils/dict'
 import { getAssetURL } from '@/utils/auth'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
+import { infoList, useMixins } from './common'
 
 defineOptions({ name: 'DeptContract' })
 
@@ -209,7 +209,7 @@ const signWayAllList = getDictOptions(DICT_TYPE.CONTRACT_SIGN_WAY)
 const mainTypeAllList = getDictOptions(DICT_TYPE.CONTRACT_MAIN_TYPE)
 const secondTypeAllList = getDictOptions(DICT_TYPE.CONTRACT_SECOND_TYPE)
 
-const router = useRouter()
+const { exportHandleCommon, operateClick } = useMixins()
 const { wsCache } = useCache()
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
@@ -250,43 +250,27 @@ const queryParams = reactive<{
 })
 const lxsjObj = ref()
 const dueTimeObj = ref()
-const infoList: any = ref([
-  {
-    icon: 'xmzx/xmzcz',
-    name: '总合同金额(万元)',
-    key: 'contractAmount'
-  },
-  {
-    icon: 'xmzx/xmzcb',
-    name: '总开票金额(万元)',
-    key: 'invoiceAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总回款金额(万元)',
-    key: 'returnAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总应收款(万元)',
-    key: 'receivableAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总合同余额(万元)',
-    key: 'contractBalance'
-  }
-])
 
 const handleCurrentChange = (pageNo: number) => {
   queryParams.pageNo = pageNo
   queryContractListAjax()
 }
-const operateClick = (row: any) => {
-  router.push({
-    path: '/projectDetail',
-    query: { id: row.projectId, contractId: row.id }
-  })
+const exportHandle = async () => {
+  if (lxsjObj.value && lxsjObj.value.length > 0) {
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
+  }
+  exportHandleCommon(request, queryParams, '部门合同台账')
 }
 const tableData = ref<Array<any>>([])
 const total = ref<number>()

+ 19 - 35
client/src/views/OaSystem/projectCenter/purchaseContract/myContract.vue

@@ -90,7 +90,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary">
+          <el-button type="primary" @click="exportHandle">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
@@ -184,11 +184,11 @@
 </template>
 <script setup lang="ts">
 import moment from 'moment'
-import { useRouter } from 'vue-router'
 import request from '@/config/axios'
 import { DICT_TYPE, getDictLabel, getDictOptions } from '@/utils/dict'
 import { getAssetURL } from '@/utils/auth'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
+import { infoList, useMixins } from './common'
 
 defineOptions({ name: 'MyContract' })
 
@@ -197,7 +197,7 @@ const signWayAllList = getDictOptions(DICT_TYPE.CONTRACT_SIGN_WAY)
 const mainTypeAllList = getDictOptions(DICT_TYPE.CONTRACT_MAIN_TYPE)
 const secondTypeAllList = getDictOptions(DICT_TYPE.CONTRACT_SECOND_TYPE)
 
-const router = useRouter()
+const { exportHandleCommon, operateClick } = useMixins()
 const { wsCache } = useCache()
 const user = wsCache.get(CACHE_KEY.USER)
 const userId = user.user.id ? user.user.id : ''
@@ -238,43 +238,27 @@ const queryParams = reactive<{
 })
 const lxsjObj = ref()
 const dueTimeObj = ref()
-const infoList: any = ref([
-  {
-    icon: 'xmzx/xmzcz',
-    name: '总合同金额(万元)',
-    key: 'contractAmount'
-  },
-  {
-    icon: 'xmzx/xmzcb',
-    name: '总开票金额(万元)',
-    key: 'invoiceAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总回款金额(万元)',
-    key: 'returnAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总应收款(万元)',
-    key: 'receivableAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总合同余额(万元)',
-    key: 'contractBalance'
-  }
-])
 
 const handleCurrentChange = (pageNo: number) => {
   queryParams.pageNo = pageNo
   queryContractListAjax()
 }
-const operateClick = (row: any) => {
-  router.push({
-    path: '/projectDetail',
-    query: { id: row.projectId, contractId: row.id }
-  })
+const exportHandle = async () => {
+  if (lxsjObj.value && lxsjObj.value.length > 0) {
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
+  }
+  exportHandleCommon(request, queryParams, '我的合同台账')
 }
 const tableData = ref<Array<any>>([])
 const total = ref<number>()

+ 43 - 49
client/src/views/OaSystem/projectCenter/purchaseContract/purchaseContract.vue

@@ -35,6 +35,14 @@
           />
         </el-select>
       </div>
+      <div class="form">
+        <span class="formSpan">销售经理:</span>
+        <UserOrgTree v-model="queryParams['managerId']" />
+      </div>
+      <div class="form">
+        <span class="formSpan">责任部门:</span>
+        <DeptTree v-model="queryParams['deptId']" />
+      </div>
       <div class="form">
         <span class="formSpan">合同主类型:</span>
         <el-select width="160px" clearable v-model="queryParams.mainType" placeholder="请选择行业">
@@ -63,7 +71,7 @@
         </el-select>
       </div>
       <div class="form form-time-range">
-        <span class="formSpan">签订时间:</span>
+        <span class="formSpan">拿出/拿回时间:</span>
         <el-date-picker
           v-model="lxsjObj"
           type="daterange"
@@ -90,7 +98,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary">
+          <el-button type="primary" @click="exportHandle">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
@@ -184,10 +192,12 @@
 </template>
 <script setup lang="ts">
 import moment from 'moment'
-import { useRouter } from 'vue-router'
 import request from '@/config/axios'
 import { DICT_TYPE, getDictLabel, getDictOptions } from '@/utils/dict'
 import { getAssetURL } from '@/utils/auth'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
+import DeptTree from '@/views/OaSystem/components/DeptTree/index.vue'
+import { infoList, useMixins } from './common'
 
 defineOptions({ name: 'PurchaseContract' })
 
@@ -196,7 +206,7 @@ const signWayAllList = getDictOptions(DICT_TYPE.CONTRACT_SIGN_WAY)
 const mainTypeAllList = getDictOptions(DICT_TYPE.CONTRACT_MAIN_TYPE)
 const secondTypeAllList = getDictOptions(DICT_TYPE.CONTRACT_SECOND_TYPE)
 
-const router = useRouter()
+const { exportHandleCommon, operateClick } = useMixins()
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
 const queryParams = reactive<{
@@ -210,10 +220,10 @@ const queryParams = reactive<{
   secondType: any
   contractOn: string
   contractOff: string
-  signTimeStart: string
-  signTimeEnd: string
   dueTimeStart: string
   dueTimeEnd: string
+  managerId: string
+  deptId: string
 }>({
   contractNumber: '',
   name: '',
@@ -225,50 +235,34 @@ const queryParams = reactive<{
   secondType: '',
   contractOn: '',
   contractOff: '',
-  signTimeStart: '',
-  signTimeEnd: '',
   dueTimeStart: '',
-  dueTimeEnd: ''
+  dueTimeEnd: '',
+  managerId: '',
+  deptId: ''
 })
 const lxsjObj = ref()
 const dueTimeObj = ref()
-const infoList: any = ref([
-  {
-    icon: 'xmzx/xmzcz',
-    name: '总合同金额(万元)',
-    key: 'contractAmount'
-  },
-  {
-    icon: 'xmzx/xmzcb',
-    name: '总开票金额(万元)',
-    key: 'invoiceAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总回款金额(万元)',
-    key: 'returnAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总应收款(万元)',
-    key: 'receivableAmount'
-  },
-  {
-    icon: 'xmzx/xmzlr',
-    name: '总合同余额(万元)',
-    key: 'contractBalance'
-  }
-])
 
 const handleCurrentChange = (pageNo: number) => {
   queryParams.pageNo = pageNo
   queryContractListAjax()
 }
-const operateClick = (row: any) => {
-  router.push({
-    path: '/projectDetail',
-    query: { id: row.projectId, contractId: row.id }
-  })
+const exportHandle = async () => {
+  if (lxsjObj.value && lxsjObj.value.length > 0) {
+    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.contractOn = ''
+    queryParams.contractOff = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
+  }
+  exportHandleCommon(request, queryParams, '公司合同台账')
 }
 const tableData = ref<Array<any>>([])
 const total = ref<number>()
@@ -279,11 +273,11 @@ const searchHandle: () => void = () => {
 const queryContractListAjax = async (): Promise<void> => {
   const urlApi = `/contract/page`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.signTimeStart = ''
-    queryParams.signTimeEnd = ''
+    queryParams.contractOn = ''
+    queryParams.contractOff = ''
   }
   if (dueTimeObj.value && dueTimeObj.value.length > 0) {
     queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
@@ -315,11 +309,11 @@ const contractListCalc = ref({
 const queryContractListCalc = async (): Promise<void> => {
   const urlApi = `/contract/list/calc`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.signTimeStart = ''
-    queryParams.signTimeEnd = ''
+    queryParams.contractOn = ''
+    queryParams.contractOff = ''
   }
   if (dueTimeObj.value && dueTimeObj.value.length > 0) {
     queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')