Sfoglia il codice sorgente

项目跟踪后台接口对接

songxy 10 mesi fa
parent
commit
7f771e2697

+ 123 - 7
client/src/views/OaSystem/officeCenter/gdzccgsqPage/index.vue

@@ -54,6 +54,10 @@
         <span class="formSpan">资产型号:</span>
         <el-input v-model="qrs.assetModel" placeholder="请输入资产型号" style="width: 160px" />
       </div>
+      <div class="form">
+        <span class="formSpan">资产序列号:</span>
+        <el-input v-model="qrs.assetSequence" placeholder="请输入资产序列号" style="width: 160px" />
+      </div>
       <div class="form">
         <span class="formSpan">保管人:</span>
         <el-input v-model="qrs.custodianName" placeholder="请输入保管人" style="width: 160px" />
@@ -83,6 +87,10 @@
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
+          <!-- <el-button type="primary" @click="addOrEditDialogHandle">
+            <el-icon size="16" style="margin-right: 5px; font-weight: bold"><Plus /></el-icon>
+            新增</el-button
+          > -->
           <el-button type="danger" @click="changeCustodian">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             变更</el-button
@@ -113,7 +121,7 @@
               {{ xmztMap[scope.row.state] }}
             </template>
           </el-table-column>
-          <el-table-column prop="userNickname" label="申请人" width="80" />
+          <!-- <el-table-column prop="userNickname" label="申请人" width="80" />
           <el-table-column
             :show-overflow-tooltip="true"
             prop="projectName"
@@ -126,7 +134,7 @@
             label="项目编号"
             width="120"
           />
-          <el-table-column :show-overflow-tooltip="true" prop="projectDept" label="项目部门" />
+          <el-table-column :show-overflow-tooltip="true" prop="projectDept" label="项目部门" /> -->
           <el-table-column
             :show-overflow-tooltip="true"
             prop="procureTime"
@@ -137,14 +145,19 @@
           <el-table-column :show-overflow-tooltip="true" prop="assetName" label="资产名称" />
           <el-table-column :show-overflow-tooltip="true" prop="assetType" label="资产类型" />
           <el-table-column :show-overflow-tooltip="true" prop="assetModel" label="资产型号" />
-          <el-table-column :show-overflow-tooltip="true" prop="custodianName" label="保管人" />
+          <el-table-column
+            :show-overflow-tooltip="true"
+            prop="custodianName"
+            label="保管人"
+            width="120"
+          />
           <!-- <el-table-column
             :show-overflow-tooltip="true"
             prop="custodianDeptName"
             label="保管人部门"
           /> -->
-          <el-table-column :show-overflow-tooltip="true" prop="amount" label="金额" />
-          <!-- <el-table-column :show-overflow-tooltip="true" prop="assetSequence" label="序列号" /> -->
+          <el-table-column :show-overflow-tooltip="true" prop="assetSequence" label="资产序列号" />
+          <el-table-column :show-overflow-tooltip="true" prop="amount" label="金额" width="120" />
           <!-- <el-table-column :show-overflow-tooltip="true" prop="assetConfig" label="资产配置" /> -->
           <el-table-column :show-overflow-tooltip="true" prop="bz1" label="备注" />
 
@@ -170,6 +183,97 @@
     </div>
   </div>
   <UserForm ref="formRef" @success="queryProjectListAjax" />
+  <el-dialog v-model="dialogVisible" :title="title" width="860px" align-center>
+    <el-form
+      ref="ruleFormRef"
+      :model="ruleForm"
+      label-width="auto"
+      class="demo-ruleForm"
+      status-icon
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="项目名称" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="项目编号" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="项目责任部门" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="采购时间" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="资产编号" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="资产名称" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="资产类型" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="资产型号" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="资产序列号" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="保管人" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="金额" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="状态" prop="name">
+            <el-input v-model="ruleForm.name" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="备注" prop="desc">
+        <el-input v-model="ruleForm.desc" type="textarea" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button @click="dialogVisible = false">关闭</el-button>
+        <el-button type="primary" @click="onSaveHandle"> 保存 </el-button>
+      </div>
+    </template>
+  </el-dialog>
 </template>
 <script setup lang="ts">
 import { useRouter } from 'vue-router'
@@ -249,7 +353,7 @@ const handleCurrentChange = (pageNo: number) => {
   queryProjectListAjax()
 }
 const formRef = ref()
-const changeCustodian = (pageNo: number) => {
+const changeCustodian = () => {
   formRef.value.open(row.value)
 }
 const row: any = ref([])
@@ -284,7 +388,19 @@ const queryProjectListAjax = async () => {
 }
 
 queryProjectListAjax()
-
+/**
+ * 固定资产投资新增、编辑
+ */
+const title = ref<string>('添加固定资产')
+interface IFormType {}
+const ruleForm = ref<IFormType>({
+  name: ''
+})
+const dialogVisible = ref<boolean>(false)
+const addOrEditDialogHandle = () => {
+  dialogVisible.value = true
+}
+const onSaveHandle = () => {}
 /**
  * 获取行政区tree结构数据
  */

+ 1 - 22
client/src/views/OaSystem/personnelManagement/ygdaPage/index.ts

@@ -354,28 +354,7 @@ export const formConfigList = [
         name: 'jjlxrgx',
         title: '紧急联系人关系',
         type: 'select',
-        options: [
-          {
-            value: 1,
-            label: '父母'
-          },
-          {
-            value: 2,
-            label: '夫妻'
-          },
-          {
-            value: 3,
-            label: '子女'
-          },
-          {
-            value: 4,
-            label: '兄弟姐妹'
-          },
-          {
-            value: 5,
-            label: '其他'
-          }
-        ]
+        options: []
       }
     ]
   }

+ 4 - 1
client/src/views/OaSystem/personnelManagement/ygdaPage/index.vue

@@ -29,7 +29,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
           >
@@ -172,6 +172,9 @@ const deptOnChange = (id) => {
   console.log(id)
   queryParams.deptId = id
 }
+const exportHandle = () => {
+  '/adm/staff-records/excel'
+}
 /** 初始化 */
 onMounted(() => {
   getList()

+ 69 - 57
client/src/views/OaSystem/projectCenter/projectTrack/common.ts

@@ -1,74 +1,86 @@
-import moment from 'moment'
-import download from '@/utils/download'
+import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 
-interface QueryParam {
-  xmbh: string
+const { wsCache } = useCache()
+const user = wsCache.get(CACHE_KEY.USER)
+interface IPageParam {
+  pageNo?: number
+  pageSize?: number
+}
+
+interface QueryParam extends IPageParam {
+  xmmc: string
+  gzryId: string
+  xmbmId: string
+}
+export interface IFormType {
+  id: string
   xmmc: string
-  xmlbId: string
-  lxsjOn: string
-  lxsjOff: string
-  pageNo: number
-  xzqdm: number | string
-  pageSize: number
-  isSign: any
-  xmzt: any
-  xmjlId: string
-  hyId: any
+  gzryId: string
+  gzry: string
+  jf: string
+  ygje: number
+  jfdjr: string
+  xmbmId: string
+  xmbm: string
+  xzqdm: string
+  xzqmc: string
+  zt: string
+  visibleUserIds: string
+  status: number
+  bz: string
 }
 export const useMixins = () => {
   const queryParams = reactive<QueryParam>({
-    xmbh: '',
     xmmc: '',
-    xmlbId: '15',
-    lxsjOn: '',
-    lxsjOff: '',
+    gzryId: '',
+    xmbmId: '',
     pageNo: 1,
+    pageSize: 15
+  })
+  const formData = ref<IFormType>({
+    id: '',
+    xmmc: '',
+    gzryId: '',
+    gzry: '',
+    jf: '',
+    ygje: 0,
+    jfdjr: '',
+    xmbmId: '',
+    xmbm: '',
     xzqdm: '',
-    pageSize: 15,
-    isSign: '',
-    xmzt: '',
-    xmjlId: '',
-    hyId: 0
+    xzqmc: '',
+    zt: '',
+    visibleUserIds: '',
+    status: 0,
+    bz: ''
   })
-  const lxsjObj = ref()
-  const setSearchParams = (): 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')
+  const initFormData = (row?: IFormType) => {
+    if (!row) {
+      formData.value = {
+        id: '',
+        xmmc: '',
+        gzryId: user.user.id,
+        gzry: user.user.nickname,
+        jf: '',
+        ygje: 0,
+        jfdjr: '',
+        xmbmId: '',
+        xmbm: '',
+        xzqdm: '',
+        xzqmc: '',
+        zt: '',
+        visibleUserIds: '',
+        status: 0,
+        bz: ''
+      }
     } else {
-      queryParams.lxsjOn = ''
-      queryParams.lxsjOff = ''
-    }
-    if (queryParams.hyId == 0) {
-      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
+      formData.value = row
     }
-    request.download({ url: urlApi, params: sendData }, '/business').then((blob) => {
-      download.excel(blob, fileName)
-    })
   }
   return {
     queryParams,
-    lxsjObj,
-    setSearchParams,
-    exportHandleCommon
+    formData,
+    initFormData
   }
 }
 

+ 107 - 82
client/src/views/OaSystem/projectCenter/projectTrack/index.vue

@@ -1,21 +1,17 @@
 <template>
   <div class="oa-sys-list-view">
     <div class="searchBox">
-      <div class="form">
-        <span class="formSpan">年份:</span>
-        <el-input v-model="queryParams.xmbh" placeholder="请输入项目编号" style="width: 160px" />
-      </div>
       <div class="form">
         <span class="formSpan">项目名称:</span>
         <el-input v-model="queryParams.xmmc" placeholder="请输入项目名称" style="width: 210px" />
       </div>
       <div class="form">
         <span class="formSpan">项目部门:</span>
-        <DeptTree v-model="queryParams['deptId']" placeholder="请选择部门" />
+        <DeptTree v-model="queryParams['xmbmId']" placeholder="请选择部门" />
       </div>
       <div class="form">
         <span class="formSpan">跟踪人员:</span>
-        <UserOrgTree v-model="queryParams['xmjlId']" :all="true" placeholder="请选择项目经理" />
+        <UserOrgTree v-model="queryParams['gzryId']" :all="true" placeholder="请选择项目经理" />
       </div>
       <div class="from">
         <div class="btnBox">
@@ -23,7 +19,7 @@
             <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
             查询</el-button
           >
-          <el-button type="primary" @click="addHandle">
+          <el-button type="primary" @click="addOrEditHandle()">
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             新增</el-button
           >
@@ -59,32 +55,33 @@
             :show-overflow-tooltip="true"
             prop="xmmc"
             label="项目名称"
-            :min-width="250"
+            :min-width="220"
           />
-          <el-table-column prop="lxsj" label="跟踪人员" width="140" />
+          <el-table-column prop="gzry" label="跟踪人员" width="140" />
           <el-table-column
-            prop="zrbm"
+            prop="ygje"
             label="预估金额(万元)"
             :show-overflow-tooltip="true"
             width="200"
           />
-          <el-table-column prop="xmjl" label="甲方" width="120" />
-          <el-table-column prop="xmjl" label="甲方对接人" width="120" />
-          <el-table-column prop="xmjl" label="项目归属部门" width="120" />
-          <el-table-column prop="xmjl" label="行政区" width="120" />
-          <el-table-column prop="xmzt" label="项目状态" width="120">
+          <el-table-column prop="jf" label="甲方" width="120" />
+          <el-table-column prop="jfdjr" label="甲方对接人" width="120" />
+          <el-table-column prop="xmbm" label="项目归属部门" width="120" />
+          <el-table-column prop="xzqdm" label="行政区" width="120" />
+          <el-table-column prop="zt" label="状态" width="120">
             <template #default="scope">
-              {{ getDictLabel(DICT_TYPE.PROJECT_STATUS, scope.row.xmzt) }}
+              {{ ztMap[scope.row.zt] }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="xmjl" label="开关" width="120">
+            <template #default="scope">
+              <el-switch v-model="scope.row.status" :active-value="0" :inactive-value="1" />
             </template>
           </el-table-column>
-          <el-table-column prop="xmjl" label="开关" width="120" />
 
           <el-table-column label="操作" width="80" fixed="right">
             <template #default="scope">
-              <div class="operateBtn" @click="operateClick(scope.row)">
-                <span>查看</span>
-              </div>
-              <div class="operateBtn" @click="operateClick(scope.row)">
+              <div class="operateBtn" @click="addOrEditHandle(scope.row)">
                 <span>编辑</span>
               </div>
             </template>
@@ -102,7 +99,7 @@
         />
       </div>
     </div>
-    <el-dialog v-model="dialogVisible" title="项目跟踪填报" width="660px" align-center>
+    <el-dialog v-model="dialogVisible" :title="dialogTitle" width="660px" align-center>
       <el-form
         ref="ruleFormRef"
         style="width: 600px"
@@ -112,157 +109,185 @@
         status-icon
       >
         <el-form-item label="项目名称" prop="name">
-          <el-input v-model="ruleForm.name" />
+          <el-input v-model="formData.xmmc" />
         </el-form-item>
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="跟踪人员" prop="region">
-              <el-select v-model="ruleForm.region" placeholder="Activity zone">
-                <el-option label="Zone one" value="shanghai" />
-                <el-option label="Zone two" value="beijing" />
-              </el-select>
+              <UserOrgTree v-model="formData.gzryId" :all="true" placeholder="请选择跟踪人员" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="甲方" prop="name">
-              <el-input v-model="ruleForm.name" />
+              <el-input v-model="formData.jf" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="预估金额(万元)" prop="name">
-              <el-input v-model="ruleForm.name" />
+              <el-input v-model="formData.ygje" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="甲方对接人" prop="name">
-              <el-input v-model="ruleForm.name" />
+              <el-input v-model="formData.jfdjr" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="项目归属部门" prop="region">
-              <el-select v-model="ruleForm.region" placeholder="Activity zone">
-                <el-option label="Zone one" value="shanghai" />
-                <el-option label="Zone two" value="beijing" />
-              </el-select>
+              <DeptTree
+                v-model="formData.xmbmId"
+                @node-click="(item) => treeNodeClick(item, 'xmbm')"
+                placeholder="请选择部门"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="行政区" prop="region">
-              <el-select v-model="ruleForm.region" placeholder="Activity zone">
-                <el-option label="Zone one" value="shanghai" />
-                <el-option label="Zone two" value="beijing" />
-              </el-select>
+              <DistrictTree
+                class="form-item-disable-style"
+                v-model="formData.xzqdm"
+                @node-click="(item) => treeNodeClick(item, 'xzqmc')"
+                style="width: 100%"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="状态" prop="region">
-              <el-select v-model="ruleForm.region" placeholder="Activity zone">
-                <el-option label="Zone one" value="shanghai" />
-                <el-option label="Zone two" value="beijing" />
+              <el-select v-model="formData.zt" placeholder="请选择状态" style="width: 100%">
+                <el-option label="谋划" value="0" />
+                <el-option label="待上会" value="1" />
+                <el-option label="待招标" value="2" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="谁可见" prop="region">
-              <el-select v-model="ruleForm.region" placeholder="Activity zone">
-                <el-option label="Zone one" value="shanghai" />
-                <el-option label="Zone two" value="beijing" />
-              </el-select>
+              <UserOrgTree
+                v-model="formData.visibleUserIds"
+                :all="true"
+                placeholder="请选择跟谁可见"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-form-item label="备注" prop="desc">
-          <el-input v-model="ruleForm.desc" type="textarea" />
+          <el-input v-model="formData.bz" type="textarea" />
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
           <el-button @click="dialogVisible = false">关闭</el-button>
-          <el-button type="primary" @click="onSaveHandle"> 保存 </el-button>
+          <el-button type="primary" @click="saveProjectTracking"> 保存 </el-button>
         </div>
       </template>
     </el-dialog>
   </div>
 </template>
 <script setup lang="ts">
-import { useRouter } from 'vue-router'
 import { DICT_TYPE, getDictLabel } from '@/utils/dict'
-import { useMixins, infoList } from './common'
+import { IFormType, useMixins, infoList } from './common'
 import request from '@/config/axios'
 import { getAssetURL } from '@/utils/auth'
 import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
 import DeptTree from '@/views/OaSystem/components/DeptTree/index.vue'
+import DistrictTree from '@/views/OaSystem/components/DistrictTree/index.vue'
 
-defineOptions({ name: 'ProjectBook' })
-const router = useRouter()
+defineOptions({ name: 'ProjectTrack' })
+
+const ztMap = {
+  '0': '谋划',
+  '1': '待上会',
+  '2': '待招标'
+}
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
-const { queryParams, setSearchParams } = useMixins()
+const { queryParams, formData, initFormData } = useMixins()
 
 const handleCurrentChange = (pageNo: number) => {
   queryParams.pageNo = pageNo
-  queryProjectListAjax()
+  queryProjectTrackByPage()
 }
-interface IFormType {}
-const ruleForm = ref<IFormType>({
-  name: ''
-})
 /**
- * 操作:查看、编辑
+ * 项目跟踪:新增、编辑
  */
+const dialogTitle = ref<string>('项目跟踪填报')
 const dialogVisible = ref<boolean>(false)
-//type 0 查看 1 编辑
-const operateClick = (row: any, type: number = 0) => {
+const addOrEditHandle = (row?: IFormType) => {
   dialogVisible.value = true
+  if (!row) {
+    initFormData()
+    dialogTitle.value = '项目跟踪填报'
+  } else {
+    dialogTitle.value = '项目跟踪编辑'
+    queryProjectTrackByDetail(row['id']).then((result) => {
+      console.log('result--------------------')
+      console.log(result)
+      initFormData(result as any)
+    })
+  }
 }
-/**
- * 新建项目跟踪
- */
-const addHandle = () => {
-  dialogVisible.value = true
+const treeNodeClick = (item, type: string) => {
+  console.log(item)
+  if (!item) return
+  formData.value[type] = item['label']
+}
+const saveProjectTracking = async (): Promise<void> => {
+  const urlApi = `/projectTracking/save`
+  const sendData = {
+    ...formData.value
+  }
+  const result = await request.post({ url: urlApi, data: sendData }, '/business')
+  if (!result) {
+    searchHandle()
+    dialogVisible.value = false
+  }
 }
 const tableData = ref<Array<any>>([])
 const total = ref<number>()
 const searchHandle: () => void = () => {
-  queryProjectCalculate()
-  queryProjectListAjax()
+  queryParams.pageNo = 1
+  queryProjectTrackingSummary()
+  queryProjectTrackByPage()
 }
-const queryProjectListAjax = async (): Promise<void> => {
-  const urlApi = `/project/page`
-  setSearchParams()
+const queryProjectTrackByPage = async (): Promise<void> => {
+  const urlApi = `/projectTracking/page`
   const sendData = {
-    ...queryParams,
-    pageSize: 15
+    ...queryParams
   }
   const result = await request.get({ url: urlApi, params: sendData }, '/business')
-  tableData.value = result['records']
+  tableData.value = result['list']
   total.value = result['total']
 }
-queryProjectListAjax()
+const queryProjectTrackByDetail = async (id: string): Promise<void> => {
+  const urlApi = `/projectTracking/getById`
+  const sendData = {
+    id
+  }
+  return await request.get({ url: urlApi, params: sendData }, '/business')
+}
+queryProjectTrackByPage()
 
 /**
- * 获取项目台账金额计算
+ * 项目金额、项目个数汇总
  */
-const queryProjectCalculate = async (): Promise<void> => {
-  const urlApi = `/project/calculate`
-  setSearchParams()
+const queryProjectTrackingSummary = async (): Promise<void> => {
+  const urlApi = `/projectTracking/summary`
   const sendData = {
     ...queryParams
   }
   const result = await request.get({ url: urlApi, params: sendData }, '/business')
   if (result) {
-    infoList[0]['num'] = result.output ?? 0
-    infoList[1]['num'] = result.cost ?? 0
+    infoList[0]['num'] = result.amount ?? 0
+    infoList[1]['num'] = result.nums ?? 0
   }
 }
-queryProjectCalculate()
-const onSaveHandle = () => {}
+queryProjectTrackingSummary()
 onMounted(() => {
   tableHeight.value = tableRef.value.clientHeight
 })