Browse Source

优化

master
陈裕财 4 years ago
parent
commit
0a25b99300
  1. 630
      src/views/xm/core/xmProject/XmProjectInfo.vue
  2. 15
      src/views/xm/core/xmProject/XmProjectOverview.vue
  3. 62
      src/views/xm/core/xmTask/XmTaskEdit.vue

630
src/views/xm/core/xmProject/XmProjectInfo.vue

@ -1,21 +1,51 @@
<template>
<section class="page-container">
<el-row>
<el-menu :default-active="infotype" mode="horizontal" @select="setInfotype" class="menus" background-color="rgb(48, 65, 86)" text-color="rgb(191, 203, 217)" active-text-color="#ffd04b">
<el-menu
:default-active="infotype"
mode="horizontal"
@select="setInfotype"
class="menus"
background-color="rgb(48, 65, 86)"
text-color="rgb(191, 203, 217)"
active-text-color="#ffd04b"
>
<el-menu-item index="返回">
<span slot="title" style="font-size:18px;">
<span slot="title" @click.stop="goBack"><i class="el-icon-back" ></i></span>
<span slot="title" style="font-size: 18px">
<span slot="title" @click.stop="goBack"
><i class="el-icon-back"></i
></span>
</span>
</el-menu-item>
<el-menu-item index="项目概览">
<span slot="title" style="font-size:18px;color:#ffd04b" class="hidden-sm-and-down" :title="selProject.name">
<font v-if="selProject.name.length>=15"><strong>项目:&nbsp;&nbsp;{{selProject.name.substring(0,15)}}</strong></font>
<font type="danger" v-else><strong>项目:&nbsp;&nbsp;{{selProject.name}}</strong></font>
<span
slot="title"
style="font-size: 18px; color: #ffd04b"
class="hidden-sm-and-down"
:title="selProject.name"
>
<font v-if="selProject.name.length >= 15"
><strong
>项目:&nbsp;&nbsp;{{ selProject.name.substring(0, 15) }}</strong
></font
>
<font type="danger" v-else
><strong>项目:&nbsp;&nbsp;{{ selProject.name }}</strong></font
>
</span>
<span slot="title" style="color:#ffd04b" class="hidden-md-and-up" :title="selProject.name">
<font v-if="selProject.name.length>=15">项目:&nbsp;&nbsp;{{selProject.name.substring(0,15)}}</font>
<font type="danger" v-else>项目:&nbsp;&nbsp;{{selProject.name}}</font>
<span
slot="title"
style="color: #ffd04b"
class="hidden-md-and-up"
:title="selProject.name"
>
<font v-if="selProject.name.length >= 15"
>项目:&nbsp;&nbsp;{{ selProject.name.substring(0, 15) }}</font
>
<font type="danger" v-else
>项目:&nbsp;&nbsp;{{ selProject.name }}</font
>
</span>
</el-menu-item>
<el-menu-item index="迭代" class="hidden-sm-and-down">
@ -73,39 +103,32 @@
<el-submenu index="更多">
<template slot="title">更多 </template>
<el-menu-item index="需求监控">
<span slot="title"><i class="el-icon-video-camera"></i>需求监控</span>
<span slot="title"
><i class="el-icon-video-camera"></i>需求监控</span
>
</el-menu-item>
<el-menu-item index="项目监控">
<span slot="title"><i class="el-icon-video-camera"></i>项目监控</span>
<span slot="title"
><i class="el-icon-video-camera"></i>项目监控</span
>
</el-menu-item>
<el-menu-item index="预算">
<span slot="title"><i class="el-icon-coin"></i>预算</span>
</el-menu-item>
<el-menu-item index="费用">
<span slot="title"><i class="el-icon-coin"></i>费用</span>
</el-menu-item>
<el-menu-item index="考核">
<span slot="title"><i class="el-icon-view"></i>考核</span>
</el-menu-item>
<el-menu-item index="日志">
<span slot="title"><i class="el-icon-edit-outline"></i>日志</span>
</el-menu-item>
<el-menu-item index="合同管理">
<span slot="title"><i class="el-icon-s-data"></i>合同管理</span>
</el-menu-item>
<el-menu-item index="环境清单">
<span slot="title"><i class="el-icon-setting"></i>环境清单</span>
</el-menu-item>
<el-menu-item index="风险">
<span slot="title"><i class="el-icon-question"></i>风险</span>
@ -118,240 +141,526 @@
</el-menu-item>
<el-menu-item index="客服">
<span slot="title"><i class="el-icon-date"></i>客服</span>
</el-menu-item>
</el-submenu>
</el-menu>
</el-row>
<el-row>
<el-col :span="infotype=='项目概览'?4:0" class="padding border">
<el-steps :active="calcProjectStatusStep" finish-status="success" direction="vertical">
<el-step
v-for="(i, index) in dicts['projectStatus']"
:title="i.name"
:key="index"
>
<el-row slot="description">
<el-row v-if="i.id=='0'"><!--初始-->
<span v-if="selProject.status==i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">创建产品</el-button>
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">进入售前</el-button>
</span>
<span v-if="selProject.status!=i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">产品管理</el-button>
</span>
</el-row>
<el-row v-else-if="i.id=='1'"><!--售前-->
<span v-if="selProject.status==i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">需求管理</el-button>
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">项目正式立项</el-button>
</span>
<span v-if="selProject.status!=i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">产品管理</el-button>
</span>
</el-row>
<el-row v-else-if="i.id=='2'"><!--立项中-->
<span v-if="selProject.status==i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">创建产品</el-button>
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">进入售前</el-button>
</span>
<span v-if="selProject.status!=i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">产品管理</el-button>
</span>
</el-row>
<el-row v-else-if="i.id=='3'"><!--实施中-->
<span v-if="selProject.status==i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">创建产品</el-button>
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">进入售前</el-button>
</span>
<span v-if="selProject.status!=i.id">
<el-button class="step-btn" type="warning" size="mini" plain @click="infotype='产品'">产品管理</el-button>
</span>
</el-row>
<el-row v-else-if="i.id=='4'"><!--暂停中-->
</el-row>
<el-row v-else-if="i.id=='5'"><!--结项中-->
</el-row>
<el-row v-else-if="i.id=='6'"><!--已结项-->
<xm-project-overview-complex v-if="infotype=='项目概览'" :sel-project="selProject" @submit="afterEditSubmit"></xm-project-overview-complex>
<xm-iteration-for-link-complex v-if="infotype=='迭代'" ref="xmIterationMng" :sel-project="selProject"></xm-iteration-for-link-complex>
<xm-product-for-link-complex v-if="infotype=='产品'" ref="xmProductComplex" :sel-project="selProject"></xm-product-for-link-complex>
<xm-menu-mng v-if="infotype=='需求'" :sel-project="selProject"></xm-menu-mng>
<xm-task-mng v-if="infotype=='任务'" ref="xmTaskMng" :sel-project="selProject" ptype="0" queryScope="task" key="task"></xm-task-mng>
<xm-question v-if="infotype=='缺陷'" :qtype="'1'" :sel-project='selProject' ref="xmQuestion"></xm-question>
<xm-group-mng v-if="infotype=='团队'" :sel-project="selProject"></xm-group-mng>
<xm-file-mng v-if="infotype=='文档'" :sel-project="selProject"></xm-file-mng>
<xm-plan v-if="infotype=='计划'" ref="projectPlan" ptype="0" queryScope="planTask" :sel-project="selProject" key="projectPlan"></xm-plan>
</el-row>
<el-row v-else-if="i.id=='7'"><!--售后-->
</el-row>
<el-row v-else-if="i.id=='8'"><!--已完成-->
</el-row>
<el-row v-else-if="i.id=='9'"><!--已关闭-->
</el-row>
</el-row>
</el-step>
</el-steps>
</el-col>
<el-col :span="infotype=='项目概览'?20:24">
<xm-project-overview-complex
v-if="infotype == '项目概览'"
:sel-project="selProject"
@submit="afterEditSubmit"
></xm-project-overview-complex>
<xm-iteration-for-link-complex
v-if="infotype == '迭代'"
ref="xmIterationMng"
:sel-project="selProject"
></xm-iteration-for-link-complex>
<xm-product-for-link-complex
v-if="infotype == '产品'"
ref="xmProductComplex"
:sel-project="selProject"
></xm-product-for-link-complex>
<xm-menu-mng
v-if="infotype == '需求'"
:sel-project="selProject"
></xm-menu-mng>
<xm-task-mng
v-if="infotype == '任务'"
ref="xmTaskMng"
:sel-project="selProject"
ptype="0"
queryScope="task"
key="task"
></xm-task-mng>
<xm-question
v-if="infotype == '缺陷'"
:qtype="'1'"
:sel-project="selProject"
ref="xmQuestion"
></xm-question>
<xm-group-mng
v-if="infotype == '团队'"
:sel-project="selProject"
></xm-group-mng>
<xm-file-mng
v-if="infotype == '文档'"
:sel-project="selProject"
></xm-file-mng>
<xm-plan
v-if="infotype == '计划'"
ref="projectPlan"
ptype="0"
queryScope="planTask"
:sel-project="selProject"
key="projectPlan"
></xm-plan>
<!-- <xm-phase-mng v-if="infotype=='计划'" ref="xmPhaseMng" :sel-project="selProject" ></xm-phase-mng> -->
<xm-test-case-exec-mng v-if="infotype=='测试计划'" :visible="infotype=='测试计划'" :sel-project='selProject' ref="xmQuestion"></xm-test-case-exec-mng>
<xm-menu-with-plan v-if="infotype=='需求监控'" ref="xmMenuWithPlan" :sel-project="selProject"></xm-menu-with-plan>
<xm-project-state-mng v-if="infotype=='项目监控'" :sel-project="selProject"></xm-project-state-mng>
<xm-budget v-if="infotype=='预算'" :sel-project="selProject"></xm-budget>
<xm-test-case-exec-mng
v-if="infotype == '测试计划'"
:visible="infotype == '测试计划'"
:sel-project="selProject"
ref="xmQuestion"
></xm-test-case-exec-mng>
<xm-menu-with-plan
v-if="infotype == '需求监控'"
ref="xmMenuWithPlan"
:sel-project="selProject"
></xm-menu-with-plan>
<xm-project-state-mng
v-if="infotype == '项目监控'"
:sel-project="selProject"
></xm-project-state-mng>
<xm-budget
v-if="infotype == '预算'"
:sel-project="selProject"
></xm-budget>
<xm-cost v-if="infotype == '费用'" :sel-project="selProject"></xm-cost>
<xm-project-kpi v-if="infotype=='考核'" :sel-project="selProject"></xm-project-kpi>
<xm-record v-if="infotype=='日志'" :visible="infotype=='日志'" :sel-project="selProject"></xm-record>
<xm-contract v-if="infotype=='合同管理'" :sel-project="selProject"></xm-contract>
<xm-env-list v-if="infotype=='环境清单'" :sel-project="selProject"></xm-env-list>
<xm-question v-if="infotype=='风险'" :qtype="'2'" :sel-project='selProject' ref="xmRisk"></xm-question>
<el-drawer title="选中团队成员" :visible.sync="groupUserVisible" size="50%" append-to-body :close-on-click-modal="false">
<xm-group-select :sel-project="selProject" :visible="groupUserVisible" is-select-multi-user="1" @user-confirm="onUserSelected"></xm-group-select>
<xm-project-kpi
v-if="infotype == '考核'"
:sel-project="selProject"
></xm-project-kpi>
<xm-record
v-if="infotype == '日志'"
:visible="infotype == '日志'"
:sel-project="selProject"
></xm-record>
<xm-contract
v-if="infotype == '合同管理'"
:sel-project="selProject"
></xm-contract>
<xm-env-list
v-if="infotype == '环境清单'"
:sel-project="selProject"
></xm-env-list>
<xm-question
v-if="infotype == '风险'"
:qtype="'2'"
:sel-project="selProject"
ref="xmRisk"
></xm-question>
<el-drawer
title="选中团队成员"
:visible.sync="groupUserVisible"
size="50%"
append-to-body
:close-on-click-modal="false"
>
<xm-group-select
:sel-project="selProject"
:visible="groupUserVisible"
is-select-multi-user="1"
@user-confirm="onUserSelected"
></xm-group-select>
</el-drawer>
<xm-report v-if="infotype=='效能'" :xm-project="selProject"></xm-report>
<xm-report
v-if="infotype == '效能'"
:xm-project="selProject"
></xm-report>
</el-col>
</el-row>
</section>
</template>
<script>
import util from '@/common/js/util';//
import util from "@/common/js/util"; //
//import Sticky from '@/components/Sticky' // header
//import { initSimpleDicts } from '@/api/mdp/meta/item';//
import { mapGetters } from 'vuex';
import xmTaskMng from '../xmTask/XmTaskMng';
import xmGroupMng from '../xmGroup/XmGroupMng';
import xmGroupSelect from '../xmGroup/XmGroupSelect';
import { mapGetters } from "vuex";
import xmTaskMng from "../xmTask/XmTaskMng";
import xmGroupMng from "../xmGroup/XmGroupMng";
import xmGroupSelect from "../xmGroup/XmGroupSelect";
import xmExchange from "../xmExchange/XmExchangeMng";
import xmQuestion from "../xmQuestion/XmQuestionMng";
import xmFileMng from "../xmFile/XmFileMng";
import xmDetail from "./XmProjectDetail";
import xmProjectKpi from "../xmProjectKpi/XmProjectKpiMng";
import xmRecord from "../xmRecord/XmRecordMng";
import xmCost from "./XmProjectCost";
import xmBudget from "./XmProjectBudgetCost";
import xmContract from "../xmContract/XmContractMng";
import xmEnvList from "../xmEnvList/XmEnvListMng";
import xmMenuMng from "../xmMenu/XmMenuMng";
import xmMenuWithPlan from "../xmMenu/XmMenuWithPlan";
import xmProjectStateMng from "../xmProjectState/XmProjectStateMng";
import xmTestCaseExecMng from "../xmTestCaseExec/XmTestCaseExecMng";
import XmIterationForLinkComplex from "../xmIteration/XmIterationForLinkComplex.vue";
import XmProjectOverviewComplex from "./XmProjectOverviewComplex.vue";
import XmProductForLinkComplex from "../xmProduct/XmProductForLinkComplex.vue";
import xmExchange from '../xmExchange/XmExchangeMng';
import xmQuestion from '../xmQuestion/XmQuestionMng';
import xmFileMng from '../xmFile/XmFileMng';
import xmDetail from './XmProjectDetail';
import xmProjectKpi from '../xmProjectKpi/XmProjectKpiMng';
import xmRecord from '../xmRecord/XmRecordMng';
import xmCost from './XmProjectCost';
import xmBudget from './XmProjectBudgetCost';
import xmContract from '../xmContract/XmContractMng';
import xmEnvList from '../xmEnvList/XmEnvListMng';
import xmMenuMng from '../xmMenu/XmMenuMng';
import xmMenuWithPlan from '../xmMenu/XmMenuWithPlan';
import xmProjectStateMng from '../xmProjectState/XmProjectStateMng';
import xmTestCaseExecMng from '../xmTestCaseExec/XmTestCaseExecMng';
import XmIterationForLinkComplex from '../xmIteration/XmIterationForLinkComplex.vue';
import XmProjectOverviewComplex from './XmProjectOverviewComplex.vue';
import XmProductForLinkComplex from '../xmProduct/XmProductForLinkComplex.vue';
import XmReport from "@/views/xm/rpt/reportIndex";
import XmPlan from "../xmTask/XmPlan.vue";
import XmReport from '@/views/xm/rpt/reportIndex';
import XmPlan from '../xmTask/XmPlan.vue';
import { initSimpleDicts } from "@/api/mdp/meta/item"; //
import { getDefOptions } from "@/api/xm/core/xmProject";
export default {
props: ["selProject", "visible"],
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch:{
...mapGetters(["userInfo", "roles"]),
calcProjectStatusStep() {
if (this.dicts["projectStatus"] && this.selProject) {
var index = this.dicts["projectStatus"].findIndex((i) => {
if (i.id == this.selProject.status) {
return true;
} else {
return false;
}
});
return index + 1;
} else {
return 0;
}
},
},
watch: {},
data() {
return {
platformViewVisible: false,
tabPosition:'left',
tabPosition: "left",
infotype: "项目概览",
load: { list: false, edit: false },
groupUserVisible: false,
exportArr: ['任务', '计划', '需求监控']
exportArr: ["任务", "计划", "需求监控"],
dicts: getDefOptions(),
/**end 自定义属性请在上面加 请加备注**/
}
};
}, //end data
methods: {
afterEditSubmit: function (project) {
this.selProject=Object.assign(this.selProject,project)
this.$emit("submit",project)
this.selProject = Object.assign(this.selProject, project);
this.$emit("submit", project);
},
toArchive: function () {
this.$router.push({
path: "/mdp/arc/mate/archive/ArchiveMng"
path: "/mdp/arc/mate/archive/ArchiveMng",
});
},
toIm: function () {
this.groupUserVisible=true
this.groupUserVisible = true;
},
toHelpMe: function () {
this.$router.push({
path: "/mdp/im/messages/crmChat",
query: {
categoryId:'css',
sendContent:'咨询'
}
categoryId: "css",
sendContent: "咨询",
},
});
},
onUserSelected: function (users) {
if (this.groupUserVisible == true) {
var query={}
var query = {};
if (users) {
if (users.length == 1) {
var user=users[0]
query.toUserid=user.userid
query.toUsername=user.username
query.msgType="prichat"
var user = users[0];
query.toUserid = user.userid;
query.toUsername = user.username;
query.msgType = "prichat";
} else if (users.length >= 2) {
query.users=JSON.stringify(users.map(i=>{return {userid:i.userid,username:i.username}}))
query.categoryId="common"
query.msgType="group"
query.users = JSON.stringify(
users.map((i) => {
return { userid: i.userid, username: i.username };
})
);
query.categoryId = "common";
query.msgType = "group";
}
}
this.$router.push({
path: "/mdp/im/messages/messageChat",
query: query
query: query,
});
}
},
setInfotype(infotype) {
if(infotype=='返回'){
this.goBack()
if (infotype == "返回") {
this.goBack();
} else {
this.infotype = infotype;
localStorage.setItem('project-infotype',infotype);
localStorage.setItem("project-infotype", infotype);
}
},
handleExport() {
this.downloadLoading = true
this.downloadLoading = true;
let list = [];
let header = [];
let keyList = [];
let pageNum = 1;
let infotypeKey = '';
if (this.infotype === '任务') {
header = ['序号', '任务名称', '需求', '预算(万)', '工作量(人时)', '执行人', '进度', '任务开始时间', '任务结束时间', '任务技能需求'];
keyList = ['sortLevel', 'name', 'menuName', 'budgetCost', 'budgetWorkload', 'exeUsernames', 'rate', 'startTime', 'endTime', 'taskSkillNames'];
let infotypeKey = "";
if (this.infotype === "任务") {
header = [
"序号",
"任务名称",
"需求",
"预算(万)",
"工作量(人时)",
"执行人",
"进度",
"任务开始时间",
"任务结束时间",
"任务技能需求",
];
keyList = [
"sortLevel",
"name",
"menuName",
"budgetCost",
"budgetWorkload",
"exeUsernames",
"rate",
"startTime",
"endTime",
"taskSkillNames",
];
list = this.$refs.xmTaskMng.tasksTreeData;
pageNum = this.$refs.xmTaskMng.pageInfo.pageNum;
} else if (this.infotype === '计划') {
header = ['序号', '计划名称', '开始时间', '结束时间', '进度(%)', '状态', '计划人数', '实际人数', '计划工期', '实际工期', '计划工作量(人时)', '实际工作量(人时)', '计划非人力成本(元)', '实际非人力成本(元)', '计划内购人力成本(元)', '实际内购人力成本(元)', '计划外购人力成本(元)', '实际外购人力成本(元)', '计划成本合计(元)', '实际成本合计(元)', '审批状态', '备注'];
keyList = ['seqNo', 'name', 'beginDate', 'endDate', 'actRate', 'phaseStatus', 'budgetOuserCnt', 'actStaffNu', 'budgetHours', 'actHours', 'budgetWorkload', 'actWorkload', 'budgetNouserAt', 'actNouserAt', 'budgetIuserAt', 'actIuserAt', 'budgetOuserAt', 'actOuserAt', 'budgetCostAt', 'actCostAt', 'bizFlowState', 'remark'];
} else if (this.infotype === "计划") {
header = [
"序号",
"计划名称",
"开始时间",
"结束时间",
"进度(%)",
"状态",
"计划人数",
"实际人数",
"计划工期",
"实际工期",
"计划工作量(人时)",
"实际工作量(人时)",
"计划非人力成本(元)",
"实际非人力成本(元)",
"计划内购人力成本(元)",
"实际内购人力成本(元)",
"计划外购人力成本(元)",
"实际外购人力成本(元)",
"计划成本合计(元)",
"实际成本合计(元)",
"审批状态",
"备注",
];
keyList = [
"seqNo",
"name",
"beginDate",
"endDate",
"actRate",
"phaseStatus",
"budgetOuserCnt",
"actStaffNu",
"budgetHours",
"actHours",
"budgetWorkload",
"actWorkload",
"budgetNouserAt",
"actNouserAt",
"budgetIuserAt",
"actIuserAt",
"budgetOuserAt",
"actOuserAt",
"budgetCostAt",
"actCostAt",
"bizFlowState",
"remark",
];
list = this.$refs.xmPhaseMng.projectPhaseTreeData;
pageNum = this.$refs.xmPhaseMng.pageInfo.pageNum;
} else if (this.infotype === '需求监控') {
header = ['序号', '需求名称', '计划状态', '负责人', '上线时间', '计划开始时间', '实际开始时间', '计划结束时间', '实际结束时间', '计划工作量(人时)', '实际工作量(人时)', '计划成本(元)', '实际成本(元)', '总体完成比例%', '需求完成比例%', '设计完成比例%', '开发完成比例%', 'sit完成比例%', 'uat完成比例%', '上线状态'];
keyList = ['seqNo', 'menuName', 'planStatus', 'chargeUsername', 'onlineTime', 'planStartTime', 'actStartTime', 'planEndTime', 'actEndTime', 'planWorkload', 'actWorkload', 'planCostAmount', 'actCostAmount', 'finishRate', 'demandRate', 'designRate', 'devRate', 'sitRate', 'uatRate', 'onlineStatus'];
} else if (this.infotype === "需求监控") {
header = [
"序号",
"需求名称",
"计划状态",
"负责人",
"上线时间",
"计划开始时间",
"实际开始时间",
"计划结束时间",
"实际结束时间",
"计划工作量(人时)",
"实际工作量(人时)",
"计划成本(元)",
"实际成本(元)",
"总体完成比例%",
"需求完成比例%",
"设计完成比例%",
"开发完成比例%",
"sit完成比例%",
"uat完成比例%",
"上线状态",
];
keyList = [
"seqNo",
"menuName",
"planStatus",
"chargeUsername",
"onlineTime",
"planStartTime",
"actStartTime",
"planEndTime",
"actEndTime",
"planWorkload",
"actWorkload",
"planCostAmount",
"actCostAmount",
"finishRate",
"demandRate",
"designRate",
"devRate",
"sitRate",
"uatRate",
"onlineStatus",
];
list = this.$refs.xmMenuWithPlan.xmMenusTreeData;
pageNum = this.$refs.xmMenuWithPlan.pageInfo.pageNum;
}
const filename = `${this.selProject.name}_${this.infotype}_第${pageNum}`;
const data = this.formatJson(keyList, list);
import('@/vendor/Export2Excel').then(excel => {
import("@/vendor/Export2Excel").then((excel) => {
excel.export_json_to_excel({
header,
data,
filename,
// autoWidth: this.autoWidth,
bookType: 'xlsx'
})
this.downloadLoading = false
})
bookType: "xlsx",
});
this.downloadLoading = false;
});
},
formatJson(filterVal, jsonData, dataList = []) {
if (this.infotype == '任务') {
jsonData.forEach(v => {
const row = filterVal.map(j => {
let key = '';
if (this.infotype == "任务") {
jsonData.forEach((v) => {
const row = filterVal.map((j) => {
let key = "";
return v[j];
})
});
dataList.push(row);
if (v.children && v.children.length) {
dataList = this.formatJson(filterVal, v.children, dataList);
}
})
});
return dataList;
} else if (this.infotype == '计划') {
} else if (this.infotype == "计划") {
const bizFlowStateDict = {
0: '未发审',
1: '审核中',
2: '已通过',
3: '未通过',
4: '已取消'
}
jsonData.forEach(v => {
const row = filterVal.map(j => {
let key = '';
if(j == 'phaseStatus') {
return this.$refs.xmPhaseMng.formateOption('xmPhaseStatus', v.phaseStatus);
} else if(j == 'bizFlowState') {
0: "未发审",
1: "审核中",
2: "已通过",
3: "未通过",
4: "已取消",
};
jsonData.forEach((v) => {
const row = filterVal.map((j) => {
let key = "";
if (j == "phaseStatus") {
return this.$refs.xmPhaseMng.formateOption(
"xmPhaseStatus",
v.phaseStatus
);
} else if (j == "bizFlowState") {
return `${bizFlowStateDict[parseInt(v[j]) || 0]}`;
} else {
return v[j];
}
})
});
dataList.push(row);
if (v.children && v.children.length) {
dataList = this.formatJson(filterVal, v.children, dataList);
}
})
});
return dataList;
} else if (this.infotype == '需求监控') {
jsonData.forEach(v => {
const row = filterVal.map(j => {
let key = '';
if(j == 'planStatus') {
key = 'xmMenuPlanStatus';
} else if(j == 'onlineStatus') {
return parseInt(v[j]) ? '已上线' : '未上线';
} else if (this.infotype == "需求监控") {
jsonData.forEach((v) => {
const row = filterVal.map((j) => {
let key = "";
if (j == "planStatus") {
key = "xmMenuPlanStatus";
} else if (j == "onlineStatus") {
return parseInt(v[j]) ? "已上线" : "未上线";
} else {
return v[j];
}
const dicts = this.$refs.xmMenuWithPlan.dicts;
if(dicts[key]==undefined || dicts[key]==null || dicts[key].length==0 ){
if (
dicts[key] == undefined ||
dicts[key] == null ||
dicts[key].length == 0
) {
return v[j];
}
var rowData=dicts[key].filter(i=>i.id==v[j])
var rowData = dicts[key].filter((i) => i.id == v[j]);
if (rowData.length > 0) {
return rowData[0].name
return rowData[0].name;
} else {
return v[j];
}
@ -360,22 +669,21 @@ import XmPlan from '../xmTask/XmPlan.vue';
if (v.children && v.children.length) {
dataList = this.formatJson(filterVal, v.children, dataList);
}
})
});
return dataList;
}
},
getDateString(dateStr) {
if (dateStr == null || dateStr == "" || dateStr == undefined) {
return ""
return "";
} else {
return dateStr.substr(0, 10);
}
},
goBack() {
localStorage.setItem('project-infotype',"项目概览");
this.$router.back()
}
localStorage.setItem("project-infotype", "项目概览");
this.$router.back();
},
}, //end methods
components: {
xmTaskMng,
@ -404,13 +712,18 @@ XmPlan,
},
mounted() {
this.$nextTick(() => {
var infotype=localStorage.getItem('project-infotype');
var infotype = localStorage.getItem("project-infotype");
if (infotype) {
this.infotype=infotype
this.infotype = infotype;
}
});
initSimpleDicts("all", ["projectType", "priority", "projectStatus"]).then(
(res) => {
this.dicts = res.data.data;
}
}
);
},
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@ -425,4 +738,7 @@ XmPlan,
text-overflow: ellipsis;
white-space: nowrap;
}
.step-btn{
margin-left:0px;margin-bottom: 5px;
}
</style>

15
src/views/xm/core/xmProject/XmProjectOverview.vue

@ -1,21 +1,6 @@
<template>
<section class="page-container padding">
<el-row class="page-main " :style="{overflowX: 'hidden',height:maxTableHeight+'px'}" ref="table">
<el-row style="margin-bottom:10px">
<el-card class="box-card" style="padding:0px ;height:100px">
<div>
<el-row style="padding:10px">
<el-steps :active="calcProjectStatusStep" finish-status="success">
<el-step v-for="(i,index) in dicts['projectStatus']" :title="i.name" :key="index">
<el-row slot="title">
{{i.name}}
</el-row>
</el-step>
</el-steps>
</el-row>
</div>
</el-card>
</el-row>
<el-row :gutter="10" style="margin-bottom:10px">
<el-col :span="8" >
<el-card class="box-card" style="padding:0px ;height:425px">

62
src/views/xm/core/xmTask/XmTaskEdit.vue

@ -9,44 +9,44 @@
<span v-if="item.id=='0'"><!--草稿-->
</span>
<span v-else-if="item.id=='1'"> <!--需求-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" @click="activateTabPaneName='6'" plain>预算管理</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.bidStep=='0'" @click="editXmTaskSomeFields(editForm,'bidStep','1')" plain>去发布</el-button>
<el-button class="step-btn" type="primary" size="mini" @click="activateTabPaneName='6'" plain>预算管理</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.bidStep=='0'" @click="editXmTaskSomeFields(editForm,'bidStep','1')" plain>去发布</el-button>
<span v-else-if="editForm.bidStep>='1'">
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.bidStep=='1'" @click="editXmTaskSomeFields(editForm,'bidStep','0')" plain>去取消发布</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="warning" size="mini" v-if="editForm.bidStep>='1'" @click="activateTabPaneName='82'" plain>参加推广活动</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.bidStep=='1'" @click="editXmTaskSomeFields(editForm,'bidStep','0')" plain>去取消发布</el-button>
<el-button class="step-btn" type="warning" size="mini" v-if="editForm.bidStep>='1'" @click="activateTabPaneName='82'" plain>参加推广活动</el-button>
</span>
</span>
<span v-else-if="item.id=='2'"> <!--投标中-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.bidStep=='1'" @click="activateTabPaneName='42'" plain>去投标</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-else-if="editForm.bidStep>'1'" @click="activateTabPaneName='42'" plain>投标人管理</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.bidStep=='1'" @click="activateTabPaneName='42'" plain>去投标</el-button>
<el-button class="step-btn" type="primary" size="mini" v-else-if="editForm.bidStep>'1'" @click="activateTabPaneName='42'" plain>投标人管理</el-button>
</span>
<span v-else-if="item.id=='3'"> <!--选标-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.bidStep=='2'" @click="activateTabPaneName='42'" plain>去选标</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-else-if="editForm.bidStep>'2'" @click="activateTabPaneName='42'" plain>中标人管理</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.bidStep=='2'" @click="activateTabPaneName='42'" plain>去选标</el-button>
<el-button class="step-btn" type="primary" size="mini" v-else-if="editForm.bidStep>'2'" @click="activateTabPaneName='42'" plain>中标人管理</el-button>
</span>
<span v-else-if="item.id=='4'"> <!--拓管资金-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="(editForm.bidStep=='4'||editForm.bidStep=='3') && (editForm.estate=='0'||editForm.estate==''||editForm.estate=='1')" @click="activateTabPaneName='8'" plain>去托管佣金{{needPayEfundsAt}}</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" (editForm.estate>'1')" @click="activateTabPaneName='8'" plain>已托管佣金{{editForm.efunds}}</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="(editForm.bidStep=='4'||editForm.bidStep=='3') && (editForm.estate=='0'||editForm.estate==''||editForm.estate=='1')" @click="activateTabPaneName='8'" plain>去托管佣金{{needPayEfundsAt}}</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" (editForm.estate>'1')" @click="activateTabPaneName='8'" plain>已托管佣金{{editForm.efunds}}</el-button>
</span>
<span v-else-if="item.id=='5'"> <!--工作中-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.bidStep>'1'" @click="activateTabPaneName='5'" plain>报工报进度</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="(editForm.bidStep=='4'||editForm.bidStep=='3') && (editForm.estate>='2')" @click="editXmTaskSomeFields(editForm,'bidStep','5')" plain>开始工作</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.bidStep>'1'" @click="activateTabPaneName='5'" plain>报工报进度</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="(editForm.bidStep=='4'||editForm.bidStep=='3') && (editForm.estate>='2')" @click="editXmTaskSomeFields(editForm,'bidStep','5')" plain>开始工作</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" (editForm.taskState=='1'||editForm.taskState=='0')" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>设为已完工待验收</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" (editForm.taskState=='1'||editForm.taskState=='0')" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>设为已完工待验收</el-button>
</span>
<span v-else-if="item.id=='6'"> <!--付款完成-->
<span v-if="editForm.taskState=='2'">
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','3')" plain>设为验收成功</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为验收不成功</el-button>
<el-button class="step-btn" type="primary" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','3')" plain>设为验收成功</el-button>
<el-button class="step-btn" type="primary" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为验收不成功</el-button>
</span>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" v-if="editForm.taskState=='3'" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','4')" plain>设为已结算</el-button>
<el-button class="step-btn" type="primary" v-if="editForm.taskState=='3'" size="mini" @click="editXmTaskSomeFields(editForm,'taskState','4')" plain>设为已结算</el-button>
<el-tag v-for="(item,index) in formatDictsWithClass(dicts,'taskState',editForm.taskState)" :key="index" :type="item.className">{{item.name}}</el-tag>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='4'" plain @click="editXmTaskSomeFields(editForm,'taskState','9')">设为已关闭</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" editForm.taskState=='4'" plain @click="editXmTaskSomeFields(editForm,'taskState','9')">设为已关闭</el-button>
</span>
</span>
</el-step>
@ -58,30 +58,30 @@
<el-step v-for="(item,index) in dicts.taskState" :title="item.name" :description="item.name" :key="index">
<span slot="description">
<span v-if="item.id=='0'"><!--待领取-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" @click="activateTabPaneName='6'" plain>预算管理</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0' && !editForm.executorUserid" @click="activateTabPaneName='42'" plain>去指派执行人</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0' && editForm.executorUserid" @click="activateTabPaneName='42'" plain>执行人管理</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.taskState=='0'" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为执行中</el-button>
<el-button class="step-btn" type="primary" size="mini" @click="activateTabPaneName='6'" plain>预算管理</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.ntype=='0' && !editForm.executorUserid" @click="activateTabPaneName='42'" plain>去指派执行人</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.ntype=='0' && editForm.executorUserid" @click="activateTabPaneName='42'" plain>执行人管理</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.taskState=='0'" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为执行中</el-button>
</span>
<span v-else-if="item.id=='1'"> <!--已领取执行中-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='1'" @click="activateTabPaneName='4'" plain>子工作项管理</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0'" @click="activateTabPaneName='41'" plain>缺陷跟踪</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.ntype=='0'" @click="activateTabPaneName='5'" plain>报工报进度</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if="editForm.taskState=='1'" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>设为已完工待验收</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.ntype=='1'" @click="activateTabPaneName='4'" plain>子工作项管理</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.ntype=='0'" @click="activateTabPaneName='41'" plain>缺陷跟踪</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.ntype=='0'" @click="activateTabPaneName='5'" plain>报工报进度</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if="editForm.taskState=='1'" @click="editXmTaskSomeFields(editForm,'taskState','2')" plain>设为已完工待验收</el-button>
</span>
<span v-else-if="item.id=='2'"> <!--已完工-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='2'" @click="editXmTaskSomeFields(editForm,'taskState','3')" plain>设为已验收待结算</el-button>
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='2'" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为验收不过待执行</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" editForm.taskState=='2'" @click="editXmTaskSomeFields(editForm,'taskState','3')" plain>设为已验收待结算</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" editForm.taskState=='2'" @click="editXmTaskSomeFields(editForm,'taskState','1')" plain>设为验收不过待执行</el-button>
</span>
<span v-else-if="item.id=='3'"> <!--已验收-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='3'" @click="editXmTaskSomeFields(editForm,'taskState','4')" plain>设为已结算</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" editForm.taskState=='3'" @click="editXmTaskSomeFields(editForm,'taskState','4')" plain>设为已结算</el-button>
</span>
<span v-else-if="item.id=='4'"> <!--已结算-->
<el-button style="margin-left:0px;margin-bottom: 5px;" type="primary" size="mini" v-if=" editForm.taskState=='4'" @click="editXmTaskSomeFields(editForm,'taskState','9')" plain>设为已关闭</el-button>
<el-button class="step-btn" type="primary" size="mini" v-if=" editForm.taskState=='4'" @click="editXmTaskSomeFields(editForm,'taskState','9')" plain>设为已关闭</el-button>
</span>
<span v-else-if="item.id=='9'"> <!--已关闭-->
</span>
@ -1059,4 +1059,8 @@
display: inline-block;
margin-right: 5px;
}
.step-btn{
margin-left:0px;margin-bottom: 5px;
}
</style>
Loading…
Cancel
Save