Bläddra i källkod

项目详情功能优化

songxy 1 år sedan
förälder
incheckning
020a4a1a9e

+ 15 - 0
client/src/service/contract.ts

@@ -17,6 +17,21 @@ export const getContractsById = async (contractId: ContractId): Promise<Contract
   )
 }
 
+/**
+ * 判断项目是否签订合同
+ * @param projectId
+ */
+export const isProjectContractExist = async (projectId: ProjectId): Promise<Contract[]> => {
+  const data = await request.get(
+    {
+      url: '/project/contract/exist',
+      params: { projectId }
+    },
+    '/business'
+  )
+  return data
+}
+
 /**
  * 合同详情与分包合同列表
  * @param projectId

+ 4 - 4
client/src/views/OaSystem/projectCenter/projectDetail/components/xmcb/normalCost.vue

@@ -30,8 +30,8 @@
       <ul>
         <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
           <img class="mr-8px" :src="getAssetURL(item.icon)" alt="" />
-          <p>{{ item.name }}({{ totalAmount > 100000 ? '万元' : '元' }}):</p>
-          <h4 class="font-size-18px">{{ item.num / (totalAmount > 100000 ? 10000 : 1) }}</h4>
+          <p>{{ item.name }}:</p>
+          <h4 class="font-size-18px">{{ item.num.toFixed(2) }}</h4>
         </li>
       </ul>
     </div>
@@ -151,8 +151,8 @@ const totalAmount = ref<number>(0)
 const initDetailCoast = (projectIds: string[], countDate: string) => {
   queryParams.projectIds = projectIds
   queryParams.flowFinishtime = [
-    moment(countDate).startOf('months').format('YYYY-MM-DD'),
-    moment(countDate).endOf('months').format('YYYY-MM-DD')
+    moment(countDate).startOf('months').format('YYYY-MM-DD HH:mm:ss'),
+    moment(countDate).endOf('months').format('YYYY-MM-DD HH:mm:ss')
   ]
   getOverview()
   getListAjax()

+ 4 - 4
client/src/views/OaSystem/projectCenter/projectDetail/components/xmcb/travelCost.vue

@@ -30,8 +30,8 @@
       <ul>
         <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
           <img class="mr-8px" :src="getAssetURL(item.icon)" alt="" />
-          <p>{{ item.name }}({{ totalAmount > 100000 ? '万元' : '元' }}):</p>
-          <h4 class="font-size-18px">{{ item.num / (totalAmount > 100000 ? 10000 : 1) }}</h4>
+          <p>{{ item.name }}:</p>
+          <h4 class="font-size-18px">{{ item.num.toFixed(2) }}</h4>
         </li>
       </ul>
     </div>
@@ -152,8 +152,8 @@ const totalAmount = ref<number>(0)
 const initDetailCoast = (projectIds: string[], countDate: string) => {
   queryParams.projectIds = projectIds
   queryParams.flowFinishtime = [
-    moment(countDate).startOf('months').format('YYYY-MM-DD'),
-    moment(countDate).endOf('months').format('YYYY-MM-DD')
+    moment(countDate).startOf('months').format('YYYY-MM-DD HH:mm:ss'),
+    moment(countDate).endOf('months').format('YYYY-MM-DD HH:mm:ss')
   ]
   getOverview()
   getListAjax()

+ 3 - 1
client/src/views/OaSystem/projectCenter/projectDetail/components/xmcb/usemoneyCost.vue

@@ -31,7 +31,9 @@
         <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
           <img class="mr-8px" :src="getAssetURL(item.icon)" alt="" />
           <p>{{ item.name }}({{ totalAmount > 100000 ? '万元' : '元' }}):</p>
-          <h4 class="font-size-18px">{{ item.num / (totalAmount > 100000 ? 10000 : 1) }}</h4>
+          <h4 class="font-size-18px">{{
+            (item.num / (totalAmount > 100000 ? 10000 : 1)).toFixed(2)
+          }}</h4>
         </li>
       </ul>
     </div>

+ 45 - 38
client/src/views/OaSystem/projectCenter/projectDetail/projectDetail.vue

@@ -28,21 +28,16 @@
               projectDetail?.['isSign'] === 1
             "
           >
-            <li
-              v-if="contractDatas?.length === 0 || contractFlowStatuMap[0]"
-              @click="handleStartContractSign"
-            >
-              合同签订
-            </li>
             <dialog-confirm
-              title="当前存在进行中的合同,是否重复发起?"
-              v-else-if="contractFlowStatuMap[1]"
+              title="是否发起合同签订流程?"
+              v-if="!signContract?.exist"
               @confirm="handleStartContractSign"
             >
               <template #reference>
                 <li>合同签订</li>
               </template>
             </dialog-confirm>
+            <li @click="processLookHandle(signContract.instanceId)">合同签订</li>
           </template>
           <li
             v-if="projectPermis.projectPermisState.all || projectPermis.projectPermisState.xmLeader"
@@ -98,7 +93,7 @@
           >
             结项
           </li>
-          <li @click="processLookHandle">查看流程</li>
+          <li @click="processLookHandle(projectDetail.instanceId)">查看流程</li>
         </ul>
       </div>
       <div>
@@ -107,7 +102,9 @@
             <div><i class="icon"></i>项目信息</div>
           </li>
           <li
-            v-show="contractFlowStatuMap[90]"
+            v-show="
+              signContract.exist && signContract.isvalid == 1 && signContract.flowStatus === 90
+            "
             @click="switchComponent(XmhtComp, 1)"
             :class="currentIndex === 1 ? 'active' : ''"
           >
@@ -124,11 +121,15 @@
           <template v-if="projectDetail?.['isSign'] === 0">
             <p style="margin-right: 0px">该项目不签合同</p>
           </template>
-          <template v-else-if="contractDatas.length === 0">
+          <template v-else-if="!signContract.exist">
             <p style="margin-right: 0px">该项目待签合同</p>
           </template>
-          <template v-else-if="contractFlowStatuMap[0]">
-            <p style="margin-right: 0px">合同签订中</p>
+          <template
+            v-else-if="
+              signContract.exist && signContract.isvalid == 1 && signContract.flowStatus != 90
+            "
+          >
+            <p style="margin-right: 0px">合同签订过程中</p>
           </template>
           <template v-else>
             <p>
@@ -152,7 +153,11 @@
         :is="currentComponent"
         ref="dynamicRef"
         :editor="isEditorProject"
-        :isEstimateAmount="contractFlowStatuMap[1] || contractFlowStatuMap[90] ? false : true"
+        :isEstimateAmount="
+          signContract.exist &&
+          signContract.isvalid == 1 &&
+          (signContract.flowStatus == 90 || signContract.flowStatus == 1)
+        "
       />
     </div>
   </div>
@@ -162,6 +167,7 @@ import { type Component } from 'vue'
 import { useRoute } from 'vue-router'
 import { useProjectPermis } from '@/store/modules/projectPermis'
 import {
+  isProjectContractExist,
   getContractsByProject,
   startContractSign,
   startOutsourcingApply,
@@ -198,6 +204,29 @@ const switchComponent: (c: Component, i: number) => void = (c: Component, i: num
 }
 const projectPermis = useProjectPermis()
 projectPermis.initProjectPermis(projectId as string)
+/***
+ * 初始化项目中是否存在合同
+ */
+const signContract = ref<{
+  exist: boolean //判断是否存在合同
+  contractId: string
+  instanceId: string
+  isvalid: number //判断有没有作废 0 已作废 1 未作废
+  flowStatus: number
+}>({
+  exist: false,
+  contractId: '',
+  instanceId: '',
+  isvalid: 0,
+  flowStatus: 0
+})
+const queryProjectContractExist = async (projectId: string) => {
+  const result: any = await isProjectContractExist(projectId)
+  if (result) {
+    signContract.value = result
+  }
+}
+queryProjectContractExist(query?.id as string)
 /***
  * 查询项目详情
  * **/
@@ -273,37 +302,15 @@ const projectStatusAndProcessHandler = (sfys: string) => {
 /**
  * 流程查看
  */
-const processLookHandle = () => {
-  openProcessFlow(router, projectDetail.value?.instanceId)
+const processLookHandle = (instanceId: string) => {
+  openProcessFlow(router, instanceId)
 }
 /***
  * 查询合同数据:存在多主合同情况
  * **/
 const contractDatas = ref<Contract[]>([])
-interface ContractStatuInterface {
-  [key: number]: boolean
-}
-const contractFlowStatuMap = ref<ContractStatuInterface>({
-  0: false,
-  1: false,
-  90: false
-})
-const contractFlowStatuMapFunc: (datas: Contract[]) => ContractStatuInterface = (
-  datas: Contract[]
-) => {
-  const result: ContractStatuInterface = {
-    0: false,
-    1: false,
-    90: false
-  }
-  for (const contract of datas) {
-    result[contract.flowStatus] = true
-  }
-  return result
-}
 const queryContractsByProject = async (projectId: string) => {
   const tData: Contract[] = await getContractsByProject(projectId)
-  contractFlowStatuMap.value = contractFlowStatuMapFunc(tData)
   contractDatas.value = tData
   if (contractDatas.value.length > 0 && contractId) {
     switchComponent(XmhtComp, 1)