Commit b3757ded by chehuidong

Merge branch 'taskManage' into 'dev'

Task manage

See merge request !4
parents 7cab68d9 3e16bd15
...@@ -24,6 +24,7 @@ import { ...@@ -24,6 +24,7 @@ import {
MenuItemGroup, MenuItemGroup,
Tag, Tag,
Checkbox, Checkbox,
Tree,
} from 'element-ui' } from 'element-ui'
const components = [ const components = [
...@@ -47,6 +48,7 @@ const components = [ ...@@ -47,6 +48,7 @@ const components = [
MenuItemGroup, MenuItemGroup,
Tag, Tag,
Checkbox, Checkbox,
Tree,
] ]
export default { export default {
...@@ -58,13 +60,13 @@ export default { ...@@ -58,13 +60,13 @@ export default {
Vue.prototype.$message = (message) => Vue.prototype.$message = (message) =>
typeof message === 'string' typeof message === 'string'
? Message({ ? Message({
duration: 2500, duration: 2500,
message, message,
}) })
: Message({ : Message({
duration: 2500, duration: 2500,
...message, ...message,
}) })
Vue.prototype.$message.success = (message) => Vue.prototype.$message.success = (message) =>
typeof message === 'string' typeof message === 'string'
? Message.success({ duration: 2500, message }) ? Message.success({ duration: 2500, message })
......
...@@ -63,7 +63,8 @@ ...@@ -63,7 +63,8 @@
} }
.pagination { .pagination {
text-align: center; text-align: center;
padding-top: 10px; padding-top: 5px;
padding-bottom: 5px;
} }
.icon-view{ .icon-view{
font-size: 18px; font-size: 18px;
......
...@@ -275,7 +275,9 @@ ...@@ -275,7 +275,9 @@
@change="onChange" @change="onChange"
placeholder="请输入域名" placeholder="请输入域名"
> >
<template slot="append">.jomalls.com</template> <template slot="append">{{
baseDomain
}}</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
...@@ -549,6 +551,7 @@ export default { ...@@ -549,6 +551,7 @@ export default {
selection: [], selection: [],
cloneEditForm: {}, cloneEditForm: {},
loading: false, loading: false,
baseDomain: '.jomalls.com',
} }
}, },
async created() { async created() {
...@@ -627,7 +630,7 @@ export default { ...@@ -627,7 +630,7 @@ export default {
this.editForm.databaseName = this.editForm.databaseName =
'saas_' + this.editForm.databaseName 'saas_' + this.editForm.databaseName
this.editForm.domain = this.editForm.domain =
this.editForm.domain + '.joshine.cn' this.editForm.domain + this.baseDomain
try { try {
if (this.editId) { if (this.editId) {
const res = await updateManageData(this.editForm) const res = await updateManageData(this.editForm)
......
...@@ -6,8 +6,26 @@ ...@@ -6,8 +6,26 @@
* @LastEditTime: 2020-11-18 09:25:23 * @LastEditTime: 2020-11-18 09:25:23
--> -->
<template> <template>
<div class="wrap" style="padding-top: 0"> <div class="wraper">
<div class="top_wrap"> <div class="page_left">
<el-tree
:data="treeData"
:props="defaultProps"
highlight-current
:node-key="'continentCode'"
current-node-key=""
@node-click="handleNodeClick"
>
<span
class="custom-tree-node"
slot-scope="{ node, data }"
>
<span v-html="node.label"></span>
<span>({{ data.quantity }})</span>
</span>
</el-tree>
</div>
<div class="page_right">
<el-form <el-form
v-show="is_tab == 1" v-show="is_tab == 1"
:model="searchForm" :model="searchForm"
...@@ -17,41 +35,13 @@ ...@@ -17,41 +35,13 @@
ref="form" ref="form"
class="search_form" class="search_form"
> >
<el-form-item label=""> <el-form-item label="创建时间">
<el-select
style="width: 80px"
v-model="searchForm.timeProp"
value-key=""
placeholder="时间类型"
clearable
filterable
>
<el-option
label="创建时间"
value="create_time"
></el-option>
<el-option
label="开始时间"
value="start_time"
></el-option>
<el-option
label="预计完成"
value="planned_completion_time"
></el-option>
<el-option
label="实际完成"
value="actual_completion_time"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<choose-time-period <choose-time-period
@change="getStatusTree" @change="getStatusTree"
v-model="periodTime" v-model="periodTime"
></choose-time-period> ></choose-time-period>
</el-form-item> </el-form-item>
<el-form-item label="任务编号"> <el-form-item label="工单编号">
<el-input <el-input
style="width: 120px" style="width: 120px"
v-model="searchForm.taskNumber" v-model="searchForm.taskNumber"
...@@ -59,7 +49,7 @@ ...@@ -59,7 +49,7 @@
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="任务类型"> <el-form-item label="工单类型">
<el-select <el-select
v-model="searchForm.taskType" v-model="searchForm.taskType"
style="width: 120px" style="width: 120px"
...@@ -76,7 +66,7 @@ ...@@ -76,7 +66,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务标题"> <el-form-item label="工单标题">
<el-input <el-input
style="width: 120px" style="width: 120px"
v-model="searchForm.taskTitle" v-model="searchForm.taskTitle"
...@@ -113,7 +103,7 @@ ...@@ -113,7 +103,7 @@
查询 查询
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item label> <!-- <el-form-item label>
<el-button <el-button
@click="showEdit()" @click="showEdit()"
type="success" type="success"
...@@ -121,7 +111,7 @@ ...@@ -121,7 +111,7 @@
> >
新增 新增
</el-button> </el-button>
</el-form-item> </el-form-item> -->
<el-form-item label v-if="statusCode === '8'"> <el-form-item label v-if="statusCode === '8'">
<el-button <el-button
@click="archive()" @click="archive()"
...@@ -131,52 +121,28 @@ ...@@ -131,52 +121,28 @@
归档 归档
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item label>
<el-checkbox v-model="assignMe">
抄送给我
</el-checkbox>
</el-form-item>
</el-form> </el-form>
</div> <div class="table-wrap">
<table-view
<div class="page_content"> :tableColumns="tableColumns"
<div :sourceData="sourceData"
style=" :selectionChange="selectionChange"
min-width: 150px; ></table-view>
margin-top: -10px;
padding-top: -10px;
"
>
<status-list
:defauntIndex="defauntIndex"
:statuslist="statusTree"
:isHide="true"
@statusChange="handleNodeClick"
></status-list>
</div> </div>
<div style="flex: 1; overflow: hidden"> <div class="pagination">
<div class="table-wrap"> <el-pagination
<table-view layout="sizes, total, prev, pager, next, jumper"
:tableColumns="tableColumns" background
:sourceData="sourceData" :total="total"
:selectionChange="selectionChange" :page-size="pageSize"
></table-view> :current-page="currentPage"
</div> @size-change="sizeChange"
<div class="pagination"> @current-change="onCurrentChange"
<el-pagination >
layout="sizes, total, prev, pager, next, jumper" </el-pagination>
background
:total="total"
:page-size="pageSize"
:current-page="currentPage"
@size-change="sizeChange"
@current-change="onCurrentChange"
>
</el-pagination>
</div>
</div> </div>
</div> </div>
<!-- 编辑 --> <!-- 编辑 -->
<edit <edit
:editDialog.sync="editDialog" :editDialog.sync="editDialog"
...@@ -188,140 +154,7 @@ ...@@ -188,140 +154,7 @@
:employee="deptStaff" :employee="deptStaff"
ref="edit" ref="edit"
></edit> ></edit>
<!-- 验收 -->
<el-dialog
:title="statusCode === '8' ? '评价' : '验收'"
:close-on-click-modal="false"
:visible.sync="commentsVisible"
width="30%"
>
<el-form
:model="commentsForm"
size="mini"
ref="commentsForm"
label-width="80px"
>
<el-form-item
label="验收结果"
v-if="statusCode !== '8'"
>
<el-radio
v-model="commentsForm.taskRating"
:label="true"
>
通过
</el-radio>
<el-radio
v-model="commentsForm.taskRating"
:label="false"
>
不通过
</el-radio>
</el-form-item>
<el-form-item
label="评星"
v-if="
statusCode !== '8' && commentsForm.taskRating
"
>
<el-rate
v-model="commentsForm.score"
style="margin-top: 3px"
show-text
:texts="[
'非常糟糕',
'不满意',
'一般',
'满意',
'非常满意',
]"
:colors="['#99A9BF', '#FFCC00', '#FF9900']"
></el-rate>
</el-form-item>
<el-form-item label="评星" v-if="statusCode == '8'">
<el-rate
v-model="commentsForm.score"
style="margin-top: 3px"
show-text
:texts="[
'非常糟糕',
'不满意',
'一般',
'满意',
'非常满意',
]"
:colors="['#99A9BF', '#FFCC00', '#FF9900']"
></el-rate>
</el-form-item>
<el-form-item
label="评价"
v-if="
statusCode !== '8' &&
(commentsForm.score < '4' ||
commentsForm.taskRating == false)
"
>
<el-input
type="textarea"
:rows="4"
placeholder="请输入内容"
v-model="commentsForm.taskEvaluation"
></el-input>
</el-form-item>
<el-form-item
label="描述"
v-if="
statusCode !== '8' && commentsForm.score > '3'
"
>
<el-input
type="textarea"
:rows="4"
placeholder="请输入内容"
v-model="commentsForm.description"
></el-input>
</el-form-item>
</el-form>
<span slot="footer">
<el-button
size="mini"
@click="commentsVisible = false"
>
取 消
</el-button>
<el-button
size="mini"
type="primary"
@click="commentsSubmit"
>
确 定
</el-button>
</span>
</el-dialog>
<el-dialog
title="修改计划"
:visible.sync="updateVisible"
width="360px"
>
<span style="margin-right: 10px">预计开始日期</span>
<el-date-picker
style="width: 200px"
v-model="expectedStartDate"
value-format="yyyy-MM-dd"
type="date"
:picker-options="pickerOption"
placeholder="选择日期"
></el-date-picker>
<span slot="footer">
<el-button @click="updateVisible = false"
>取消</el-button
>
<el-button type="primary" @click="updateTime"
>确定</el-button
>
</span>
</el-dialog>
<!-- 详情 --> <!-- 详情 -->
<el-dialog <el-dialog
title="详情" title="详情"
...@@ -329,269 +162,61 @@ ...@@ -329,269 +162,61 @@
width="900px" width="900px"
> >
<div class="detail_list"> <div class="detail_list">
<p class="item"> <div class="item_wrap">
<span class="label">任务编码</span> <p class="item" style="width: 100%">
<span class="value">{{ detail.taskNumber }}</span> <span class="label">工单标题</span>
</p> <span class="value" style="width: 732px">{{
<p class="item"> detail.taskTitle
<span class="label">任务类型</span> }}</span>
<span class="value"> </p>
{{ detail.taskType && detail.taskType.desc }} <p class="item">
</span> <span class="label">工单编码</span>
</p> <span class="value">{{
<p class="item"> detail.taskNumber
<span class="label">任务模块</span> }}</span>
<span class="value">{{ </p>
detail.taskModuleName <p class="item">
}}</span> <span class="label">工单类型</span>
</p> <span class="value">
{{ detail.taskType && detail.taskType.desc }}
<p class="item"> </span>
<span class="label">负责人</span> </p>
<span class="value">{{
detail.taskLeaderName
}}</span>
</p>
<p class="item">
<span class="label">验收人</span>
<span class="value">{{
detail.taskAcceptanceUserName
}}</span>
</p>
<p class="item">
<span class="label">抄送人</span>
<span class="value">{{ detail.ccName }}</span>
</p>
<p class="item">
<span class="label">紧急程度</span>
<span class="value">
<svg
t="1627697200171"
viewBox="0 0 1024 1024"
version="1.1"
style="vertical-align: middle"
xmlns="http://www.w3.org/2000/svg"
p-id="629"
width="18"
height="18"
>
<title>
{{
detail.emergencyLevel
? detail.emergencyLevel.desc
: ''
}}
</title>
<path
:fill="
setIconColor(
detail.emergencyLevel
? detail.emergencyLevel.value
: '',
)
"
d="M444.970667 850.090667l151.978666-64.512a85.290667 85.290667 0 0 1-151.978666 64.512z m231.765333-760.746667c89.002667 48.597333 155.818667 111.018667 199.765333 187.178667 43.946667 76.117333 64.64 165.205333 62.250667 266.581333a32 32 0 0 1-64-1.536c2.133333-90.069333-15.872-167.552-53.674667-233.045333-37.802667-65.536-95.957333-119.850667-175.018666-163.029334a32 32 0 1 1 30.72-56.192z m-390.4 188.629333a248.490667 248.490667 0 0 1 324.266667 117.162667l4.181333 8.917333 54.954667 123.392 72.448 62.72c3.968 3.413333 7.381333 7.381333 11.349333 13.824l2.517333 4.906667a53.333333 53.333333 0 0 1-27.178666 70.357333L288.213333 874.24A53.333333 53.333333 0 0 1 213.333333 825.472l-0.042666-99.968-52.992-119.082667A248.405333 248.405333 0 0 1 286.293333 277.973333z m380.288-34.986666c41.258667 22.442667 74.325333 55.210667 98.816 97.621333 24.490667 42.453333 36.309333 87.466667 35.157333 134.442667a32 32 0 1 1-64-1.578667c0.853333-35.029333-7.893333-68.437333-26.581333-100.864-18.688-32.384-43.264-56.661333-74.026667-73.472a32 32 0 0 1 30.634667-56.192z"
p-id="630"
></path>
</svg>
</span>
</p>
<p class="item">
<span class="label">重要程度</span>
<span class="value">
<svg
t="1627697337193"
style="vertical-align: middle"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="937"
width="18"
height="18"
>
<title>
{{
detail.importanceLevel
? detail.importanceLevel.desc
: ''
}}
</title>
<path
:fill="
setIconColor(
detail.importanceLevel
? detail.importanceLevel.value
: '',
)
"
d="M858.1 315l-119 85.9c-15.8 11.4-37.8 7.7-49-8.2L541.6 181.8c-13.9-19.8-43.3-19.7-57.2 0.1L337.8 392.5c-11.1 15.9-33.1 19.7-48.9 8.4l-119.6-85.5c-25.5-18.2-60.2 3.8-54.6 34.6l68.9 380c3 16.6 17.5 28.7 34.3 28.7h598.3c17.1 0 31.7-12.4 34.4-29.3l62.3-380.7c5.1-30.5-29.6-51.9-54.8-33.7zM513.7 620.6c-43.1 0-78-34.9-78-78s34.9-78 78-78 78 34.9 78 78-34.9 78-78 78z"
p-id="938"
></path>
</svg>
</span>
</p>
<p class="item">
<span class="label">优先级</span>
<span class="value">
<svg
:title="
detail.priorityLevel
? detail.priorityLevel.desc
: ''
"
t="1627697676079"
style="vertical-align: middle"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="1266"
width="18"
height="18"
>
<title>
{{
detail.priorityLevel
? detail.priorityLevel.desc
: ''
}}
</title>
<path
d="M215.4 160.6H177c-8.9 0-16 7.2-16 16V849c0 8.9 7.2 16 16 16h38.4c8.9 0 16-7.2 16-16V176.7c0.1-8.9-7.1-16.1-16-16.1zM848.1 236c-189 152.5-378-180.6-567.1-28.2-8.8 7.1-16 21.3-16 30.1v430.9c0 8.9 7.2 9 16 1.9 189-152.5 378.1 180.7 567.1 28.2 8.9-7.1 16-21.3 16-30.1V237.9c0.1-8.8-7.1-9-16-1.9z"
:fill="
setIconColor(
detail.priorityLevel
? detail.priorityLevel.value
: '',
)
"
p-id="1267"
></path>
</svg>
</span>
</p>
<p class="item">
<span class="label">任务状态</span>
<span class="value">
{{
detail.taskStatus && detail.taskStatus.desc
}}
</span>
</p>
<p <p class="item">
class="item" <span class="label">工单状态</span>
style="width: 60%" <span class="value">
v-if="detail.completionSteps" {{
> detail.taskStatus && detail.taskStatus.desc
<span class="label">完成步骤</span> }}
<span class="value">{{ </span>
detail.completionSteps </p>
}}</span> </div>
</p>
<div
class="split_line"
v-if="detail.taskRating || detail.taskEvaluation"
></div>
<p class="item" v-if="detail.taskRating">
<span class="label">验收结果</span>
<span class="value">
{{
detail.taskRating && detail.taskRating.desc
}}
</span>
</p>
<p
class="item"
style="width: 60%"
v-if="detail.taskEvaluation"
>
<span class="label">验收描述</span>
<span class="value">{{
detail.taskEvaluation
}}</span>
</p>
<div class="split_line"></div>
<p class="item" style="width: 100%">
<span class="label">任务标题</span>
<span class="value" style="width: 732px">{{
detail.taskTitle
}}</span>
</p>
<div <div
style=" style="padding: 5px; overflow: auto"
border: 1px solid #ddd;
padding: 5px;
box-shadow: 1px 1px 5px 1px #ddd;
overflow: auto;
"
v-html="detail.taskContent" v-html="detail.taskContent"
@click="fullScreenDisplay" @click="fullScreenDisplay"
></div>
<div style="height: 10px"></div>
<p class="item" style="width: 175px">
<span class="label" style="width: auto"
>期望完成日期</span
>
<span class="value">{{
detail.expectedCompletionTime
}}</span>
</p>
<p class="item" style="width: 175px">
<span class="label" style="width: auto"
>计划完成日期</span
>
<span class="value">{{
detail.plannedCompletionTime
}}</span>
</p>
<p class="item">
<span class="label">预计工时(h)</span>
<span class="value">{{ detail.planCycle }}</span>
</p>
<p class="item" style="width: 175px">
<span class="label" style="width: auto"
>任务开始日期</span
>
<span class="value">{{ detail.startTime }}</span>
</p>
<p class="item" style="width: 175px">
<span class="label" style="width: auto"
>实际完成时间</span
>
<span class="value">{{
detail.actualCompletionTime
}}</span>
</p>
<p class="item" style="width: 175px">
<span class="label" style="width: auto"
>实际工时(h)</span
>
<span class="value">{{
detail.actualCycle
}}</span>
</p>
<div
class="split_line"
v-if="detail.logList && detail.logList.length > 0"
></div>
<ul
style="
color: #333;
font-size: 12px;
height: 100%;
overflow: auto;
"
> >
<li 这里有一段描述
class="log_item" </div>
v-for="(item, index) in detail.logList" <div style="margin-top: 10px">
:key="index" <div>
> <el-input
<div>{{ item.createdTime }}</div> type="textarea"
<div>{{ item.description }}</div> :rows="2"
</li> placeholder="请输入内容"
</ul> v-model="textarea"
>
</el-input>
</div>
<div style="margin-top: 10px">
<el-button size="mini" type="success"
>确认执行</el-button
>
<el-button size="mini" type="primary"
>回复</el-button
>
</div>
</div>
</div> </div>
<span slot="footer"> <span slot="footer">
<!-- 确认 --> <!-- 确认 -->
...@@ -833,111 +458,7 @@ ...@@ -833,111 +458,7 @@
</span> </span>
</span> </span>
</el-dialog> </el-dialog>
<!-- 终止 -->
<el-dialog
:close-on-click-modal="false"
:visible.sync="terminationVisible"
width="300px"
>
<el-form>
<el-form-item
label="任务耗时"
label-width="70px"
style="margin-top: 25px"
>
<el-input
v-model="timeConsuming"
placeholder="请输入任务耗时"
size="medium"
></el-input>
</el-form-item>
<el-form-item label="终止原因" label-width="70px">
<el-input
v-model="terminationReason"
type="textarea"
placeholder=""
></el-input>
</el-form-item>
</el-form>
<span slot="footer">
<el-button @click="terminationVisible = false"
>取消</el-button
>
<el-button type="primary" @click="submitCadence"
>确定</el-button
>
</span>
</el-dialog>
<!-- 预计开始时间 -->
<el-dialog
title="确认"
:close-on-click-modal="false"
:visible.sync="confimVisible"
width="400px"
>
<el-form
:rules="addrules"
label-position="right"
label-width="120px"
:model="expectedStartForm"
ref="expectedStartForm"
>
<el-form-item
label="预计开始日期"
prop="expectedStartDate"
>
<el-date-picker
style="width: 200px"
v-model="expectedStartForm.expectedStartDate"
value-format="yyyy-MM-dd"
:picker-options="pickerOption"
type="date"
placeholder="选择日期"
></el-date-picker>
</el-form-item>
<el-form-item label="预计工时(h)" prop="planCycle">
<el-input
style="width: 200px"
v-model="expectedStartForm.planCycle"
clearable
></el-input>
</el-form-item>
</el-form>
<span slot="footer">
<el-button @click="confimVisible = false"
>取消</el-button
>
<el-button type="primary" @click="submitConfim"
>确定</el-button
>
</span>
</el-dialog>
<!-- 计划完成日期 -->
<el-dialog
title="计划完成日期"
:close-on-click-modal="false"
:visible.sync="expectedEndVisible"
width="300px"
>
<el-date-picker
style="width: 100%"
v-model="expectedEndTime"
value-format="yyyy-MM-dd"
type="date"
:picker-options="pickerOption"
placeholder="选择日期"
></el-date-picker>
<span slot="footer">
<el-button @click="expectedEndVisible = false"
>取消</el-button
>
<el-button type="primary" @click="submitExpectedEnd"
>确定</el-button
>
</span>
</el-dialog>
<!-- 指派 --> <!-- 指派 -->
<el-dialog <el-dialog
title="指派给" title="指派给"
...@@ -966,21 +487,19 @@ ...@@ -966,21 +487,19 @@
<script> <script>
import axios from '../../common/api/axios' import axios from '../../common/api/axios'
import StatusList from '../../components/base/status-list.vue'
import { emptyArray, getIds } from '../../utils/commonUtil' import { emptyArray, getIds } from '../../utils/commonUtil'
import pagination from '../../mixins/pagination' import pagination from '../../mixins/pagination'
import Edit from './edit.vue' import Edit from './edit.vue'
import { getDictByCateCode } from '../../utils/api'
import { mapState } from 'vuex' import { mapState } from 'vuex'
import ChooseTimePeriod from '../../components/base/chooseTimePeriod.vue' import ChooseTimePeriod from '../../components/base/chooseTimePeriod.vue'
/* 任务管理 */ /* 工单管理 */
import tableView from '@/common/components/base/tableView.vue' import tableView from '@/common/components/base/tableView.vue'
export default { export default {
name: 'task_center', name: 'task_center',
mixins: [pagination], mixins: [pagination],
components: { components: {
StatusList,
Edit, Edit,
ChooseTimePeriod, ChooseTimePeriod,
tableView, tableView,
...@@ -1074,69 +593,84 @@ export default { ...@@ -1074,69 +593,84 @@ export default {
confimVisible: false, confimVisible: false,
defauntIndex: 0, defauntIndex: 0,
taskTypes: [], taskTypes: [],
treeData: [],
defaultProps: {
children: 'children',
label: 'statusName',
},
total: 0,
pageSize: 100,
currentPage: 1,
} }
}, },
mounted() { mounted() {
getDictByCateCode('taskType').then((res) => { const arr = [
this.taskTypes = res.data {
}) statusCode: 'all',
statusName: '全部',
axios.get('financeTaskManagement/enums').then((res) => { quantity: 35,
this.selectOptions = res.data children: null,
}) },
{
let { status, numbers, empId } = this.$route.query statusCode: 'preprocessing',
if (status) { statusName: '预处理',
this.statusCode = status quantity: 27,
if (status === -1) { children: null,
this.assignMe = true },
} {
} statusCode: 'to_be_dispatched',
statusName: '待分派',
if (numbers) { quantity: 3,
numbers = numbers.split(',') children: null,
if (numbers.length === 1) { },
this.$set(this.searchForm, 'taskNumber', numbers[0]) {
} statusCode: 'to_be_confirmed',
} statusName: '待确认',
this.getStatusTree() quantity: 0,
if (empId) { children: null,
this.showEdit(null, () => { },
this.$set( {
this.editForm, statusCode: 'processing',
'taskLeader', statusName: '处理中',
Number(empId), quantity: 0,
) children: null,
}) },
} {
statusCode: 'pending_feedback',
statusName: '待反馈',
quantity: 0,
children: null,
},
{
statusCode: 'closed',
statusName: '已关闭',
quantity: 0,
children: null,
},
]
this.treeData = arr
this.getlist()
}, },
computed: { computed: {
...mapState(['deptStaff']), ...mapState(['deptStaff']),
tableColumns() { tableColumns() {
const employeeId = this.employeeId const employeeId = this.employeeId
return [ return [
{ label: '工单编号', key: 'taskNumber', width: 90 },
{ {
label: '', label: '工单模块',
type: 'selection',
key: '',
fixed: 'left',
},
{ label: '序号', type: 'index', key: '' },
{ label: '任务编号', key: 'taskNumber', width: 90 },
{
label: '任务模块',
key: 'taskModuleName', key: 'taskModuleName',
width: 110, width: 110,
align: 'left', align: 'left',
}, },
{ {
label: '任务类型', label: '工单类型',
key: 'type', key: 'type',
width: 60, width: 60,
render: (item) => item.taskType?.desc, render: (item) => item.taskType?.desc,
}, },
{ {
label: '任务标题', label: '工单标题',
key: 'taskTitle', key: 'taskTitle',
width: 120, width: 120,
align: 'left', align: 'left',
...@@ -1162,132 +696,23 @@ export default { ...@@ -1162,132 +696,23 @@ export default {
key: 'taskCreatorName', key: 'taskCreatorName',
width: 65, width: 65,
}, },
{ {
label: '紧急程度', label: '工单状态',
key: 'emergencyLevel',
width: 60,
render: (item) => (
<svg
t="1627697200171"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="629"
width="18"
style="vertical-align: middle;"
height="18"
>
<title>{item.emergencyLevel?.desc}</title>
<path
fill={this.setIconColor(
item.emergencyLevel?.value,
)}
d="M444.970667 850.090667l151.978666-64.512a85.290667 85.290667 0 0 1-151.978666 64.512z m231.765333-760.746667c89.002667 48.597333 155.818667 111.018667 199.765333 187.178667 43.946667 76.117333 64.64 165.205333 62.250667 266.581333a32 32 0 0 1-64-1.536c2.133333-90.069333-15.872-167.552-53.674667-233.045333-37.802667-65.536-95.957333-119.850667-175.018666-163.029334a32 32 0 1 1 30.72-56.192z m-390.4 188.629333a248.490667 248.490667 0 0 1 324.266667 117.162667l4.181333 8.917333 54.954667 123.392 72.448 62.72c3.968 3.413333 7.381333 7.381333 11.349333 13.824l2.517333 4.906667a53.333333 53.333333 0 0 1-27.178666 70.357333L288.213333 874.24A53.333333 53.333333 0 0 1 213.333333 825.472l-0.042666-99.968-52.992-119.082667A248.405333 248.405333 0 0 1 286.293333 277.973333z m380.288-34.986666c41.258667 22.442667 74.325333 55.210667 98.816 97.621333 24.490667 42.453333 36.309333 87.466667 35.157333 134.442667a32 32 0 1 1-64-1.578667c0.853333-35.029333-7.893333-68.437333-26.581333-100.864-18.688-32.384-43.264-56.661333-74.026667-73.472a32 32 0 0 1 30.634667-56.192z"
p-id="630"
></path>
</svg>
),
},
{
label: '重要程度',
key: 'importanceLevel',
width: 60,
render: (item) => (
<svg
t="1627697337193"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="937"
width="18"
style="vertical-align: middle;"
height="18"
>
<title>{item.importanceLevel?.desc}</title>
<path
fill={this.setIconColor(
item.importanceLevel?.value,
)}
d="M858.1 315l-119 85.9c-15.8 11.4-37.8 7.7-49-8.2L541.6 181.8c-13.9-19.8-43.3-19.7-57.2 0.1L337.8 392.5c-11.1 15.9-33.1 19.7-48.9 8.4l-119.6-85.5c-25.5-18.2-60.2 3.8-54.6 34.6l68.9 380c3 16.6 17.5 28.7 34.3 28.7h598.3c17.1 0 31.7-12.4 34.4-29.3l62.3-380.7c5.1-30.5-29.6-51.9-54.8-33.7zM513.7 620.6c-43.1 0-78-34.9-78-78s34.9-78 78-78 78 34.9 78 78-34.9 78-78 78z"
p-id="938"
></path>
</svg>
),
},
{
label: '优先级',
key: 'priorityLevel',
width: 60,
render: (item) => (
<svg
t="1627697676079"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="1266"
width="18"
style="vertical-align: middle;"
height="18"
>
<title>{item.priorityLevel?.desc}</title>
<path
d="M215.4 160.6H177c-8.9 0-16 7.2-16 16V849c0 8.9 7.2 16 16 16h38.4c8.9 0 16-7.2 16-16V176.7c0.1-8.9-7.1-16.1-16-16.1zM848.1 236c-189 152.5-378-180.6-567.1-28.2-8.8 7.1-16 21.3-16 30.1v430.9c0 8.9 7.2 9 16 1.9 189-152.5 378.1 180.7 567.1 28.2 8.9-7.1 16-21.3 16-30.1V237.9c0.1-8.8-7.1-9-16-1.9z"
fill={this.setIconColor(
item.priorityLevel?.value,
)}
p-id="1267"
></path>
</svg>
),
},
{
label: '任务状态',
key: 'taskStatus', key: 'taskStatus',
width: 60, width: 60,
render: (item) => ( render: (item) => (
<span <span
style={{ style={{
color: this.getStatusColor( color: this.getStatusColor(
item.taskStatus?.name, item?.taskStatus?.name,
), ),
}} }}
> >
{item.taskStatus?.desc} {item?.taskStatus?.desc}
</span> </span>
), ),
}, },
{
label: '预计开始时间',
key: 'expectedStartDate',
width: 100,
},
{
label: '期望完成时间',
key: 'expectedCompletionTime',
width: 100,
},
{
label: '计划完成日期',
key: 'plannedCompletionTime',
width: 100,
},
{
label: '预计工时(h)',
key: 'planCycle',
width: 100,
},
{ label: '开始时间', key: 'startTime', width: 100 },
{
label: '实际完成时间',
key: 'actualCompletionTime',
width: 100,
},
{
label: '实际工时(h)',
key: 'actualCycle',
width: 90,
align: 'right',
},
{ {
label: '创建时间', label: '创建时间',
...@@ -1301,19 +726,6 @@ export default { ...@@ -1301,19 +726,6 @@ export default {
align: 'left', align: 'left',
render: (item) => ( render: (item) => (
<span> <span>
{item.taskStatus.name ===
'NOT_YET_ASSIGNED' &&
employeeId === item.taskCreator && (
<span
title="编辑"
class="icon-view icon-edit-view"
>
<i
class="el-icon-edit"
onClick={() => this.showEdit(item)}
></i>
</span>
)}
<span <span
title="详情" title="详情"
class="icon-view icon-tools-view" class="icon-view icon-tools-view"
...@@ -1325,7 +737,7 @@ export default { ...@@ -1325,7 +737,7 @@ export default {
</span> </span>
{this.statusCode !== '-1' && {this.statusCode !== '-1' &&
employeeId === item.taskCreator && employeeId === item.taskCreator &&
item.taskStatus.name === item?.taskStatus?.name ===
'NOT_YET_ASSIGNED' && 'NOT_YET_ASSIGNED' &&
item.reasonForReject && ( item.reasonForReject && (
<span <span
...@@ -1368,7 +780,7 @@ export default { ...@@ -1368,7 +780,7 @@ export default {
</span> </span>
)} )}
{this.statusCode !== '-1' && {this.statusCode !== '-1' &&
item.taskStatus.name === item?.taskStatus?.name ===
'NOT_YET_ASSIGNED' && ( 'NOT_YET_ASSIGNED' && (
<span <span
class="icon-view icon-tools-view" class="icon-view icon-tools-view"
...@@ -1398,7 +810,7 @@ export default { ...@@ -1398,7 +810,7 @@ export default {
item.taskCompleteUserId.indexOf( item.taskCompleteUserId.indexOf(
employeeId, employeeId,
) !== -1 && ) !== -1 &&
item.taskStatus.name === item?.taskStatus?.name ===
'HAS_NOT_CONFIRM' && ( 'HAS_NOT_CONFIRM' && (
<span <span
class="icon-view icon-tools-view" class="icon-view icon-tools-view"
...@@ -1414,9 +826,10 @@ export default { ...@@ -1414,9 +826,10 @@ export default {
item.taskCompleteUserId.indexOf( item.taskCompleteUserId.indexOf(
employeeId, employeeId,
) !== -1 && ) !== -1 &&
(item.taskStatus.name === (item?.taskStatus?.name ===
'HAS_NOT_STARTED' || 'HAS_NOT_STARTED' ||
item.taskStatus.name === 'REJECTED') && ( item?.taskStatus?.name ===
'REJECTED') && (
<span <span
title="开始" title="开始"
class="icon-view icon-tools-view" class="icon-view icon-tools-view"
...@@ -1432,12 +845,12 @@ export default { ...@@ -1432,12 +845,12 @@ export default {
item.taskCompleteUserId.indexOf( item.taskCompleteUserId.indexOf(
employeeId, employeeId,
) !== -1 && ) !== -1 &&
(item.taskStatus.name === (item?.taskStatus?.name ===
'HAS_NOT_CONFIRM' || 'HAS_NOT_CONFIRM' ||
item.taskStatus.name === item?.taskStatus?.name ===
'HAS_NOT_STARTED' || 'HAS_NOT_STARTED' ||
item.taskStatus.name === 'REJECTED' || item?.taskStatus?.name === 'REJECTED' ||
item.taskStatus.name === item?.taskStatus?.name ===
'REJECTED_ING') && ( 'REJECTED_ING') && (
<span <span
title="驳回" title="驳回"
...@@ -1466,9 +879,9 @@ export default { ...@@ -1466,9 +879,9 @@ export default {
)} )}
{this.statusCode !== '-1' && {this.statusCode !== '-1' &&
employeeId === item.taskCreator && employeeId === item.taskCreator &&
(item.taskStatus.name === 'PROCESSING' || (item?.taskStatus?.name === 'PROCESSING' ||
item.taskStatus.name === 'REJECTED' || item?.taskStatus?.name === 'REJECTED' ||
item.taskStatus.name === item?.taskStatus?.name ===
'REJECTED_ING') && ( 'REJECTED_ING') && (
<span <span
title="终止" title="终止"
...@@ -1496,8 +909,8 @@ export default { ...@@ -1496,8 +909,8 @@ export default {
</span> </span>
)} )}
{((this.statusCode !== '-1' && {((this.statusCode !== '-1' &&
item.taskStatus.name === 'PROCESSING') || item?.taskStatus?.name === 'PROCESSING') ||
item.taskStatus.name === item?.taskStatus?.name ===
'REJECTED_ING') && ( 'REJECTED_ING') && (
<span <span
title="完成" title="完成"
...@@ -1512,7 +925,8 @@ export default { ...@@ -1512,7 +925,8 @@ export default {
</span> </span>
)} )}
{this.statusCode !== '-1' && {this.statusCode !== '-1' &&
item.taskStatus.name === 'FOR_ACCEPTANCE' && item?.taskStatus?.name ===
'FOR_ACCEPTANCE' &&
employeeId === item.taskAcceptanceUser && ( employeeId === item.taskAcceptanceUser && (
<span <span
title="验收" title="验收"
...@@ -1527,7 +941,7 @@ export default { ...@@ -1527,7 +941,7 @@ export default {
</span> </span>
)} )}
{employeeId === item.taskCreator && {employeeId === item.taskCreator &&
item.taskStatus.name === item?.taskStatus?.name ===
'NOT_YET_ASSIGNED' && ( 'NOT_YET_ASSIGNED' && (
<span <span
title="删除" title="删除"
...@@ -1541,7 +955,7 @@ export default { ...@@ -1541,7 +955,7 @@ export default {
)} )}
{this.statusCode !== '-1' && {this.statusCode !== '-1' &&
this.statusCode === '8' && this.statusCode === '8' &&
item.taskStatus.name === 'COMPLETED' && item?.taskStatus?.name === 'COMPLETED' &&
employeeId === item.taskAcceptanceUser && employeeId === item.taskAcceptanceUser &&
!item.score && ( !item.score && (
<span <span
...@@ -1563,21 +977,21 @@ export default { ...@@ -1563,21 +977,21 @@ export default {
}, },
planTableColumns() { planTableColumns() {
return [ return [
{ label: '任务编号', key: 'taskNumber', width: 90 }, { label: '工单编号', key: 'taskNumber', width: 90 },
{ {
label: '任务模块', label: '工单模块',
key: 'taskModuleName', key: 'taskModuleName',
width: 120, width: 120,
align: 'left', align: 'left',
}, },
{ {
label: '任务类型', label: '工单类型',
key: 'type', key: 'type',
width: 120, width: 120,
render: (item) => item.taskType?.desc, render: (item) => item.taskType?.desc,
}, },
{ {
label: '任务标题', label: '工单标题',
key: 'taskTitle', key: 'taskTitle',
width: 425, width: 425,
align: 'left', align: 'left',
...@@ -1661,7 +1075,7 @@ export default { ...@@ -1661,7 +1075,7 @@ export default {
), ),
}, },
{ {
label: '任务状态', label: '工单状态',
key: 'taskStatus', key: 'taskStatus',
width: 120, width: 120,
render: (item) => item.taskStatus?.desc, render: (item) => item.taskStatus?.desc,
...@@ -1707,8 +1121,8 @@ export default { ...@@ -1707,8 +1121,8 @@ export default {
onClick={() => this.showDetail(item)} onClick={() => this.showDetail(item)}
></i> ></i>
</span> </span>
{(item.taskStatus.name === 'PROCESSING' || {(item?.taskStatus?.name === 'PROCESSING' ||
item.taskStatus.name === item?.taskStatus?.name ===
'REJECTED_ING') && ( 'REJECTED_ING') && (
<span <span
title="完成" title="完成"
...@@ -1722,7 +1136,7 @@ export default { ...@@ -1722,7 +1136,7 @@ export default {
></i> ></i>
</span> </span>
)} )}
{item.taskStatus.name === {item?.taskStatus?.name ===
'HAS_NOT_STARTED' && ( 'HAS_NOT_STARTED' && (
<span <span
title="修改计划" title="修改计划"
...@@ -1741,6 +1155,8 @@ export default { ...@@ -1741,6 +1155,8 @@ export default {
}, },
}, },
methods: { methods: {
sizeChange() {},
onCurrentChange() {},
getStatusColor(type) { getStatusColor(type) {
if (type === 'NOT_YET_ASSIGNED') { if (type === 'NOT_YET_ASSIGNED') {
return '#CCCCCC' return '#CCCCCC'
...@@ -1964,7 +1380,7 @@ export default { ...@@ -1964,7 +1380,7 @@ export default {
}) })
}, },
startTask(item) { startTask(item) {
if (item.taskStatus.name === 'REJECTED') { if (item?.taskStatus?.name === 'REJECTED') {
this.$confirm('确认返工?', '提示', { this.$confirm('确认返工?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
...@@ -1992,7 +1408,7 @@ export default { ...@@ -1992,7 +1408,7 @@ export default {
let res = null let res = null
try { try {
res = await axios.get( res = await axios.get(
'financeTaskManagement/axios.get/' + v.id, 'financeTaskManagement/get/' + v.id,
) )
} catch (error) { } catch (error) {
this.$message.warning(error.message) this.$message.warning(error.message)
...@@ -2000,15 +1416,6 @@ export default { ...@@ -2000,15 +1416,6 @@ export default {
} }
if (res) { if (res) {
this.editForm = res.data this.editForm = res.data
this.editForm.emergencyLevel =
this.editForm.emergencyLevel?.name
this.editForm.importanceLevel =
this.editForm.importanceLevel?.name
this.editForm.priorityLevel =
this.editForm.priorityLevel?.name
this.editForm.taskType =
this.editForm.taskType.name
this.editDialog = true this.editDialog = true
} }
} else { } else {
...@@ -2023,27 +1430,24 @@ export default { ...@@ -2023,27 +1430,24 @@ export default {
callback && callback() callback && callback()
}, },
getlist() { getlist() {
if (this.is_tab === 1) { // const { pageSize, currentPage } =
const { pageSize, currentPage } = // this.centerPageOptions
this.centerPageOptions // axios
axios // .post('financeTaskManagement/list_page', {
.post('financeTaskManagement/list_page', { // pageSize,
pageSize, // currentPage,
currentPage, // taskStatus: this.statusCode,
taskStatus: this.statusCode, // copyMe: this.assignMe,
copyMe: this.assignMe, // startTime:
startTime: // this.periodTime && this.periodTime[0],
this.periodTime && this.periodTime[0], // endTime: this.periodTime && this.periodTime[1],
endTime: this.periodTime && this.periodTime[1], // ...this.searchForm,
...this.searchForm, // })
}) // .then((res) => {
.then((res) => { // this.sourceData = res.data.records
this.sourceData = res.data.records // this.centerPageOptions.total = res.data.total
this.centerPageOptions.total = res.data.total // })
}) this.sourceData = [{}]
} else {
this.planList()
}
}, },
planList() { planList() {
const { pageSize, currentPage } = this.planPageOptions const { pageSize, currentPage } = this.planPageOptions
...@@ -2179,16 +1583,17 @@ export default { ...@@ -2179,16 +1583,17 @@ export default {
}) })
}, },
showDetail(item) { showDetail(item) {
axios this.detailVisible = true
.get('financeTaskManagement/axios.get/' + item.id) // axios
.then((res) => { // .get('financeTaskManagement/get/' + item.id)
this.detail = res.data // .then((res) => {
this.detailVisible = true // this.detail = res.data
}) // this.detailVisible = true
// })
}, },
updatePlan(item) { updatePlan(item) {
axios axios
.get('financeTaskManagement/axios.get/' + item.id) .get('financeTaskManagement/get/' + item.id)
.then((res) => { .then((res) => {
this.expectedStartDate = this.expectedStartDate =
res.data.expectedStartDate res.data.expectedStartDate
...@@ -2214,6 +1619,26 @@ export default { ...@@ -2214,6 +1619,26 @@ export default {
} }
</script> </script>
<style scoped> <style scoped>
.wraper {
height: 100%;
display: flex;
overflow: hidden;
}
.page_left {
width: 200px;
min-width: 200px;
background: #fff;
border-radius: 5px;
margin-right: 10px;
}
.page_right {
flex: 1;
display: flex;
flex-direction: column;
background: #fff;
border-radius: 5px;
overflow: hidden;
}
.top_wrap { .top_wrap {
display: flex; display: flex;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
...@@ -2255,6 +1680,7 @@ export default { ...@@ -2255,6 +1680,7 @@ export default {
} }
.search_form { .search_form {
margin-top: 5px; margin-top: 5px;
margin-left: 10px;
} }
.search_form >>> .el-form-item { .search_form >>> .el-form-item {
margin-bottom: 5px; margin-bottom: 5px;
...@@ -2277,6 +1703,10 @@ export default { ...@@ -2277,6 +1703,10 @@ export default {
max-height: 68vh; max-height: 68vh;
overflow: auto; overflow: auto;
} }
.item_wrap {
background: #efefef;
padding-top: 10px;
}
.detail_list .item { .detail_list .item {
display: inline-block; display: inline-block;
width: 30%; width: 30%;
...@@ -2331,5 +1761,6 @@ export default { ...@@ -2331,5 +1761,6 @@ export default {
background: #fff; background: #fff;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
width: 100%;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment