فهرست منبع

Merge remote-tracking branch 'origin/master'

jzh 1 سال پیش
والد
کامیت
37a5a4e8a1

+ 2 - 0
client/src/App.vue

@@ -28,7 +28,9 @@ eKeys.forEach((eKey) => {
 </script>
 <template>
   <ConfigGlobal :size="currentSize">
+    <!-- <KeepAlive> -->
     <RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
+    <!-- </KeepAlive> -->
     <routerSearch />
   </ConfigGlobal>
 </template>

+ 1 - 0
client/src/views/OaSystem/home/common.scss

@@ -45,6 +45,7 @@
       }
       &.bottomBox {
         display: flex;
+        height: calc(50% - 20px);
       }
     }
   }

+ 1 - 1
client/src/views/OaSystem/oaLayout/content.scss

@@ -22,7 +22,7 @@
       display: flex;
       width: 240px;
       margin: 5px 0;
-      margin-right: 16px;
+      margin-right: 36px;
       align-items: center;
       flex-shrink: 0;
 

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

@@ -212,7 +212,7 @@ const handleCurrentChange = (pageNo: number) => {
 const operateClick = (row: any) => {
   router.push({
     path: '/projectDetail',
-    query: { id: row.id }
+    query: { id: row.id, flowStatus: row.flowStatus }
   })
 }
 const tableData = ref<Array<any>>([])

+ 19 - 55
client/src/views/OaSystem/projectCenter/projectBook/projectBook.vue

@@ -1,54 +1,24 @@
 <template>
   <div class="oa-sys-list-view">
     <div class="searchBox">
-      <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>
         <el-input v-model="queryParams.xmbh" placeholder="请输入项目名称" style="width: 160px" />
       </div>
       <div class="form">
-        <span class="formSpan">行政区:</span>
-        <div style="width: 160px">
-          <keep-alive>
-            <el-tree-select
-              v-model="queryParams.xzqdm"
-              node-key="id"
-              check-strictly
-              filterable
-              :props="{ label: 'name' }"
-              :filter-node-method="filterNodeMethod"
-              :data="areaTree"
-            />
-          </keep-alive>
-        </div>
+        <span class="formSpan">项目名称:</span>
+        <el-input v-model="queryParams.xmmc" placeholder="请输入项目名称" style="width: 210px" />
       </div>
       <div class="form">
-        <span class="formSpan">行业:</span>
-        <el-select width="160px" v-model="queryParams.hyId" class="m-2" placeholder="请选择行业">
-          <el-option
-            v-for="item in industryListAll"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
+        <span class="formSpan">项目经理:</span>
+        <UserOrgTree v-model="queryParams['xmjlId']" />
       </div>
-      <div class="form form-time-range">
-        <span class="formSpan">立项时间:</span>
-        <el-date-picker
-          v-model="lxsjObj"
-          type="daterange"
-          unlink-panels
-          range-separator="To"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-        />
+      <div class="form">
+        <span class="formSpan">责任部门:</span>
+        <DeptTree v-model="queryParams['zrbmId']" />
       </div>
       <div class="form" style="width: unset">
-        <span class="formSpan">合同:</span>
+        <span class="formSpan">合同状态:</span>
         <el-radio-group v-model="queryParams.isSign">
           <el-radio>全部</el-radio>
           <el-radio label="1">已签订</el-radio>
@@ -100,9 +70,10 @@
             height: '50px'
           }"
         >
-          <el-table-column label="序号" width="60">
+          <el-table-column label="序号" width="80">
             <template #default="scope">{{ scope.$index + 1 }}</template>
           </el-table-column>
+          <el-table-column :show-overflow-tooltip="true" prop="xmbh" label="项目编号" />
           <el-table-column :show-overflow-tooltip="true" prop="xmmc" label="项目名称" />
           <el-table-column prop="zrbm" label="责任部门" width="200" />
           <el-table-column prop="xmjl" label="项目经理" width="120" />
@@ -143,8 +114,8 @@ import moment from 'moment'
 import { useRouter } from 'vue-router'
 import request from '@/config/axios'
 import { getAssetURL } from '@/utils/auth'
-import { industryListAll } from '@/utils/business'
-import district from '@/components/Area/district.js'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
+import DeptTree from '@/views/OaSystem/components/DeptTree/index.vue'
 
 defineOptions({ name: 'ProjectBook' })
 const xmztMap: any = { 0: '立项申请中', 1: '进行中', 2: '已结项', 3: '中止' }
@@ -202,7 +173,7 @@ const handleCurrentChange = (pageNo: number) => {
 const operateClick = (row: any) => {
   router.push({
     path: '/projectDetail',
-    query: { id: row.id }
+    query: { [row.flowStatus === 99 ? 'subId' : 'id']: row.id }
   })
 }
 const tableData = ref<Array<any>>([])
@@ -232,20 +203,13 @@ const queryProjectListAjax = async (): Promise<void> => {
 }
 queryProjectListAjax()
 
-/**
- * 获取行政区tree结构数据
- */
-const areaTree = shallowRef<Array<any>>()
-const filterNodeMethod = (value, data) => {
-  return data.name.includes(value)
-}
-const queryAreaTreeAjax = async (): Promise<void> => {
-  const urlApi = `/system/area/tree`
-  const result = await request.get({ url: urlApi })
-  areaTree.value = result
-}
-queryAreaTreeAjax()
 onMounted(() => {
   tableHeight.value = tableRef.value.clientHeight
 })
 </script>
+
+<style lang="scss" scoped>
+:deep(.el-radio) {
+  margin-right: 10px;
+}
+</style>

+ 15 - 3
client/src/views/OaSystem/projectCenter/projectDetail/components/xmht/index.vue

@@ -503,7 +503,11 @@ import { Contract } from '@/interface/contract'
 import { contractTypeFilter, mainTypeList, secondTypeList } from './common'
 
 defineOptions({ name: 'XmhtComp' })
-const _mainProjectId: any = useRoute().query.id
+const { query } = useRoute()
+const { id: _currentProjectId = '', contractId = '' } = query as {
+  id: string
+  contractId: string
+}
 const editor = ref<Boolean>(false)
 const mContractDetail = ref<Contract>({} as Contract)
 const cContractDetail = ref<any>()
@@ -513,8 +517,8 @@ const childrenContracts = ref<any[]>([])
  * 查询主合同和子合同详情数据: 存在多个主合同(兼容之前项目合同),一般来说子合同只存在最新主合同
  * **/
 const { refetch } = useQuery(
-  [getContractsByProject.name, unref(_mainProjectId)],
-  async () => await getContractsByProject(unref(_mainProjectId)),
+  [getContractsByProject.name, unref(_currentProjectId)],
+  async () => await getContractsByProject(unref(_currentProjectId)),
   {
     onSuccess: (tData: Contract[]) => {
       for (const contract of tData) {
@@ -523,6 +527,14 @@ const { refetch } = useQuery(
             child['contractType'] = 2 //模拟子合同
             return child?.contractType !== 4
           })
+          for (let i = 0; i < childrenContracts.value.length; i++) {
+            const item = childrenContracts.value[i]
+            if (item['id'] === contractId) {
+              contractInfoIndex.value = i + 1
+              cContractDetail.value = item
+              break
+            }
+          }
           break
         }
       }

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

@@ -227,9 +227,9 @@ defineOptions({ name: 'XmxxComp' })
 const props = defineProps<{ editor: boolean; isEstimateAmount: boolean }>()
 const { editor, isEstimateAmount } = toRefs(props)
 const { query } = useRoute()
-const { id: _mainProjectId = '', subId = '' } = query as {
+const { id = '', flowStatus = '' } = query as {
   id: string
-  subId: string
+  flowStatus: string
 }
 const parentData = shallowRef<{
   mainProjectId: string
@@ -238,8 +238,9 @@ const parentData = shallowRef<{
   projectTypeName: string
   projectTypeId: string
 }>()
-const currentProjectId = ref<string>('')
-const isMaster = computed(() => _mainProjectId === currentProjectId.value)
+let _mainProjectId: string = ''
+const currentProjectId = ref<string>(id)
+let isMaster: boolean = flowStatus === '99' ? false : true
 /***
  * 查询项目和子项目详情数据
  * **/
@@ -251,24 +252,18 @@ const projectDetail = ref<any>(null)
  * 查询项目详情
  * **/
 const { data: originData, refetch } = useQuery(
-  [getProjectWithChildrenById.name, _mainProjectId],
-  async () => await getProjectWithChildrenById(_mainProjectId as string),
+  [getProjectWithChildrenById.name, currentProjectId.value],
+  async () => await getProjectWithChildrenById(currentProjectId.value as string),
   {
     onSuccess: (tData: any) => {
-      const targetId: string = (
-        (currentProjectId.value ?? '') === ''
-          ? subId !== ''
-            ? subId
-            : _mainProjectId
-          : currentProjectId.value
-      ) as string
+      _mainProjectId = tData['id']
       const cContractAmount: number = tData['children'].reduce((a, b) => {
         return a + b['contractAmount']
       }, 0)
-      switchProjectInfo(targetId, tData)
+      switchProjectInfo(currentProjectId.value, tData)
       projectDetail.value['outputValue'] = tData['contractAmount'] - cContractAmount
     },
-    enabled: (_mainProjectId ?? '') !== ''
+    enabled: (currentProjectId.value ?? '') !== ''
   }
 )
 // 选择当前查看项目
@@ -277,9 +272,11 @@ const switchProjectInfo = (switchId: string, data: any = originData) => {
   const { children, ...other } = unref(data)
   currentProjectId.value = switchId
   if (switchId === _mainProjectId) {
+    isMaster = true
     parentProjectDetail = { ...other }
     projectDetail.value = { ...other }
   } else {
+    isMaster = false
     projectDetail.value = { ...(children?.find(({ id }) => id === switchId) ?? {}) }
   }
 }

+ 12 - 1
client/src/views/OaSystem/projectCenter/projectDetail/projectDetail.vue

@@ -40,7 +40,18 @@
           <li @click="handleStartSubcontract">分包申请</li>
           <li @click="handleStartOutsourcing">外包申请</li>
           <li v-if="projectDetail?.['xmzt'] === 1" @click="editorProjectState(4)">验收</li>
-          <li v-if="projectDetail?.['xmzt'] === 1" @click="editorProjectState(3)">中止</li>
+          <el-popconfirm
+            v-if="projectDetail?.['xmzt'] === 1"
+            :title="`是否${projectDetail?.['xmzt'] === 3 ? '恢复' : '中止'}项目【${
+              projectDetail['xmbh']
+            }】?`"
+            width="280px"
+            @confirm="editorProjectState(3)"
+          >
+            <template #reference>
+              <li>{{ projectDetail?.['xmzt'] === 3 ? '恢复中止' : '中止' }}</li>
+            </template>
+          </el-popconfirm>
           <li v-if="projectDetail?.['xmzt'] === 4" @click="editorProjectState(2)">结项</li>
           <li v-if="projectDetail?.['xmzt'] === 3" @click="editorProjectState(1)">恢复</li>
           <li @click="processLookHandle">查看流程</li>