浏览代码

分包/外包合同页面搭建和项目详情功能调整

songxy 1 年之前
父节点
当前提交
16dbaf3b35

+ 4 - 0
client/src/interface/common.ts

@@ -0,0 +1,4 @@
+export interface PageParam {
+  pageNo: number
+  pageSize: number
+}

+ 9 - 0
client/src/router/modules/remaining.ts

@@ -160,6 +160,15 @@ const remainingRouter: AppRouteRecordRaw[] = [
           title: '新闻详情'
         }
       },
+      {
+        path: 'subContractAndOutsourcing',
+        component: () =>
+          import('@/views/OaSystem/marketCenter/subContractAndOutsourcing/applyIndex.vue'),
+        name: 'subContractAndOutsourcing',
+        meta: {
+          title: '分/外包查询'
+        }
+      },
       {
         path: 'noticeLook',
         component: () => import('@/views/OaSystem/officeCenter/noticeAndLearn/noticeLook.vue'),

+ 30 - 3
client/src/service/contract.ts

@@ -108,7 +108,34 @@ export const getContractSharingList = async (contractId: ContractId) => {
  * 发起分包合同申请
  * @param contractId
  */
-export const startSubcontract = async (contractId: ContractId) => {
+export const startSubcontractApply = async (projectId: string) => {
+  return await request.get(
+    {
+      url: '/subcontract-apply/process',
+      params: { projectId }
+    },
+    '/business'
+  )
+}
+
+/**
+ * 发起外包合同申请
+ * @param contractId
+ */
+export const startOutsourcingApply = async (projectId: string) => {
+  return await request.get(
+    {
+      url: '/outsourcing-apply/process',
+      params: { projectId }
+    },
+    '/business'
+  )
+}
+/**
+ * 发起分包合同签订
+ * @param contractId
+ */
+export const startSubcontract = async (contractId: string) => {
   return await request.get(
     {
       url: '/subcontract/process',
@@ -119,10 +146,10 @@ export const startSubcontract = async (contractId: ContractId) => {
 }
 
 /**
- * 发起外包合同申请
+ * 发起外包合同签订
  * @param contractId
  */
-export const startOutsourcing = async (contractId: ContractId) => {
+export const startOutsourcing = async (contractId: string) => {
   return await request.get(
     {
       url: '/outsourcing/process',

+ 26 - 11
client/src/views/OaSystem/financialManagement/kpglPage/deptIndex.vue

@@ -130,52 +130,67 @@
         <el-table-column
           align="center"
           prop="invoiceNo"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           label="发票号码"
         />
         <el-table-column
           align="center"
           prop="invoiceDate"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           :formatter="dateFormatter"
           label="开票日期"
         />
         <el-table-column
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           align="center"
           prop="contractNumber"
           label="合同编号"
         />
-        <el-table-column align="center" show-overflow-tooltip="true" prop="name" label="合同名称" />
-        <el-table-column align="center" show-overflow-tooltip="true" prop="xmbh" label="项目编号" />
-        <el-table-column show-overflow-tooltip="true" align="center" prop="xmmc" label="项目名称" />
         <el-table-column
-          show-overflow-tooltip="true"
+          align="center"
+          :show-overflow-tooltip="true"
+          prop="name"
+          label="合同名称"
+        />
+        <el-table-column
+          align="center"
+          :show-overflow-tooltip="true"
+          prop="xmbh"
+          label="项目编号"
+        />
+        <el-table-column
+          :show-overflow-tooltip="true"
+          align="center"
+          prop="xmmc"
+          label="项目名称"
+        />
+        <el-table-column
+          :show-overflow-tooltip="true"
           align="center"
           prop="payCompany"
           label="付款单位"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="invoiceContent"
           label="开票内容"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="invoiceAmount"
           label="开票金额(元)"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="invoiceAmount"
           label="未回款金额(元)"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="returnDate"
           label="回款日期"
         />

+ 46 - 25
client/src/views/OaSystem/financialManagement/kpglPage/index.vue

@@ -10,14 +10,6 @@
         />
       </div>
 
-      <div class="form">
-        <span class="formSpan">合同编号:</span>
-        <el-input
-          v-model="queryParams.commonCostNo"
-          placeholder="请输入合同编号"
-          style="width: 210px"
-        />
-      </div>
       <div class="form">
         <span class="formSpan">合同名称:</span>
         <el-input
@@ -27,11 +19,19 @@
         />
       </div>
       <div class="form">
-        <span class="formSpan">项目编号:</span>
+        <span class="formSpan">区域经理:</span>
         <el-input
-          v-model="queryParams.costType"
-          placeholder="请输入项目编号"
-          style="width: 160px"
+          v-model="queryParams.commonCostNo"
+          placeholder="请输入区域经理"
+          style="width: 210px"
+        />
+      </div>
+      <div class="form">
+        <span class="formSpan">责任部门:</span>
+        <el-input
+          v-model="queryParams.commonCostNo"
+          placeholder="请输入责任部门"
+          style="width: 210px"
         />
       </div>
       <div class="form">
@@ -130,55 +130,76 @@
         <el-table-column
           align="center"
           prop="invoiceNo"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           label="发票号码"
         />
         <el-table-column
           align="center"
           prop="invoiceDate"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           :formatter="dateFormatter"
           label="开票日期"
         />
         <el-table-column
-          show-overflow-tooltip="true"
           align="center"
-          prop="contractNumber"
-          label="合同编号"
+          :show-overflow-tooltip="true"
+          prop="name"
+          label="合同名称"
+        />
+        <el-table-column
+          :show-overflow-tooltip="true"
+          align="center"
+          prop="xmmc"
+          label="区域经理"
+        />
+        <el-table-column
+          :show-overflow-tooltip="true"
+          align="center"
+          prop="xmmc"
+          label="责任部门"
         />
-        <el-table-column align="center" show-overflow-tooltip="true" prop="name" label="合同名称" />
-        <el-table-column align="center" show-overflow-tooltip="true" prop="xmbh" label="项目编号" />
-        <el-table-column show-overflow-tooltip="true" align="center" prop="xmmc" label="项目名称" />
         <el-table-column
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
+          align="center"
+          prop="xmmc"
+          label="项目名称"
+        />
+        <el-table-column
+          :show-overflow-tooltip="true"
           align="center"
           prop="payCompany"
           label="付款单位"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="invoiceContent"
           label="开票内容"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="invoiceAmount"
           label="开票金额(元)"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="invoiceAmount"
           label="未回款金额(元)"
         />
         <el-table-column
           align="center"
-          show-overflow-tooltip="true"
+          :show-overflow-tooltip="true"
           prop="returnDate"
           label="回款日期"
         />
+        <el-table-column
+          align="center"
+          :show-overflow-tooltip="true"
+          prop="returnDate"
+          label="备注"
+        />
         <el-table-column prop="state" label="开票状态" width="100">
           <template #default="scope">
             {{ xmztMap[scope.row.flowStatus] }}

+ 139 - 0
client/src/views/OaSystem/marketCenter/subContractAndOutsourcing/applyIndex.vue

@@ -0,0 +1,139 @@
+<template>
+  <div class="_ProjectCenterBook">
+    <div class="searchBox">
+      <div class="form">
+        <span class="formSpan">合同类别:</span>
+        <el-select width="160px" v-model="contractType" class="m-2" placeholder="请选择行业">
+          <el-option
+            v-for="item in contractTypes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </div>
+      <div class="from">
+        <div class="btnBox">
+          <el-button type="primary" style="background: #3485ff" @click="searchHandle">
+            <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
+            查询
+          </el-button>
+        </div>
+      </div>
+    </div>
+    <div class="tableBox">
+      <div class="table" ref="tableRef">
+        <el-table
+          stripe
+          :data="tableData"
+          style="width: 100%; height: 100%"
+          :style="{ height: tableHeight + 'px' }"
+          :header-cell-style="{
+            background: '#E5F0FB',
+            color: '#233755',
+            height: '50px'
+          }"
+        >
+          <el-table-column label="序号" width="60">
+            <template #default="scope">{{ scope.$index + 1 }}</template>
+          </el-table-column>
+          <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" />
+          <el-table-column prop="applyDate" label="责任部门" />
+          <el-table-column prop="subAmount" label="分/外包合同额" />
+          <el-table-column prop="subShareWay" label="供应商" />
+          <el-table-column prop="applyWorker" label="申请人" />
+          <el-table-column prop="applyDate" label="申请时间" />
+          <el-table-column label="操作" fixed="right" width="80">
+            <template #default="scope">
+              <div class="operateBtn" @click="operateClick(scope.row)">
+                <span>查看流程</span>
+              </div>
+              <div class="operateBtn" @click="operateClick(scope.row)">
+                <span>查看合同签订流程</span>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="pageBox">
+        <el-pagination
+          v-model:current-page="queryParams.pageNo"
+          :page-size="15"
+          background
+          layout="total, prev, pager, next, jumper"
+          :total="totalPage"
+          @current-change="handleCurrentChange"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import { PageParam } from '@/interface/common'
+import request from '@/config/axios'
+import { useMutation } from '@tanstack/vue-query'
+import { reactive } from 'vue'
+
+/**
+ * 分包合同和外包合同列表
+ *   **/
+defineOptions({ name: 'SubContractAndOutsourcing' })
+interface SearchFormInterface extends PageParam {
+  projectName: string
+}
+const queryParams = ref<SearchFormInterface>({
+  pageNo: 1,
+  pageSize: 10,
+  projectName: ''
+})
+const tableData = ref<any>()
+const totalPage = ref<number>(0)
+const contractType = ref<number>(0)
+const contractTypes = reactive([
+  {
+    label: '全部',
+    value: 0
+  },
+  {
+    label: '分包合同',
+    value: 1
+  },
+  {
+    label: '外包合同',
+    value: 2
+  }
+])
+
+const querySubContractAndOutsourcingByPage = async () => {
+  const subContractUrl: string = '/subcontract-apply/page'
+  const outsourcingUrl: string = '/outsource-apply/page'
+  return await request.post(
+    {
+      url: contractType.value === 1 ? subContractUrl : outsourcingUrl,
+      data: queryParams.value
+    },
+    '/business'
+  )
+}
+const { mutate: querySubContractAndOutsourcingMutate } = useMutation(
+  querySubContractAndOutsourcingByPage,
+  {
+    onSuccess: (data) => {
+      tableData.value = data?.records
+      totalPage.value = data?.total
+    }
+  }
+)
+
+querySubContractAndOutsourcingMutate()
+
+const handleCurrentChange = (val: number) => {
+  queryParams.value.pageNo = val
+  querySubContractAndOutsourcingMutate()
+}
+const searchHandle = () => {
+  queryParams.value.pageNo = 1
+  querySubContractAndOutsourcingMutate()
+}
+const operateClick = (item) => {}
+</script>

+ 139 - 0
client/src/views/OaSystem/marketCenter/subContractAndOutsourcing/signIndex.vue

@@ -0,0 +1,139 @@
+<template>
+  <div class="_ProjectCenterBook">
+    <div class="searchBox">
+      <div class="form">
+        <span class="formSpan">合同类别:</span>
+        <el-select width="160px" v-model="contractType" class="m-2" placeholder="请选择行业">
+          <el-option
+            v-for="item in contractTypes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </div>
+      <div class="from">
+        <div class="btnBox">
+          <el-button type="primary" style="background: #3485ff" @click="searchHandle">
+            <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
+            查询
+          </el-button>
+        </div>
+      </div>
+    </div>
+    <div class="tableBox">
+      <div class="table" ref="tableRef">
+        <el-table
+          stripe
+          :data="tableData"
+          style="width: 100%; height: 100%"
+          :style="{ height: tableHeight + 'px' }"
+          :header-cell-style="{
+            background: '#E5F0FB',
+            color: '#233755',
+            height: '50px'
+          }"
+        >
+          <el-table-column label="序号" width="60">
+            <template #default="scope">{{ scope.$index + 1 }}</template>
+          </el-table-column>
+          <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" />
+          <el-table-column prop="applyDate" label="责任部门" />
+          <el-table-column prop="subAmount" label="分/外包合同额" />
+          <el-table-column prop="subShareWay" label="供应商" />
+          <el-table-column prop="applyWorker" label="申请人" />
+          <el-table-column prop="applyDate" label="申请时间" />
+          <el-table-column label="操作" fixed="right" width="80">
+            <template #default="scope">
+              <div class="operateBtn" @click="operateClick(scope.row)">
+                <span>查看流程</span>
+              </div>
+              <div class="operateBtn" @click="operateClick(scope.row)">
+                <span>查看合同签订流程</span>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="pageBox">
+        <el-pagination
+          v-model:current-page="queryParams.pageNo"
+          :page-size="15"
+          background
+          layout="total, prev, pager, next, jumper"
+          :total="totalPage"
+          @current-change="handleCurrentChange"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import { PageParam } from '@/interface/common'
+import request from '@/config/axios'
+import { useMutation } from '@tanstack/vue-query'
+import { reactive } from 'vue'
+
+/**
+ * 分包合同和外包合同列表
+ *   **/
+defineOptions({ name: 'SubContractAndOutsourcing' })
+interface SearchFormInterface extends PageParam {
+  projectName: string
+}
+const queryParams = ref<SearchFormInterface>({
+  pageNo: 1,
+  pageSize: 10,
+  projectName: ''
+})
+const tableData = ref<any>()
+const totalPage = ref<number>(0)
+const contractType = ref<number>(0)
+const contractTypes = reactive([
+  {
+    label: '全部',
+    value: 0
+  },
+  {
+    label: '分包合同',
+    value: 1
+  },
+  {
+    label: '外包合同',
+    value: 2
+  }
+])
+
+const querySubContractAndOutsourcingByPage = async () => {
+  const subContractUrl: string = '/subcontract-apply/page'
+  const outsourcingUrl: string = '/outsource-apply/page'
+  return await request.post(
+    {
+      url: contractType.value === 1 ? subContractUrl : outsourcingUrl,
+      data: queryParams.value
+    },
+    '/business'
+  )
+}
+const { mutate: querySubContractAndOutsourcingMutate } = useMutation(
+  querySubContractAndOutsourcingByPage,
+  {
+    onSuccess: (data) => {
+      tableData.value = data?.records
+      totalPage.value = data?.total
+    }
+  }
+)
+
+querySubContractAndOutsourcingMutate()
+
+const handleCurrentChange = (val: number) => {
+  queryParams.value.pageNo = val
+  querySubContractAndOutsourcingMutate()
+}
+const searchHandle = () => {
+  queryParams.value.pageNo = 1
+  querySubContractAndOutsourcingMutate()
+}
+const operateClick = (item) => {}
+</script>

+ 0 - 1
client/src/views/OaSystem/projectCenter/projectBook/myProject.vue

@@ -157,7 +157,6 @@ const router = useRouter()
 const { wsCache } = useCache()
 const user = wsCache.get(CACHE_KEY.USER)
 const userId = user.user.id ? user.user.id : ''
-const deptId = user.user.deptId ? user.user.deptId : ''
 const tableRef: any = ref(null)
 const tableHeight: any = ref(0)
 const queryParams = reactive<{

+ 22 - 18
client/src/views/OaSystem/projectCenter/projectDetail/components/xmcb/index.vue

@@ -1,24 +1,28 @@
 <template>
   <div class="_ProjectDetail_xmxx">
     <div class="header">
-      <el-select
-        v-model="projectId"
-        placeholder="请选择项目"
-        style="width: 240px"
-        @change="switchProjectHandle"
-      >
-        <el-option
-          v-for="item in projectTypeList"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value"
-        >
-          <span class="select_label" :title="item.label">{{ item.label }}</span>
-          <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px">{{
-            item.type === 0 ? '主项目' : '子项目'
-          }}</span>
-        </el-option>
-      </el-select>
+      <el-form>
+        <el-form-item label="项目选择:">
+          <el-select
+            v-model="projectId"
+            placeholder="请选择项目"
+            style="width: 240px"
+            @change="switchProjectHandle"
+          >
+            <el-option
+              v-for="item in projectTypeList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+              <span class="select_label" :title="item.label">{{ item.label }}</span>
+              <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px">{{
+                item.type === 0 ? '主项目' : '子项目'
+              }}</span>
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
     </div>
     <div class="content">
       <div class="cardBox">

+ 6 - 1
client/src/views/OaSystem/projectCenter/projectDetail/components/xmxx/ProjectMember.vue

@@ -20,7 +20,12 @@ const { data: projectWorkerRelationList, refetch } = useQuery(
   [getProjectMember.name, unref(projectId)],
   async () => await getProjectMember(unref(projectId))
 )
-
+watch(
+  () => props.projectId,
+  () => {
+    refetch()
+  }
+)
 const { mutate: handleDelete } = useMutation(deleteMember, {
   onSuccess: () => {
     void refetch()

+ 6 - 0
client/src/views/OaSystem/projectCenter/projectDetail/components/xmxx/ProjectMileStone.vue

@@ -14,6 +14,12 @@ const { data: projectMilestoneList, refetch } = useQuery(
   [getProjectMileStone.name, unref(projectId)],
   async () => await getProjectMileStone(unref(projectId))
 )
+watch(
+  () => props.projectId,
+  () => {
+    refetch()
+  }
+)
 const { mutate: handleFinish, isLoading } = useMutation(finishProjectMileStone, {
   onSuccess: () => {
     refetch()

+ 25 - 25
client/src/views/OaSystem/projectCenter/projectDetail/components/xmxx/index.vue

@@ -130,7 +130,7 @@
                   />
                 </td>
               </tr>
-              <tr v-show="isMaster">
+              <tr>
                 <td class="th">预估工期(天):</td>
                 <td>
                   <el-input
@@ -139,24 +139,24 @@
                     :disabled="!editor"
                   />
                 </td>
-                <td class="th">预估金额(元):</td>
-                <td>
-                  <el-input
-                    class="form-item-disable-style"
-                    v-model="projectDetail['estimateAmount']"
-                    :disabled="!editor"
-                  />
-                </td>
-              </tr>
-              <tr v-show="!isMaster">
-                <td class="th">预估工期(天):</td>
-                <td colspan="3">
-                  <el-input
-                    class="form-item-disable-style"
-                    v-model="projectDetail['yggq']"
-                    :disabled="!editor"
-                  />
-                </td>
+                <template
+                  v-if="
+                    isMaster && projectDetail['isSign'] === 1 && (!contentType || contentType == 0)
+                  "
+                >
+                  <td class="th">预估金额(元):</td>
+                  <td>
+                    <el-input
+                      class="form-item-disable-style"
+                      v-model="projectDetail['estimateAmount']"
+                      :disabled="!editor"
+                    />
+                  </td>
+                </template>
+                <template v-else>
+                  <td class="th"></td>
+                  <td> </td>
+                </template>
               </tr>
             </table>
           </div>
@@ -177,11 +177,11 @@
               <tr>
                 <td class="th">是否签合同:</td>
                 <td>{{ projectDetail['isSign'] === 0 ? '否' : '是' }}</td>
-                <td class="th">本项目成本():</td>
+                <td class="th">本项目成本():</td>
                 <td>{{ projectDetail['xmcbys'] }}</td>
               </tr>
               <tr>
-                <td class="th">本项目产值():</td>
+                <td class="th">本项目产值():</td>
                 <td>{{ projectDetail?.['outputValue'] }}</td>
                 <td class="th">利益分成(公司/部门):</td>
                 <td>
@@ -193,9 +193,9 @@
         </div>
       </template>
       <!--项目成员-->
-      <ProjectMember v-else-if="currentIndex === 1" :projectId="_mainProjectId" />
+      <ProjectMember v-else-if="currentIndex === 1" :projectId="currentProjectId as string" />
       <!--项目里程碑-->
-      <ProjectMileStone v-else :projectId="_mainProjectId" />
+      <ProjectMileStone v-else :projectId="currentProjectId as string" />
     </div>
     <AddSubProject
       :projectId="_mainProjectId"
@@ -221,8 +221,8 @@ import ProjectMember from '@/views/OaSystem/projectCenter/projectDetail/componen
 import ProjectMileStone from '@/views/OaSystem/projectCenter/projectDetail/components/xmxx/ProjectMileStone.vue'
 
 defineOptions({ name: 'XmxxComp' })
-const props = defineProps<{ editor: boolean }>()
-const { editor } = toRefs(props)
+const props = defineProps<{ editor: boolean; contractType: number | undefined }>()
+const { editor, contentType } = toRefs(props)
 const { query } = useRoute()
 const { id: _mainProjectId = '', subId = '' } = query as {
   id: string

+ 41 - 29
client/src/views/OaSystem/projectCenter/projectDetail/projectDetail.vue

@@ -17,17 +17,22 @@
           <li v-show="currentIndex === 0" @click="editorProject"
             >{{ !isEditorProject ? '编辑' : '保存' }}
           </li>
-          <template v-if="projectDetail?.['isSign'] !== 0 && contractData?.flowStatus !== 90">
+          <template v-if="projectDetail?.['isSign'] === 1">
+            <li
+              v-if="!contractData || contractData?.flowStatus === 0"
+              @click="handleStartContractSign"
+            >
+              合同签订
+            </li>
             <el-popconfirm
               title="当前存在进行中的合同,是否重复发起?"
-              v-if="!projectDetail?.contractAmount"
+              v-else-if="contractData?.flowStatus === 1"
               @confirm="handleStartContractSign"
             >
               <template #reference>
                 <li>合同签订</li>
               </template>
             </el-popconfirm>
-            <li v-else @click="handleStartContractSign">合同签订</li>
           </template>
           <li v-show="currentIndex === 0" @click="addSubProject">添加子项目</li>
           <li @click="handleStartSubcontract">分包申请</li>
@@ -59,23 +64,36 @@
           </li>
         </ul>
         <div class="projectInfo">
-          <p>
-            <span class="title">合同额(元):</span>
-            <span class="value">{{ projectDetail?.['contractAmount'] ?? '' }}</span>
-          </p>
-          <p>
-            <span class="title">应收款(元):</span>
-            <span class="value">{{ projectDetail?.['receivableAmount'] ?? '' }}</span>
-          </p>
-          <p>
-            <span class="title">合同余额(元):</span>
-            <span class="value">{{ projectDetail?.['contractBalance'] ?? '' }}</span>
-          </p>
+          <template v-if="projectDetail?.['isSign'] === 0">
+            <p style="margin-right: 0px">该项目不签合同</p>
+          </template>
+          <template v-else-if="!contractData || contractData?.flowStatus === 0">
+            <p style="margin-right: 0px">该项目待签合同</p>
+          </template>
+          <template v-else>
+            <p>
+              <span class="title">合同额(元):</span>
+              <span class="value">{{ projectDetail?.['contractAmount'] ?? '' }}</span>
+            </p>
+            <p>
+              <span class="title">应收款(元):</span>
+              <span class="value">{{ projectDetail?.['receivableAmount'] ?? '' }}</span>
+            </p>
+            <p>
+              <span class="title">合同余额(元):</span>
+              <span class="value">{{ projectDetail?.['contractBalance'] ?? '' }}</span>
+            </p>
+          </template>
         </div>
       </div>
     </div>
     <div class="detailContent">
-      <component :is="currentComponent" ref="dynamicRef" :editor="isEditorProject" />
+      <component
+        :is="currentComponent"
+        ref="dynamicRef"
+        :editor="isEditorProject"
+        :contractType="contractData?.flowStatus"
+      />
     </div>
   </div>
 </template>
@@ -86,8 +104,8 @@ import { useRoute } from 'vue-router'
 import {
   getContractsByProject,
   startContractSign,
-  startOutsourcing,
-  startSubcontract
+  startOutsourcingApply,
+  startSubcontractApply
 } from '@/service/contract'
 import { openFlow } from '@/utils/flow'
 import { useMutation } from '@tanstack/vue-query'
@@ -123,13 +141,6 @@ const switchComponent: (c: Component, i: number) => void = (c: Component, i: num
 /***
  * 查询项目详情
  * **/
-// const { data: projectDetail } = useQuery(
-//   [getProjectWithChildrenById.name, projectId],
-//   async () => await getProjectWithChildrenById(projectId as string),
-//   {
-//     enabled: (query?.id ?? '') !== ''
-//   }
-// )
 const projectDetail = ref()
 const queryProjectByDetail = async (projectId: string) => {
   const result = await getProjectWithChildrenById(projectId)
@@ -193,21 +204,22 @@ const { mutate: startContractSignMutate } = useMutation(startContractSign, {
   onSuccess: (data) => openFlow(router, data, '合同签订')
 })
 const handleStartContractSign = () => startContractSignMutate(projectId as ProjectId)
+
 /**
  * 发起分包合同申请
  */
-const { mutate: startSubcontractMutate } = useMutation(startSubcontract, {
+const { mutate: startSubcontractMutate } = useMutation(startSubcontractApply, {
   onSuccess: (data) => openFlow(router, data, '分包申请')
 })
-const handleStartSubcontract = () => startSubcontractMutate(contractData.value.id)
+const handleStartSubcontract = () => startSubcontractMutate(projectId as ProjectId)
 
 /**
  * 发起外包合同申请
  */
-const { mutate: startOutsourcingMutate } = useMutation(startOutsourcing, {
+const { mutate: startOutsourcingMutate } = useMutation(startOutsourcingApply, {
   onSuccess: (data) => openFlow(router, data, '外包申请')
 })
-const handleStartOutsourcing = () => startOutsourcingMutate(contractData.value.id)
+const handleStartOutsourcing = () => startOutsourcingMutate(projectId as ProjectId)
 </script>
 <style lang="scss" scoped>
 @import './projectDetail.scss';

+ 1 - 1
zjugis-business/src/main/java/com/zjugis/business/controller/OutsourceApplyController.java

@@ -24,7 +24,7 @@ public class OutsourceApplyController {
     @Resource
     private OutsourceApplyService outsourceApplyService;
 
-    @GetMapping("/outsource-apply/page")
+    @RequestMapping("/outsource-apply/page")
     public CommonResult<Page<OutsourceApply>> page(@RequestBody OutsourceApplyDto outsourceApplyDto) {
         return CommonResult.success(outsourceApplyService.page(outsourceApplyDto));
     }

+ 1 - 1
zjugis-business/src/main/java/com/zjugis/business/controller/SubcontractApplyController.java

@@ -24,7 +24,7 @@ public class SubcontractApplyController {
     @Resource
     private SubcontractApplyService subcontractApplyService;
 
-    @GetMapping("/subcontract-apply/page")
+    @RequestMapping("/subcontract-apply/page")
     public CommonResult<Page<SubcontractApply>> page(@RequestBody SubcontractApplyDto subcontractApplyDto) {
         return CommonResult.success(subcontractApplyService.page(subcontractApplyDto));
     }

+ 1 - 1
zjugis-gateway/src/main/resources/bootstrap-local.yaml

@@ -5,7 +5,7 @@ spring:
     nacos:
       server-addr: 10.10.10.7:8848
       discovery:
-        namespace: 21aff5a9-3379-4c8a-a58c-78326ce994c1 # 命名空间。这里使用 dev 开发环境
+        namespace: 2cf329b5-95c5-4b3b-9112-8e09eb8f67cf # 命名空间。这里使用 dev 开发环境
 
 --- #################### 配置中心相关配置 ####################