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
2a22a148
Commit
2a22a148
authored
Aug 03, 2023
by
yangzhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:工单
parent
ba44fab6
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
276 additions
and
17 deletions
+276
-17
src/assets/work/anceing.png
+0
-0
src/common/api/order.js
+25
-4
src/common/components/base/tableView.vue
+15
-5
src/common/components/element-ui.js
+2
-0
src/views/taskManage/index.vue
+234
-8
No files found.
src/assets/work/anceing.png
0 → 100644
View file @
2a22a148
828 Bytes
src/common/api/order.js
View file @
2a22a148
...
@@ -16,7 +16,10 @@ export function workConfirmed(id) {
...
@@ -16,7 +16,10 @@ export function workConfirmed(id) {
}
}
export
function
workAssigned
(
data
)
{
export
function
workAssigned
(
data
)
{
return
axios
.
post
(
'platform/platformWorkOrder/assign'
,
data
)
return
axios
.
post
(
'platform/platformWorkOrder/assign'
,
data
,
)
}
}
export
function
startWorder
(
id
,
estimateCompleteTime
)
{
export
function
startWorder
(
id
,
estimateCompleteTime
)
{
...
@@ -32,12 +35,25 @@ export function archiveWorkOrder(id) {
...
@@ -32,12 +35,25 @@ 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
(
'platform/platformWorkOrder/intoAcceptance'
,
{
id
:
id
,
id
:
id
,
})
},
)
}
export
function
acceptanWorkOrder
(
data
)
{
return
axios
.
post
(
'platform/platformWorkOrder/acceptance'
,
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
,
...
@@ -73,6 +89,11 @@ export function closeForPending(id) {
...
@@ -73,6 +89,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
,
...
...
src/common/components/base/tableView.vue
View file @
2a22a148
...
@@ -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
}
...
...
src/common/components/element-ui.js
View file @
2a22a148
...
@@ -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
,
...
...
src/views/taskManage/index.vue
View file @
2a22a148
...
@@ -107,6 +107,36 @@
...
@@ -107,6 +107,36 @@
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"参与人"
>
<el-select
style=
"width: 120px"
placeholder=
"请选择"
clearable
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"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"优先级"
>
<el-form-item
label=
"优先级"
>
<el-select
<el-select
style=
"width: 120px"
style=
"width: 120px"
...
@@ -164,6 +194,7 @@
...
@@ -164,6 +194,7 @@
:tableColumns=
"tableColumns"
:tableColumns=
"tableColumns"
:sourceData=
"sourceData"
:sourceData=
"sourceData"
:cellClassName=
"cellClassName"
:cellClassName=
"cellClassName"
:cellStyle=
"cellStyle"
>
>
</table-view>
</table-view>
</div>
</div>
...
@@ -407,7 +438,7 @@
...
@@ -407,7 +438,7 @@
title=
"指派给"
title=
"指派给"
:close-on-click-modal=
"false"
:close-on-click-modal=
"false"
:visible
.
sync=
"assignVisible"
:visible
.
sync=
"assignVisible"
width=
"
65
0px"
width=
"
90
0px"
>
>
<el-form
<el-form
:inline=
"true"
:inline=
"true"
...
@@ -415,7 +446,7 @@
...
@@ -415,7 +446,7 @@
:model=
"assignForm"
:model=
"assignForm"
ref=
"assignForm"
ref=
"assignForm"
:rules=
"assignFormRules"
:rules=
"assignFormRules"
label-width=
"1
1
0px"
label-width=
"1
3
0px"
>
>
<el-form-item
label=
"负责人"
prop=
"leaders"
>
<el-form-item
label=
"负责人"
prop=
"leaders"
>
<el-select
<el-select
...
@@ -510,6 +541,76 @@
...
@@ -510,6 +541,76 @@
>
>
</span>
</span>
</el-dialog>
</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>
</div>
</div>
</
template
>
</
template
>
...
@@ -527,11 +628,13 @@ import {
...
@@ -527,11 +628,13 @@ import {
archiveWorkOrder
,
archiveWorkOrder
,
completeWorkOrder
,
completeWorkOrder
,
replyTocustomer
,
replyTocustomer
,
acceptanWorkOrder
,
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'
...
@@ -546,6 +649,7 @@ import pauseWork from '@/assets/work/pause.png'
...
@@ -546,6 +649,7 @@ 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
],
...
@@ -636,6 +740,33 @@ export default {
...
@@ -636,6 +740,33 @@ export default {
completeVisible
:
false
,
completeVisible
:
false
,
estimateCompleteTime
:
''
,
estimateCompleteTime
:
''
,
currentItem
:
null
,
currentItem
:
null
,
acceptVisible
:
false
,
acceptFormRules
:
{
acceptanceResult
:
[
{
required
:
true
,
message
:
'请选择'
,
trigger
:
'blur'
,
},
],
acceptanceContent
:
[
{
message
:
'请填入'
,
trigger
:
'blur'
,
},
],
},
acceptForm
:
{},
acceptanceResultList
:
[
{
value
:
'success'
,
label
:
'验收通过'
,
},
{
value
:
'failure'
,
label
:
'验收不通过'
,
},
],
}
}
},
},
mounted
()
{
mounted
()
{
...
@@ -708,16 +839,44 @@ export default {
...
@@ -708,16 +839,44 @@ export default {
},
},
{
{
label
:
'参与人'
,
label
:
'参与人'
,
key
:
'fromBusiness'
,
key
:
'participatorName'
,
width
:
80
,
},
{
label
:
'验收人'
,
key
:
'acceptanceUserName'
,
width
:
80
,
width
:
80
,
},
},
{
{
label
:
'优先级'
,
label
:
'优先级'
,
key
:
'priorityStatus'
,
key
:
'priorityStatus'
,
width
:
8
0
,
width
:
12
0
,
render
:
item
=>
{
render
:
item
=>
{
if
(
item
.
orderStatus
===
'TO_BE_ASSIGN'
)
{
if
(
console
.
log
(
132
)
item
.
orderStatus
===
'TO_BE_ASSIGN'
&&
item
.
priorityStatus
)
{
return
(
<
div
style
=
"padding:1px;height:30px"
>
<
el
-
select
v
-
model
=
{
item
.
priorityStatus
}
onChange
=
{
v
=>
this
.
setStatus
(
item
,
v
)}
>
<
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
{
}
else
{
if
(
item
.
priorityStatus
)
{
if
(
item
.
priorityStatus
)
{
return
this
.
priorityStatusList
.
find
(
v
=>
{
return
this
.
priorityStatusList
.
find
(
v
=>
{
...
@@ -851,7 +1010,7 @@ export default {
...
@@ -851,7 +1010,7 @@ export default {
<
/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"
...
@@ -860,6 +1019,16 @@ export default {
...
@@ -860,6 +1019,16 @@ export default {
/
>
/
>
<
/span
>
<
/span
>
)}
)}
{
item
.
orderStatus
===
'ACCEPTANCEING'
&&
(
<
span
title
=
"已完成"
class
=
"icon-view"
>
<
img
width
=
"24"
height
=
"24"
src
=
{
anceingWork
}
onClick
=
{()
=>
this
.
anceing
(
item
)}
/
>
<
/span
>
)}
{(
item
.
orderStatus
===
'PRE_HANDLING'
||
{(
item
.
orderStatus
===
'PRE_HANDLING'
||
item
.
orderStatus
===
'IN_COMPLETE'
)
&&
(
item
.
orderStatus
===
'IN_COMPLETE'
)
&&
(
<
span
title
=
"关闭"
class
=
"icon-view"
>
<
span
title
=
"关闭"
class
=
"icon-view"
>
...
@@ -891,7 +1060,9 @@ export default {
...
@@ -891,7 +1060,9 @@ export default {
},
},
},
},
methods
:
{
methods
:
{
setStatus
()
{},
setStatus
(
data
,
i
)
{
console
.
log
(
data
,
i
,
123
)
},
handlePriorityStatus
(
data
)
{
handlePriorityStatus
(
data
)
{
if
(
data
)
{
if
(
data
)
{
return
this
.
priorityStatusList
.
find
(
v
=>
{
return
this
.
priorityStatusList
.
find
(
v
=>
{
...
@@ -962,6 +1133,24 @@ export default {
...
@@ -962,6 +1133,24 @@ 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
===
16
)
{
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
()
...
@@ -1048,6 +1237,33 @@ export default {
...
@@ -1048,6 +1237,33 @@ export default {
this
.
rowId
=
item
.
id
this
.
rowId
=
item
.
id
this
.
currentItem
=
item
this
.
currentItem
=
item
},
},
// 待验收完成
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
()
{
async
submitAssign
()
{
this
.
$refs
.
assignForm
.
validate
(
v
=>
{
this
.
$refs
.
assignForm
.
validate
(
v
=>
{
...
@@ -1154,6 +1370,15 @@ export default {
...
@@ -1154,6 +1370,15 @@ export default {
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
type
:
'warning'
,
}).
then
(()
=>
{
}).
then
(()
=>
{
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
=>
{
closeForPending
(
v
.
id
).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
this
.
$message
.
success
(
'已关闭'
)
this
.
$message
.
success
(
'已关闭'
)
...
@@ -1161,6 +1386,7 @@ export default {
...
@@ -1161,6 +1386,7 @@ export default {
this
.
getOrderTree
()
this
.
getOrderTree
()
}
}
})
})
}
})
})
}
catch
{}
}
catch
{}
},
},
...
...
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