Преглед изворни кода

fix: 完善项目签约判断,合同tab按钮判断,新增项目接口文件与类型

hotchicken1996 пре 1 година
родитељ
комит
fbfd82de91

+ 133 - 0
client/src/interface/project.ts

@@ -1 +1,134 @@
 export type ProjectId = string
+
+export interface ProjectRecord {
+  /**
+   * 归属公司ID
+   */
+  belongCompanyid: string
+  /**
+   * 归属公司名称
+   */
+  belongCompanyname: string
+  /**
+   * 备注
+   */
+  bz?: null | string
+  /**
+   * 子项目
+   */
+  children: string[]
+  /**
+   * 合同额
+   */
+  contractAmount?: number
+  /**
+   * 流程办结时间
+   */
+  flowFinishtime?: string
+  /**
+   * 行业id,{ 1,"公司内部项目"},{ 2,"IT行业"},{ 3,"政府行业"},{ 4,"其他"}
+   */
+  hyId: number
+  id: string
+  /**
+   * 流程id
+   */
+  instanceId: string
+  /**
+   * 是否签订合同,1-已签订,0-未签订
+   */
+  isSign?: number
+  /**
+   * 立项时间
+   */
+  lxsj: string
+  /**
+   * 总产值
+   */
+  outputValue?: number
+  /**
+   * 父项目id
+   */
+  pid: string
+  /**
+   * 总成本
+   */
+  projectCost?: number
+  /**
+   * 项目类别id
+   */
+  projectTypeId: string
+  /**
+   * 项目类型名称
+   */
+  projectTypeName: string
+  /**
+   * 分成系数
+   */
+  shareRatio?: number
+  /**
+   * 立项人id
+   */
+  workerId: string
+  /**
+   * 项目编号
+   */
+  xmbh: string
+  /**
+   * 项目经理名称
+   */
+  xmjl: string
+  /**
+   * 项目经理id
+   */
+  xmjlId: string
+  /**
+   * 项目结束日期
+   */
+  xmjsrq?: null | string
+  /**
+   * 项目开始日期
+   */
+  xmksrq?: null | string
+  /**
+   * 项目名称
+   */
+  xmmc: string
+  /**
+   * 项目状态,0-立项申请中 1-进行中 2-已结项 3-中止 4-已验收
+   */
+  xmzt: number
+  /**
+   * 销售人员名称
+   */
+  xsry: string
+  /**
+   * 销售人员id
+   */
+  xsryId: string
+  /**
+   * 行政区代码
+   */
+  xzqdm: string
+  /**
+   * 行政区名称
+   */
+  xzqmc: string
+  /**
+   * 预估工期(天)
+   */
+  yggq: number
+  /**
+   * 验收单有效性
+   */
+  ysdyxx: string
+  yssj: null
+  /**
+   * 责任部门名称
+   */
+  zrbm: string
+  /**
+   * 责任部门id
+   */
+  zrbmId: string
+}

+ 17 - 0
client/src/service/project.ts

@@ -0,0 +1,17 @@
+import { Contract, ContractId } from '@/interface/contract'
+import request from '@/config/axios'
+import { ProjectRecord, ProjectId } from '@/interface/project'
+
+/**
+ * 项目详情(无子项目)
+ * @param projectId
+ */
+export const getProjectById = async (projectId: ProjectId): Promise<ProjectRecord> => {
+  return await request.get(
+    {
+      url: '/project',
+      params: { id: projectId }
+    },
+    '/business'
+  )
+}

+ 3 - 3
client/src/views/OaSystem/projectCenter/projectDetail/components/xmcb/index.scss

@@ -57,7 +57,7 @@
               vertical-align: bottom;
               display: inline-block;
             }
-            >.value {
+            .value {
               font-size: 40px;
               font-weight: bold;
             }
@@ -110,7 +110,7 @@
           }
         }
         &.tableLineBox {
-          
+
           table {
             width: 100%;
             border-collapse: collapse;
@@ -144,4 +144,4 @@
       }
     }
   }
-}
+}

+ 31 - 25
client/src/views/OaSystem/projectCenter/projectDetail/projectDetail.vue

@@ -11,7 +11,9 @@
         </div>
         <ul>
           <li @click="editorProject">{{ !isEditorProject ? '编辑' : '保存' }}</li>
-          <li v-if="projectDetail['isSign'] === 1" @click="handleStartContractSign">合同签订</li>
+          <li v-if="projectDetail['isSign'] === 1 && !contractData" @click="handleStartContractSign"
+            >合同签订</li
+          >
           <li @click="addSubProject">添加子项目</li>
           <li>验收</li>
           <li>结项</li>
@@ -23,8 +25,10 @@
           <li @click="switchComponent(XmxxComp, 0)" :class="currentIndex === 0 ? 'active' : ''"
             ><i class="icon"></i>项目信息
           </li>
-          <!-- v-if="projectDetail['isSign'] === 1" -->
-          <li @click="switchComponent(XmhtComp, 1)" :class="currentIndex === 1 ? 'active' : ''"
+          <li
+            v-if="!!contractData"
+            @click="switchComponent(XmhtComp, 1)"
+            :class="currentIndex === 1 ? 'active' : ''"
             ><i class="icon"></i>项目合同
           </li>
           <li @click="switchComponent(XmcbComp, 2)" :class="currentIndex === 2 ? 'active' : ''"
@@ -71,11 +75,12 @@ const XmxxComp = defineAsyncComponent(() => {
   return import('./components/xmxx/index.vue')
 })
 import XmhtComp from './components/xmht/index.vue'
-import { startContractSign, startOutsourcing } from '@/service/contract'
+import { getContractsByProject, startContractSign, startOutsourcing } from '@/service/contract'
 import { openFlow } from '@/utils/flow'
-import { useMutation } from '@tanstack/vue-query'
+import { useMutation, useQuery } from '@tanstack/vue-query'
 import { ContractId } from '@/interface/contract'
 import { ProjectId } from '@/interface/project'
+import { getProjectById } from '@/service/project'
 
 const XmcbComp = defineAsyncComponent(() => {
   return import('./components/xmcb/index.vue')
@@ -83,6 +88,8 @@ const XmcbComp = defineAsyncComponent(() => {
 const FjclComp = defineAsyncComponent(() => {
   return import('./components/fjcl/index.vue')
 })
+
+const { query } = useRoute()
 const currentComponent = shallowRef<Component>(XmxxComp)
 const currentIndex = shallowRef<number>(0)
 const switchComponent: (c: Component, i: number) => void = (c: Component, i: number) => {
@@ -94,28 +101,16 @@ const addSubProject: () => void = () => {
   dynamicRef.value?.switchSubProject()
 }
 
-/**
- * 项目详情后台接口
+/***
+ * 查询项目详情
  * **/
-const projectDetail = shallowRef({
-  xmmc: '',
-  contractAmount: '',
-  receivableAmount: '',
-  contractBalance: ''
-})
-const queryProjectDetail = async (id: any): Promise<void> => {
-  const urlApi = `/project`
-  const sendData = {
-    id: id
+const { data: projectDetail } = useQuery(
+  [getProjectById.name, query.id],
+  async () => await getProjectById(query.id as string),
+  {
+    enabled: (query?.id ?? '') !== ''
   }
-  const result = await request.get({ url: urlApi, params: sendData }, '/business')
-  projectDetail.value = result
-}
-const route = useRoute()
-const query = route.query
-if (query.id) {
-  queryProjectDetail(query.id)
-}
+)
 /**
  * 项目编辑
  *  **/
@@ -127,6 +122,17 @@ const editorProject: () => void = (): void => {
   dynamicRef.value.saveProjectHandle()
 }
 
+/***
+ * 查询合同数据
+ * **/
+const { data: contractData } = useQuery(
+  [getContractsByProject.name, query.id],
+  async () => await getContractsByProject(query.id as string),
+  {
+    enabled: (query?.id ?? '') !== ''
+  }
+)
+
 /**
  * 发起合同签订
  */