Commit de8e2aeb by yangzhi

Merge branch 'dev'

parents a25697f9 b81f421e
...@@ -15,11 +15,11 @@ export function workConfirmed(id) { ...@@ -15,11 +15,11 @@ export function workConfirmed(id) {
) )
} }
export function workAssigned(id, user) { export function workAssigned(data) {
return axios.post('platform/platformWorkOrder/assign', { return axios.post(
id: id, 'platform/platformWorkOrder/assign',
leaders: user, data,
}) )
} }
export function startWorder(id, estimateCompleteTime) { export function startWorder(id, estimateCompleteTime) {
...@@ -35,12 +35,31 @@ export function archiveWorkOrder(id) { ...@@ -35,12 +35,31 @@ export function archiveWorkOrder(id) {
}) })
} }
// export function completeWorkOrder(id) {
// return axios.post('platform/platformWorkOrder/complete', {
// id: id,
// })
// }
export function completeWorkOrder(id) { export function completeWorkOrder(id) {
return axios.post('platform/platformWorkOrder/complete', { return axios.post(
id: id, 'platform/platformWorkOrder/intoAcceptance',
}) {
id: id,
},
)
}
export function acceptanWorkOrder(data) {
return axios.post(
'platform/platformWorkOrder/acceptance',
data,
)
}
export function PendingWorkOrder(data) {
return axios.post(
'platform/platformWorkOrder/closeForPending',
data,
)
} }
export function replyTocustomer(id, msg) { export function replyTocustomer(id, msg) {
return axios.post('platform/platformWorkOrderChat/add', { return axios.post('platform/platformWorkOrderChat/add', {
msg: msg, msg: msg,
...@@ -76,6 +95,11 @@ export function closeForPending(id) { ...@@ -76,6 +95,11 @@ export function closeForPending(id) {
}, },
) )
} }
export function close(id) {
return axios.post('platform/platformWorkOrder/close', {
id: id,
})
}
export function getInfo(id) { export function getInfo(id) {
return axios.get( return axios.get(
'platform/platformWorkOrder/get?id=' + id, 'platform/platformWorkOrder/get?id=' + id,
......
...@@ -3,7 +3,9 @@ import { mapState } from 'vuex' ...@@ -3,7 +3,9 @@ import { mapState } from 'vuex'
const globalIndex = Math.random() const globalIndex = Math.random()
function getKey() { function getKey() {
return Math.random().toString().substr(3, 10) return Math.random()
.toString()
.substr(3, 10)
} }
export default { export default {
name: 'my-table', name: 'my-table',
...@@ -86,6 +88,10 @@ export default { ...@@ -86,6 +88,10 @@ export default {
type: Function, type: Function,
default: () => {}, default: () => {},
}, },
cellStyle: {
type: Function,
default: () => {},
},
highIds: { highIds: {
// 高亮显示行 // 高亮显示行
type: Array, type: Array,
...@@ -168,8 +174,12 @@ export default { ...@@ -168,8 +174,12 @@ export default {
// visibleMethod: this.visibleMethod // visibleMethod: this.visibleMethod
} }
if (this.$props.customRightMenu?.name) { if (this.$props.customRightMenu?.name) {
const { code, name, prefixIcon, disabled } = const {
this.$props.customRightMenu code,
name,
prefixIcon,
disabled,
} = this.$props.customRightMenu
obj.body.options[0].push({ obj.body.options[0].push({
code, code,
name, name,
...@@ -310,8 +320,7 @@ export default { ...@@ -310,8 +320,7 @@ export default {
this.$emit('selectionChange', arr) this.$emit('selectionChange', arr)
} else if (this.keyCode === 'Control') { } else if (this.keyCode === 'Control') {
this.$refs.vxetable.setCheckboxRow([row], true) this.$refs.vxetable.setCheckboxRow([row], true)
const arr1 = const arr1 = this.$refs.vxetable.getCheckboxRecords()
this.$refs.vxetable.getCheckboxRecords()
this.$emit('selectionChange', arr1) this.$emit('selectionChange', arr1)
} else { } else {
this.startIndex = $rowIndex this.startIndex = $rowIndex
...@@ -560,6 +569,7 @@ export default { ...@@ -560,6 +569,7 @@ export default {
loading={this.loading} loading={this.loading}
cell-class-name={this.cellClassName} cell-class-name={this.cellClassName}
row-class-name={this.rowClassName} row-class-name={this.rowClassName}
cell-style={this.cellStyle}
onCurrent-change={this.currentChange} onCurrent-change={this.currentChange}
onCheckbox-change={this.checkboxChange} onCheckbox-change={this.checkboxChange}
onCheckbox-all={this.checkboxAll} onCheckbox-all={this.checkboxAll}
......
...@@ -18,6 +18,7 @@ import { ...@@ -18,6 +18,7 @@ import {
Option, Option,
Cascader, Cascader,
Radio, Radio,
RadioGroup,
Menu, Menu,
Submenu, Submenu,
MenuItem, MenuItem,
...@@ -48,6 +49,7 @@ const components = [ ...@@ -48,6 +49,7 @@ const components = [
Option, Option,
Cascader, Cascader,
Radio, Radio,
RadioGroup,
Menu, Menu,
MenuItem, MenuItem,
Submenu, Submenu,
......
...@@ -6,116 +6,144 @@ ...@@ -6,116 +6,144 @@
* @LastEditTime: 2020-11-18 09:25:23 * @LastEditTime: 2020-11-18 09:25:23
--> -->
<template> <template>
<div class="wraper"> <div class='wraper'>
<div class="page_left"> <div class='page_left'>
<el-tree <el-tree
:data="treeData" :data='treeData'
:props="defaultProps" :props='defaultProps'
ref="tree" ref='tree'
highlight-current highlight-current
:node-key="'statusCode'" :node-key="'statusCode'"
:expand-on-click-node="false" :expand-on-click-node='false'
default-expand-all default-expand-all
@node-click="handleNodeClick" @node-click='handleNodeClick'
> >
<span <span
class="custom-tree-node" class='custom-tree-node'
slot-scope="{ node, data }" slot-scope='{ node, data }'
> >
<span v-html="node.label"></span> <span v-html='node.label'></span>
<span>({{ data.quantity }})</span> <span>({{ data.quantity }})</span>
</span> </span>
</el-tree> </el-tree>
</div> </div>
<div class="page_right"> <div class='page_right'>
<el-form <el-form
v-show="is_tab == 1" v-show='is_tab == 1'
:model="searchForm" :model='searchForm'
size="mini" size='mini'
v-enter-submit="getlist" v-enter-submit='getlist'
:inline="true" :inline='true'
ref="form" ref='form'
class="search_form" class='search_form'
> >
<el-form-item> <el-form-item>
<el-select <el-select
v-model="searchForm.prop" v-model='searchForm.prop'
placeholder="请选择" placeholder='请选择'
clearable clearable
style="width: 100px" style='width: 100px'
> >
<el-option <el-option
label="开始时间" label='开始时间'
value="startTime" value='startTime'
></el-option> ></el-option>
<el-option <el-option
label="创建时间" label='创建时间'
value="createTime" value='createTime'
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<choose-time-period <choose-time-period
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.orderNo" v-model='searchForm.orderNo'
placeholder="请输入" placeholder='请输入'
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="工单类型"> <el-form-item label='工单标题'>
<el-input
style='width: 120px'
v-model='searchForm.title'
placeholder='请输入'
clearable
></el-input>
</el-form-item>
<el-form-item label='工单类型'>
<el-select <el-select
v-model="searchForm.orderType" v-model='searchForm.orderType'
style="width: 120px" style='width: 120px'
value-key="" value-key=''
placeholder="请选择" placeholder='请选择'
clearable clearable
filterable filterable
> >
<el-option <el-option
v-for="(type, index) in orderTypes" v-for='(type, index) in orderTypes'
:key="index" :key='index'
:label="type.value" :label='type.value'
:value="type.key" :value='type.key'
></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-select
style="width: 120px" style='width: 120px'
v-model="searchForm.title" placeholder='请选择'
placeholder="请输入"
clearable clearable
></el-input> v-model='searchForm.leaders'
>
<el-option
v-for='user in userList'
:key='user.id'
:label='user.realName'
:value='user.id'
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="负责人"> <el-form-item label='参与人'>
<el-select <el-select
style="width: 120px" style='width: 120px'
placeholder="请选择" placeholder='请选择'
clearable clearable
multiple v-model='searchForm.participator'
collapse-tags >
v-model="searchForm.leaders" <el-option
v-for='user in userList'
:key='user.id'
:label='user.realName'
:value='user.id'
></el-option>
</el-select>
</el-form-item>
<el-form-item label='验收人'>
<el-select
style='width: 120px'
placeholder='请选择'
clearable
v-model='searchForm.acceptanceUserId'
> >
<el-option <el-option
v-for="user in userList" v-for='user in userList'
:key="user.id" :key='user.id'
:label="user.realName" :label='user.realName'
:value="user.id" :value='user.id'
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="优先级"> <el-form-item label='优先级'>
<el-select <el-select
style="width: 120px" style='width: 120px'
filterable filterable
clearable clearable
v-model="searchForm.priorityStatus" v-model='searchForm.priorityStatus'
placeholder="请选择" placeholder='请选择'
> >
<el-option <el-option
v-for="( v-for="(
...@@ -127,69 +155,72 @@ ...@@ -127,69 +155,72 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="沟通状态"> <el-form-item label='沟通状态'>
<el-select <el-select
v-model="searchForm.sign" v-model='searchForm.sign'
placeholder="请选择" placeholder='请选择'
style="width: 120px" style='width: 120px'
clearable clearable
> >
<el-option <el-option
label="待回复" label='待回复'
:value="1" :value='1'
></el-option> ></el-option>
<el-option <el-option
label="已回复" label='已回复'
:value="0" :value='0'
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label> <el-form-item label>
<el-button <el-button
@click="getlist()" @click='getlist()'
type="primary" type='primary'
size="mini" size='mini'
> >
查询 查询
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item v-if="statusCode === 'PRE_HANDLING'"> <el-form-item v-if="statusCode === 'PRE_HANDLING'">
<el-button <el-button
type="success" type='success'
size="mini" size='mini'
@click="addData" @click='addData'
>新增</el-button >新增
</el-button
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="table-wrap" v-loading="loading"> <div class='table-wrap' v-loading='loading'>
<table-view <table-view
:tableColumns="tableColumns" :tableColumns='tableColumns'
:sourceData="sourceData" :sourceData='sourceData'
:cellClassName="cellClassName" :cellClassName='cellClassName'
:cellStyle='cellStyle'
@sortChange='sortChange'
> >
</table-view> </table-view>
</div> </div>
<div class="pagination"> <div class='pagination'>
<el-pagination <el-pagination
layout="sizes, total, prev, pager, next, jumper" layout='sizes, total, prev, pager, next, jumper'
background background
:total="centerPageOptions.total" :total='centerPageOptions.total'
:page-size="centerPageOptions.pageSize" :page-size='centerPageOptions.pageSize'
:current-page="centerPageOptions.currentPage" :current-page='centerPageOptions.currentPage'
@size-change="sizeChange" @size-change='sizeChange'
@current-change="onCurrentChange" @current-change='onCurrentChange'
> >
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<el-dialog <el-dialog
title="详情" title='详情'
:close-on-click-modal="false" :close-on-click-modal='false'
:visible.sync="detailVisible" :visible.sync='detailVisible'
width="1100px" width='1100px'
@close="getlist()" @close='getlist()'
> >
<!-- <div class="step-bar"> <!-- <div class="step-bar">
step-pass 已经完成,step-active当前步骤 step-pass 已经完成,step-active当前步骤
...@@ -241,37 +272,37 @@ ...@@ -241,37 +272,37 @@
<span>已归档</span> <span>已归档</span>
</div> </div>
</div> --> </div> -->
<div class="content" v-loading="detailLoading"> <div class='content' v-loading='detailLoading'>
<div class="detail_list"> <div class='detail_list'>
<div class="item_wrap"> <div class='item_wrap'>
<p class="item" style="width: 100%"> <p class='item' style='width: 100%'>
<span class="label">工单标题</span> <span class='label'>工单标题</span>
<span class="value" style="width: 732px">{{ <span class='value' style='width: 732px'>{{
detail.title detail.title
}}</span> }}</span>
</p> </p>
<p class="item"> <p class='item'>
<span class="label">工单编码</span> <span class='label'>工单编码</span>
<span class="value">{{ <span class='value'>{{
detail.orderNo detail.orderNo
}}</span> }}</span>
</p> </p>
<p class="item"> <p class='item'>
<span class="label">工单类型</span> <span class='label'>工单类型</span>
<span class="value"> <span class='value'>
{{ detail.orderTypeTxt }} {{ detail.orderTypeTxt }}
</span> </span>
</p> </p>
<p class="item"> <p class='item'>
<span class="label">工单状态</span> <span class='label'>工单状态</span>
<span class="value"> <span class='value'>
{{ detail.orderStatusTxt }} {{ detail.orderStatusTxt }}
</span> </span>
</p> </p>
<p class="item"> <p class='item'>
<span class="label">优先级</span> <span class='label'>优先级</span>
<span class="value"> <span class='value'>
{{ {{
handlePriorityStatus( handlePriorityStatus(
detail.priorityStatus, detail.priorityStatus,
...@@ -280,10 +311,10 @@ ...@@ -280,10 +311,10 @@
</span> </span>
</p> </p>
<p <p
class="item" class='item'
style="width: 100%; display: flex" style='width: 100%; display: flex'
> >
<span class="label">工单内容</span> <span class='label'>工单内容</span>
<span <span
style=" style="
flex: 1; flex: 1;
...@@ -295,10 +326,10 @@ ...@@ -295,10 +326,10 @@
></span> ></span>
</p> </p>
<p <p
class="item" class='item'
style="width: 100%; display: flex" style='width: 100%; display: flex'
> >
<span class="label">备注</span> <span class='label'>备注</span>
<span <span
style=" style="
flex: 1; flex: 1;
...@@ -311,52 +342,52 @@ ...@@ -311,52 +342,52 @@
</p> </p>
</div> </div>
<div <div
style="padding: 5px; overflow: auto" style='padding: 5px; overflow: auto'
v-html="detail.taskContent" v-html='detail.taskContent'
@click="fullScreenDisplay" @click='fullScreenDisplay'
></div> ></div>
</div> </div>
<div class="record"> <div class='record'>
<div class="title">沟通记录</div> <div class='title'>沟通记录</div>
<ul <ul
class="chat_content" class='chat_content'
v-if="chatRecord.length > 0" v-if='chatRecord.length > 0'
> >
<li <li
v-for="(item, index) in chatRecord" v-for='(item, index) in chatRecord'
:key="index" :key='index'
class="chat_item" class='chat_item'
:class="{ chat_right: item.type === 2 }" :class='{ chat_right: item.type === 2 }'
> >
<div class="chat_warp" v-if="item.type === 2"> <div class='chat_warp' v-if='item.type === 2'>
<div class="chat_user"> <div class='chat_user'>
<div class="chat_user_time"> <div class='chat_user_time'>
{{ {{
item.createTime item.createTime
}}&nbsp;&nbsp;&nbsp;&nbsp;客服 }}&nbsp;&nbsp;&nbsp;&nbsp;客服
</div> </div>
<div class="chat_text"> <div class='chat_text'>
{{ item.msg }} {{ item.msg }}
</div> </div>
</div> </div>
<div class="chat_icon"> <div class='chat_icon'>
<img <img
width="100%" width='100%'
src="http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png" src='http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png'
alt="" alt=''
/> />
</div> </div>
</div> </div>
<div v-else class="chat_warp"> <div v-else class='chat_warp'>
<div class="chat_icon"> <div class='chat_icon'>
<img <img
width="100%" width='100%'
src="http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png" src='http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png'
alt="" alt=''
/> />
</div> </div>
<div class="chat_user"> <div class='chat_user'>
<div class="chat_user_time"> <div class='chat_user_time'>
{{ {{
item.sendUserName item.sendUserName
}}:&nbsp;&nbsp;&nbsp;&nbsp;{{ }}:&nbsp;&nbsp;&nbsp;&nbsp;{{
...@@ -364,118 +395,291 @@ ...@@ -364,118 +395,291 @@
}} }}
</div> </div>
<div class="chat_text"> <div class='chat_text'>
{{ item.msg }} {{ item.msg }}
</div> </div>
</div> </div>
</div> </div>
</li> </li>
</ul> </ul>
<div class="empty-data" v-else>暂无数据</div> <div class='empty-data' v-else>暂无数据</div>
</div> </div>
</div> </div>
<div style="margin-top: 10px"> <div style='margin-top: 10px'>
<div> <div>
<el-input <el-input
type="textarea" type='textarea'
:rows="4" :rows='4'
maxlength="1000" maxlength='1000'
placeholder="请输入内容" placeholder='请输入内容'
v-model="textarea" v-model='textarea'
> >
</el-input> </el-input>
</div> </div>
<div style="margin-top: 10px; text-align: right"> <div style='margin-top: 10px; text-align: right'>
<el-button
size='mini'
type='primary'
@click='reply'
>回复
</el-button
>
<el-button <el-button
size="mini" size='mini'
type="primary" type='success'
@click="reply" v-if="statusCode === 'PRE_HANDLING'"
>回复</el-button @click='confirm'
>受理
</el-button
> >
<el-button <el-button
size="mini" size='mini'
type="success" type='danger'
v-if="statusCode === 'PRE_HANDLING'" v-if="statusCode === 'PRE_HANDLING'"
@click="confirm" @click='closeForPendingDialog'
>受理</el-button >不受理
</el-button
> >
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<edit <edit
:editDialog.sync="editDialog" :editDialog.sync='editDialog'
@onSubmit="onSubmit" @onSubmit='onSubmit'
@onChangeModule="onChangeModule" @onChangeModule='onChangeModule'
:editForm="editForm" :editForm='editForm'
:orderTypes="orderTypes" :orderTypes='orderTypes'
:isEdit="isEdit" :isEdit='isEdit'
:editFlag="editFlag" :editFlag='editFlag'
ref="edit" ref='edit'
></edit> ></edit>
<!-- 指派 --> <!-- 指派 -->
<el-dialog <el-dialog
title="指派给" title='指派给'
:close-on-click-modal="false" :close-on-click-modal='false'
:visible.sync="assignVisible" :visible.sync='assignVisible'
width="300px" width='900px'
> >
<el-select <el-form
style="width: 100%" :inline='true'
size="small" size='mini'
v-model="user" :model='assignForm'
multiple ref='assignForm'
:rules='assignFormRules'
label-width='130px'
> >
<el-option <el-form-item label='负责人' prop='leaders'>
v-for="user in userList" <el-select
:key="user.id" style='width: 100%'
:label="user.realName" size='small'
:value="user.id" v-model='assignForm.leaders'
></el-option> >
</el-select> <el-option
<span slot="footer"> v-for='user in userList'
:key='user.id'
:label='user.realName'
:value='user.id'
></el-option>
</el-select>
</el-form-item>
<el-form-item label='参与人' prop='participator'>
<el-select
style='width: 100%'
size='small'
v-model='assignForm.participator'
multiple
>
<el-option
v-for='user in userList'
:key='user.id'
:label='user.realName'
:value='user.id'
></el-option>
</el-select>
</el-form-item>
<el-form-item
label='验收人'
prop='acceptanceUserId'
>
<el-select
style='width: 100%'
size='small'
v-model='assignForm.acceptanceUserId'
>
<el-option
v-for='user in userList'
:key='user.id'
:label='user.realName'
:value='user.id'
></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot='footer'>
<el-button <el-button
size="mini" size='mini'
@click="assignVisible = false" @click='assignVisible = false'
>取消</el-button >取消</el-button
> >
<el-button <el-button
size="mini" size='mini'
type="primary" type='primary'
@click="submitAssign" @click='submitAssign'
>确定</el-button >确定</el-button
> >
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
title="预计完成时间" title='预计完成时间'
:visible.sync="completeVisible" :visible.sync='completeVisible'
width="500px" width='500px'
:close-on-click-modal="false" :close-on-click-modal='false'
> >
<el-form size="mini"> <el-form size='mini'>
<el-form-item label="预计完成时间"> <el-form-item label='预计完成时间'>
<el-date-picker <el-date-picker
style="width: 100%" style='width: 100%'
v-model="estimateCompleteTime" v-model='estimateCompleteTime'
value-format="yyyy-MM-dd HH:mm:ss" value-format='yyyy-MM-dd HH:mm:ss'
type="datetime" type='datetime'
default-time="23:59:59" default-time='23:59:59'
placeholder="选择日期" placeholder='选择日期'
:picker-options='pickerOptions'
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer"> <span slot='footer'>
<el-button
size='small'
@click='completeVisible = false'
>取消</el-button
>
<el-button
size='small'
type='primary'
@click='submitTime'
>确认</el-button
>
</span>
</el-dialog>
<!-- 指派 -->
<el-dialog
title='验收'
:close-on-click-modal='false'
:visible.sync='acceptVisible'
width='800px'
>
<el-form
:inline='true'
size='mini'
:model='acceptForm'
ref='acceptForm'
:rules='acceptFormRules'
label-width='110px'
>
<el-form-item
label='验收结果'
prop='acceptanceResult'
>
<el-radio-group
v-model='acceptForm.acceptanceResult'
size='small'
style='width: 100%'
>
<el-radio
:label='item.value'
v-for='(item, index) in acceptanceResultList'
:key='index'
>{{ item.label }}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
label='验收意见'
prop='acceptanceContent'
:rules="[
{
required:
acceptForm.acceptanceResult == 'failure'
? true
: false,
message: '请填写',
trigger: 'blur',
},
]"
>
<el-input
type='textarea'
:autosize='{ minRows: 4 }'
style='width:400px'
placeholder='请输入内容'
v-model='acceptForm.acceptanceContent'
>
</el-input>
</el-form-item>
</el-form>
<span slot='footer'>
<el-button
size='mini'
@click='acceptVisible = false'
>取消</el-button
>
<el-button
size='mini'
type='primary'
@click='submitAccept'
>确定</el-button
>
</span>
</el-dialog>
<!-- 不受理 -->
<el-dialog
title='不受理'
:close-on-click-modal='false'
:visible.sync='pendingVisible'
width='800px'
>
<el-form
:inline='true'
size='mini'
:model='pendingForm'
ref='pendingForm'
label-width='110px'
>
<el-form-item
label='原因'
prop='closeReason'
:rules="[
{
required: true,
message: '请填写',
trigger: 'blur',
},
]"
>
<el-input
type='textarea'
:autosize='{ minRows: 4 }'
style='width:400px'
placeholder='请输入'
v-model='pendingForm.closeReason'
>
</el-input>
</el-form-item>
</el-form>
<span slot='footer'>
<el-button <el-button
size="small" size='mini'
@click="completeVisible = false" @click='pendingVisible = false'
>取消</el-button >取消</el-button
> >
<el-button <el-button
size="small" size='mini'
type="primary" type='primary'
@click="submitTime" @click='submitPending'
>确认</el-button >确定</el-button
> >
</span> </span>
</el-dialog> </el-dialog>
...@@ -496,11 +700,14 @@ import { ...@@ -496,11 +700,14 @@ import {
archiveWorkOrder, archiveWorkOrder,
completeWorkOrder, completeWorkOrder,
replyTocustomer, replyTocustomer,
acceptanWorkOrder,
PendingWorkOrder,
getOrderType, getOrderType,
resume, resume,
pause, pause,
reject, reject,
closeForPending, closeForPending,
close,
getInfo, getInfo,
} from '@/common/api/order' } from '@/common/api/order'
import { getSystemUserList } from '@/common/api/system' import { getSystemUserList } from '@/common/api/system'
...@@ -515,6 +722,8 @@ import pauseWork from '@/assets/work/pause.png' ...@@ -515,6 +722,8 @@ import pauseWork from '@/assets/work/pause.png'
import resumetWork from '@/assets/work/resume.png' import resumetWork from '@/assets/work/resume.png'
import closetWork from '@/assets/work/close.png' import closetWork from '@/assets/work/close.png'
import updateWork from '@/assets/work/update.png' import updateWork from '@/assets/work/update.png'
import anceingWork from '@/assets/work/anceing.png'
export default { export default {
name: 'task_center', name: 'task_center',
mixins: [pagination], mixins: [pagination],
...@@ -526,6 +735,34 @@ export default { ...@@ -526,6 +735,34 @@ export default {
data() { data() {
const userInfo = localStorage.getItem('user') const userInfo = localStorage.getItem('user')
return { return {
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now()
},
},
assignFormRules: {
leaders: [
{
required: true,
message: '请选择负责人',
trigger: 'blur',
},
],
fromUser: [
{
required: true,
message: '请选择参与人',
trigger: 'blur',
},
],
acceptanceUserId: [
{
required: true,
message: '请选择验收人',
trigger: 'blur',
},
],
},
priorityStatusList: [ priorityStatusList: [
{ {
value: 1, value: 1,
...@@ -542,7 +779,7 @@ export default { ...@@ -542,7 +779,7 @@ export default {
], ],
loading: false, loading: false,
detailLoading: false, detailLoading: false,
user: [], assignForm: {},
textarea: '', textarea: '',
centerPageOptions: { centerPageOptions: {
pageSize: 100, pageSize: 100,
...@@ -558,7 +795,6 @@ export default { ...@@ -558,7 +795,6 @@ export default {
statusCode: 'PRE_HANDLING', statusCode: 'PRE_HANDLING',
searchForm: { searchForm: {
timeProp: 'create_time', timeProp: 'create_time',
leaders: [],
prop: 'createTime', prop: 'createTime',
}, },
isEdit: false, isEdit: false,
...@@ -582,6 +818,30 @@ export default { ...@@ -582,6 +818,30 @@ export default {
editDialog: false, editDialog: false,
completeVisible: false, completeVisible: false,
estimateCompleteTime: '', estimateCompleteTime: '',
currentItem: null,
acceptVisible: false,
acceptFormRules: {
acceptanceResult: [
{
required: true,
message: '请选择',
trigger: 'blur',
},
],
},
acceptForm: {},
acceptanceResultList: [
{
value: 'success',
label: '验收通过',
},
{
value: 'failure',
label: '验收不通过',
},
],
pendingVisible: false,
pendingForm: {},
} }
}, },
mounted() { mounted() {
...@@ -608,14 +868,18 @@ export default { ...@@ -608,14 +868,18 @@ export default {
{item.sign === 1 && {item.sign === 1 &&
item.orderStatus === 'PRE_HANDLING' && ( item.orderStatus === 'PRE_HANDLING' && (
<i <i
class="el-icon-info" class='el-icon-info'
title="待回复" title='待回复'
></i> ></i>
)} )}
</span> </span>
), ),
}, },
{ label: '工单编号', key: 'orderNo', width: 110 }, {
label: '工单编号',
key: 'orderNo',
width: 110,
},
{ {
label: '工单模块', label: '工单模块',
key: 'moduleName', key: 'moduleName',
...@@ -633,14 +897,55 @@ export default { ...@@ -633,14 +897,55 @@ export default {
width: 80, width: 80,
}, },
{ {
label: '验收意见', label: '优先级',
key: 'evaluations', key: 'priorityStatus',
width: 140, width: 120,
render: item => {
if (item.orderStatus === 'TO_BE_ASSIGN') {
item.priorityStatus = item.priorityStatus
? String(item.priorityStatus)
: ''
return (
<div class='priorityStatus-select'>
<el-select
v-model={item.priorityStatus}
placeholder=''
onChange={v => this.setStatus(item, v)}
>
<el-option
label=''
value=''
></el-option>
<el-option
label='低'
value='1'
></el-option>
<el-option
label='中'
value='2'
></el-option>
<el-option
label='高'
value='3'
></el-option>
</el-select>
</div>
)
} else {
if (item.priorityStatus) {
return this.priorityStatusList.find(v => {
return v.value === item.priorityStatus
}).name
} else {
return ''
}
}
},
}, },
{ {
label: '来源', label: '来源',
key: 'fromBusiness', key: 'fromBusiness',
width: 140, width: 80,
}, },
{ {
label: '创建人', label: '创建人',
...@@ -653,34 +958,24 @@ export default { ...@@ -653,34 +958,24 @@ export default {
width: 80, width: 80,
}, },
{ {
label: '优先级', label: '参与人',
key: 'priorityStatus', key: 'participatorName',
width: 80, width: 80,
render: (item) => {
if (item.priorityStatus) {
return this.priorityStatusList.find((v) => {
return v.value === item.priorityStatus
}).name
} else {
return ''
}
},
}, },
{ {
label: '描述', label: '验收人',
key: 'content', key: 'acceptanceUserName',
render: (item) => { width: 80,
return ( },
<div {
class="description" label: '验收意见',
domPropsInnerHTML={item.content} key: 'acceptanceContent',
></div> width: 80,
)
},
}, },
{ {
label: '创建时间', label: '创建时间',
key: 'createTime', key: 'createTime',
sortable: true,
width: 130, width: 130,
}, },
{ {
...@@ -699,65 +994,80 @@ export default { ...@@ -699,65 +994,80 @@ export default {
width: 130, width: 130,
}, },
{ {
label: '验收时间',
key: 'acceptanceTime',
width: 130,
},
{
label: '完成时间', label: '完成时间',
key: 'completeTime', key: 'completeTime',
width: 130, width: 130,
}, },
{ {
label: '用户评价',
key: 'evaluations',
width: 140,
},
{
label: '不受理原因',
key: 'closeReason',
width: 130,
},
{
label: '操作', label: '操作',
fixed: 'right', fixed: 'right',
width: 120, width: 120,
align: 'center', align: 'center',
render: (item) => ( render: (item) => (
<span> <span>
{item.orderStatus === 'PRE_HANDLING' && {(item.orderStatus === 'PRE_HANDLING' ||
Number(item.fromUser) === item.orderStatus === 'TO_BE_ASSIGN' ||
this.userInfo.id && ( item.orderStatus === 'TO_BE_CONFIRMED') && (
<span title="修改" class="icon-view"> <span title='修改' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={updateWork} src={updateWork}
onClick={() => this.update(item)} onClick={() => this.update(item)}
/> />
</span> </span>
)} )}
{ {
<span <span
title="详情" title='详情'
class="icon-view icon-tools-view" class='icon-view icon-tools-view'
> >
<i <i
class="el-icon-tickets" class='el-icon-tickets'
onClick={() => this.showDetail(item)} onClick={() => this.showDetail(item)}
></i> ></i>
</span> </span>
} }
{item.orderStatus === 'TO_BE_ASSIGN' && ( {item.orderStatus === 'TO_BE_ASSIGN' && (
<span title="指派给" class="icon-view"> <span title='指派给' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={assignWork} src={assignWork}
onClick={() => this.showAssign(item)} onClick={() => this.showAssign(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'IN_PROGRESS' && ( {item.orderStatus === 'IN_PROGRESS' && (
<span title="暂停" class="icon-view"> <span title='暂停' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={pauseWork} src={pauseWork}
onClick={() => this.pause(item)} onClick={() => this.pause(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'PAUSEING' && ( {item.orderStatus === 'PAUSEING' && (
<span title="恢复" class="icon-view"> <span title='恢复' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={resumetWork} src={resumetWork}
onClick={() => this.resume(item)} onClick={() => this.resume(item)}
/> />
...@@ -771,8 +1081,8 @@ export default { ...@@ -771,8 +1081,8 @@ export default {
.includes(this.userInfo.id) && ( .includes(this.userInfo.id) && (
<span title="开始" class="icon-view"> <span title="开始" class="icon-view">
<img <img
width="24" width='24'
height="24" height='24'
src={startWork} src={startWork}
onClick={() => onClick={() =>
this.startWorkOrder(item) this.startWorkOrder(item)
...@@ -781,30 +1091,41 @@ export default { ...@@ -781,30 +1091,41 @@ export default {
</span> </span>
)} )}
{item.orderStatus === 'CLOSED' && ( {item.orderStatus === 'CLOSED' && (
<span title="归档" class="icon-view"> <span title='归档' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={archiveWork} src={archiveWork}
onClick={() => this.archive(item)} onClick={() => this.archive(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'IN_PROGRESS' && ( {item.orderStatus === 'IN_PROGRESS' && (
<span title="完成" class="icon-view"> <span title='处理完成' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={completeWork} src={completeWork}
onClick={() => this.complete(item)} onClick={() => this.complete(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'PRE_HANDLING' && ( {item.orderStatus === 'ACCEPTANCEING' && Number(item.acceptanceUserId) ===
<span title="关闭" class="icon-view"> this.userInfo.id && (
<span title='已完成' class='icon-view'>
<img
width='24'
height='24'
src={anceingWork}
onClick={() => this.anceing(item)}
/>
</span>
)}
{item.orderStatus === 'IN_COMPLETE' && (
<span title='关闭' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={closetWork} src={closetWork}
onClick={() => this.close(item)} onClick={() => this.close(item)}
/> />
...@@ -814,10 +1135,10 @@ export default { ...@@ -814,10 +1135,10 @@ export default {
item.orderStatus === 'TO_BE_CONFIRMED' || item.orderStatus === 'TO_BE_CONFIRMED' ||
item.orderStatus === 'IN_PROGRESS' || item.orderStatus === 'IN_PROGRESS' ||
item.orderStatus === 'IN_COMPLETE') && ( item.orderStatus === 'IN_COMPLETE') && (
<span title="驳回" class="icon-view"> <span title='驳回' class='icon-view'>
<img <img
width="24" width='24'
height="24" height='24'
src={rejectWork} src={rejectWork}
onClick={() => this.reject(item)} onClick={() => this.reject(item)}
/> />
...@@ -830,10 +1151,38 @@ export default { ...@@ -830,10 +1151,38 @@ export default {
}, },
}, },
methods: { methods: {
// 排序
sortChange(column) {
if (column.order === 'asc') {
this.searchForm.createTimeSort = 'asc'
} else {
this.searchForm.createTimeSort = 'desc'
}
this.getlist()
},
/*
设置优先级
*/
setStatus(data, i) {
const {
id,
priorityStatus,
} = data
axios
.post('platform/platformWorkOrder/updatePriority', {
id,
priorityStatus: Number(priorityStatus),
})
.then(res => {
if (res.code === 200) {
this.$message.success(res.message)
}
})
},
handlePriorityStatus(data) { handlePriorityStatus(data) {
if (data) { if (data) {
return this.priorityStatusList.find((v) => { return this.priorityStatusList.find(v => {
return v.value === data return v.value === Number(data)
}).name }).name
} else { } else {
return '' return ''
...@@ -846,7 +1195,7 @@ export default { ...@@ -846,7 +1195,7 @@ export default {
this.isEdit = false this.isEdit = false
this.editDialog = true this.editDialog = true
this.$refs.editForm && this.$refs.editForm &&
this.$refs.editForm.resetFields() this.$refs.editForm.resetFields()
}, },
update(v) { update(v) {
getInfo(v.id).then((res) => { getInfo(v.id).then((res) => {
...@@ -861,7 +1210,7 @@ export default { ...@@ -861,7 +1210,7 @@ export default {
this.isEdit = true this.isEdit = true
this.editDialog = true this.editDialog = true
this.$refs.editForm && this.$refs.editForm &&
this.$refs.editForm.resetFields() this.$refs.editForm.resetFields()
} }
}) })
}, },
...@@ -873,7 +1222,10 @@ export default { ...@@ -873,7 +1222,10 @@ export default {
this.getlist() this.getlist()
this.getOrderTree() this.getOrderTree()
}, },
cellClassName({ row, columnIndex }) { cellClassName({
row,
columnIndex,
}) {
if ( if (
(row.orderStatus === 'TO_BE_ASSIGN' || (row.orderStatus === 'TO_BE_ASSIGN' ||
row.orderStatus === 'TO_BE_CONFIRMED' || row.orderStatus === 'TO_BE_CONFIRMED' ||
...@@ -900,6 +1252,27 @@ export default { ...@@ -900,6 +1252,27 @@ export default {
return 'order-grey' return 'order-grey'
} }
}, },
cellStyle({
row,
columnIndex,
}) {
if (
(row.orderStatus === 'PRE_HANDLING' ||
row.orderStatus === 'TO_BE_ASSIGN' ||
row.orderStatus === 'TO_BE_CONFIRMED' ||
row.orderStatus === 'IN_PROGRESS') &&
columnIndex === 15
) {
if (row.columnRenderColor) {
return {
backgroundColor: row.columnRenderColor,
color: 'white',
}
} else {
return { backgroundColor: 'white' }
}
}
},
async getOrderTypes() { async getOrderTypes() {
try { try {
const res = await getOrderType() const res = await getOrderType()
...@@ -971,42 +1344,111 @@ export default { ...@@ -971,42 +1344,111 @@ export default {
this.currentRowId = item.id this.currentRowId = item.id
this.taskLeader = '' this.taskLeader = ''
this.assignVisible = true this.assignVisible = true
this.user = '' this.assignForm = JSON.parse(
JSON.stringify({
leaders: '',
participator: [],
acceptanceUserId: '',
}),
)
}, },
// 开始工单 // 开始工单
async startWorkOrder(item) { async startWorkOrder(item) {
this.estimateCompleteTime = '' this.estimateCompleteTime = ''
this.completeVisible = true this.completeVisible = true
this.rowId = item.id this.rowId = item.id
this.currentItem = item
}, },
// 提交分派 closeForPendingDialog() {
async submitAssign() { this.pendingVisible = true
if (this.user.length === 0) { if (this.$refs.pendingForm) {
return this.$message.warning('请选择负责人') this.$refs.pendingForm.resetFields()
} }
const user = this.user.join(',') },
try { submitPending() {
const res = await workAssigned( this.$refs.pendingForm.validate(v => {
this.currentRowId, if (v) {
user, try {
) PendingWorkOrder({
if (res.code === 200) { id: this.detail.id,
this.assignVisible = false ...this.pendingForm,
this.getOrderTree() }).then(res => {
this.getlist() if (res.code === 200) {
this.pendingVisible = false
this.detailVisible = false
this.getOrderTree()
this.getlist()
}
})
} catch (error) {
}
} }
} catch (e) { })
console.error(e) },
// 待验收完成
anceing(item) {
this.acceptVisible = true
this.currentItem = item
if (this.$refs.acceptForm) {
this.$refs.acceptForm.resetFields()
} }
}, },
// 完成验收
submitAccept() {
this.$refs.acceptForm.validate(v => {
if (v) {
try {
acceptanWorkOrder({
id: this.currentItem.id,
...this.acceptForm,
}).then(res => {
if (res.code === 200) {
this.acceptVisible = false
this.getOrderTree()
this.getlist()
}
})
} catch (error) {
}
}
})
},
// 提交分派
async submitAssign() {
this.$refs.assignForm.validate(v => {
if (v) {
try {
workAssigned({
id: this.currentRowId,
...this.assignForm,
participator: this.assignForm.participator.join(
',',
),
}).then(res => {
if (res.code === 200) {
this.assignVisible = false
this.getOrderTree()
this.getlist()
}
})
} catch (e) {
console.error(e)
}
}
})
},
handleNodeClick(data) { handleNodeClick(data) {
if (data.statusCode === 'IN_PROGRESS') { if (data.statusCode === 'IN_PROGRESS') {
this.$set(this.searchForm, 'leaders', [ this.$set(
this.searchForm,
'leaders',
this.userInfo.id, this.userInfo.id,
]) )
} this.$set(
if (data.statusCode !== 'IN_PROGRESS') { this.searchForm,
this.searchForm.leaders = [] 'participator',
this.userInfo.id,
)
} }
this.statusCode = data.statusCode this.statusCode = data.statusCode
this.getlist() this.getlist()
...@@ -1023,9 +1465,6 @@ export default { ...@@ -1023,9 +1465,6 @@ export default {
startTime: this.periodTime && this.periodTime[0], startTime: this.periodTime && this.periodTime[0],
endTime: this.periodTime && this.periodTime[1], endTime: this.periodTime && this.periodTime[1],
...this.searchForm, ...this.searchForm,
leaders:
this.searchForm.leaders &&
this.searchForm.leaders.join(','),
}) })
.then((res) => { .then((res) => {
if (res.code !== 200) return if (res.code !== 200) return
...@@ -1083,15 +1522,26 @@ export default { ...@@ -1083,15 +1522,26 @@ export default {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}).then(() => { }).then(() => {
closeForPending(v.id).then((res) => { if (this.statusCode === 'IN_COMPLETE') {
if (res.code === 200) { close(v.id).then(res => {
this.$message.success('已关闭') if (res.code === 200) {
this.getlist() this.$message.success('已关闭')
this.getOrderTree() this.getlist()
} this.getOrderTree()
}) }
})
} else {
closeForPending(v.id).then(res => {
if (res.code === 200) {
this.$message.success('已关闭')
this.getlist()
this.getOrderTree()
}
})
}
}) })
} catch {} } catch {
}
}, },
async resume(v) { async resume(v) {
try { try {
...@@ -1132,7 +1582,8 @@ export default { ...@@ -1132,7 +1582,8 @@ export default {
} }
}) })
}) })
} catch {} } catch {
}
}, },
async submitTime() { async submitTime() {
if (!this.estimateCompleteTime) { if (!this.estimateCompleteTime) {
...@@ -1174,17 +1625,24 @@ export default { ...@@ -1174,17 +1625,24 @@ export default {
}, },
async showDetail(item) { async showDetail(item) {
this.currentRowId = item.id this.currentRowId = item.id
this.detail = item await axios.get(`platform/platformWorkOrder/get?id=${item.id}`,
this.detailLoading = true ).then(res => {
axios if (res.code === 200) {
this.detail = res.data
} else {
this.detailLoading = false
}
})
await axios
.get( .get(
`platform/platformWorkOrderChat/getByWorkOrder?workOrderId=${item.id}`, `platform/platformWorkOrderChat/getByWorkOrder?workOrderId=${item.id}`,
) )
.then((res) => { .then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.chatRecord = res.data this.chatRecord = res.data
} else {
this.detailLoading = false
} }
this.detailLoading = false
}) })
this.detailVisible = true this.detailVisible = true
this.textarea = '' this.textarea = ''
...@@ -1192,7 +1650,7 @@ export default { ...@@ -1192,7 +1650,7 @@ export default {
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang='scss' scoped>
.wraper { .wraper {
height: 100%; height: 100%;
display: flex; display: flex;
...@@ -1223,6 +1681,7 @@ export default { ...@@ -1223,6 +1681,7 @@ export default {
background-color: #909399 !important; background-color: #909399 !important;
color: #fff; color: #fff;
} }
.el-icon-info::before { .el-icon-info::before {
position: absolute; position: absolute;
right: -13px; right: -13px;
...@@ -1231,17 +1690,21 @@ export default { ...@@ -1231,17 +1690,21 @@ export default {
color: #f56c6c; color: #f56c6c;
cursor: pointer; cursor: pointer;
} }
.el-tree-node { .el-tree-node {
font-size: 14px; font-size: 14px;
} }
.high-row { .high-row {
background-color: #1565c0; background-color: #1565c0;
} }
.el-tree-node__content { .el-tree-node__content {
height: 32px; height: 32px;
padding: 4px 0px; padding: 4px 0px;
padding-left: 10px !important; padding-left: 10px !important;
} }
.el-tree-node__children .el-tree-node.is-current { .el-tree-node__children .el-tree-node.is-current {
.el-tree-node__content { .el-tree-node__content {
position: relative; position: relative;
...@@ -1262,6 +1725,7 @@ export default { ...@@ -1262,6 +1725,7 @@ export default {
} }
} }
} }
.page_left { .page_left {
width: 200px; width: 200px;
min-width: 200px; min-width: 200px;
...@@ -1269,6 +1733,7 @@ export default { ...@@ -1269,6 +1733,7 @@ export default {
border-radius: 5px; border-radius: 5px;
margin-right: 10px; margin-right: 10px;
} }
.page_right { .page_right {
flex: 1; flex: 1;
display: flex; display: flex;
...@@ -1277,27 +1742,33 @@ export default { ...@@ -1277,27 +1742,33 @@ export default {
border-radius: 5px; border-radius: 5px;
overflow: hidden; overflow: hidden;
} }
.search_form { .search_form {
margin-top: 5px; margin-top: 5px;
margin-left: 10px; margin-left: 10px;
} }
.search_form >>> .el-form-item {
.search_form > > > .el-form-item {
margin-bottom: 5px; margin-bottom: 5px;
} }
.content { .content {
max-height: 68vh; max-height: 68vh;
overflow: auto; overflow: auto;
} }
.detail_list { .detail_list {
padding-top: 10px; padding-top: 10px;
background-color: #efefef; background-color: #efefef;
} }
.detail_list .item { .detail_list .item {
display: inline-block; display: inline-block;
width: 30%; width: 30%;
line-height: 24px; line-height: 24px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.detail_list .item .label { .detail_list .item .label {
display: inline-block; display: inline-block;
color: #999; color: #999;
...@@ -1305,13 +1776,16 @@ export default { ...@@ -1305,13 +1776,16 @@ export default {
text-align: right; text-align: right;
margin-right: 5px; margin-right: 5px;
} }
.detail_list .item .value { .detail_list .item .value {
color: #222; color: #222;
} }
.item_wrap { .item_wrap {
background: #efefef; background: #efefef;
padding-top: 10px; padding-top: 10px;
} }
.detail_list .item .label { .detail_list .item .label {
display: inline-block; display: inline-block;
color: #999; color: #999;
...@@ -1319,15 +1793,19 @@ export default { ...@@ -1319,15 +1793,19 @@ export default {
text-align: right; text-align: right;
margin-right: 5px; margin-right: 5px;
} }
.detail_list .item .value { .detail_list .item .value {
color: #222; color: #222;
} }
.form_item::v-deep .el-radio { .form_item::v-deep .el-radio {
margin-right: 13px; margin-right: 13px;
} }
.form_item::v-deep .el-radio svg { .form_item::v-deep .el-radio svg {
vertical-align: text-bottom; vertical-align: text-bottom;
} }
.detail_btn { .detail_btn {
display: inline-block; display: inline-block;
font-size: 14px; font-size: 14px;
...@@ -1338,9 +1816,11 @@ export default { ...@@ -1338,9 +1816,11 @@ export default {
cursor: pointer; cursor: pointer;
vertical-align: bottom; vertical-align: bottom;
} }
.detail_btn + .detail_btn { .detail_btn + .detail_btn {
margin-left: 10px; margin-left: 10px;
} }
.table-wrap { .table-wrap {
background: #fff; background: #fff;
flex: 1; flex: 1;
...@@ -1352,6 +1832,7 @@ export default { ...@@ -1352,6 +1832,7 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
display: flex; display: flex;
} }
.step { .step {
position: relative; position: relative;
flex: 1; flex: 1;
...@@ -1383,6 +1864,7 @@ export default { ...@@ -1383,6 +1864,7 @@ export default {
border-left: 16px solid transparent !important; border-left: 16px solid transparent !important;
border-bottom: 16px solid #cacaca; border-bottom: 16px solid #cacaca;
} }
.step-after:after { .step-after:after {
width: 22px; width: 22px;
height: 32px; height: 32px;
...@@ -1393,6 +1875,7 @@ export default { ...@@ -1393,6 +1875,7 @@ export default {
border-bottom: 16px solid transparent !important; border-bottom: 16px solid transparent !important;
background-color: #fff; background-color: #fff;
} }
.step-after:after, .step-after:after,
.step-before:before { .step-before:before {
content: ''; content: '';
...@@ -1401,16 +1884,20 @@ export default { ...@@ -1401,16 +1884,20 @@ export default {
top: 0; top: 0;
box-sizing: border-box; box-sizing: border-box;
} }
.step-active { .step-active {
background-color: #ff6a00; background-color: #ff6a00;
} }
.step-active:after, .step-active:after,
.step-active:before { .step-active:before {
border-color: #ff6a00; border-color: #ff6a00;
} }
.step-pass { .step-pass {
background-color: rgba(255, 106, 0, 0.5); background-color: rgba(255, 106, 0, 0.5);
} }
.step-pass:after, .step-pass:after,
.step-pass:before { .step-pass:before {
border-color: rgba(255, 106, 0, 0.5); border-color: rgba(255, 106, 0, 0.5);
...@@ -1420,6 +1907,7 @@ export default { ...@@ -1420,6 +1907,7 @@ export default {
border: 1px solid #efefef; border: 1px solid #efefef;
margin-top: 10px; margin-top: 10px;
} }
.record .title { .record .title {
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
...@@ -1428,6 +1916,7 @@ export default { ...@@ -1428,6 +1916,7 @@ export default {
background: #efefef; background: #efefef;
border-left: 2px solid #ff6a00; border-left: 2px solid #ff6a00;
} }
.chat_content { .chat_content {
padding: 10px; padding: 10px;
} }
...@@ -1435,15 +1924,19 @@ export default { ...@@ -1435,15 +1924,19 @@ export default {
.chat_item { .chat_item {
margin-bottom: 10px; margin-bottom: 10px;
} }
.chat_item.chat_right { .chat_item.chat_right {
text-align: right; text-align: right;
} }
.chat_warp { .chat_warp {
display: flex; display: flex;
} }
.chat_right .chat_warp { .chat_right .chat_warp {
justify-content: end; justify-content: end;
} }
.chat_icon { .chat_icon {
width: 30px; width: 30px;
height: 30px; height: 30px;
...@@ -1460,6 +1953,7 @@ export default { ...@@ -1460,6 +1953,7 @@ export default {
justify-content: center; justify-content: center;
padding: 20px 0; padding: 20px 0;
} }
.detail_list { .detail_list {
&::v-deep { &::v-deep {
table { table {
...@@ -1492,4 +1986,16 @@ export default { ...@@ -1492,4 +1986,16 @@ export default {
margin-left: 6px; margin-left: 6px;
} }
} }
.priorityStatus-select {
height: 30px;
&::v-deep .el-input__inner {
height: 30px;
}
&::v-deep .el-input__suffix {
top: 4px;
}
}
</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