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