|
@@ -2,17 +2,13 @@
|
|
|
<div class="_ProjectDetail_xmxx">
|
|
|
<div class="header">
|
|
|
<ul>
|
|
|
- <template v-if="projectDetail['children'].length > 0">
|
|
|
+ <template v-if="originData?.['children'].length > 0">
|
|
|
+ <li :class="{ active: isMaster }" @click="switchProjectInfo(_mainProjectId)">主项目</li>
|
|
|
<li
|
|
|
- :class="{ active: projectInfoIndex === 0 }"
|
|
|
- @click="switchProjectInfo(projectDetail, 0)"
|
|
|
- >主项目
|
|
|
- </li>
|
|
|
- <li
|
|
|
- v-for="(item, index) in projectDetail['children']"
|
|
|
- :class="{ active: projectInfoIndex === index + 1 }"
|
|
|
+ v-for="({ id }, index) in originData['children']"
|
|
|
+ :class="{ active: id === currentProjectId }"
|
|
|
:key="index"
|
|
|
- @click="switchProjectInfo(item, index + 1)"
|
|
|
+ @click="switchProjectInfo(id)"
|
|
|
>子项目
|
|
|
</li>
|
|
|
</template>
|
|
@@ -23,300 +19,171 @@
|
|
|
<li :class="{ active: currentIndex === 2 }" @click="switchHandle(2)">项目阶段</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
- <div class="content">
|
|
|
+ <div class="content" v-if="projectDetail != null">
|
|
|
<template v-if="currentIndex === 0">
|
|
|
- <template v-if="projectInfoIndex === 0">
|
|
|
- <div class="xmxxBox">
|
|
|
- <div class="tableBox">
|
|
|
- <h4 :style="{ marginTop: projectDetail['children'].length > 0 ? '15px' : '0px' }">
|
|
|
- <i class="icon"></i>基本信息
|
|
|
- </h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">项目经理:</td>
|
|
|
- <td>
|
|
|
- <UserOrgTree
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['xmjlId']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">责任部门</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['zrbm']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">项目类别:</td>
|
|
|
- <td>
|
|
|
- <ProjectTypeTree
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['projectTypeId']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">立项时间:</td>
|
|
|
- <td>
|
|
|
- <el-date-picker
|
|
|
- class="form-item-disable-style"
|
|
|
- style="width: 100%"
|
|
|
- :disabled="true"
|
|
|
- v-model="projectDetail['lxsj']"
|
|
|
- type="date"
|
|
|
- @change="($evt) => (projectDetail['lxsj'] = $evt)"
|
|
|
- placeholder="请选择立项时间"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">销售人员:</td>
|
|
|
- <td>
|
|
|
- <UserOrgTree
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['xsryId']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">行政区:</td>
|
|
|
- <td>
|
|
|
- <DistrictTree
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['xzqdm']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">行业:</td>
|
|
|
- <td>
|
|
|
- <el-select
|
|
|
- class="form-item-disable-style"
|
|
|
- style="width: 100%"
|
|
|
- v-model="projectDetail['hyId']"
|
|
|
- placeholder="请选择行业"
|
|
|
- :disabled="!editor"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in industryList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </td>
|
|
|
- <td class="th">预估金额(元):</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['ygje']"
|
|
|
- :disabled="!editor"
|
|
|
+ <div class="xmxxBox">
|
|
|
+ <div class="tableBox">
|
|
|
+ <h4 :style="{ marginTop: (originData?.['children'].length ?? 0) > 0 ? '15px' : '0px' }">
|
|
|
+ <i class="icon"></i>基本信息
|
|
|
+ </h4>
|
|
|
+ <table>
|
|
|
+ <tr v-show="!isMaster">
|
|
|
+ <td class="th">项目名称:</td>
|
|
|
+ <td>
|
|
|
+ <ProjectTypeTree
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['xmmc']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">项目编号:</td>
|
|
|
+ <td>
|
|
|
+ <el-input
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['xmbh']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">项目经理:</td>
|
|
|
+ <td>
|
|
|
+ <UserOrgTree
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['xmjlId']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">责任部门</td>
|
|
|
+ <td>
|
|
|
+ <el-input
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['zrbm']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr v-show="isMaster">
|
|
|
+ <td class="th">项目类别:</td>
|
|
|
+ <td>
|
|
|
+ <ProjectTypeTree
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['projectTypeId']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">立项时间:</td>
|
|
|
+ <td>
|
|
|
+ <el-date-picker
|
|
|
+ class="form-item-disable-style"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="true"
|
|
|
+ v-model="projectDetail['lxsj']"
|
|
|
+ type="date"
|
|
|
+ @change="($evt) => (projectDetail['lxsj'] = $evt)"
|
|
|
+ placeholder=" "
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr v-show="isMaster">
|
|
|
+ <td class="th">销售人员:</td>
|
|
|
+ <td>
|
|
|
+ <UserOrgTree
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['xsryId']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">行政区:</td>
|
|
|
+ <td>
|
|
|
+ <DistrictTree
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['xzqdm']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr v-show="isMaster">
|
|
|
+ <td class="th">行业:</td>
|
|
|
+ <td>
|
|
|
+ <el-select
|
|
|
+ class="form-item-disable-style"
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="projectDetail['hyId']"
|
|
|
+ placeholder="请选择行业"
|
|
|
+ :disabled="!editor"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in industryList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
/>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">预估工期(天):</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['yggq']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">归属公司:</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['belongCompanyname']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="tableBox">
|
|
|
- <h4><i class="icon"></i>验收信息</h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">验收时间:</td>
|
|
|
- <td>{{ projectDetail['yssj'] }}</td>
|
|
|
- <td class="th">验收单有效性:</td>
|
|
|
- <td>{{ projectDetail['ysdyxx'] }}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="tableBox">
|
|
|
- <h4><i class="icon"></i>产值信息</h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">是否签合同:</td>
|
|
|
- <td>{{ projectDetail['isSign'] === 0 ? '否' : '是' }}</td>
|
|
|
- <td class="th">本项目成本(万):</td>
|
|
|
- <td>{{ projectDetail['xmcbys'] }}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">本项目产值(万):</td>
|
|
|
- <td>{{ projectDetail['outputValue'] }}</td>
|
|
|
- <td class="th">利益分成(公司/部门):</td>
|
|
|
- <td>{{ projectDetail['shareRatio'] }}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ <td class="th">归属公司:</td>
|
|
|
+ <td>
|
|
|
+ <el-input
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['belongCompanyname']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">预估工期(天):</td>
|
|
|
+ <td>
|
|
|
+ <el-input
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['yggq']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ <td class="th">预估金额(元):</td>
|
|
|
+ <td>
|
|
|
+ <el-input
|
|
|
+ class="form-item-disable-style"
|
|
|
+ v-model="projectDetail['ygje']"
|
|
|
+ :disabled="!editor"
|
|
|
+ />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <div class="xmxxBox" v-if="currentIndex === 0">
|
|
|
- <div class="tableBox">
|
|
|
- <h4 :style="{ marginTop: projectDetail['children'].length > 0 ? '15px' : '0px' }">
|
|
|
- <i class="icon"></i>基本信息
|
|
|
- </h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">项目经理:</td>
|
|
|
- <td>
|
|
|
- <UserOrgTree
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['xmjlId']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">责任部门</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['zrbm']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">项目编号:</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['xmbh']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- <td class="th">预估工期(天):</td>
|
|
|
- <td>
|
|
|
- <el-input
|
|
|
- class="form-item-disable-style"
|
|
|
- v-model="projectDetail['yggq']"
|
|
|
- :disabled="!editor"
|
|
|
- />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="tableBox">
|
|
|
- <h4><i class="icon"></i>产值信息</h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">是否签合同:</td>
|
|
|
- <td>{{ projectDetail['isSign'] === 1 ? '是' : '否' }}</td>
|
|
|
- <td class="th">本项目成本(万):</td>
|
|
|
- <td>{{ projectDetail['xmcbys'] }}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">本项目产值(万):</td>
|
|
|
- <td>{{ projectDetail['outputValue'] }}</td>
|
|
|
- <td class="th">利益分成(公司/部门):</td>
|
|
|
- <td>{{ projectDetail['shareRatio'] }}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
+ <div class="tableBox" v-show="isMaster">
|
|
|
+ <h4><i class="icon"></i>验收信息</h4>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <td class="th">验收时间:</td>
|
|
|
+ <td>{{ projectDetail['yssj'] }}</td>
|
|
|
+ <td class="th">验收单有效性:</td>
|
|
|
+ <td>{{ projectDetail['ysdyxx'] }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- </template>
|
|
|
- <div class="xmcyBox" v-else-if="currentIndex === 1">
|
|
|
- <ul>
|
|
|
- <li v-for="(item, index) in projectWorkerRelationList" :key="index">
|
|
|
- <div class="imgBox">
|
|
|
- <img src="../../../../../../assets/imgs/avatar.gif" />
|
|
|
- <i class="icon"></i>
|
|
|
- </div>
|
|
|
- <div class="userInfo">
|
|
|
- <div class="titleBox">
|
|
|
- <h4>{{ item['workerName'] }}</h4>
|
|
|
- <span class="tag" v-if="item['responsibility']">{{ item['responsibility'] }}</span>
|
|
|
- </div>
|
|
|
- <p class="dept">{{ item['deptName'] }}</p>
|
|
|
- <p class="txt">毕业院校:浙江水利水电职业技术学院</p>
|
|
|
- <p class="txt">学历:大专</p>
|
|
|
- <p class="txt">电话:{{ item['mobile'] }}</p>
|
|
|
- </div>
|
|
|
-
|
|
|
- <el-popconfirm
|
|
|
- title="确定删除该成员?"
|
|
|
- width="180px"
|
|
|
- @confirm="deleWorkerRelationHandle(item)"
|
|
|
- >
|
|
|
- <template #reference>
|
|
|
- <i class="del_icon">
|
|
|
- <Icon icon="ep:delete" />
|
|
|
- </i>
|
|
|
- </template>
|
|
|
- </el-popconfirm>
|
|
|
- </li>
|
|
|
- <li class="operation" @click="workerRelationBool = true">
|
|
|
- <i class="icon"></i>项目成员
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- <div class="xmjdBox" v-else>
|
|
|
- <div class="tableBox">
|
|
|
- <el-table :data="projectMilestoneList" style="width: 100%">
|
|
|
- <el-table-column type="index" label="序号" width="100" />
|
|
|
- <el-table-column prop="title" label="里程碑名称" />
|
|
|
- <el-table-column prop="creatorName" label="计划完成时间" width="120" />
|
|
|
- <el-table-column label="实际完成时间" prop="createTime" width="200" />
|
|
|
- <el-table-column label="状态" prop="adddate" width="200" />
|
|
|
- <el-table-column label="操作" width="180">
|
|
|
- <template></template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="subModalByRightBottom" style="width: 30vw" v-show="workerRelationBool">
|
|
|
- <ul class="tab">
|
|
|
- <li>添加成员</li>
|
|
|
- </ul>
|
|
|
- <span class="close_icon" @click="workerRelationBool = false"></span>
|
|
|
- <div class="tabContent">
|
|
|
- <div class="tabContentOne" style="padding: 20px 30px">
|
|
|
- <div class="formBox">
|
|
|
- <el-form label-width="120px">
|
|
|
- <el-row>
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="人员选择">
|
|
|
- <UserOrgTree v-model="projectWorkerRelation['workerId']" :disabled="!editor" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="24">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="相关职责">
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- v-model="projectWorkerRelation['responsibility']"
|
|
|
- rows="6"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
+ <div class="tableBox">
|
|
|
+ <h4><i class="icon"></i>产值信息</h4>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <td class="th">是否签合同:</td>
|
|
|
+ <td>{{ projectDetail['isSign'] === 0 ? '否' : '是' }}</td>
|
|
|
+ <td class="th">本项目成本(万):</td>
|
|
|
+ <td>{{ projectDetail['xmcbys'] }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">本项目产值(万):</td>
|
|
|
+ <td>{{ projectDetail['outputValue'] }}</td>
|
|
|
+ <td class="th">利益分成(公司/部门):</td>
|
|
|
+ <td>{{ projectDetail['shareRatio'] }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="btnGroup">
|
|
|
- <el-button type="default" @click="workerRelationBool = false">取消</el-button>
|
|
|
- <el-button type="primary" @click="bindProjectWorkerRelation">保存</el-button>
|
|
|
- </div>
|
|
|
+ </template>
|
|
|
+ <!--项目成员-->
|
|
|
+ <ProjectMember v-else-if="currentIndex === 1" :projectId="_mainProjectId" />
|
|
|
+ <!--项目里程碑-->
|
|
|
+ <ProjectMileStone v-else :projectId="_mainProjectId" />
|
|
|
</div>
|
|
|
<AddSubProject
|
|
|
:projectId="_mainProjectId"
|
|
@@ -327,7 +194,6 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
-import { watch } from 'vue'
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
import request from '@/config/axios'
|
|
|
import { industryList } from '@/utils/business'
|
|
@@ -337,44 +203,46 @@ import ProjectTypeTree from '@/views/OaSystem/components/ProjectTypeTree/index.v
|
|
|
import AddSubProject from '@/views/OaSystem/projectCenter/projectDetail/components/xmxx/AddSubProject.vue'
|
|
|
import { useQuery } from '@tanstack/vue-query'
|
|
|
import { getProjectWithChildrenById } from '@/service/project'
|
|
|
+import ProjectMember from '@/views/OaSystem/projectCenter/projectDetail/components/xmxx/ProjectMember.vue'
|
|
|
+import ProjectMileStone from '@/views/OaSystem/projectCenter/projectDetail/components/xmxx/ProjectMileStone.vue'
|
|
|
|
|
|
defineOptions({ name: 'XmxxComp' })
|
|
|
-const $props = defineProps({
|
|
|
- detailData: {
|
|
|
- type: Object,
|
|
|
- default: () => ({})
|
|
|
- },
|
|
|
- editor: {
|
|
|
- type: Boolean,
|
|
|
- default: true
|
|
|
- }
|
|
|
-})
|
|
|
-const route = useRoute()
|
|
|
-const query = route.query
|
|
|
-let _mainProjectId = query.id
|
|
|
+const props = defineProps<{ editor: boolean }>()
|
|
|
+const { editor } = toRefs(props)
|
|
|
+const { query } = useRoute()
|
|
|
+const { id: _mainProjectId = '', subId = '' } = query
|
|
|
+const currentProjectId = ref<string>(_mainProjectId)
|
|
|
+const isMaster = computed(() => _mainProjectId === currentProjectId.value)
|
|
|
/***
|
|
|
* 查询项目和子项目详情数据
|
|
|
* **/
|
|
|
const subProjectShow = ref<boolean>(false)
|
|
|
-const projectDetail = ref({
|
|
|
- id: '',
|
|
|
- children: []
|
|
|
-})
|
|
|
+let projectDetail = ref<any>({})
|
|
|
|
|
|
/***
|
|
|
* 查询项目详情
|
|
|
* **/
|
|
|
-const { refetch } = useQuery(
|
|
|
+const { data: originData, refetch } = useQuery(
|
|
|
[getProjectWithChildrenById.name, _mainProjectId],
|
|
|
async () => await getProjectWithChildrenById(_mainProjectId as string),
|
|
|
{
|
|
|
onSuccess: (tData) => {
|
|
|
- projectDetail.value = tData
|
|
|
+ switchProjectInfo(subId !== '' ? subId : _mainProjectId, tData)
|
|
|
},
|
|
|
enabled: (_mainProjectId ?? '') !== ''
|
|
|
}
|
|
|
)
|
|
|
|
|
|
+// 选择当前查看项目
|
|
|
+const switchProjectInfo = (switchId: string, data = originData.value) => {
|
|
|
+ currentProjectId.value = switchId
|
|
|
+ if (switchId === _mainProjectId) {
|
|
|
+ projectDetail.value = data
|
|
|
+ } else {
|
|
|
+ projectDetail.value = data?.children?.find(({ id }) => id === switchId)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const currentIndex = ref<number>(0)
|
|
|
const switchHandle: (i: number) => void = (i: number) => {
|
|
|
currentIndex.value = i
|
|
@@ -389,19 +257,9 @@ const handleCloseAddSub = () => {
|
|
|
subProjectShow.value = false
|
|
|
}
|
|
|
const onHandleSuccess = () => {
|
|
|
- console.log(' add sub successed!')
|
|
|
refetch()
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 切换子项目信息
|
|
|
- * **/
|
|
|
-const projectInfoIndex = ref<number>(0)
|
|
|
-const switchProjectInfo = (item: any, key: number): void => {
|
|
|
- _mainProjectId = item.id
|
|
|
- projectInfoIndex.value = key
|
|
|
- initDetailAjax()
|
|
|
-}
|
|
|
/**
|
|
|
* 项目编辑保存成操作
|
|
|
* **/
|
|
@@ -416,82 +274,7 @@ const saveProjectHandle = (): void => {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
-/**
|
|
|
- * 项目阶段/项目里程碑
|
|
|
- * **/
|
|
|
-const projectMilestoneList = shallowRef()
|
|
|
-const queryMilestoneList = (): void => {
|
|
|
- const urlApi = `/project-milestone/list?projectId=${_mainProjectId}`
|
|
|
- request.get({ url: urlApi }, '/business').then((resultData) => {
|
|
|
- projectWorkerRelationList.value = resultData
|
|
|
- })
|
|
|
-}
|
|
|
-/**
|
|
|
- * 项目成员相关接口(查询、新增、删除)
|
|
|
- * **/
|
|
|
-const projectWorkerRelation = ref<{
|
|
|
- workerId: string
|
|
|
- responsibility: string
|
|
|
-}>({
|
|
|
- workerId: '',
|
|
|
- responsibility: ''
|
|
|
-})
|
|
|
-const workerRelationBool = ref<boolean>(false)
|
|
|
-const projectWorkerRelationList = shallowRef()
|
|
|
-const queryProjectWorkerRelation = (): void => {
|
|
|
- const urlApi = `/project-worker-relation/list?projectId=${_mainProjectId}`
|
|
|
- request.get({ url: urlApi }, '/business').then((resultData) => {
|
|
|
- projectWorkerRelationList.value = resultData
|
|
|
- })
|
|
|
-}
|
|
|
-const bindProjectWorkerRelation = (): void => {
|
|
|
- const urlApi = `/project-worker-relation/bind`
|
|
|
- const sendData = {
|
|
|
- ...projectWorkerRelation.value,
|
|
|
- projectId: _mainProjectId
|
|
|
- }
|
|
|
- request.post({ url: urlApi, data: sendData }, '/business').then((resultData) => {
|
|
|
- if (!resultData) {
|
|
|
- ElMessage({
|
|
|
- message: '添加成员成功',
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
- queryProjectWorkerRelation()
|
|
|
- workerRelationBool.value = false
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
-const deleWorkerRelationHandle = (item): void => {
|
|
|
- const urlApi = `/project-worker-relation/unbind`
|
|
|
- const sendData = {
|
|
|
- projectId: _mainProjectId,
|
|
|
- workerId: item['workerId']
|
|
|
- }
|
|
|
- request.post({ url: urlApi, data: sendData }, '/business').then((resultData) => {
|
|
|
- if (!resultData) {
|
|
|
- ElMessage({
|
|
|
- message: '删除成功',
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
- queryProjectWorkerRelation()
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
-const initDetailAjax = () => {
|
|
|
- queryProjectWorkerRelation()
|
|
|
- queryMilestoneList()
|
|
|
-}
|
|
|
-watch(
|
|
|
- () => $props.detailData,
|
|
|
- (nVal) => {
|
|
|
- _mainProjectId = nVal.id
|
|
|
- // queryProjectWithChild()
|
|
|
- initDetailAjax()
|
|
|
- },
|
|
|
- {
|
|
|
- immediate: true
|
|
|
- }
|
|
|
-)
|
|
|
+
|
|
|
defineExpose({
|
|
|
saveProjectHandle,
|
|
|
handleAddSubProject
|