Ver código fonte

fix: 修改项目与合同列表

修改 项目列表与合同列表样式
新增 合同列表跳转至项目详情功能
修改 签订合同判断逻辑
hotchicken1996 1 ano atrás
pai
commit
3a18cb3aa9

+ 1 - 1
client/src/config/axios/index.ts

@@ -9,7 +9,7 @@ const request = (option: any, prefix?: string) => {
   const headers = {
     'Content-Type': headersType || default_headers
   }
-  import.meta.env.VITE_TAG && (headers['tag'] = import.meta.env.VITE_TAG)
+  // import.meta.env.VITE_TAG && (headers['tag'] = import.meta.env.VITE_TAG)
   let urlStr = ''
   if (prefix) {
     urlStr = prefix + url

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

@@ -108,7 +108,7 @@
           <el-table-column label="序号" width="60">
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
-          <el-table-column prop="xmmc" label="项目名称" width="320" />
+          <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" width="320" />
           <el-table-column prop="xmbh" label="项目编号" width="180" />
           <el-table-column prop="xzqmc" label="行政区" width="100">
             <template #default="scope">
@@ -127,7 +127,7 @@
             </template>
           </el-table-column>
 
-          <el-table-column label="操作" width="80">
+          <el-table-column label="操作" fixed="right" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
                 <span>查看</span>
@@ -188,7 +188,7 @@ const queryParams = reactive<{
   lxsjOff: '',
   pageNo: 1,
   xzqdm: '',
-  pageSize: 10,
+  pageSize: 15,
   isSign: '',
   xmzt: '',
   hyId: 0,
@@ -239,7 +239,7 @@ const queryProjectListAjax = async (): Promise<void> => {
   }
   const sendData = {
     ...queryParams,
-    pageSize: 10
+    pageSize: 15
   }
   if (sendData['hyId'] == 0) {
     sendData['hyId'] = null

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

@@ -102,7 +102,7 @@
           <el-table-column label="序号" width="60">
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
-          <el-table-column prop="xmmc" label="项目名称" width="320" />
+          <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" width="320" />
           <el-table-column prop="xmbh" label="项目编号" width="180" />
           <el-table-column prop="xzqmc" label="行政区" width="100">
             <template #default="scope">
@@ -121,7 +121,7 @@
             </template>
           </el-table-column>
 
-          <el-table-column label="操作" width="80">
+          <el-table-column label="操作" fixed="right" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
                 <span>查看</span>
@@ -133,7 +133,7 @@
       <div class="pageBox">
         <el-pagination
           v-model:current-page="queryParams.pageNo"
-          :page-size="10"
+          :page-size="15"
           background
           layout="total, prev, pager, next, jumper"
           :total="total"
@@ -182,7 +182,7 @@ const queryParams = reactive<{
   lxsjOff: '',
   pageNo: 1,
   xzqdm: '',
-  pageSize: 10,
+  pageSize: 15,
   isSign: '',
   xmzt: '',
   hyId: 0,
@@ -213,7 +213,7 @@ const handleCurrentChange = (pageNo: number) => {
 }
 const operateClick = (row: any) => {
   router.push({
-    path: '/projectDetail',
+    path: 'projectDetail',
     query: { id: row.id, name: row.xmmc }
   })
 }
@@ -233,7 +233,7 @@ const queryProjectListAjax = async (): Promise<void> => {
   }
   const sendData = {
     ...queryParams,
-    pageSize: 10
+    pageSize: 15
   }
   if (sendData['hyId'] == 0) {
     sendData['hyId'] = null

+ 1 - 1
client/src/views/OaSystem/projectCenter/projectBook/projectBook.scss

@@ -77,7 +77,7 @@
     .pageBox {
       position: absolute;
       right: 20px;
-      bottom: 10px;
+      bottom: 0;
       text-align: right;
     }
   }

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

@@ -102,7 +102,7 @@
           <el-table-column label="序号" width="60">
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
-          <el-table-column prop="xmmc" label="项目名称" width="320" />
+          <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" width="320" />
           <el-table-column prop="xmbh" label="项目编号" width="180" />
           <el-table-column prop="xzqmc" label="行政区" width="100">
             <template #default="scope">
@@ -133,7 +133,7 @@
       <div class="pageBox">
         <el-pagination
           v-model:current-page="queryParams.pageNo"
-          :page-size="10"
+          :page-size="15"
           background
           layout="total, prev, pager, next, jumper"
           :total="total"
@@ -176,7 +176,7 @@ const queryParams = reactive<{
   lxsjOff: '',
   pageNo: 1,
   xzqdm: '',
-  pageSize: 10,
+  pageSize: 15,
   isSign: '',
   xmzt: '',
   hyId: 0
@@ -226,7 +226,7 @@ const queryProjectListAjax = async (): Promise<void> => {
   }
   const sendData = {
     ...queryParams,
-    pageSize: 10
+    pageSize: 15
   }
   if (sendData['hyId'] == 0) {
     sendData['hyId'] = null

+ 8 - 6
client/src/views/OaSystem/projectCenter/projectDetail/components/xmht/index.vue

@@ -21,9 +21,11 @@
     <div class="content">
       <template v-if="contractInfoIndex === 0">
         <div class="titleBox">
-          <h2>江山市自然资源业务数字化管理系统云服务器租赁合同 </h2>
-          <span class="tag">已签</span>
-          <span class="tag">未付清</span>
+          <h2>{{ contractDetail?.name ?? '' }} </h2>
+          <span v-if="contractDetail?.amountStatus === 1" class="tag">已签</span>
+          <span v-else-if="contractDetail?.amountStatus === 2" class="tag">未付清</span>
+          <span v-else-if="contractDetail?.amountStatus === 3" class="tag">已付清</span>
+          <span v-else-if="contractDetail?.amountStatus === 4" class="tag">手动设置已付清</span>
         </div>
         <div class="tableBox tableBox—first">
           <h4><i class="icon"></i>基本信息</h4>
@@ -48,7 +50,7 @@
             <tr>
               <td class="th">委托方:</td>
               <td>
-                <el-input v-model="contractDetail['assigneeId']" :disabled="!editor" />
+                <el-input v-model="contractDetail['clientName']" :disabled="!editor" />
               </td>
               <td class="th">委托方编号:</td>
               <td>
@@ -58,7 +60,7 @@
             <tr>
               <td class="th">受托方:</td>
               <td>
-                <el-input v-model="contractDetail['assigneeId']" :disabled="!editor" />
+                <el-input v-model="contractDetail['assigneeName']" :disabled="!editor" />
               </td>
               <td class="th">合同次类型:</td>
               <td>
@@ -105,7 +107,7 @@
             <tr>
               <td class="th">付款条件:</td>
               <td>
-                <el-input v-model="contractDetail['zrbm']" :disabled="!editor" />
+                <el-input v-model="contractDetail['paymentTerms']" :disabled="!editor" />
               </td>
             </tr>
           </table>

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

@@ -119,7 +119,7 @@
               <table>
                 <tr>
                   <td class="th">是否签合同:</td>
-                  <td>{{ projectDetail['isSign'] === 1 ? '是' : '否' }}</td>
+                  <td>{{ projectDetail['isSign'] === 0 ? '否' : '是' }}</td>
                   <td class="th">本项目成本(万):</td>
                   <td>{{ projectDetail['xmcbys'] }}</td>
                 </tr>

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

@@ -4,17 +4,30 @@
       <div>
         <div>
           <h2>
-            {{ projectDetail['xmmc'] }}
-            <span class="subTitle">({{ projectDetail['xmbh'] }})</span>
-            <span class="statu">进行中</span>
+            {{ projectDetail?.['xmmc'] ?? '' }}
+            <span class="subTitle">({{ projectDetail?.['xmbh'] ?? '' }})</span>
+            <span class="statu" v-if="projectDetail?.['xmzt'] === 0">立项申请中</span>
+            <span class="statu" v-else-if="projectDetail?.['xmzt'] === 1">进行中</span>
+            <span class="statu" v-else-if="projectDetail?.['xmzt'] === 2">已结项</span>
+            <span class="statu" v-else-if="projectDetail?.['xmzt'] === 3">中止</span>
+            <span class="statu" v-else-if="projectDetail?.['xmzt'] === 4">已验收</span>
           </h2>
         </div>
         <ul>
-          <li @click="editorProject">{{ !isEditorProject ? '编辑' : '保存' }}</li>
-          <li v-if="projectDetail['isSign'] === 1 && !contractData" @click="handleStartContractSign"
-            >合同签订</li
-          >
-          <li @click="addSubProject">添加子项目</li>
+          <li v-show="currentIndex === 0" @click="editorProject"
+            >{{ !isEditorProject ? '编辑' : '保存' }}
+          </li>
+          <template v-if="projectDetail?.['isSign'] !== 0 && contractData?.flowStatus !== 90">
+            <el-popconfirm
+              title="当前存在进行中的合同,是否重复发起?"
+              v-if="contractData?.flowStatus != null"
+              @confirm="handleStartContractSign"
+            >
+              <li>合同签订</li>
+            </el-popconfirm>
+            <li v-else @click="handleStartContractSign">合同签订</li>
+          </template>
+          <li v-show="currentIndex === 0" @click="addSubProject">添加子项目</li>
           <li>验收</li>
           <li>结项</li>
           <li>查看流程</li>
@@ -26,7 +39,7 @@
             <div><i class="icon"></i>项目信息</div>
           </li>
           <li
-            v-show="!!contractData"
+            v-show="contractData?.flowStatus === 90"
             @click="switchComponent(XmhtComp, 1)"
             :class="currentIndex === 1 ? 'active' : ''"
           >
@@ -42,15 +55,15 @@
         <div class="projectInfo">
           <p>
             <span class="title">合同额(元):</span>
-            <span class="value">{{ projectDetail['contractAmount'] }}</span>
+            <span class="value">{{ projectDetail?.['contractAmount'] ?? '' }}</span>
           </p>
           <p>
             <span class="title">应收款(元):</span>
-            <span class="value">{{ projectDetail['receivableAmount'] }}</span>
+            <span class="value">{{ projectDetail?.['receivableAmount'] ?? '' }}</span>
           </p>
           <p>
             <span class="title">合同余额(元):</span>
-            <span class="value">{{ projectDetail['contractBalance'] }}</span>
+            <span class="value">{{ projectDetail?.['contractBalance'] ?? '' }}</span>
           </p>
         </div>
       </div>
@@ -89,8 +102,9 @@ const FjclComp = defineAsyncComponent(() => {
 })
 
 const { query } = useRoute()
+const { id: projectId, contractId } = query
 const currentComponent = shallowRef<Component>(XmxxComp)
-const currentIndex = shallowRef<number>(0)
+const currentIndex = ref<number>(0)
 const switchComponent: (c: Component, i: number) => void = (c: Component, i: number) => {
   currentComponent.value = c
   currentIndex.value = i
@@ -105,8 +119,8 @@ const addSubProject: () => void = () => {
  * 查询项目详情
  * **/
 const { data: projectDetail } = useQuery(
-  [getProjectWithChildrenById.name, query.id],
-  async () => await getProjectWithChildrenById(query.id as string),
+  [getProjectWithChildrenById.name, projectId],
+  async () => await getProjectWithChildrenById(projectId as string),
   {
     enabled: (query?.id ?? '') !== ''
   }
@@ -114,7 +128,7 @@ const { data: projectDetail } = useQuery(
 /**
  * 项目编辑
  *  **/
-const isEditorProject = ref<boolean>(true)
+const isEditorProject = ref<boolean>(false)
 const editorProject: () => void = (): void => {
   isEditorProject.value = !isEditorProject.value
   if (isEditorProject.value) return
@@ -126,10 +140,17 @@ const editorProject: () => void = (): void => {
  * 查询合同数据
  * **/
 const { data: contractData } = useQuery(
-  [getContractsByProject.name, query.id],
-  async () => await getContractsByProject(query.id as string),
+  [getContractsByProject.name, projectId],
+  async () => await getContractsByProject(projectId as string),
   {
-    enabled: (query?.id ?? '') !== ''
+    onSuccess: (tData) => {
+      if (tData?.flowStatus === 90 && contractId) {
+        // 查看合同详情
+        switchComponent(XmhtComp, 1)
+      }
+    },
+    enabled: (projectId ?? '') !== '',
+    refetchOnWindowFocus: true
   }
 )
 
@@ -139,7 +160,7 @@ const { data: contractData } = useQuery(
 const { mutate: startContractSignMutate } = useMutation(startContractSign, {
   onSuccess: (data) => openFlow(data)
 })
-const handleStartContractSign = () => startContractSignMutate(query.id as ProjectId)
+const handleStartContractSign = () => startContractSignMutate(projectId as ProjectId)
 </script>
 <style lang="scss" scoped>
 @import './projectDetail.scss';

+ 12 - 7
client/src/views/OaSystem/projectCenter/purchaseContract/deptContract.vue

@@ -131,14 +131,19 @@
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
           <el-table-column prop="contractNumber" label="合同编号" width="180" />
-          <el-table-column prop="name" label="合同名称" width="240" />
+          <el-table-column :show-overflow-tooltip="true" prop="name" label="合同名称" width="240" />
           <el-table-column prop="isSign" label="签订状态" width="100">
             <template #default="scope">
               {{ isSignMap[scope.row.isSign] }}
             </template>
           </el-table-column>
           <el-table-column prop="areaManager" label="区域经理" width="120" />
-          <el-table-column prop="clientName" label="委托方" width="180" />
+          <el-table-column
+            :show-overflow-tooltip="true"
+            prop="clientName"
+            label="委托方"
+            width="180"
+          />
           <el-table-column prop="mainType" label="合同主类型" width="200">
             <template #default="scope">
               {{ mainTypeMap[scope.row.mainType] }}
@@ -155,7 +160,7 @@
           <el-table-column prop="contractBalance" label="合同余额" width="100" />
           <el-table-column prop="contractOn" label="拿出日期" width="120" />
           <el-table-column prop="contractOff" label="拿回日期" width="120" />
-          <el-table-column label="操作" width="80">
+          <el-table-column label="操作" fixed="right" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
                 <span>查看</span>
@@ -167,7 +172,7 @@
       <div class="pageBox">
         <el-pagination
           v-model:current-page="queryParams.pageNo"
-          :page-size="10"
+          :page-size="15"
           background
           layout="total, prev, pager, next, jumper"
           :total="total"
@@ -225,7 +230,7 @@ const queryParams = reactive<{
   contractNumber: '',
   name: '',
   pageNo: 1,
-  pageSize: 10,
+  pageSize: 15,
   isSign: '',
   signWay: '',
   mainType: '',
@@ -269,7 +274,7 @@ const handleCurrentChange = (pageNo: number) => {
 }
 const operateClick = (row: any) => {
   router.push({
-    path: '/projectDetail',
+    path: '/oaSystem/projectCenter/projectDetail',
     query: { id: row.projectId, contractId: row.id }
   })
 }
@@ -286,7 +291,7 @@ const queryContractListAjax = async (): Promise<void> => {
   }
   const sendData = {
     ...queryParams,
-    pageSize: 10
+    pageSize: 15
   }
   const result = await request.get({ url: urlApi, params: sendData }, '/business')
   tableData.value = result['records']

+ 12 - 7
client/src/views/OaSystem/projectCenter/purchaseContract/myContract.vue

@@ -131,14 +131,19 @@
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
           <el-table-column prop="contractNumber" label="合同编号" width="180" />
-          <el-table-column prop="name" label="合同名称" width="240" />
+          <el-table-column :show-overflow-tooltip="true" prop="name" label="合同名称" width="240" />
           <el-table-column prop="isSign" label="签订状态" width="100">
             <template #default="scope">
               {{ isSignMap[scope.row.isSign] }}
             </template>
           </el-table-column>
           <el-table-column prop="areaManager" label="区域经理" width="120" />
-          <el-table-column prop="clientName" label="委托方" width="180" />
+          <el-table-column
+            :show-overflow-tooltip="true"
+            prop="clientName"
+            label="委托方"
+            width="180"
+          />
           <el-table-column prop="mainType" label="合同主类型" width="200">
             <template #default="scope">
               {{ mainTypeMap[scope.row.mainType] }}
@@ -155,7 +160,7 @@
           <el-table-column prop="contractBalance" label="合同余额" width="100" />
           <el-table-column prop="contractOn" label="拿出日期" width="120" />
           <el-table-column prop="contractOff" label="拿回日期" width="120" />
-          <el-table-column label="操作" width="80">
+          <el-table-column fixed="right" label="操作" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
                 <span>查看</span>
@@ -167,7 +172,7 @@
       <div class="pageBox">
         <el-pagination
           v-model:current-page="queryParams.pageNo"
-          :page-size="10"
+          :page-size="15"
           background
           layout="total, prev, pager, next, jumper"
           :total="total"
@@ -225,7 +230,7 @@ const queryParams = reactive<{
   contractNumber: '',
   name: '',
   pageNo: 1,
-  pageSize: 10,
+  pageSize: 15,
   isSign: '',
   signWay: '',
   mainType: '',
@@ -269,7 +274,7 @@ const handleCurrentChange = (pageNo: number) => {
 }
 const operateClick = (row: any) => {
   router.push({
-    path: '/projectDetail',
+    path: '/oaSystem/projectCenter/projectDetail',
     query: { id: row.projectId, contractId: row.id }
   })
 }
@@ -286,7 +291,7 @@ const queryContractListAjax = async (): Promise<void> => {
   }
   const sendData = {
     ...queryParams,
-    pageSize: 10
+    pageSize: 15
   }
   const result = await request.get({ url: urlApi, params: sendData }, '/business')
   tableData.value = result['records']

+ 1 - 1
client/src/views/OaSystem/projectCenter/purchaseContract/purchaseContract.scss

@@ -76,7 +76,7 @@
     .pageBox {
       position: absolute;
       right: 20px;
-      bottom: 10px;
+      bottom: 0;
       text-align: right;
     }
   }

+ 12 - 6
client/src/views/OaSystem/projectCenter/purchaseContract/purchaseContract.vue

@@ -131,14 +131,19 @@
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
           <el-table-column prop="contractNumber" label="合同编号" width="180" />
-          <el-table-column prop="name" label="合同名称" width="240" />
+          <el-table-column :show-overflow-tooltip="true" prop="name" label="合同名称" width="240" />
           <el-table-column prop="isSign" label="签订状态" width="100">
             <template #default="scope">
               {{ isSignMap[scope.row.isSign] }}
             </template>
           </el-table-column>
           <el-table-column prop="areaManager" label="区域经理" width="120" />
-          <el-table-column prop="clientName" label="委托方" width="180" />
+          <el-table-column
+            :show-overflow-tooltip="true"
+            prop="clientName"
+            label="委托方"
+            width="180"
+          />
           <el-table-column prop="mainType" label="合同主类型" width="200">
             <template #default="scope">
               {{ mainTypeMap[scope.row.mainType] }}
@@ -167,7 +172,7 @@
       <div class="pageBox">
         <el-pagination
           v-model:current-page="queryParams.pageNo"
-          :page-size="10"
+          :page-size="15"
           background
           layout="total, prev, pager, next, jumper"
           :total="total"
@@ -219,7 +224,7 @@ const queryParams = reactive<{
   contractNumber: '',
   name: '',
   pageNo: 1,
-  pageSize: 10,
+  pageSize: 15,
   isSign: '',
   signWay: '',
   mainType: '',
@@ -261,8 +266,9 @@ const handleCurrentChange = (pageNo: number) => {
   queryContractListAjax()
 }
 const operateClick = (row: any) => {
+  console.log('hhhhhh')
   router.push({
-    path: '/projectDetail',
+    path: '/oaSystem/projectCenter/projectDetail',
     query: { id: row.projectId, contractId: row.id }
   })
 }
@@ -279,7 +285,7 @@ const queryContractListAjax = async (): Promise<void> => {
   }
   const sendData = {
     ...queryParams,
-    pageSize: 10
+    pageSize: 15
   }
   const result = await request.get({ url: urlApi, params: sendData }, '/business')
   tableData.value = result['records']