Commit b3757ded by chehuidong

Merge branch 'taskManage' into 'dev'

Task manage

See merge request !4
parents 7cab68d9 3e16bd15
......@@ -24,6 +24,7 @@ import {
MenuItemGroup,
Tag,
Checkbox,
Tree,
} from 'element-ui'
const components = [
......@@ -47,6 +48,7 @@ const components = [
MenuItemGroup,
Tag,
Checkbox,
Tree,
]
export default {
......@@ -58,13 +60,13 @@ export default {
Vue.prototype.$message = (message) =>
typeof message === 'string'
? Message({
duration: 2500,
message,
})
duration: 2500,
message,
})
: Message({
duration: 2500,
...message,
})
duration: 2500,
...message,
})
Vue.prototype.$message.success = (message) =>
typeof message === 'string'
? Message.success({ duration: 2500, message })
......
......@@ -63,7 +63,8 @@
}
.pagination {
text-align: center;
padding-top: 10px;
padding-top: 5px;
padding-bottom: 5px;
}
.icon-view{
font-size: 18px;
......
......@@ -275,7 +275,9 @@
@change="onChange"
placeholder="请输入域名"
>
<template slot="append">.jomalls.com</template>
<template slot="append">{{
baseDomain
}}</template>
</el-input>
</el-form-item>
<el-form-item
......@@ -549,6 +551,7 @@ export default {
selection: [],
cloneEditForm: {},
loading: false,
baseDomain: '.jomalls.com',
}
},
async created() {
......@@ -627,7 +630,7 @@ export default {
this.editForm.databaseName =
'saas_' + this.editForm.databaseName
this.editForm.domain =
this.editForm.domain + '.joshine.cn'
this.editForm.domain + this.baseDomain
try {
if (this.editId) {
const res = await updateManageData(this.editForm)
......
......@@ -6,8 +6,26 @@
* @LastEditTime: 2020-11-18 09:25:23
-->
<template>
<div class="wrap" style="padding-top: 0">
<div class="top_wrap">
<div class="wraper">
<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
v-show="is_tab == 1"
:model="searchForm"
......@@ -17,41 +35,13 @@
ref="form"
class="search_form"
>
<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>
<el-form-item label="创建时间">
<choose-time-period
@change="getStatusTree"
v-model="periodTime"
></choose-time-period>
</el-form-item>
<el-form-item label="任务编号">
<el-form-item label="工单编号">
<el-input
style="width: 120px"
v-model="searchForm.taskNumber"
......@@ -59,7 +49,7 @@
clearable
></el-input>
</el-form-item>
<el-form-item label="任务类型">
<el-form-item label="工单类型">
<el-select
v-model="searchForm.taskType"
style="width: 120px"
......@@ -76,7 +66,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务标题">
<el-form-item label="工单标题">
<el-input
style="width: 120px"
v-model="searchForm.taskTitle"
......@@ -113,7 +103,7 @@
查询
</el-button>
</el-form-item>
<el-form-item label>
<!-- <el-form-item label>
<el-button
@click="showEdit()"
type="success"
......@@ -121,7 +111,7 @@
>
新增
</el-button>
</el-form-item>
</el-form-item> -->
<el-form-item label v-if="statusCode === '8'">
<el-button
@click="archive()"
......@@ -131,52 +121,28 @@
归档
</el-button>
</el-form-item>
<el-form-item label>
<el-checkbox v-model="assignMe">
抄送给我
</el-checkbox>
</el-form-item>
</el-form>
</div>
<div class="page_content">
<div
style="
min-width: 150px;
margin-top: -10px;
padding-top: -10px;
"
>
<status-list
:defauntIndex="defauntIndex"
:statuslist="statusTree"
:isHide="true"
@statusChange="handleNodeClick"
></status-list>
<div class="table-wrap">
<table-view
:tableColumns="tableColumns"
:sourceData="sourceData"
:selectionChange="selectionChange"
></table-view>
</div>
<div style="flex: 1; overflow: hidden">
<div class="table-wrap">
<table-view
:tableColumns="tableColumns"
:sourceData="sourceData"
:selectionChange="selectionChange"
></table-view>
</div>
<div class="pagination">
<el-pagination
layout="sizes, total, prev, pager, next, jumper"
background
:total="total"
:page-size="pageSize"
:current-page="currentPage"
@size-change="sizeChange"
@current-change="onCurrentChange"
>
</el-pagination>
</div>
<div class="pagination">
<el-pagination
layout="sizes, total, prev, pager, next, jumper"
background
:total="total"
:page-size="pageSize"
:current-page="currentPage"
@size-change="sizeChange"
@current-change="onCurrentChange"
>
</el-pagination>
</div>
</div>
<!-- 编辑 -->
<edit
:editDialog.sync="editDialog"
......@@ -188,140 +154,7 @@
:employee="deptStaff"
ref="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
title="详情"
......@@ -329,269 +162,61 @@
width="900px"
>
<div class="detail_list">
<p class="item">
<span class="label">任务编码</span>
<span class="value">{{ detail.taskNumber }}</span>
</p>
<p class="item">
<span class="label">任务类型</span>
<span class="value">
{{ detail.taskType && detail.taskType.desc }}
</span>
</p>
<p class="item">
<span class="label">任务模块</span>
<span class="value">{{
detail.taskModuleName
}}</span>
</p>
<p class="item">
<span class="label">负责人</span>
<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>
<div class="item_wrap">
<p class="item" style="width: 100%">
<span class="label">工单标题</span>
<span class="value" style="width: 732px">{{
detail.taskTitle
}}</span>
</p>
<p class="item">
<span class="label">工单编码</span>
<span class="value">{{
detail.taskNumber
}}</span>
</p>
<p class="item">
<span class="label">工单类型</span>
<span class="value">
{{ detail.taskType && detail.taskType.desc }}
</span>
</p>
<p
class="item"
style="width: 60%"
v-if="detail.completionSteps"
>
<span class="label">完成步骤</span>
<span class="value">{{
detail.completionSteps
}}</span>
</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>
<p class="item">
<span class="label">工单状态</span>
<span class="value">
{{
detail.taskStatus && detail.taskStatus.desc
}}
</span>
</p>
</div>
<div
style="
border: 1px solid #ddd;
padding: 5px;
box-shadow: 1px 1px 5px 1px #ddd;
overflow: auto;
"
style="padding: 5px; overflow: auto"
v-html="detail.taskContent"
@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"
v-for="(item, index) in detail.logList"
:key="index"
>
<div>{{ item.createdTime }}</div>
<div>{{ item.description }}</div>
</li>
</ul>
这里有一段描述
</div>
<div style="margin-top: 10px">
<div>
<el-input
type="textarea"
:rows="2"
placeholder="请输入内容"
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>
<span slot="footer">
<!-- 确认 -->
......@@ -833,111 +458,7 @@
</span>
</span>
</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
title="指派给"
......@@ -966,21 +487,19 @@
<script>
import axios from '../../common/api/axios'
import StatusList from '../../components/base/status-list.vue'
import { emptyArray, getIds } from '../../utils/commonUtil'
import pagination from '../../mixins/pagination'
import Edit from './edit.vue'
import { getDictByCateCode } from '../../utils/api'
import { mapState } from 'vuex'
import ChooseTimePeriod from '../../components/base/chooseTimePeriod.vue'
/* 任务管理 */
/* 工单管理 */
import tableView from '@/common/components/base/tableView.vue'
export default {
name: 'task_center',
mixins: [pagination],
components: {
StatusList,
Edit,
ChooseTimePeriod,
tableView,
......@@ -1074,69 +593,84 @@ export default {
confimVisible: false,
defauntIndex: 0,
taskTypes: [],
treeData: [],
defaultProps: {
children: 'children',
label: 'statusName',
},
total: 0,
pageSize: 100,
currentPage: 1,
}
},
mounted() {
getDictByCateCode('taskType').then((res) => {
this.taskTypes = res.data
})
axios.get('financeTaskManagement/enums').then((res) => {
this.selectOptions = res.data
})
let { status, numbers, empId } = this.$route.query
if (status) {
this.statusCode = status
if (status === -1) {
this.assignMe = true
}
}
if (numbers) {
numbers = numbers.split(',')
if (numbers.length === 1) {
this.$set(this.searchForm, 'taskNumber', numbers[0])
}
}
this.getStatusTree()
if (empId) {
this.showEdit(null, () => {
this.$set(
this.editForm,
'taskLeader',
Number(empId),
)
})
}
const arr = [
{
statusCode: 'all',
statusName: '全部',
quantity: 35,
children: null,
},
{
statusCode: 'preprocessing',
statusName: '预处理',
quantity: 27,
children: null,
},
{
statusCode: 'to_be_dispatched',
statusName: '待分派',
quantity: 3,
children: null,
},
{
statusCode: 'to_be_confirmed',
statusName: '待确认',
quantity: 0,
children: null,
},
{
statusCode: 'processing',
statusName: '处理中',
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: {
...mapState(['deptStaff']),
tableColumns() {
const employeeId = this.employeeId
return [
{ label: '工单编号', key: 'taskNumber', width: 90 },
{
label: '',
type: 'selection',
key: '',
fixed: 'left',
},
{ label: '序号', type: 'index', key: '' },
{ label: '任务编号', key: 'taskNumber', width: 90 },
{
label: '任务模块',
label: '工单模块',
key: 'taskModuleName',
width: 110,
align: 'left',
},
{
label: '任务类型',
label: '工单类型',
key: 'type',
width: 60,
render: (item) => item.taskType?.desc,
},
{
label: '任务标题',
label: '工单标题',
key: 'taskTitle',
width: 120,
align: 'left',
......@@ -1162,132 +696,23 @@ export default {
key: 'taskCreatorName',
width: 65,
},
{
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: '任务状态',
label: '工单状态',
key: 'taskStatus',
width: 60,
render: (item) => (
<span
style={{
color: this.getStatusColor(
item.taskStatus?.name,
item?.taskStatus?.name,
),
}}
>
{item.taskStatus?.desc}
{item?.taskStatus?.desc}
</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: '创建时间',
......@@ -1301,19 +726,6 @@ export default {
align: 'left',
render: (item) => (
<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
title="详情"
class="icon-view icon-tools-view"
......@@ -1325,7 +737,7 @@ export default {
</span>
{this.statusCode !== '-1' &&
employeeId === item.taskCreator &&
item.taskStatus.name ===
item?.taskStatus?.name ===
'NOT_YET_ASSIGNED' &&
item.reasonForReject && (
<span
......@@ -1368,7 +780,7 @@ export default {
</span>
)}
{this.statusCode !== '-1' &&
item.taskStatus.name ===
item?.taskStatus?.name ===
'NOT_YET_ASSIGNED' && (
<span
class="icon-view icon-tools-view"
......@@ -1398,7 +810,7 @@ export default {
item.taskCompleteUserId.indexOf(
employeeId,
) !== -1 &&
item.taskStatus.name ===
item?.taskStatus?.name ===
'HAS_NOT_CONFIRM' && (
<span
class="icon-view icon-tools-view"
......@@ -1414,9 +826,10 @@ export default {
item.taskCompleteUserId.indexOf(
employeeId,
) !== -1 &&
(item.taskStatus.name ===
(item?.taskStatus?.name ===
'HAS_NOT_STARTED' ||
item.taskStatus.name === 'REJECTED') && (
item?.taskStatus?.name ===
'REJECTED') && (
<span
title="开始"
class="icon-view icon-tools-view"
......@@ -1432,12 +845,12 @@ export default {
item.taskCompleteUserId.indexOf(
employeeId,
) !== -1 &&
(item.taskStatus.name ===
(item?.taskStatus?.name ===
'HAS_NOT_CONFIRM' ||
item.taskStatus.name ===
item?.taskStatus?.name ===
'HAS_NOT_STARTED' ||
item.taskStatus.name === 'REJECTED' ||
item.taskStatus.name ===
item?.taskStatus?.name === 'REJECTED' ||
item?.taskStatus?.name ===
'REJECTED_ING') && (
<span
title="驳回"
......@@ -1466,9 +879,9 @@ export default {
)}
{this.statusCode !== '-1' &&
employeeId === item.taskCreator &&
(item.taskStatus.name === 'PROCESSING' ||
item.taskStatus.name === 'REJECTED' ||
item.taskStatus.name ===
(item?.taskStatus?.name === 'PROCESSING' ||
item?.taskStatus?.name === 'REJECTED' ||
item?.taskStatus?.name ===
'REJECTED_ING') && (
<span
title="终止"
......@@ -1496,8 +909,8 @@ export default {
</span>
)}
{((this.statusCode !== '-1' &&
item.taskStatus.name === 'PROCESSING') ||
item.taskStatus.name ===
item?.taskStatus?.name === 'PROCESSING') ||
item?.taskStatus?.name ===
'REJECTED_ING') && (
<span
title="完成"
......@@ -1512,7 +925,8 @@ export default {
</span>
)}
{this.statusCode !== '-1' &&
item.taskStatus.name === 'FOR_ACCEPTANCE' &&
item?.taskStatus?.name ===
'FOR_ACCEPTANCE' &&
employeeId === item.taskAcceptanceUser && (
<span
title="验收"
......@@ -1527,7 +941,7 @@ export default {
</span>
)}
{employeeId === item.taskCreator &&
item.taskStatus.name ===
item?.taskStatus?.name ===
'NOT_YET_ASSIGNED' && (
<span
title="删除"
......@@ -1541,7 +955,7 @@ export default {
)}
{this.statusCode !== '-1' &&
this.statusCode === '8' &&
item.taskStatus.name === 'COMPLETED' &&
item?.taskStatus?.name === 'COMPLETED' &&
employeeId === item.taskAcceptanceUser &&
!item.score && (
<span
......@@ -1563,21 +977,21 @@ export default {
},
planTableColumns() {
return [
{ label: '任务编号', key: 'taskNumber', width: 90 },
{ label: '工单编号', key: 'taskNumber', width: 90 },
{
label: '任务模块',
label: '工单模块',
key: 'taskModuleName',
width: 120,
align: 'left',
},
{
label: '任务类型',
label: '工单类型',
key: 'type',
width: 120,
render: (item) => item.taskType?.desc,
},
{
label: '任务标题',
label: '工单标题',
key: 'taskTitle',
width: 425,
align: 'left',
......@@ -1661,7 +1075,7 @@ export default {
),
},
{
label: '任务状态',
label: '工单状态',
key: 'taskStatus',
width: 120,
render: (item) => item.taskStatus?.desc,
......@@ -1707,8 +1121,8 @@ export default {
onClick={() => this.showDetail(item)}
></i>
</span>
{(item.taskStatus.name === 'PROCESSING' ||
item.taskStatus.name ===
{(item?.taskStatus?.name === 'PROCESSING' ||
item?.taskStatus?.name ===
'REJECTED_ING') && (
<span
title="完成"
......@@ -1722,7 +1136,7 @@ export default {
></i>
</span>
)}
{item.taskStatus.name ===
{item?.taskStatus?.name ===
'HAS_NOT_STARTED' && (
<span
title="修改计划"
......@@ -1741,6 +1155,8 @@ export default {
},
},
methods: {
sizeChange() {},
onCurrentChange() {},
getStatusColor(type) {
if (type === 'NOT_YET_ASSIGNED') {
return '#CCCCCC'
......@@ -1964,7 +1380,7 @@ export default {
})
},
startTask(item) {
if (item.taskStatus.name === 'REJECTED') {
if (item?.taskStatus?.name === 'REJECTED') {
this.$confirm('确认返工?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
......@@ -1992,7 +1408,7 @@ export default {
let res = null
try {
res = await axios.get(
'financeTaskManagement/axios.get/' + v.id,
'financeTaskManagement/get/' + v.id,
)
} catch (error) {
this.$message.warning(error.message)
......@@ -2000,15 +1416,6 @@ export default {
}
if (res) {
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
}
} else {
......@@ -2023,27 +1430,24 @@ export default {
callback && callback()
},
getlist() {
if (this.is_tab === 1) {
const { pageSize, currentPage } =
this.centerPageOptions
axios
.post('financeTaskManagement/list_page', {
pageSize,
currentPage,
taskStatus: this.statusCode,
copyMe: this.assignMe,
startTime:
this.periodTime && this.periodTime[0],
endTime: this.periodTime && this.periodTime[1],
...this.searchForm,
})
.then((res) => {
this.sourceData = res.data.records
this.centerPageOptions.total = res.data.total
})
} else {
this.planList()
}
// const { pageSize, currentPage } =
// this.centerPageOptions
// axios
// .post('financeTaskManagement/list_page', {
// pageSize,
// currentPage,
// taskStatus: this.statusCode,
// copyMe: this.assignMe,
// startTime:
// this.periodTime && this.periodTime[0],
// endTime: this.periodTime && this.periodTime[1],
// ...this.searchForm,
// })
// .then((res) => {
// this.sourceData = res.data.records
// this.centerPageOptions.total = res.data.total
// })
this.sourceData = [{}]
},
planList() {
const { pageSize, currentPage } = this.planPageOptions
......@@ -2179,16 +1583,17 @@ export default {
})
},
showDetail(item) {
axios
.get('financeTaskManagement/axios.get/' + item.id)
.then((res) => {
this.detail = res.data
this.detailVisible = true
})
this.detailVisible = true
// axios
// .get('financeTaskManagement/get/' + item.id)
// .then((res) => {
// this.detail = res.data
// this.detailVisible = true
// })
},
updatePlan(item) {
axios
.get('financeTaskManagement/axios.get/' + item.id)
.get('financeTaskManagement/get/' + item.id)
.then((res) => {
this.expectedStartDate =
res.data.expectedStartDate
......@@ -2214,6 +1619,26 @@ export default {
}
</script>
<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 {
display: flex;
border-bottom: 1px solid #ddd;
......@@ -2255,6 +1680,7 @@ export default {
}
.search_form {
margin-top: 5px;
margin-left: 10px;
}
.search_form >>> .el-form-item {
margin-bottom: 5px;
......@@ -2277,6 +1703,10 @@ export default {
max-height: 68vh;
overflow: auto;
}
.item_wrap {
background: #efefef;
padding-top: 10px;
}
.detail_list .item {
display: inline-block;
width: 30%;
......@@ -2331,5 +1761,6 @@ export default {
background: #fff;
flex: 1;
overflow: hidden;
width: 100%;
}
</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