Browse Source

界面优化

master
陈裕财 5 years ago
parent
commit
639936392e
  1. 8
      src/views/xm/core/xmMenu/XmMenuMng.vue
  2. 4
      src/views/xm/core/xmProduct/XmProductMng.vue
  3. 6
      src/views/xm/core/xmProjectPhase/XmProjectPhaseBatch.vue
  4. 74
      src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue
  5. 76
      src/views/xm/core/xmQuestion/XmQuestionAdd.vue
  6. 244
      src/views/xm/core/xmQuestion/XmQuestionMng.vue
  7. 30
      src/views/xm/core/xmTask/XmTaskAdd.vue
  8. 22
      src/views/xm/core/xmTask/XmTaskEdit.vue
  9. 10
      src/views/xm/core/xmTask/XmTaskMng.vue
  10. 2
      src/views/xm/core/xmTask/XmTaskMngBatch.vue

8
src/views/xm/core/xmMenu/XmMenuMng.vue

@ -1,11 +1,11 @@
<template>
<section class="page-container page-full-height padding border">
<section class="padding">
<el-row v-if=" !batchEditVisible">
<el-col :span="6">
<xm-product-mng :sel-project="selProject" @row-click="onProductSelected" ref="xmProductMng" :simple="true"></xm-product-mng>
</el-col>
<el-col :span="18">
<el-row>
<el-col :span="18" class="padding-left">
<el-row >
<el-select v-model="filters.taskFilterType" placeholder="是否分配了任务?" clearable >
<el-option value="not-join" label="未分配任何任务的故事"></el-option>
<el-option value="join" label="已分配任务的故事"></el-option>
@ -92,7 +92,7 @@
</el-popover>
</el-row>
<el-row style="padding-top:12px;">
<el-row class="padding-top">
<el-table ref="table" :height="tableHeight" :data="xmMenusTreeData" default-expand-all row-key="menuId" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick">
<el-table-column sortable type="selection" width="40"></el-table-column>
<el-table-column prop="menuName" label="故事名称" min-width="160" show-overflow-tooltip>

4
src/views/xm/core/xmProduct/XmProductMng.vue

@ -1,6 +1,6 @@
<template>
<section class="page-container padding">
<el-row class="padding-bottom">
<el-row>
<el-select v-model="filters.queryScope" placeholder="产品查询范围">
<el-option :label="userInfo.branchName+'机构下所有的产品'" value="branchId"></el-option>
<el-option label="我相关的产品" value="compete"></el-option>
@ -91,7 +91,7 @@
<el-button slot="reference" icon="el-icon-more" circle></el-button>
</el-popover>
</el-row>
<el-row class="page-main">
<el-row class="padding-top">
<!--列表 XmProduct 产品表-->
<el-table ref="table" :height="tableHeight" :data="xmProducts" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column prop="productName" label="产品名称" min-width="300">

6
src/views/xm/core/xmProjectPhase/XmProjectPhaseBatch.vue

@ -1,6 +1,6 @@
<template>
<section>
<el-row class="page-main" >
<el-row >
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true" icon="el-icon-delete">批量删除</el-button>
<el-button type="warning" @click="saveBatchEdit" v-loading="load.edit" icon="el-icon-finished">批量保存</el-button>
@ -15,14 +15,14 @@
</div>
</el-row>
<el-row class="page-main" >
<el-row class="padding-top" >
<span style="margin-left:10px;font-size:14px;">项目总预算</span><el-tag type='success'> {{toFixed(selProject.planTotalCost/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanCostAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">非人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanNouserAt>0?'warning':'danger'">{{toFixed(selProject.planNouserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanNouserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">内部人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanInnerUserAt>0?'warning':'danger'">{{toFixed(selProject.planInnerUserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanInnerUserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">外购人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanOutUserAt>0?'warning':'danger'">{{toFixed(selProject.planOutUserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanOutUserAt/10000,2)}}</el-tag>
</el-row>
<el-row class="page-main" >
<el-row class="padding-top" >
<!--列表 XmProjectPhase xm_project_phase-->
<el-table ref="table" :height="tableHeight" class="drag-table" default-expand-all :summary-method="getSummariesForBatchEdit" :data="projectPhaseTreeData" :show-summary="true" row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="50"></el-table-column>

74
src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue

@ -1,6 +1,6 @@
<template>
<section>
<el-row class="page-main" v-show="batchEditVisible==false">
<section class="padding">
<el-row v-show="batchEditVisible==false">
<el-button class="hidden-md-and-down" @click="loadTasksToXmProjectPhase(sels)" v-loading="load.edit" icon="el-icon-s-data">由任务汇总进度数据</el-button>
<el-button @click="batchEditVisible=true" v-loading="load.edit" icon="el-icon-edit">批量修改</el-button>
<span v-if="batchEditVisible!=true" >
@ -58,51 +58,55 @@
</el-popover>
</el-row>
<el-row class="app-container hidden-md-and-down" v-show="batchEditVisible==false">
<el-row class="padding-top hidden-md-and-down" v-show="batchEditVisible==false">
<span style="margin-left:10px;font-size:14px;">项目总预算</span><el-tag type='success'> {{toFixed(selProject.planTotalCost/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanCostAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">非人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanNouserAt>0?'warning':'danger'">{{toFixed(selProject.planNouserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanNouserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">内部人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanInnerUserAt>0?'warning':'danger'">{{toFixed(selProject.planInnerUserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanInnerUserAt/10000,2)}}</el-tag>
<span style="margin-left:10px;font-size:14px;">外购人力总预算</span><el-tag :type="phaseBudgetData.surplusPlanOutUserAt>0?'warning':'danger'">{{toFixed(selProject.planOutUserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanOutUserAt/10000,2)}}</el-tag>
</el-row>
<el-row class="page-main" v-show="batchEditVisible==false">
<el-row class="padding-top" v-show="batchEditVisible==false">
<!--列表 XmProjectPhase xm_project_phase-->
<el-table ref="table" :height="tableHeight" v-show="!gstcVisible " default-expand-all :data="projectPhaseTreeData" :summary-method="getSummariesForNoBatchEdit" :show-summary="true" row-key="id" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column prop="phaseName" label="阶段名称" min-width="150" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{scope.row.seqNo}} &nbsp;&nbsp;<el-link type="primary" @click="showEdit(scope.row)"> {{scope.row.phaseName}}</el-link></span>
<font style="float:right;">
<template slot-scope="scope">
<span>
<el-button type="text" v-if="!scope.row.mngUserid" v-model="scope.row.mngUsername" @click="groupUserSelectVisible=true" icon="el-icon-setting">去设置</el-button>
<el-link v-else type="primary" @click="groupUserSelectVisible=true">{{scope.row.mngUsername}}</el-link>
</span>
<span>
<el-tag :type="scope.row.actRate>=100?'success':'primary'"> {{ (scope.row.actRate!=null?scope.row.actRate:0)+'%'}} </el-tag>
</span>
<span>
<font class="hidden-md-and-down" >{{formatDate(scope.row.beginDate)}}<br>{{formatDate(scope.row.endDate)}} </font>
<font v-for="item in [calcTaskStateByTime(scope.row.beginDate,scope.row.endDate,scope.row.actRate,scope.phaseStatus)]" :key="item.status"><el-tag :type="item.status">{{item.remark}}</el-tag></font>
</span>
<span>
<el-dropdown @command="handleCommand" :hide-on-click="false">
<span class="el-dropdown-link">
<i class="el-icon-setting"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'showSubAdd',data:scope.row}">+子阶段</el-dropdown-item>
<el-dropdown-item :command="{type:'showPhaseTemplate',data:scope.row}">+从模板批量导入子阶段</el-dropdown-item>
<el-dropdown-item :command="{type:'showMenu',data:scope.row}">+由故事创建子阶段</el-dropdown-item>
{{scope.row.seqNo}} &nbsp;&nbsp;
<span>
<el-dropdown @command="handleCommand" :hide-on-click="false">
<span class="el-dropdown-link">
<i class="el-icon-setting"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'showSubAdd',data:scope.row}">+子阶段</el-dropdown-item>
<el-dropdown-item :command="{type:'showPhaseTemplate',data:scope.row}">+从模板批量导入子阶段</el-dropdown-item>
<el-dropdown-item :command="{type:'showMenu',data:scope.row}">+由故事创建子阶段</el-dropdown-item>
<el-dropdown-item :command="{type:'showEdit',data:scope.row}">编辑</el-dropdown-item>
<el-dropdown-item :command="{type:'loadTasksToXmProjectPhase',data:scope.row}" >从任务汇总实际数据</el-dropdown-item>
<el-dropdown-item :command="{type:'showLog',data:scope.row}">日志</el-dropdown-item>
<el-dropdown-item :command="{type:'handleDel',data:scope.row}" >删除</el-dropdown-item>
<el-dropdown-item icon="el-icon-success" :command="{type:'sendToProcessApprova',row:scope.row,bizKey:'xm_project_start_approva'}">变更发审(审核通过后起效)</el-dropdown-item>
<el-dropdown-item icon="el-icon-success" :command="{type:'sendToProcessApprova',row:scope.row,bizKey:'xm_project_delete_approva'}">删除发审(审核通过后删除)</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown-item :command="{type:'showEdit',data:scope.row}">编辑</el-dropdown-item>
<el-dropdown-item :command="{type:'loadTasksToXmProjectPhase',data:scope.row}" >从任务汇总实际数据</el-dropdown-item>
<el-dropdown-item :command="{type:'showLog',data:scope.row}">日志</el-dropdown-item>
<el-dropdown-item :command="{type:'handleDel',data:scope.row}" >删除</el-dropdown-item>
<el-dropdown-item icon="el-icon-success" :command="{type:'sendToProcessApprova',row:scope.row,bizKey:'xm_project_start_approva'}">变更发审(审核通过后起效)</el-dropdown-item>
<el-dropdown-item icon="el-icon-success" :command="{type:'sendToProcessApprova',row:scope.row,bizKey:'xm_project_delete_approva'}">删除发审(审核通过后删除)</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</span>
<span>
<el-button type="text" v-if="!scope.row.mngUserid" v-model="scope.row.mngUsername" @click="groupUserSelectVisible=true" icon="el-icon-setting">去设置</el-button>
<el-link v-else type="primary" @click="groupUserSelectVisible=true">{{scope.row.mngUsername}}</el-link>
</span>
<span>
<el-tag :type="scope.row.actRate>=100?'success':'primary'"> {{ (scope.row.actRate!=null?scope.row.actRate:0)+'%'}} </el-tag>
</span>
<el-link type="primary" @click="showEdit(scope.row)"> {{scope.row.phaseName}}</el-link>
</span>
</font>
<font style="float:right;">
<span>
<font class="hidden-md-and-down" >{{formatDate(scope.row.beginDate)}}{{formatDate(scope.row.endDate)}} </font>
<font v-for="item in [calcTaskStateByTime(scope.row.beginDate,scope.row.endDate,scope.row.actRate,scope.phaseStatus)]" :key="item.status"><el-tag :type="item.status">{{item.remark}}</el-tag></font>
</span>
</font>
</template>
</el-table-column>
<!--

76
src/views/xm/core/xmQuestion/XmQuestionAdd.vue

@ -1,10 +1,16 @@
<template>
<section>
<el-row class="xm-question">
<!--新增界面 XmQuestion xm_question-->
<el-form :model="addForm" label-width="120px" :rules="addFormRules" ref="addForm">
<el-row>
<el-col :span="12">
<section class="page-container page-full-height padding">
<el-row>
<el-steps :active="calcBugStep" simple finish-status="success">
<el-step title="已激活,待确认" description="创建后自动激活、关闭后重新激活)"></el-step>
<el-step title="已确认,待解决" description="业务确认缺陷后变为已确认"></el-step>
<el-step title="已解决,待关闭" description="开发修复缺陷后,变成已解决"></el-step>
<el-step title="已关闭(可重新激活)" description="测试通过后变为已关闭,已关闭缺陷可以重新激活"></el-step>
</el-steps>
</el-row>
<el-row class="page-main page-height-80 padding">
<el-form :model="addForm" :rules="addFormRules" ref="addForm">
<el-form-item label="隶属项目" prop="projectName">
<el-tag :closable="!selProject" @close="clearProject">{{this.filters.selProject?this.filters.selProject.name:'未选项目'}}</el-tag><el-button v-if="!selProject" @click="showProjectList" type="plian">选项目</el-button>
</el-form-item>
@ -42,32 +48,19 @@
</el-form-item>
<el-form-item label="指派给" prop="handlerUsername">
{{addForm.handlerUsername}} <el-button @click="sendToAsk">指派给提出人</el-button><el-button @click="sendToCreater">指派给创建人</el-button><el-button @click="showGroupUsers('handlerUsername')">选其它人</el-button>
</el-form-item>
</el-col>
<el-col :span="12">
</el-form-item>
<el-form-item>
<el-col :span="24">测试步骤</el-col>
<el-col :span="24">
<el-form-item label="测试步骤" prop="opStep">
<vue-editor :id="'opStep'+addForm.id" :branch-id="userInfo.branchId" v-model="addForm.opStep" ref="opStep"></vue-editor>
</el-col>
<el-col :span="24" >预期结果</el-col>
<el-col :span="24" >
<vue-editor :id="'expectResult'+addForm.id" :branch-id="userInfo.branchId" v-model="addForm.expectResult" ref="expectResult"></vue-editor>
</el-col>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="预期结果" prop="expectResult">
<vue-editor :id="'expectResult'+addForm.id" :branch-id="userInfo.branchId" v-model="addForm.expectResult" ref="expectResult"></vue-editor>
</el-form-item>
<el-form-item label="缺陷描述" prop="description">
<vue-editor :id="'description_'+addForm.id" :branch-id="userInfo.branchId" v-model="addForm.description"></vue-editor>
</el-form-item>
<el-form-item class="add-btns">
<el-col style="text-align:center;" :span="24">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.add" type="primary" @click.native="addSubmit" :disabled="load.add==true">保存</el-button>
</el-col>
</el-form-item>
</el-form-item>
</el-form>
<el-drawer title="选中用户" :visible.sync="selectUserVisible" size="80%" append-to-body :close-on-click-modal="false">
<xm-group-mng :sel-project="filters.selProject" :is-select-single-user="1" @user-confirm="onUserConfirm"></xm-group-mng>
@ -85,6 +78,10 @@
<xm-project-list @project-confirm="onPorjectConfirm"></xm-project-list>
</el-drawer>
</el-row>
<el-row>
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.add" type="primary" @click.native="addSubmit" :disabled="load.add==true">保存</el-button>
</el-row>
</section>
</template>
@ -381,19 +378,18 @@
</script>
<style scoped>
.xm-question{
padding: 10px;
}
.el-form-item{
margin-bottom: 15px;
}
.el-form-item__content{
margin-left: 0;
.wf-main-context-box {
border:1px dashed #000;
margin-bottom: 10px;
margin-top: 30px;
padding:10px;
}
.el-form-item__content{
margin-left: 0;
.wf-main-context p {
color: #585858;
}
.add-btns >>> .el-form-item__content{
margin-left: 0 !important;
.wf-main-context p > img {
max-width: 100%;
}
</style>

244
src/views/xm/core/xmQuestion/XmQuestionMng.vue

@ -1,132 +1,129 @@
<template>
<section class="page-container padding">
<el-row class="page-main">
<!--列表 XmQuestion xm_question-->
<el-table ref="table" :height="tableHeight" :data="xmQuestions" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column prop="name" label="缺陷名称" min-width="200">
<template slot="header" slot-scope="scope">
<el-row>
<el-select v-model="filters.bugStatus" placeholder="请选择状态" style="width:15%;" clearable @change="changeBugStatus">
<section class="padding">
<el-row>
<el-select v-model="filters.bugStatus" placeholder="请选择状态" style="width:15%;" clearable @change="changeBugStatus">
<el-option v-for="(b,index) in options['bugStatus']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
<el-select class="hidden-md-and-down" v-model="filters.priority" placeholder="紧急程度" style="width:15%;" clearable @change="changePriority">
<el-option v-for="(b,index) in options['urgencyLevel']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
<el-select class="hidden-md-and-down" v-model="filters.bugSeverity" placeholder="请选择严重程度" clearable @change="changeBugSeverity">
<el-option v-for="(b,index) in options['bugSeverity']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
<el-tag v-if=" filters.product " closable @close="clearProduct">{{this.filters.product.productName}}</el-tag>
<el-button v-else @click="showProductVisible" type="plian">选产品</el-button>
<el-button v-if=" !filters.menus || filters.menus.length==0" @click="showMenu"> 选择故事</el-button>
<el-tag v-else closable @close="clearFiltersMenu(filters.menus[0])">{{filters.menus[0].menuName.substr(0,5)}}({{filters.menus.length}})</el-tag>
<el-input style="width:200px;" v-model="filters.key" placeholder="缺陷名称">
<template slot="append">
<el-button @click="searchXmQuestions" type="primary" icon="el-icon-search"></el-button>
</template>
</el-input>
<el-button type="primary" icon="el-icon-plus" @click="showAdd">
</el-button>
<el-popover
placement="top-start"
title="更多查询条件或操作"
width="600"
trigger="click" >
<el-row>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">产品:</font><el-tag v-if=" filters.product " closable @close="clearProduct">{{this.filters.product.productName}}</el-tag>
<el-button v-else @click="showProductVisible" type="plian">选产品</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;" v-if="!selProject">
<font class="more-label-font">项目:</font>
<el-tag v-if="filters.selProject && !selProject" closable @close="clearProject" @click="showProjectList(true)">{{ filters.selProject.name }}</el-tag>
<el-button v-else @click="showProjectList(true)" >选择项目</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;">
<font class="more-label-font">创建者:</font>
<el-button v-if="!filters.createUser" @click="showGroupUsers('createUser')">选择创建人</el-button>
<el-tag v-else closable @close="clearCreateUser" @click="showGroupUsers('createUser')">{{filters.createUser.username}}</el-tag>
<el-button v-if="!filters.createUser||filters.createUser.userid!=userInfo.userid" @click="setFiltersCreateUserAsMySelf">我的</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;">
<font class="more-label-font">指派给:</font>
<el-button v-if="!filters.handlerUsername" @click="showGroupUsers('handlerUser')">选择被指派人</el-button>
<el-tag v-else closable @close="clearHandler" @click="showGroupUsers('handlerUser')">{{filters.handlerUsername}}</el-tag>
<el-button v-if="filters.handlerUserid!=userInfo.userid" @click="setFiltersHandlerAsMySelf">我的</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;">
曾经由<el-button v-if="!filters.hisHandler||!filters.hisHandler.userid" @click="showGroupUsers('hisHandler')">执行人</el-button>
<el-tag v-else closable @close="clearHisHandler" @click="showGroupUsers('hisHandler')">{{filters.hisHandler.username}}</el-tag>
<el-button v-if="!filters.hisHandler||filters.hisHandler.userid!=userInfo.userid" @click="setFiltersHisHandlerAsMySelf">我的</el-button>
变更状态为
<el-select v-model="filters.hisHandleStatus" placeholder="请选择状态" clearable @change="changeHisHandleStatus">
<el-option v-for="(b,index) in options['bugStatus']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
<el-select class="hidden-md-and-down" v-model="filters.priority" placeholder="紧急程度" style="width:15%;" clearable @change="changePriority">
</el-select>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">故事:</font>
<font v-if=" filters.menus && filters.menus.length>0">
<el-tag v-for="(item,index) in filters.menus" :key="index" closable @close="clearFiltersMenu(item)">{{item.menuName.substr(0,10)}}</el-tag>
</font>
<el-button v-else @click="showMenu" type="plian">选故事</el-button>
</el-col>
<el-col :span="24" class="hidden-lg-and-up" style="padding-top:12px;">
<el-select v-model="filters.priority" placeholder="请选择紧急程度" clearable @change="changePriority">
<el-option v-for="(b,index) in options['urgencyLevel']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
<el-select class="hidden-md-and-down" v-model="filters.bugSeverity" placeholder="请选择严重程度" clearable @change="changeBugSeverity">
<el-option v-for="(b,index) in options['bugSeverity']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-col>
<el-col :span="24" style="padding-top:12px;">
<el-select v-model="filters.solution" placeholder="请选择解决方案" clearable @change="changeSolution">
<el-option v-for="(b,index) in options['bugSolution']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
<el-tag v-if=" filters.product " closable @close="clearProduct">{{this.filters.product.productName}}</el-tag>
<el-button v-else @click="showProductVisible" type="plian">选产品</el-button>
<el-button v-if=" !filters.menus || filters.menus.length==0" @click="showMenu"> 选择故事</el-button>
<el-tag v-else closable @close="clearFiltersMenu(filters.menus[0])">{{filters.menus[0].menuName.substr(0,5)}}({{filters.menus.length}})</el-tag>
<el-input style="width:200px;" v-model="filters.key" placeholder="缺陷名称">
<template slot="append">
<el-button @click="searchXmQuestions" type="primary" icon="el-icon-search"></el-button>
</template>
</el-input>
<el-button type="primary" icon="el-icon-plus" @click="showAdd">
</el-button>
<el-popover
placement="top-start"
title="更多查询条件或操作"
width="600"
trigger="click" >
<el-row>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">产品:</font><el-tag v-if=" filters.product " closable @close="clearProduct">{{this.filters.product.productName}}</el-tag>
<el-button v-else @click="showProductVisible" type="plian">选产品</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;" v-if="!selProject">
<font class="more-label-font">项目:</font>
<el-tag v-if="filters.selProject && !selProject" closable @close="clearProject" @click="showProjectList(true)">{{ filters.selProject.name }}</el-tag>
<el-button v-else @click="showProjectList(true)" >选择项目</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;">
<font class="more-label-font">创建者:</font>
<el-button v-if="!filters.createUser" @click="showGroupUsers('createUser')">选择创建人</el-button>
<el-tag v-else closable @close="clearCreateUser" @click="showGroupUsers('createUser')">{{filters.createUser.username}}</el-tag>
<el-button v-if="!filters.createUser||filters.createUser.userid!=userInfo.userid" @click="setFiltersCreateUserAsMySelf">我的</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;">
<font class="more-label-font">指派给:</font>
<el-button v-if="!filters.handlerUsername" @click="showGroupUsers('handlerUser')">选择被指派人</el-button>
<el-tag v-else closable @close="clearHandler" @click="showGroupUsers('handlerUser')">{{filters.handlerUsername}}</el-tag>
<el-button v-if="filters.handlerUserid!=userInfo.userid" @click="setFiltersHandlerAsMySelf">我的</el-button>
</el-col>
<el-col :span="24" style="padding-top:12px;">
曾经由<el-button v-if="!filters.hisHandler||!filters.hisHandler.userid" @click="showGroupUsers('hisHandler')">执行人</el-button>
<el-tag v-else closable @close="clearHisHandler" @click="showGroupUsers('hisHandler')">{{filters.hisHandler.username}}</el-tag>
<el-button v-if="!filters.hisHandler||filters.hisHandler.userid!=userInfo.userid" @click="setFiltersHisHandlerAsMySelf">我的</el-button>
变更状态为
<el-select v-model="filters.hisHandleStatus" placeholder="请选择状态" clearable @change="changeHisHandleStatus">
<el-option v-for="(b,index) in options['bugStatus']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">故事:</font>
<font v-if=" filters.menus && filters.menus.length>0">
<el-tag v-for="(item,index) in filters.menus" :key="index" closable @close="clearFiltersMenu(item)">{{item.menuName.substr(0,10)}}</el-tag>
</font>
<el-button v-else @click="showMenu" type="plian">选故事</el-button>
</el-col>
<el-col :span="24" class="hidden-lg-and-up" style="padding-top:12px;">
<el-select v-model="filters.priority" placeholder="请选择紧急程度" clearable @change="changePriority">
<el-option v-for="(b,index) in options['urgencyLevel']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
</el-col>
<el-col :span="24" style="padding-top:12px;">
<el-select v-model="filters.solution" placeholder="请选择解决方案" clearable @change="changeSolution">
<el-option v-for="(b,index) in options['bugSolution']" :value="b.optionValue" :key="index" :label="b.optionName">{{b.optionName}}
</el-option>
</el-select>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">创建时间:</font>
<el-date-picker
v-model="dateRanger"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="完成日期"
value-format="yyyy-MM-dd"
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">最后更新时间:</font>
<el-date-picker
v-model="ltimeRanger"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="更新时间"
end-placeholder="更新时间"
value-format="yyyy-MM-dd"
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<el-button type="primary" icon="el-icon-search" @click="searchXmQuestions">查询</el-button>
<el-button @click="handleExport" icon="el-icon-download">导出</el-button>
</el-col>
</el-row>
<el-button slot="reference" icon="el-icon-more" circle></el-button>
</el-popover>
</el-row>
</template>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">创建时间:</font>
<el-date-picker
v-model="dateRanger"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="完成日期"
value-format="yyyy-MM-dd"
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<font class="more-label-font">最后更新时间:</font>
<el-date-picker
v-model="ltimeRanger"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="更新时间"
end-placeholder="更新时间"
value-format="yyyy-MM-dd"
:default-time="['00:00:00','23:59:59']"
:picker-options="pickerOptions"
></el-date-picker>
</el-col>
<el-col :span="24" style="padding-top:5px;">
<el-button type="primary" icon="el-icon-search" @click="searchXmQuestions">查询</el-button>
<el-button @click="handleExport" icon="el-icon-download">导出</el-button>
</el-col>
</el-row>
<el-button slot="reference" icon="el-icon-more" circle></el-button>
</el-popover>
</el-row>
<el-row class="padding-top">
<!--列表 XmQuestion xm_question-->
<el-table ref="table" :height="tableHeight" :data="xmQuestions" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column prop="name" label="缺陷名称" min-width="200">
<template slot-scope="scope">
<div>
<span>
@ -173,7 +170,7 @@
</el-drawer>
<!--新增 XmQuestion xm_question界面-->
<el-drawer title="新增缺陷" :visible.sync="addFormVisible" width="100%" append-to-body :close-on-click-modal="false">
<el-drawer title="新增缺陷" :visible.sync="addFormVisible" :with-header="false" :size="750" append-to-body :close-on-click-modal="false">
<xm-question-add :xm-test-case-exec="xmTestCaseExec" :xm-test-case="xmTestCase" :qtype="qtype" :sel-project=" filters.selProject " :xm-question="addForm" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-question-add>
</el-drawer>
<el-drawer title="选中用户" v-if=" filters.selProject " :visible.sync="selectUserVisible" size="80%" append-to-body :close-on-click-modal="false">
@ -905,6 +902,7 @@
var subHeight=70/1000 * window.innerHeight;
this.tableHeight = window.innerHeight -clientRect.y - this.$refs.table.$el.offsetTop-subHeight;
this.getXmQuestions();
});
listOption([{categoryId:'all',itemCode:'bugSeverity'},{categoryId:'all',itemCode:'bugSolution'},{categoryId:'all',itemCode:'bugStatus'},{categoryId:'all',itemCode:'bugType'},{categoryId:'all',itemCode:'urgencyLevel'}] ).then(res=>{
if(res.data.tips.isOk){
this.options['bugSeverity']=res.data.data.bugSeverity
@ -914,8 +912,6 @@
this.options['urgencyLevel']=res.data.data.urgencyLevel
}
});
});
}
}

30
src/views/xm/core/xmTask/XmTaskAdd.vue

@ -1,6 +1,6 @@
<template>
<section class="page-container padding">
<el-row class="page-header padding">
<el-row>
<el-button type="text" @click="goAnchor('baseInfoAdd')">基础信息</el-button>
<el-button type="text" @click="goAnchor('planInfoAdd')">进度计划</el-button>
<el-button type="text" @click="goAnchor('costInfoAdd')">工作量与成本</el-button>
@ -8,6 +8,17 @@
<el-button type="text" @click="goAnchor('menuInfoAdd')">故事明细</el-button>
<el-button type="text" @click="goAnchor('taskOutAdd')">众包</el-button>
</el-row>
<el-row>
<el-steps :active="calcTaskStep" finish-status="success" simple>
<el-step title="发布" description="任务创建成功后即发布"></el-step>
<el-step title="竞标" description="候选人参与竞标,或者由责任人主动设置候选人"></el-step>
<el-step title="执行" description="候选人中标后,成为执行人,执行任务"></el-step>
<el-step title="验收" description="任务完成后提交验收,验收通过,即可进行结算"></el-step>
<el-step title="结算" description="提交结算申请审批流程,审批过程自动根据审批结果进行结算"></el-step>
<el-step title="企业付款" description="结算流程审批通过,自动付款到个人钱包"></el-step>
<el-step title="提现" description="企业付款完成后,个人对钱包中余额进行提现"></el-step>
</el-steps>
</el-row>
<el-row class="page-main page-height-80">
<!--新增界面 XmTask xm_task-->
<el-form :model="addForm" label-width="100px" :rules="addFormRules" ref="addForm">
@ -521,12 +532,19 @@
this.addForm.taskType=this.parentTask.taskType
this.addForm.planType=this.parentTask.planType
}else{
this.addForm.taskType=this.projectPhase.taskType
if(this.projectPhase){
this.addForm.taskType=this.projectPhase.taskType
}
}
this.addForm.projectId=this.xmProject.id
this.addForm.projectName=this.xmProject.name
this.addForm.projectPhaseId=this.projectPhase.id
this.addForm.projectPhaseName=this.projectPhase.phaseName
if(this.xmProject){
this.addForm.projectId=this.xmProject.id
this.addForm.projectName=this.xmProject.name
}
if(this.projectPhase){
this.addForm.projectPhaseId=this.projectPhase.id
this.addForm.projectPhaseName=this.projectPhase.phaseName
}
if(this.parentTask ){
if(this.parentTask.children){
this.addForm.sortLevel=this.parentTask.sortLevel+"."+(this.parentTask.children.length+1)

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

@ -1,6 +1,6 @@
<template>
<section class="page-container padding">
<el-row class="page-header padding">
<el-row>
<el-button type="text" @click="goAnchor('baseInfo')">基础信息</el-button>
<el-button type="text" @click="goAnchor('planInfo')">进度计划</el-button>
<el-button type="text" @click="goAnchor('costInfo')">工作量与成本</el-button>
@ -8,16 +8,22 @@
<el-button type="text" @click="goAnchor('menuInfo')">故事明细</el-button>
<el-button type="text" @click="goAnchor('taskOut')">众包</el-button>
</el-row>
<el-row>
<el-steps :active="calcTaskStep" finish-status="success" simple>
<el-step title="发布" description="任务创建成功后即发布"></el-step>
<el-step title="竞标" description="候选人参与竞标,或者由责任人主动设置候选人"></el-step>
<el-step title="执行" description="候选人中标后,成为执行人,执行任务"></el-step>
<el-step title="验收" description="任务完成后提交验收,验收通过,即可进行结算"></el-step>
<el-step title="结算" description="提交结算申请审批流程,审批过程自动根据审批结果进行结算"></el-step>
<el-step title="企业付款" description="结算流程审批通过,自动付款到个人钱包"></el-step>
<el-step title="提现" description="企业付款完成后,个人对钱包中余额进行提现"></el-step>
</el-steps>
</el-row>
<el-row class="page-main page-height-80">
<!--新增界面 XmTask xm_task-->
<el-form :model="editForm" label-width="100px" :rules="editFormRules" ref="editForm">
<el-card class="box-card" header="基础信息" id="baseInfo" shadow="hover">
<el-steps :active="calcTaskStep" align-center finish-status="success">
<el-step title="待领取"></el-step>
<el-step title="执行中"></el-step>
<el-step title="已完工待结算"></el-step>
<el-step title="已结算"></el-step>
</el-steps>
<el-form-item label="任务名称" prop="name">
<el-row>
<el-col :span="24" style="padding-left:10px;">
@ -145,7 +151,7 @@
</el-form-item>
<el-form-item label="众包流程" prop="taskOut">
<el-steps :active="calcTaskStep" align-center>
<el-steps :active="calcTaskStep" align-center finish-status="success" simple>
<el-step title="发布" description="任务创建成功后即发布"></el-step>
<el-step title="竞标" description="候选人参与竞标,或者由责任人主动设置候选人"></el-step>
<el-step title="执行" description="候选人中标后,成为执行人,执行任务"></el-step>

10
src/views/xm/core/xmTask/XmTaskMng.vue

@ -1,10 +1,10 @@
<template>
<section class="page-container padding">
<section class="padding">
<el-row v-show="batchEditVisible==false">
<el-col v-if="isTaskCenter!='1' && currentProject " :span="4" >
<xm-project-phase-mng :sel-project="currentProject" :simple="true" @row-click="projectPhaseRowClick" @clear-select="clearSelectPhase"></xm-project-phase-mng>
</el-col>
<el-col :span="isTaskCenter!='1' && currentProject?20:24">
<el-col :span="isTaskCenter!='1' && currentProject?20:24" class="padding-left">
<el-row>
<el-select v-model="selkey" placeholder="请选择任务状态" clearable @change="changeSelKey">
<el-option class="showall" value="" label="全部状态">全部状态</el-option>
@ -136,7 +136,7 @@
<el-button slot="reference" icon="el-icon-more" circle></el-button>
</el-popover>
</el-row>
<el-row style="padding-top:10px;">
<el-row class="padding-top">
<el-table v-if="!gstcVisible"
show-summary
:data="tasksTreeData"
@ -297,12 +297,12 @@
</div>
</el-drawer>
<!--编辑 XmTask xm_task界面-->
<el-drawer title="编辑任务" :visible.sync="editFormVisible" :with-header="false" :size="650" append-to-body :close-on-click-modal="false">
<el-drawer title="编辑任务" :visible.sync="editFormVisible" :with-header="false" :size="750" append-to-body :close-on-click-modal="false">
<xm-task-edit :xm-project="currentProject" :xm-task="editForm" :project-phase="currentProjectPhase" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit"></xm-task-edit>
</el-drawer>
<!-- 新增 XmTask xm_task界面-->
<el-drawer class="xm-task-add" title="新增任务" :visible.sync="addFormVisible" :with-header="false" size="80%" append-to-body :close-on-click-modal="false">
<el-drawer class="xm-task-add" title="新增任务" :visible.sync="addFormVisible" :with-header="false" :size="750" append-to-body :close-on-click-modal="false">
<xm-task-add :xm-project="currentProject" :project-phase="currentProjectPhase" :xm-task="addForm" :parent-task="parentTask" :visible="addFormVisible" @cancel="addFormVisible=false" @submit="afterAddSubmit"></xm-task-add>
</el-drawer>

2
src/views/xm/core/xmTask/XmTaskMngBatch.vue

@ -1,5 +1,5 @@
<template>
<section class="page-container page-full-height padding border">
<section class="page-container padding border">
<el-row>
<el-row v-if="projectPhase">
<el-button type="warning" @click="saveBatchEdit" v-loading="load.edit" icon="el-icon-finished">保存</el-button>

Loading…
Cancel
Save