|
@@ -85,6 +85,7 @@
|
|
|
<el-dropdown-item v-if="permissions.projectClassification">
|
|
|
<el-link type="primary" :underline="false" @click="showClfDialog = true">分类管理</el-link>
|
|
|
</el-dropdown-item>
|
|
|
+ <!-- <el-dropdown-item v-if="user.timeType.mainProjectState == 1 && !permissions.projectClassification"> -->
|
|
|
<el-dropdown-item v-if="user.timeType.mainProjectState == 1">
|
|
|
<el-link type="primary" :underline="false" @click="mainProjectDialog = true">主项目管理</el-link>
|
|
|
</el-dropdown-item>
|
|
@@ -105,9 +106,8 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-col>
|
|
|
-
|
|
|
<!--列表-->
|
|
|
- <el-table ref="projectlistOfWudulist" :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;" @selection-change="checkedWudulist" @sort-change="tableSort">
|
|
|
+ <el-table ref="projectlistOfWudulist" @cell-click="clickCell" :cell-class-name="tableCellClassName" :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;" @selection-change="checkedWudulist" @sort-change="tableSort">
|
|
|
<el-table-column type="selection" width="60" :selectable="isSelectable">
|
|
|
<!-- creator 项目创建人 incharger 项目负责人 -->
|
|
|
</el-table-column>
|
|
@@ -116,9 +116,9 @@
|
|
|
{{scope.$index+1+(page-1)*size}}
|
|
|
</template>
|
|
|
</el-table-column> -->
|
|
|
- <el-table-column prop="projectCode" label="项目编号" sortable width="120"></el-table-column>
|
|
|
- <el-table-column prop="categoryName" label="项目分类" sortable width="120"></el-table-column>
|
|
|
- <el-table-column prop="projectName" label="项目名称" width="250" sortable>
|
|
|
+ <el-table-column prop="projectCode" label="项目编号" sortable="custom" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="categoryName" label="项目分类" sortable="custom" width="120"></el-table-column>
|
|
|
+ <el-table-column prop="projectName" label="项目名称" width="250" sortable="custom">
|
|
|
<template slot-scope="scope">
|
|
|
<!-- <div class="kans">
|
|
|
<el-link type="primary" v-if="user.company.packageProject==1" :href="'#/projectInside/'+scope.row.id">{{scope.row.projectName}}</el-link>
|
|
@@ -145,6 +145,21 @@
|
|
|
<el-link type="primary" :underline="false" @click="showUser(scope.row.inchargerId)">{{scope.row.inchargerName}}</el-link>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+
|
|
|
+ <!-- 项目阶段 -->
|
|
|
+ <el-table-column prop="inchargerName" label="项目阶段" sortable="custom" min-width="150" width="220" v-if="user.company.packageProject == 1">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span style="display: inline-block; width: 150px">
|
|
|
+ <el-select v-model="phaseProjectValie" v-if="scope.row.index + ',' + scope.column.index == currentCell" :ref="scope.row.index + ',' + scope.column.index" filterable placeholder="请选择项目阶段" size="mini" @blur="hideSelect" @change="selectChange">
|
|
|
+ <el-option v-for="(item, index) in phaseList" :key="index" :label="item" :value="item"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-link v-else type="primary" :underline="false">{{scope.row.currentStage == null ? '暂无' : scope.row.currentStage}}</el-link>
|
|
|
+ </span>
|
|
|
+
|
|
|
+ <el-link v-if="(permissions.projectManagement || user.id==scope.row.inchargerId || user.id==scope.row.creatorId) && scope.row.index + ',' + scope.column.index != currentCell" type="primary" :underline="false"><i class="el-icon-edit"></i></el-link>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
<el-table-column prop="participator" label="参与者" :min-width="user.company.packageCustomer != 1 ? '' : '300'" sortable v-if="user.company.packageProject==0">
|
|
|
<template slot-scope="scope">
|
|
|
<!-- <v-for v-for="par in scope.row.participator" :key="par.id" >
|
|
@@ -184,11 +199,17 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <!-- 级别 -->
|
|
|
+ <el-table-column prop="level" label="级别" min-width="190" v-if="user.company.packageProject == 1" sortable="custom">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{importanceListLable[scope.row.level - 1]}}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<!-- 供应商 -->
|
|
|
<el-table-column prop="providerNames" label="供应商" min-width="190" v-if="user.company.packageProvider">
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column prop="status" label="状态" min-width="100" >
|
|
|
+ <el-table-column prop="status" label="状态" min-width="100" sortable="custom">
|
|
|
<template slot-scope="scope">
|
|
|
{{scope.row.status == null?"-":statusTxt[scope.row.status]}}
|
|
|
</template>
|
|
@@ -213,7 +234,7 @@
|
|
|
完成
|
|
|
<el-dropdown-menu slot="dropdown" class="customdropdown_menu">
|
|
|
<el-button size="mini" @click="cancelPro(scope.row)" class="customdropdown_menu_btn">撤销</el-button><br>
|
|
|
- <el-button size="mini" @click="suspendPro(scope.row)" class="customdropdown_menu_btn">暂停</el-button>
|
|
|
+ <el-button size="mini" @click="suspendPro(scope.row)" class="customdropdown_menu_btn">暂停</el-button><br>
|
|
|
</el-dropdown-menu>
|
|
|
</el-dropdown>
|
|
|
<el-button v-if="(permissions.projectManagement || user.id==scope.row.inchargerId || user.id==scope.row.creatorId) && scope.row.status >= 2" size="mini" @click="restartPro(scope.row)">重启</el-button>
|
|
@@ -250,14 +271,14 @@
|
|
|
<el-input v-model="addForm.code" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目编号" clearable></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="主项目" v-if="user.timeType.mainProjectState == '1'">
|
|
|
- <el-select v-model="addForm.projectMainId" clearable :disabled="!permissions.projectManagement && addForm.creatorId != user.id">
|
|
|
+ <el-select v-model="addForm.projectMainId" clearable :disabled="!permissions.projectManagement && addForm.creatorId != user.id" @change="projectManagementChange">
|
|
|
<el-option v-for="(item) in mainProjectList" :key="item.id" :value="item.id" :label="item.name + '\u3000' + item.code">
|
|
|
<span style="float: left; color: #8492a6; font-size: 13px;">{{ item.code }}</span>
|
|
|
<span style="float: right;margin-left: 20px">{{ item.name }}</span>
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="项目分类">
|
|
|
+ <el-form-item label="项目分类" v-if="user.timeType.mainProjectState != '1'">
|
|
|
<el-select v-model="addForm.category" style="width:32%;" clearable :disabled="!permissions.projectManagement && addForm.creatorId != user.id">
|
|
|
<el-option v-for="(item) in baseClfList" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
|
|
</el-select>
|
|
@@ -583,13 +604,13 @@
|
|
|
<!-- 新增/编辑主项目 -->
|
|
|
<el-dialog title="新增/修改主项目" v-if="addFlgmainProjectDialog" :visible.sync="addFlgmainProjectDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
|
|
|
<el-form ref="form2" :model="addMainForm" :rules="rules" label-width="100px">
|
|
|
- <el-form-item label="主项目名称" prop="name">
|
|
|
- <el-input v-model="addMainForm.name" placeholder="请输入名称" clearable></el-input>
|
|
|
- </el-form-item>
|
|
|
<el-form-item label="主项目编号" prop="code">
|
|
|
<el-input v-model="addMainForm.code" placeholder="请输入编号" clearable></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="分类管理">
|
|
|
+ <el-form-item label="主项目名称" prop="name">
|
|
|
+ <el-input v-model="addMainForm.name" placeholder="请输入名称" clearable></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="项目分类">
|
|
|
<el-select v-model="addMainForm.categoryId" placeholder="请选择分类" clearable >
|
|
|
<el-option v-for="item in baseClfList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
@@ -832,6 +853,7 @@ a {
|
|
|
status:"1",
|
|
|
statusTxt:["-","进行中","已完成","已撤销","已暂停"],
|
|
|
importanceList:[{id:1,label:'正常'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}],
|
|
|
+ importanceListLable:['正常', '紧急', '重要', '重要且紧急', '低风险', '中风险', '高风险'],
|
|
|
searchField:'1',
|
|
|
keyword:null,
|
|
|
user: JSON.parse(sessionStorage.getItem("user")),
|
|
@@ -907,7 +929,11 @@ a {
|
|
|
projectMainId: '',
|
|
|
supplierList: '',
|
|
|
sortProp: '',
|
|
|
- sortOrder: null
|
|
|
+ sortOrder: null,
|
|
|
+ currentCell: null, // 当前单击的是哪一个单元格
|
|
|
+ phaseList: [],
|
|
|
+ phaseProjectId: '', // 阶段项目id
|
|
|
+ phaseProjectValie: null, // 阶段项目值
|
|
|
};
|
|
|
},
|
|
|
// 过滤器
|
|
@@ -940,8 +966,90 @@ a {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 获取阶段
|
|
|
+ obtainPhase(item) {
|
|
|
+ this.http.post('/stages/getProjectStages', {
|
|
|
+ projectId: item.id
|
|
|
+ },
|
|
|
+ res => {
|
|
|
+ if (res.code == "ok") {
|
|
|
+ // this.phaseList = res.data
|
|
|
+ this.$set(this, 'phaseList', res.data)
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ this.$message({
|
|
|
+ message: error,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 表格点击
|
|
|
+ tableCellClassName({row, column, rowIndex, columnIndex}) {
|
|
|
+ row.index=rowIndex;
|
|
|
+ column.index=columnIndex;
|
|
|
+ },
|
|
|
+ clickCell(row,column) {
|
|
|
+ console.log(this.permissions.projectManagement || this.user.id==row.inchargerId || this.user.id==row.creatorId)
|
|
|
+ if(this.permissions.projectManagement || this.user.id==row.inchargerId || this.user.id==row.creatorId) {
|
|
|
+ this.phaseProjectValie = row.currentStage ? row.currentStage : ''
|
|
|
+ this.currentCell = row.index + ',' + column.index;
|
|
|
+ if(column.index == 5) {
|
|
|
+ this.phaseProjectId = row.id
|
|
|
+ this.obtainPhase(row)
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ // 获得焦点
|
|
|
+ this.$refs[row.index + ',' + column.index].focus();
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ selectChange() {
|
|
|
+ this.http.post('/project/changeCurrentStage', {
|
|
|
+ projectId: this.phaseProjectId,
|
|
|
+ currentStage: this.phaseProjectValie
|
|
|
+ },
|
|
|
+ res => {
|
|
|
+ if (res.code == "ok") {
|
|
|
+ this.getList()
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ this.$message({
|
|
|
+ message: error,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ hideSelect() {
|
|
|
+ var that = this
|
|
|
+ setTimeout(() => {
|
|
|
+ that.currentCell = null
|
|
|
+ }, 500)
|
|
|
+ },
|
|
|
+ // 点击主项目事件
|
|
|
+ projectManagementChange() {
|
|
|
+ let categoryId = ''
|
|
|
+ for(var i in this.mainProjectList) {
|
|
|
+ if(this.mainProjectList[i].id == this.addForm.projectMainId) {
|
|
|
+ categoryId = this.mainProjectList[i].categoryId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ categoryId == '' ? '' : this.addForm.category = categoryId
|
|
|
+ console.log(this.addForm)
|
|
|
+ },
|
|
|
tableSort({column, prop, order}){
|
|
|
- if(prop == 'inchargerName' || prop == 'customerName'){
|
|
|
+ if(prop == 'inchargerName' || prop == 'customerName' || prop == 'projectCode' || prop == 'categoryName' || prop == 'projectName' || prop == 'status'){
|
|
|
this.sortOrder = order
|
|
|
this.sortProp = prop
|
|
|
this.getList()
|
|
@@ -2300,20 +2408,26 @@ a {
|
|
|
category: this.statusClf,
|
|
|
projectMainId: this.projectMainId
|
|
|
}
|
|
|
- if(this.sortOrder == 'descending'){
|
|
|
+ if(this.sortOrder){
|
|
|
if(this.sortProp == 'inchargerName'){
|
|
|
parameter.sortProp = "incharger_id"
|
|
|
- }else{
|
|
|
+ }else if(this.sortProp == 'customerName'){
|
|
|
parameter.sortProp = "customer_id"
|
|
|
+ }else if(this.sortProp == 'projectCode'){
|
|
|
+ parameter.sortProp = 'project_code'
|
|
|
+ }else if(this.sortProp == 'categoryName'){
|
|
|
+ parameter.sortProp = 'category'
|
|
|
+ }else if(this.sortProp == 'projectName'){
|
|
|
+ parameter.sortProp = 'project_name'
|
|
|
+ }else if(this.sortProp == 'status'){
|
|
|
+ parameter.sortProp = 'status'
|
|
|
}
|
|
|
- parameter.sortOrder = 0
|
|
|
- }else if(this.sortOrder == 'ascending'){
|
|
|
- if(this.sortProp == 'inchargerName'){
|
|
|
- parameter.sortProp = "incharger_id"
|
|
|
- }else{
|
|
|
- parameter.sortProp = "customer_id"
|
|
|
+
|
|
|
+ if(this.sortOrder == 'descending'){
|
|
|
+ parameter.sortOrder = 0
|
|
|
+ }else if(this.sortOrder == 'ascending'){
|
|
|
+ parameter.sortOrder = 1
|
|
|
}
|
|
|
- parameter.sortOrder = 1
|
|
|
}
|
|
|
this.http.post(this.port.project.listPage, parameter,
|
|
|
res => {
|
|
@@ -2853,6 +2967,13 @@ a {
|
|
|
if(this.user.timeType.mainProjectState == 1){
|
|
|
this.getMainProject()
|
|
|
}
|
|
|
+
|
|
|
+ // 判断释放为专业版
|
|
|
+ if(this.user.company.packageProject == 1) {
|
|
|
+ this.importanceList = [{id:1,label:'正常'},{id:5,label:'低风险'},{id:6,label:'中风险'},{id:7,label:'高风险'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}]
|
|
|
+ } else {
|
|
|
+ this.importanceList = [{id:1,label:'正常'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}]
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
};
|