Browse Source

界面优化

master
陈裕财 5 years ago
parent
commit
4078734ca3
  1. 21
      src/views/xm/core/xmIteration/XmIterationMng.vue
  2. 53
      src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue
  3. 7
      src/views/xm/core/xmMenu/XmMenuRichDetail.vue
  4. 1249
      src/views/xm/core/xmProjectPhase/XmProjectPhaseBatch.vue
  5. 312
      src/views/xm/core/xmProjectPhase/XmProjectPhaseMng.vue
  6. 6
      src/views/xm/core/xmTask/XmTaskMngBatch.vue

21
src/views/xm/core/xmIteration/XmIterationMng.vue

@ -2,17 +2,20 @@
<section> <section>
<el-row v-if="!simple" class="app-container"> <el-row v-if="!simple" class="app-container">
<el-checkbox v-model="gstcVisible" >甘特图</el-checkbox> <el-checkbox v-model="gstcVisible" >甘特图</el-checkbox>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmIterations">查询</el-button>
<el-button type="primary" @click="showAdd">+迭代</el-button>
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询">
<template slot="append">
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmIterations" icon="el-icon-search"></el-button>
</template>
</el-input>
<el-button type="primary" @click="showAdd" icon="el-icon-plus">新增一个迭代计划</el-button>
</el-row> </el-row>
<el-row v-if="!simple" class="app-container"> <el-row v-if="!simple" class="app-container">
<!--列表 XmIteration 迭代定义--> <!--列表 XmIteration 迭代定义-->
<el-table v-if="!gstcVisible" :data="xmIterationTreeData" row-key="id" default-expand-all :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 max-height="650" v-if="!gstcVisible" :data="xmIterationTreeData" row-key="id" default-expand-all :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" aria-disabled width="55"></el-table-column> <el-table-column type="selection" aria-disabled width="55"></el-table-column>
<el-table-column prop="iterationName" label="迭代名称" min-width="160" > <el-table-column prop="iterationName" label="迭代名称" min-width="160" >
<template slot-scope="scope"> <template slot-scope="scope">
<el-link type="primary" @click="showEdit( scope.row,scope.$index)"> {{scope.row.seqNo}} &nbsp;&nbsp;{{scope.row.iterationName}} </el-link>
{{scope.row.seqNo}} &nbsp;&nbsp;<el-link type="primary" @click="showEdit( scope.row,scope.$index)"> {{scope.row.iterationName}} </el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="finishRate" label="总进度" min-width="80" > <el-table-column prop="finishRate" label="总进度" min-width="80" >
@ -28,10 +31,10 @@
<el-table-column prop="actWorkload" label="实际工作量" min-width="80" ></el-table-column> <el-table-column prop="actWorkload" label="实际工作量" min-width="80" ></el-table-column>
<el-table-column label="操作" width="400" fixed="right"> <el-table-column label="操作" width="400" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" @click="showSubAdd( scope.row,scope.$index)">+子迭代</el-button>
<el-button type="warning" @click="loadTasksToXmIterationState( scope.row)">刷新</el-button>
<el-button type="success" @click="showIterationState( scope.row)">报告</el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)"></el-button>
<el-button type="primary" @click="showSubAdd( scope.row,scope.$index)" icon="el-icon-plus"></el-button>
<el-button type="warning" @click="loadTasksToXmIterationState( scope.row)" icon="el-icon-s-data">刷新</el-button>
<el-button type="success" @click="showIterationState( scope.row)" icon="el-icon-s-data">报告</el-button>
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete"></el-button>

53
src/views/xm/core/xmIterationMenu/XmIterationMenuMng.vue

@ -1,32 +1,39 @@
<template> <template>
<section> <section>
<el-row class="app-container">
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询"></el-input>
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmIterationMenus">查询</el-button>
<el-button type="primary" @click="showAdd">加入更多故事</el-button>
<el-button type="danger" v-loading="load.del" @click="batchDel" :disabled="this.sels.length===0 || load.del==true">批量删除</el-button>
</el-row>
<el-row class="app-container">
<el-col :span="8">
<el-row >
<el-col :span="8" class="app-container">
<xm-iteration-mng :simple="true" @row-click="onIterationRowClick" @clear-select="onIterationClearSelect"></xm-iteration-mng> <xm-iteration-mng :simple="true" @row-click="onIterationRowClick" @clear-select="onIterationClearSelect"></xm-iteration-mng>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<!--列表 XmIterationMenu 迭代定义-->
<el-table :data="xmIterationMenusTreeData" 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" style="width: 100%;">
<el-table-column type="selection" width="45"></el-table-column>
<el-table-column prop="menuName" label="故事名称" min-width="140" >
<template slot-scope="scope">
<el-link>{{scope.row.seqNo}}&nbsp;&nbsp;{{scope.row.menuName}}</el-link>
</template>
</el-table-column>
<el-table-column label="操作" width="160" fixed="right">
<template slot-scope="scope">
<el-button type="danger" @click="handleDel(scope.row,scope.$index)">移出迭代</el-button>
<el-row class="app-container">
<el-input v-model="filters.key" style="width: 20%;" placeholder="模糊查询">
<template slot="append">
<el-button type="primary" v-loading="load.list" :disabled="load.list==true" v-on:click="searchXmIterationMenus" icon="el-icon-search"></el-button>
</template> </template>
</el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-input>
<el-button type="primary" @click="showAdd" icon="el-icon-plus">加入更多故事到迭代计划</el-button>
<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-row>
<el-row class="app-container">
<!--列表 XmIterationMenu 迭代定义-->
<el-table :data="xmIterationMenusTreeData" 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" style="width: 100%;">
<el-table-column type="selection" width="45"></el-table-column>
<el-table-column prop="menuName" label="故事名称" min-width="140" >
<template slot-scope="scope">
{{scope.row.seqNo}}&nbsp;&nbsp;{{scope.row.menuName}}
</template>
</el-table-column>
<el-table-column label="操作" width="160" fixed="right">
<template slot-scope="scope">
<el-button type="danger" @click="handleDel(scope.row,scope.$index)" icon="el-icon-delete">移出迭代计划</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
</el-col> </el-col>
<el-dialog append-to-body title="故事选择" :visible.sync="menuVisible" width="80%" :close-on-click-modal="false"> <el-dialog append-to-body title="故事选择" :visible.sync="menuVisible" width="80%" :close-on-click-modal="false">
<xm-menu-select :visible="menuVisible" :is-select-menu="true" :multi="true" :exclude-iteration-id="iteration?iteration.id:''" @menus-selected="onSelectedMenus" ></xm-menu-select> <xm-menu-select :visible="menuVisible" :is-select-menu="true" :multi="true" :exclude-iteration-id="iteration?iteration.id:''" @menus-selected="onSelectedMenus" ></xm-menu-select>
@ -62,7 +69,7 @@
xmIterationMenus: [],// xmIterationMenus: [],//
pageInfo:{// pageInfo:{//
total:0,//0>0 total:0,//0>0
pageSize:10,//
pageSize:20,//
count:false,// count:false,//
pageNum:1,//1 pageNum:1,//1
orderFields:[],// ['sex','student_id'] orderFields:[],// ['sex','student_id']

7
src/views/xm/core/xmMenu/XmMenuRichDetail.vue

@ -18,7 +18,8 @@
</el-form> </el-form>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<xm-iteration-mng v-if="visible" :simple="true" :product-id="editForm.productId" :menu-id="editForm.menuId" ></xm-iteration-mng>
<el-button v-if="iterationVisible==false" @click="iterationVisible=true" icon="el-icon-search">查看迭代计划</el-button>
<xm-iteration-mng v-if="iterationVisible" :simple="true" :product-id="editForm.productId" :menu-id="editForm.menuId" ></xm-iteration-mng>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -48,6 +49,7 @@
'xmMenu':function( xmMenu ) { 'xmMenu':function( xmMenu ) {
}, },
'visible':function(visible) { 'visible':function(visible) {
this.iterationVisible=false;
if(this.visible==true){ if(this.visible==true){
this.editForm = Object.assign(this.editForm,this.xmMenu); this.editForm = Object.assign(this.editForm,this.xmMenu);
@ -79,7 +81,8 @@
// XmMenu // XmMenu
editForm: { editForm: {
menuId:'',menuName:'',pmenuId:'',productId:'',remark:'',status:'',online:'',demandUrl:'',codeUrl:'',designUrl:'',docUrl:'',helpUrl:'',operDocUrl:'',seqNo:'',mmUserid:'',mmUsername:'' menuId:'',menuName:'',pmenuId:'',productId:'',remark:'',status:'',online:'',demandUrl:'',codeUrl:'',designUrl:'',docUrl:'',helpUrl:'',operDocUrl:'',seqNo:'',mmUserid:'',mmUsername:''
}
},
iterationVisible:false,
/**begin 在下面加自定义属性,记得补上面的一个逗号**/ /**begin 在下面加自定义属性,记得补上面的一个逗号**/
/**end 在上面加自定义属性**/ /**end 在上面加自定义属性**/

1249
src/views/xm/core/xmProjectPhase/XmProjectPhaseBatch.vue
File diff suppressed because it is too large
View File

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

@ -1,21 +1,16 @@
<template> <template>
<section> <section>
<el-row class="app-container" v-if="simple!==true">
<el-row class="app-container" v-show="batchEditVisible==false">
<el-button v-if="batchEditVisible==false" type="primary" @click="showAdd" v-loading="load.add" icon="el-icon-plus">添加计划</el-button>
<el-button v-if="batchEditVisible==false" type="primary" @click="showPhaseTemplate" v-loading="load.add" icon="el-icon-plus">由模板导入计划</el-button>
<el-button v-if="batchEditVisible==false" type="primary" @click="showMenu" v-loading="load.add" icon="el-icon-plus">由故事批量创建</el-button>
<el-button type="primary" @click="showAdd" v-loading="load.add" icon="el-icon-plus">添加计划</el-button>
<el-button type="primary" @click="showPhaseTemplate" v-loading="load.add" icon="el-icon-plus">由模板导入计划</el-button>
<el-button type="primary" @click="showMenu" v-loading="load.add" icon="el-icon-plus">由故事批量创建</el-button>
<el-button v-if="batchEditVisible==false" type="warning" @click="loadTasksToXmProjectPhase(sels)" v-loading="load.edit" icon="el-icon-s-data">由任务汇总实际数据</el-button>
<el-button type="success" v-if="batchEditVisible==false" @click="batchEditVisible=true" v-loading="load.edit" icon="el-icon-edit">批量修改</el-button>
<el-button v-if="batchEditVisible==true" 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" v-if="batchEditVisible==true" @click="saveBatchEdit" v-loading="load.edit" icon="el-icon-finished">批量保存</el-button>
<el-button v-if=" batchEditVisible==true" type="success" @click="handlePopover(null,'add')" icon="el-icon-plus"></el-button>
<el-button v-if="batchEditVisible==true" @click="noBatchEdit" v-loading="load.edit" icon="el-icon-back">返回</el-button>
<el-button type="warning" @click="loadTasksToXmProjectPhase(sels)" v-loading="load.edit" icon="el-icon-s-data">由任务汇总实际数据</el-button>
<el-button type="success" @click="batchEditVisible=true" v-loading="load.edit" icon="el-icon-edit">批量修改</el-button>
</el-row> </el-row>
<el-row class="app-container" v-if="simple!==true">
<el-row class="app-container" 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='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.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.surplusPlanInnerUserAt>0?'warning':'danger'">{{toFixed(selProject.planInnerUserAt/10000,2)}}{{toFixed(phaseBudgetData.surplusPlanInnerUserAt/10000,2)}}</el-tag>
@ -30,20 +25,9 @@
</div> </div>
</el-row> </el-row>
<el-table max-height="650" ref="selectPhaseTable" v-show="simple==true" :data="projectPhaseTreeData" :show-summary="false" 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="160" >
<template slot="header" slot-scope="scope">
<div>阶段名称 <el-tag size="mini" v-if="editForm.id" closable @close="clearSelectPhase()">{{editForm.seqNo}}&nbsp;{{editForm.phaseName}}</el-tag></div>
</template>
<template slot-scope="scope">
{{scope.row.seqNo}} &nbsp;&nbsp;{{scope.row.phaseName}}
</template>
</el-table-column>
</el-table>
<el-pagination v-show="simple==true" layout="total, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
<el-row class="app-container" v-show="simple!=true">
<el-row class="app-container" v-show="batchEditVisible==false">
<!--列表 XmProjectPhase xm_project_phase--> <!--列表 XmProjectPhase xm_project_phase-->
<el-table max-height="650" v-show="!gstcVisible && batchEditVisible==false && simple!==true" 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 max-height="650" 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 sortable type="selection" width="40"></el-table-column> <el-table-column sortable type="selection" width="40"></el-table-column>
<el-table-column prop="phaseName" label="阶段名称" min-width="160" > <el-table-column prop="phaseName" label="阶段名称" min-width="160" >
<template slot-scope="scope"> <template slot-scope="scope">
@ -116,113 +100,11 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<xm-gantt v-if="gstcVisible && batchEditVisible==false" :tree-data="projectPhaseTreeData" :project-phase="selProject" :columns="ganrrColumns" :useRealTime="false"></xm-gantt>
<xm-gantt v-if="gstcVisible && batchEditVisible==false" :tree-data="projectPhaseTreeData" :project-phase="selProject" :columns="ganrrColumns" :useRealTime="false"></xm-gantt>
<!--列表 XmProjectPhase xm_project_phase-->
<el-table v-show="batchEditVisible==true" 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>
<el-table-column prop="seqNo" label="序号" width="150">
<template slot-scope="scope">
<div style="display:flex;width:100%;">
<el-popover
placement="top"
width="400"
trigger="click">
<div style="text-align: center; margin: 0">
<div :ref="'phase_'+scope.$index" :data-phase-id="scope.row.id"></div>
<el-button type="primary" size="mini" @click="handlePopover(scope.row,'highestPmenuId')">成为顶级节点</el-button>
<el-button type="danger" size="mini" @click="handlePopover(scope.row,'delete')">删除当前行</el-button>
<el-button type="success" size="mini" @click="handlePopover(scope.row,'addSub')">增加子行</el-button>
</div>
<el-button slot="reference" :type="scope.row.opType?'success':'plain'" size="mini" icon="el-icon-edit" circle></el-button>
</el-popover>
<el-input style="width:100%;" v-model="scope.row.seqNo" @change="fieldChange(scope.row,'seqNo')"></el-input>
</div>
</template>
</el-table-column>
<el-table-column prop="phaseName" label="阶段名称" width="200" >
<template slot-scope="scope">
<el-input v-model="scope.row.phaseName" @change="fieldChange(scope.row,'phaseName')"></el-input>
</template>
</el-table-column>
<el-table-column prop="beginDate" label="起始时间" width="200" >
<template slot-scope="scope">
<div>
<el-date-picker style="width:100%;"
v-model="scope.row.beginDate"
align="right"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd"
placeholder="选择日期"
:picker-options="pickerOptions" @change="fieldChange(scope.row,'beginDate')">
</el-date-picker>
<br/>
<el-date-picker style="width:100%;"
v-model="scope.row.endDate"
align="right"
type="date"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd"
placeholder="选择日期"
:picker-options="pickerOptions" @change="fieldChange(scope.row,'endDate')">
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column prop="phaseBudgetHours" label="预计工作量及成本" min-width="300" >
<template slot-scope="scope">
<el-row>
<el-col :span="4">
工期.小时<br/>
<el-input style="width:90%;" v-model="scope.row.phaseBudgetHours" :precision="2" step="8" type="number" @change="fieldChange(scope.row,'phaseBudgetHours')"></el-input>
</el-col>
<el-col :span="20">
<el-row>
<el-col :span="12">
内购
<el-input style="width:80px;" v-model="scope.row.phaseBudgetInnerUserCnt" :precision="2" step="1" type="number" @change="fieldChange(scope.row,'phaseBudgetInnerUserCnt')"></el-input>
{{(scope.row.phaseBudgetInnerUserCnt*scope.row.phaseBudgetHours).toFixed(0)}}人时
</el-col>
<el-col :span="12">
<el-input style="width:80px;" v-model="scope.row.phaseBudgetInnerUserPrice" :precision="2" step="10" type="number" @change="fieldChange(scope.row,'phaseBudgetInnerUserPrice')"></el-input>/人时
{{(scope.row.phaseBudgetInnerUserCnt*scope.row.phaseBudgetHours*scope.row.phaseBudgetInnerUserPrice).toFixed(0)}}
</el-col>
</el-row>
<el-row>
<el-col :span="12">
外购
<el-input style="width:80px;" v-model="scope.row.phaseBudgetOutUserCnt" :precision="2" step="1" type="number" @change="fieldChange(scope.row,'phaseBudgetOutUserCnt')"></el-input>
{{(scope.row.phaseBudgetOutUserCnt*scope.row.phaseBudgetHours).toFixed(0)}}人时
</el-col>
<el-col :span="12">
<el-input style="width:80px" v-model="scope.row.phaseBudgetOutUserPrice" :precision="2" step="10" type="number" @change="fieldChange(scope.row,'phaseBudgetOutUserPrice')"></el-input>/人时
{{(scope.row.phaseBudgetOutUserCnt*scope.row.phaseBudgetHours*scope.row.phaseBudgetOutUserPrice).toFixed(0)}}
</el-col>
</el-row>
</el-col>
</el-row>
</template>
</el-table-column>
<el-table-column label="预算合计" width="120" >
<template slot-scope="scope">
{{(scope.row.phaseBudgetInnerUserAt+scope.row.phaseBudgetOutUserAt+scope.row.phaseBudgetNouserAt).toFixed(0)}}
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" min-width="100" >
<template slot-scope="scope">
<el-input v-model="scope.row.remark" type="textarea" @change="fieldChange(scope.row,'remark')"></el-input>
</template>
</el-table-column>
</el-table>
<el-row v-if="gstcVisible">
<el-pagination v-if="simple!=true" layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[1,2,10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
<el-pagination v-else layout="total, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<el-row v-if="gstcVisible">
<el-pagination layout="total, sizes, prev, pager, next" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[1,2,10,20, 50, 100, 500]" :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :total="pageInfo.total" style="float:right;"></el-pagination>
</el-row>
<!--编辑 XmProjectPhase xm_project_phase界面--> <!--编辑 XmProjectPhase xm_project_phase界面-->
<el-dialog title="编辑计划" :visible.sync="editFormVisible" width="60%" :close-on-click-modal="false" append-to-body> <el-dialog title="编辑计划" :visible.sync="editFormVisible" width="60%" :close-on-click-modal="false" append-to-body>
@ -245,6 +127,9 @@
<xm-menu-select :visible="menuVisible" :is-select-menu="true" :multi="true" @menus-selected="onSelectedMenus" ></xm-menu-select> <xm-menu-select :visible="menuVisible" :is-select-menu="true" :multi="true" @menus-selected="onSelectedMenus" ></xm-menu-select>
</el-dialog> </el-dialog>
</el-row> </el-row>
<el-row v-if="batchEditVisible==true">
<xm-project-phase-batch :sel-project="selProject" @back="batchEditBack"></xm-project-phase-batch>
</el-row>
</section> </section>
</template> </template>
@ -261,6 +146,7 @@
import {sn} from '@/common/js/sequence' import {sn} from '@/common/js/sequence'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import XmProjectPhaseBatch from './XmProjectPhaseBatch.vue';
export default { export default {
computed: { computed: {
@ -280,9 +166,6 @@
} }
const projectPhaseTreeData = this.translateDataToTree(xmProjectPhases); const projectPhaseTreeData = this.translateDataToTree(xmProjectPhases);
if (this.batchEditVisible) {
this.rowDrop();
}
return projectPhaseTreeData; return projectPhaseTreeData;
}, },
@ -350,7 +233,7 @@
} }
}, },
props:['selProject','simple'],
props:['selProject'],
watch:{ watch:{
selProject:function(selProject,old){ selProject:function(selProject,old){
console.log('this.selProject==', selProject); console.log('this.selProject==', selProject);
@ -1180,148 +1063,7 @@
showLog(row){ showLog(row){
this.editForm=row this.editForm=row
this.xmRecordVisible=true this.xmRecordVisible=true
},
//
rowDrop() {
const _this = this
//
let dragged = null;
//
let draggedIndex = -1;
//
let target = document.querySelector('.drag-table .el-table__body-wrapper .el-table__body tbody');
let rows = 0;//
setTimeout(function () {
rows = target.childElementCount
for (let i = 0; i < target.childElementCount; i++) {
const child = target.children[i]
child.draggable = true
// child.style.cursor = 'copy'
child.ondragstart = function(e){
console.log('开始--ondragstart--e==', e);
dragged = e.path[0]
draggedIndex = e.path[0].rowIndex
console.log('child'+i+'开始拖拽'+draggedIndex);
_this.cellMouseIndex = -1
dragged.style.cursor = 'grabbing'
}
child.ondragend = function(){
console.log('child'+i+'拖拽结束');
}
}
},0)
//
let dragIndex = -1
target.ondragenter = function(e){
clearTimeout(loop)
// tbody,
if(e.path[0].nodeName === 'TD'){
// throughRow
const throughRow = e.path.find(path => {
if(path.className.split(' ').includes('el-table__row')){
return path
}
})
if(dragIndex !== throughRow.rowIndex){
if(dragIndex > -1){
//
const last = target.children[dragIndex];
clearClass(last)
}
// console.log(''+selectRow.rowIndex);
//
if(draggedIndex !== throughRow.rowIndex ){
//
dragged.style.cursor = 'copy'
throughRow.style.height = 60+'px'
throughRow.style.backgroundColor = '#e9fdcf'
}
dragIndex = throughRow.rowIndex
}
}
leaveIndex = -1
}
target.ondragover = function(e){
// console.log('...');
e.preventDefault();
leaveIndex = -1
}
let loop = null
let leaveIndex = -1 // table, -1table
target.ondragleave = function(e){
console.log('ondragleave--e==', e);
clearTimeout(loop)
if(e.path[0].nodeName){
const throughRow = e.path.find(path => {
if(path.className.split(' ').includes('el-table__row')){
return path;
}
})
if(throughRow && dragIndex !== throughRow.rowIndex){
// console.log(''+selectRow.rowIndex);
// selectRow.style.height = 'unset'
// selectRow.style.backgroundColor = '#fff'
// dragIndex = selectRow.rowIndex
}
if(throughRow.rowIndex === 0 || throughRow.rowIndex === rows-1){
//
leaveIndex = throughRow.rowIndex
loop = setTimeout(function () {
if(leaveIndex > -1){
console.log("离开了",leaveIndex)
const leave = target.children[leaveIndex];
clearClass(leave)
dragIndex = -1
}
},100)
}``
}
}
target.ondrop = function(){
console.log('ondrop--放下了'+draggedIndex);
//
const last = target.children[dragIndex];
clearClass(last)
dragged.style.cursor = 'default'
console.log('ondrop--draggedIndex==', draggedIndex);
console.log('ondrop--dragIndex==', dragIndex);
const form = _this.projectPhaseTreeData[draggedIndex];
const to = _this.projectPhaseTreeData[dragIndex];
const startId = _this.$refs['phase_'+draggedIndex].dataset.phaseId;
const endId = _this.$refs['phase_'+dragIndex].dataset.phaseId;
console.log(`startId:${startId}--endId:${endId}`);
if (startId !== endId) {
_this.changePmenuId(startId, endId)
}
}
let clearClass = function (node) {
if(node){
node.style.height = 'unset'
node.style.backgroundColor = '#fff'
}
dragged.style.cursor = 'grabbing'
}
// if(last && form.menuId !== to.menuId && to.isFolder){
// // /
// _this.copyOrMoveApi('move', form.menuId, to.menuId)
// }
},
},
// //
// dict sIdmenuId; ePmeuId menuId; // dict sIdmenuId; ePmeuId menuId;
judgePmenuId(dict, sId, ePmeuId) { judgePmenuId(dict, sId, ePmeuId) {
@ -1476,13 +1218,21 @@
return; return;
} }
},
batchEditBack:function(reload){
if(reload){
this.batchEditVisible=false;
this.searchXmProjectPhases();
}else{
this.batchEditVisible=false;
} }
}
},//end methods },//end methods
components: { components: {
'xm-project-phase-add':XmProjectPhaseAdd, 'xm-project-phase-add':XmProjectPhaseAdd,
'xm-project-phase-edit':XmProjectPhaseEdit, 'xm-project-phase-edit':XmProjectPhaseEdit,
XmProjectPhaseTemplateMng,xmMenuSelect,XmGantt
XmProjectPhaseTemplateMng,xmMenuSelect,XmGantt,XmProjectPhaseBatch
// //
}, },
mounted() { mounted() {
@ -1499,12 +1249,6 @@
this.options=res.data.data; this.options=res.data.data;
}) })
}); });
//
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
this.rowDrop();
} }
} }

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

@ -169,9 +169,7 @@
} }
const tasksTreeData = this.translateDataToTree(xmTasks); const tasksTreeData = this.translateDataToTree(xmTasks);
if (this.batchEditVisible) {
this.rowDrop(); this.rowDrop();
}
return tasksTreeData; return tasksTreeData;
}, },
@ -1084,7 +1082,9 @@
// //
let target = document.querySelector('.drag-table2 .el-table__body-wrapper .el-table__body tbody'); let target = document.querySelector('.drag-table2 .el-table__body-wrapper .el-table__body tbody');
console.log('rowDrop--target==', target); console.log('rowDrop--target==', target);
if(target==null){
return;
}
let rows = 0;// let rows = 0;//
setTimeout(function () { setTimeout(function () {
rows = target.childElementCount rows = target.childElementCount

Loading…
Cancel
Save