|
@@ -2,127 +2,217 @@
|
|
|
<div class="_ProjectDetail_xmxx">
|
|
|
<div class="header">
|
|
|
<ul>
|
|
|
- <li class="active">主项目</li>
|
|
|
+ <template v-if="projectDetail['children'].length > 0">
|
|
|
+ <li
|
|
|
+ :class="{ active: projectInfoIndex === 0 }"
|
|
|
+ @click="switchProjectInfo(projectDetail, 0)"
|
|
|
+ >主项目</li
|
|
|
+ >
|
|
|
+ <li
|
|
|
+ v-for="(item, index) in projectDetail['children']"
|
|
|
+ :class="{ active: projectInfoIndex === index + 1 }"
|
|
|
+ :key="index"
|
|
|
+ @click="switchProjectInfo(item, index + 1)"
|
|
|
+ >子项目
|
|
|
+ </li>
|
|
|
+ </template>
|
|
|
</ul>
|
|
|
<ul>
|
|
|
- <li @click="switchHandle(0)">项目信息</li>
|
|
|
- <li @click="switchHandle(1)">项目成员</li>
|
|
|
- <li @click="switchHandle(2)">项目阶段</li>
|
|
|
+ <li :class="{ active: currentIndex === 0 }" @click="switchHandle(0)">项目信息</li>
|
|
|
+ <li :class="{ active: currentIndex === 1 }" @click="switchHandle(1)">项目成员</li>
|
|
|
+ <li :class="{ active: currentIndex === 2 }" @click="switchHandle(2)">项目阶段</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="content">
|
|
|
- <div class="xmxxBox" v-if="currentIndex === 0">
|
|
|
- <div class="tableBox">
|
|
|
- <h4><i class="icon"></i>基本信息</h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">归属公司:</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="projectDetail['belongCompanyname']" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th">立项时间:</td>
|
|
|
- <td>
|
|
|
- <el-date-picker
|
|
|
- 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 v-model="projectDetail['xsryId']" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th">行政区:</td>
|
|
|
- <td>
|
|
|
- <DistrictTree v-model="projectDetail['xzqdm']" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">项目类别:</td>
|
|
|
- <td>
|
|
|
- <ProjectTypeTree v-model="projectDetail['projectTypeId']" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th">行业:</td>
|
|
|
- <td>
|
|
|
- <el-select
|
|
|
- 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>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">预估工期(天):</td>
|
|
|
- <td>
|
|
|
- <el-input v-model="projectDetail['yggq']" :disabled="!editor" />
|
|
|
- </td>
|
|
|
- <td class="th"></td>
|
|
|
- <td></td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="tableBox">
|
|
|
- <h4><i class="icon"></i>验收信息</h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">验收时间:</td>
|
|
|
- <td>{{ detailData['yssj'] }}</td>
|
|
|
- <td class="th">验收单有效性:</td>
|
|
|
- <td>{{ detailData['ysdyxx'] }}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="tableBox">
|
|
|
- <h4><i class="icon"></i>产值信息</h4>
|
|
|
- <table>
|
|
|
- <tr>
|
|
|
- <td class="th">是否签合同:</td>
|
|
|
- <td>{{ detailData['isSign'] === 1 ? '是' : '否' }}</td>
|
|
|
- <td class="th">本项目成本(万):</td>
|
|
|
- <td>{{ detailData['xmcbys'] }}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td class="th">本项目产值(万):</td>
|
|
|
- <td>{{ detailData['outputValue'] }}</td>
|
|
|
- <td class="th">利益分成(公司/部门):</td>
|
|
|
- <td>{{ detailData['shareRatio'] }}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <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 v-model="projectDetail['xmjlId']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">责任部门</td>
|
|
|
+ <td>
|
|
|
+ <el-input v-model="projectDetail['zrbm']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">项目类别:</td>
|
|
|
+ <td>
|
|
|
+ <ProjectTypeTree v-model="projectDetail['projectTypeId']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">立项时间:</td>
|
|
|
+ <td>
|
|
|
+ <el-date-picker
|
|
|
+ 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 v-model="projectDetail['xsryId']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">行政区:</td>
|
|
|
+ <td>
|
|
|
+ <DistrictTree v-model="projectDetail['xzqdm']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">行业:</td>
|
|
|
+ <td>
|
|
|
+ <el-select
|
|
|
+ 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 v-model="projectDetail['yggq']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">归属公司:</td>
|
|
|
+ <td>
|
|
|
+ <el-input v-model="projectDetail['belongCompanyname']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th"></td>
|
|
|
+ <td> </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'] === 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>
|
|
|
+ </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 v-model="projectDetail['xmjlId']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">责任部门</td>
|
|
|
+ <td>
|
|
|
+ <el-input v-model="projectDetail['zrbm']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="th">项目编号:</td>
|
|
|
+ <td>
|
|
|
+ <el-input v-model="projectDetail['yggq']" :disabled="!editor" />
|
|
|
+ </td>
|
|
|
+ <td class="th">预估工期(天):</td>
|
|
|
+ <td>
|
|
|
+ <el-input 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>
|
|
|
+ </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="" />
|
|
|
+ <img src="../../../../../../assets/imgs/avatar.gif" />
|
|
|
<i class="icon"></i>
|
|
|
</div>
|
|
|
<div class="userInfo">
|
|
|
<div class="titleBox">
|
|
|
- <h4>泮道炬</h4>
|
|
|
+ <h4>{{ item['workerName'] }}</h4>
|
|
|
<span class="tag">{{ item['responsibility'] }}</span>
|
|
|
</div>
|
|
|
- <p class="dept">自然资源产品部</p>
|
|
|
+ <p class="dept">{{ item['deptName'] }}</p>
|
|
|
<p class="txt">毕业院校:浙江水利水电职业技术学院</p>
|
|
|
<p class="txt">学历:大专</p>
|
|
|
- <p class="txt">电话:15932242593</p>
|
|
|
+ <p class="txt">电话:{{ item['mobile'] }}</p>
|
|
|
</div>
|
|
|
- <i class="del_icon"><Icon icon="ep:delete" /></i>
|
|
|
+
|
|
|
+ <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>
|
|
|
- <li class="operation" @click="addWorkerRelationHandle"> <i class="icon"></i>项目成员 </li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="xmjdBox" v-else>
|
|
@@ -140,6 +230,117 @@
|
|
|
</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>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="btnGroup">
|
|
|
+ <el-button type="default" @click="workerRelationBool = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="bindProjectWorkerRelation">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="subModalByRightBottom" v-show="subProjectShow">
|
|
|
+ <ul class="tab">
|
|
|
+ <li>项目信息</li>
|
|
|
+ </ul>
|
|
|
+ <span class="close_icon" @click="subProjectShow = false"></span>
|
|
|
+ <div class="tabContent">
|
|
|
+ <div class="tabContentOne">
|
|
|
+ <div class="formBox">
|
|
|
+ <el-form :model="projectChildForm" label-width="120px">
|
|
|
+ <h4>基本信息</h4>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="项目名称">
|
|
|
+ <el-input v-model="projectChildForm.xmmc" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目经理">
|
|
|
+ <UserOrgTree v-model="projectChildForm.xmjl" :disabled="!editor" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="责任部门">
|
|
|
+ <el-input v-model="projectChildForm.zrbm" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目编号">
|
|
|
+ <el-input v-model="projectChildForm.xmbh" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="预估工期(天)">
|
|
|
+ <el-input v-model="projectChildForm.yggq" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <h4>产值信息</h4>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="总合同额(元)">
|
|
|
+ <el-input v-model="projectChildForm.contractAmount" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="本项目产值(元)">
|
|
|
+ <el-input v-model="projectChildForm.outputValue" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="利益分成(公司/部门)">
|
|
|
+ <el-input v-model="projectChildForm.shareRatio" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="本项目成本(元)">
|
|
|
+ <el-input v-model="projectChildForm.projectCost" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="btnGroup">
|
|
|
+ <el-button type="default" @click="subProjectShow = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="submitProjectChild">提交</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
@@ -154,60 +355,175 @@ defineOptions({ name: 'XmxxComp' })
|
|
|
const $props = defineProps({
|
|
|
detailData: {
|
|
|
type: Object,
|
|
|
- default: () => {
|
|
|
- return {}
|
|
|
- }
|
|
|
+ default: () => ({})
|
|
|
},
|
|
|
editor: {
|
|
|
type: Boolean,
|
|
|
default: true
|
|
|
}
|
|
|
})
|
|
|
+let _mainProjectId: string = ''
|
|
|
/***
|
|
|
- * 根据项目ID查询项目成员
|
|
|
+ * 查询项目和子项目详情数据
|
|
|
* **/
|
|
|
-const projectWorkerRelationList = shallowRef()
|
|
|
-const queryProjectWorkerRelation = (projectId: string): void => {
|
|
|
- const urlApi = `/project-worker-relation/list?projectId=${projectId}`
|
|
|
- request.get({ url: urlApi }, '/business').then((result) => {
|
|
|
- projectWorkerRelationList.value = result
|
|
|
+const subProjectShow = ref<boolean>(false)
|
|
|
+const projectDetail = ref({
|
|
|
+ id: '',
|
|
|
+ children: []
|
|
|
+})
|
|
|
+function queryProjectWithChild(): void {
|
|
|
+ const urlApi = `/project-with-children`
|
|
|
+ const sendData = {
|
|
|
+ id: _mainProjectId
|
|
|
+ }
|
|
|
+ request.get({ url: urlApi, params: sendData }, '/business').then((resultData) => {
|
|
|
+ projectDetail.value = resultData
|
|
|
+ })
|
|
|
+}
|
|
|
+const currentIndex = ref<number>(0)
|
|
|
+const switchHandle: (i: number) => void = (i: number) => {
|
|
|
+ currentIndex.value = i
|
|
|
+}
|
|
|
+/***
|
|
|
+ * 添加子项目
|
|
|
+ * **/
|
|
|
+const switchSubProject = () => {
|
|
|
+ subProjectShow.value = true
|
|
|
+}
|
|
|
+const projectChildForm = ref({
|
|
|
+ xmmc: '',
|
|
|
+ xmbh: '',
|
|
|
+ xmjlId: '',
|
|
|
+ xmjl: '',
|
|
|
+ zrbmId: '',
|
|
|
+ zrbm: '',
|
|
|
+ yggq: 0,
|
|
|
+ contractAmount: 0,
|
|
|
+ projectCost: 0,
|
|
|
+ outputValue: 0,
|
|
|
+ shareRatio: 0
|
|
|
+})
|
|
|
+const addProjectChild = (): void => {
|
|
|
+ const urlApi = `/project/child`
|
|
|
+ const sendData = {
|
|
|
+ pid: _mainProjectId,
|
|
|
+ ...projectChildForm.value
|
|
|
+ }
|
|
|
+ request.post({ url: urlApi, data: sendData }, '/business').then((resultData) => {
|
|
|
+ if (resultData) {
|
|
|
+ ElMessage({
|
|
|
+ message: '新增子项目成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ subProjectShow.value = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+const submitProjectChild = () => {
|
|
|
+ addProjectChild()
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 切换子项目信息
|
|
|
+ * **/
|
|
|
+const projectInfoIndex = ref<number>(0)
|
|
|
+const switchProjectInfo = (item: any, key: number): void => {
|
|
|
+ _mainProjectId = item.id
|
|
|
+ projectInfoIndex.value = key
|
|
|
+ initDetailAjax()
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 项目编辑保存成操作
|
|
|
+ * **/
|
|
|
+const saveProjectHandle = (): void => {
|
|
|
+ const urlApi = `/project`
|
|
|
+ request.put({ url: urlApi, data: projectDetail.value }, '/business').then((resultData) => {
|
|
|
+ if (resultData) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存项目成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
/**
|
|
|
* 项目阶段/项目里程碑
|
|
|
* **/
|
|
|
const projectMilestoneList = shallowRef()
|
|
|
-const queryMilestoneList = (projectId: string): void => {
|
|
|
- const urlApi = `/project-milestone/list?projectId=${projectId}`
|
|
|
- request.get({ url: urlApi }, '/business').then((result) => {
|
|
|
- projectWorkerRelationList.value = result
|
|
|
+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 projectDetail = reactive($props.detailData)
|
|
|
+const initDetailAjax = () => {
|
|
|
+ queryProjectWorkerRelation()
|
|
|
+ queryMilestoneList()
|
|
|
+}
|
|
|
watch(
|
|
|
() => $props.detailData,
|
|
|
(nVal) => {
|
|
|
- queryProjectWorkerRelation(nVal.id)
|
|
|
- queryMilestoneList(nVal.id)
|
|
|
+ _mainProjectId = nVal.id
|
|
|
+ queryProjectWithChild()
|
|
|
+ initDetailAjax()
|
|
|
+ },
|
|
|
+ {
|
|
|
+ immediate: true
|
|
|
}
|
|
|
)
|
|
|
-const currentIndex = ref<number>(0)
|
|
|
-const switchHandle: (i: number) => void = (i: number) => {
|
|
|
- currentIndex.value = i
|
|
|
-}
|
|
|
-
|
|
|
-const addProjectHandle = (): void => {
|
|
|
- const urlApi = `/project`
|
|
|
- request.put({ url: urlApi, data: projectDetail }, '/business').then((result) => {
|
|
|
- projectWorkerRelationList.value = result
|
|
|
- })
|
|
|
-}
|
|
|
-/**
|
|
|
- * 添加主项目成员
|
|
|
- * **/
|
|
|
-const addWorkerRelationHandle = () => {}
|
|
|
defineExpose({
|
|
|
- addProjectHandle
|
|
|
+ saveProjectHandle,
|
|
|
+ switchSubProject
|
|
|
})
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|