Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
so-manage-ui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
smart-operation
so-manage-ui
Commits
d972548e
Commit
d972548e
authored
Jul 06, 2023
by
张耀
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:
对接工单管理接口和预警列表接口
parent
9de794c5
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1082 additions
and
793 deletions
+1082
-793
src/components/manual-distribution/env.js
src/components/manual-distribution/env.js
+4
-0
src/components/manual-distribution/form.vue
src/components/manual-distribution/form.vue
+5
-1
src/components/manual-distribution/index.vue
src/components/manual-distribution/index.vue
+25
-3
src/components/warn-detail/index.vue
src/components/warn-detail/index.vue
+8
-2
src/page/main/forewarning/list/detail/index.vue
src/page/main/forewarning/list/detail/index.vue
+111
-12
src/page/main/forewarning/list/index.vue
src/page/main/forewarning/list/index.vue
+111
-182
src/page/main/forewarning/rule-set/add/index.vue
src/page/main/forewarning/rule-set/add/index.vue
+0
-1
src/page/main/ticket/business-ticket-list/close-ticket.vue
src/page/main/ticket/business-ticket-list/close-ticket.vue
+18
-19
src/page/main/ticket/business-ticket-list/detail/index.vue
src/page/main/ticket/business-ticket-list/detail/index.vue
+58
-56
src/page/main/ticket/business-ticket-list/index.vue
src/page/main/ticket/business-ticket-list/index.vue
+93
-88
src/page/main/ticket/business-ticket-manage/add/index.vue
src/page/main/ticket/business-ticket-manage/add/index.vue
+9
-4
src/page/main/ticket/business-ticket-manage/detail/index.vue
src/page/main/ticket/business-ticket-manage/detail/index.vue
+163
-107
src/page/main/ticket/business-ticket-manage/edit/index.vue
src/page/main/ticket/business-ticket-manage/edit/index.vue
+62
-40
src/page/main/ticket/business-ticket-manage/index.vue
src/page/main/ticket/business-ticket-manage/index.vue
+131
-105
src/page/main/ticket/business-ticket-manage/modules/add-form.vue
...e/main/ticket/business-ticket-manage/modules/add-form.vue
+3
-1
src/page/main/ticket/business-ticket-manage/modules/interface.js
...e/main/ticket/business-ticket-manage/modules/interface.js
+57
-0
src/page/main/ticket/modules/feedback-detail/detail.vue
src/page/main/ticket/modules/feedback-detail/detail.vue
+5
-9
src/page/main/ticket/modules/feedback.vue
src/page/main/ticket/modules/feedback.vue
+20
-1
src/page/main/ticket/my-business-ticket/detail/index.vue
src/page/main/ticket/my-business-ticket/detail/index.vue
+59
-56
src/page/main/ticket/my-business-ticket/index.vue
src/page/main/ticket/my-business-ticket/index.vue
+94
-59
src/page/main/ticket/my-warn-ticket/index.vue
src/page/main/ticket/my-warn-ticket/index.vue
+46
-47
No files found.
src/components/manual-distribution/env.js
View file @
d972548e
...
@@ -3,6 +3,10 @@ export const METHODS = {
...
@@ -3,6 +3,10 @@ export const METHODS = {
dingtalk
:
'
钉钉
'
,
dingtalk
:
'
钉钉
'
,
sms
:
'
短信
'
sms
:
'
短信
'
}
}
export
const
ORDER_METHODS
=
{
1
:
'
钉钉
'
,
2
:
'
短信
'
}
// 可以新增的数量
// 可以新增的数量
// export const ADD_NUM = 5
// export const ADD_NUM = 5
...
...
src/components/manual-distribution/form.vue
View file @
d972548e
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
style=
"width: 100%"
>
style=
"width: 100%"
>
<el-form-item
:label=
"methodLabel || '通知方式'"
prop=
"method"
>
<el-form-item
:label=
"methodLabel || '通知方式'"
prop=
"method"
>
<el-checkbox-group
v-model=
"state.form.method"
>
<el-checkbox-group
v-model=
"state.form.method"
>
<el-checkbox
v-for=
"(value, key) in
METHODS
"
:key=
"key"
:label=
"key"
>
<el-checkbox
v-for=
"(value, key) in
props.methodLists
"
:key=
"key"
:label=
"key"
>
{{
value
}}
{{
value
}}
</el-checkbox>
</el-checkbox>
</el-checkbox-group>
</el-checkbox-group>
...
@@ -103,6 +103,10 @@ const props = defineProps({
...
@@ -103,6 +103,10 @@ const props = defineProps({
type
:
String
,
type
:
String
,
default
:
"
110px
"
,
default
:
"
110px
"
,
},
},
methodLists
:
{
type
:
Object
,
default
:
METHODS
,
},
});
});
const
form_ref
=
ref
(
null
);
const
form_ref
=
ref
(
null
);
// 表单数据
// 表单数据
...
...
src/components/manual-distribution/index.vue
View file @
d972548e
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<GapTitle
title=
"手动下发"
></GapTitle>
<GapTitle
title=
"手动下发"
></GapTitle>
</
template
>
</
template
>
<div
class=
"manual-distribution"
>
<div
class=
"manual-distribution"
>
<Form
:history=
"history"
ref=
"form"
/>
<Form
labelWidth=
"80px"
:methodLists=
"ORDER_METHODS"
:history=
"history"
ref=
"form"
/>
</div>
</div>
<
template
#footer
>
<
template
#footer
>
<el-button
size=
"default"
@
click=
"Close"
>
关闭
</el-button>
<el-button
size=
"default"
@
click=
"Close"
>
关闭
</el-button>
...
@@ -17,6 +17,9 @@
...
@@ -17,6 +17,9 @@
import
GapTitle
from
"
@/components/gap-title.vue
"
;
import
GapTitle
from
"
@/components/gap-title.vue
"
;
import
Form
from
"
./form.vue
"
;
import
Form
from
"
./form.vue
"
;
import
{
computed
,
nextTick
,
ref
,
watch
}
from
"
vue
"
;
import
{
computed
,
nextTick
,
ref
,
watch
}
from
"
vue
"
;
import
{
ORDER_METHODS
}
from
"
@/components/manual-distribution/env.js
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
axios
from
"
@/request/http.js
"
;
const
props
=
defineProps
({
const
props
=
defineProps
({
// 显示隐藏开关
// 显示隐藏开关
visible
:
{
visible
:
{
...
@@ -86,8 +89,27 @@ const Submit = async () => {
...
@@ -86,8 +89,27 @@ const Submit = async () => {
if
(
!
form_valid
)
return
;
if
(
!
form_valid
)
return
;
let
res
=
{
...
form
.
value
.
form
};
let
res
=
{
...
form
.
value
.
form
};
console
.
log
(
"
res:
"
,
res
);
console
.
log
(
"
res:
"
,
res
);
await
nextTick
();
const
params
=
{
Close
();
id
:
props
.
row
.
id
,
push_obj
:
{
push_method
:
res
.
method
.
length
>
1
?
3
:
+
res
.
method
[
0
],
user_obj
:
res
.
lists
.
map
((
e
)
=>
{
return
{
system_account
:
e
.
user_id
,
user_name
:
e
.
user_name
,
phone
:
e
.
phone
,
};
}),
},
};
axios
.
post
(
"
/v1/api/work_order/work_order_manage/push
"
,
params
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
ElMessage
.
success
(
"
手动下发成功
"
);
Close
();
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
src/components/warn-detail/index.vue
View file @
d972548e
<
template
>
<
template
>
<div
class=
"warn-detail"
>
<div
class=
"warn-detail"
>
<div
class=
"info"
>
<div
class=
"info"
>
<Info
:labelData=
"labelData"
:valueData=
"valueData"
/>
<Info
:labelData=
"labelData"
:valueData=
"valueData"
>
<template
v-slot:[key]=
"
{ item, valueData }" v-for="(value, key) in slots">
<slot
:name=
"key"
:item=
"item"
:valueData=
"valueData"
></slot>
</
template
>
</Info>
</div>
</div>
<div
class=
"tabs"
>
<div
class=
"tabs"
>
<Tab
:tabs=
"tabs"
/>
<Tab
:tabs=
"tabs"
/>
...
@@ -10,8 +14,10 @@
...
@@ -10,8 +14,10 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
useSlots
,
computed
}
from
"
vue
"
;
import
Info
from
"
./info.vue
"
;
import
Info
from
"
./info.vue
"
;
import
Tab
from
"
./tab.vue
"
;
import
Tab
from
"
./tab.vue
"
;
const
slots
=
useSlots
();
const
props
=
defineProps
({
const
props
=
defineProps
({
labelData
:
{
labelData
:
{
type
:
Array
,
type
:
Array
,
...
@@ -33,7 +39,7 @@ const props = defineProps({
...
@@ -33,7 +39,7 @@ const props = defineProps({
max-width
:
1072px
;
max-width
:
1072px
;
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
.tabs
{
.tabs
{
margin-top
:
30px
;
margin-top
:
30px
;
}
}
}
}
...
...
src/page/main/forewarning/list/detail/index.vue
View file @
d972548e
...
@@ -3,8 +3,15 @@
...
@@ -3,8 +3,15 @@
<div
class=
"breadcrumb"
>
<div
class=
"breadcrumb"
>
<bg-breadcrumb
/>
<bg-breadcrumb
/>
</div>
</div>
<div
class=
"content"
>
<div
class=
"content bg-scroll"
>
<warn-detail
:label-data=
"labelData"
:value-data=
"info"
:tabs=
"tabs"
></warn-detail>
<warn-detail
:label-data=
"labelData"
:value-data=
"info"
:tabs=
"tabs"
>
<template
#status
="
{ item, valueData }">
<span
class=
"status-body"
>
<span
class=
"status"
:class=
"`status-$
{valueData.status}`">
</span>
<span>
{{
statusOptions
[
valueData
[
item
.
prop
]]
}}
</span>
</span>
</
template
>
</warn-detail>
</div>
</div>
</div>
</div>
</template>
</template>
...
@@ -12,6 +19,24 @@
...
@@ -12,6 +19,24 @@
<
script
setup
>
<
script
setup
>
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
warnDetail
from
"
@/components/warn-detail/index.vue
"
;
import
warnDetail
from
"
@/components/warn-detail/index.vue
"
;
import
{
useRoute
}
from
"
vue-router
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
axios
from
"
@/request/http.js
"
;
import
{
ref
,
onBeforeMount
}
from
"
vue
"
;
const
route
=
useRoute
();
const
{
id
}
=
route
.
query
;
const
ruleTypeOptions
=
ref
({});
const
statusOptions
=
{
1
:
"
已恢复
"
,
2
:
"
未恢复
"
,
3
:
"
已关闭
"
,
};
const
riskLevels
=
{
1
:
"
低风险
"
,
2
:
"
一般风险
"
,
3
:
"
较大风险
"
,
4
:
"
重大风险
"
,
};
const
labelData
=
[
const
labelData
=
[
[
[
{
{
...
@@ -54,16 +79,7 @@ const labelData = [
...
@@ -54,16 +79,7 @@ const labelData = [
},
},
],
],
];
];
const
info
=
{
const
info
=
ref
({});
warning_point
:
"
SaaS层/数据治理系统
"
,
warning_type
:
"
容器集群
"
,
warning_index
:
"
响应时间超时
"
,
risk_level
:
"
一般风险
"
,
status
:
"
success
"
,
warning_threshold
:
"
10ms
"
,
current_alarm_value
:
"
16ms
"
,
warning_time
:
"
2020-01-01 00:00:00
"
,
};
const
tabs
=
[
const
tabs
=
[
{
{
label
:
"
推送记录
"
,
label
:
"
推送记录
"
,
...
@@ -104,6 +120,68 @@ const tabs = [
...
@@ -104,6 +120,68 @@ const tabs = [
],
],
},
},
];
];
const
getInfo
=
()
=>
{
const
params
=
{
id
,
};
axios
.
get
(
"
/v1/api/alert_list
"
,
{
params
}).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
const
{
data
}
=
res
.
data
;
info
.
value
=
{
warning_point
:
data
.
alert_point
,
warning_type
:
data
.
class_parent_name
,
warning_index
:
data
.
class_name
,
risk_level
:
riskLevels
[
data
.
risk_level
],
status
:
data
.
status
,
warning_threshold
:
`
${
data
.
alert_condition
.
thresholds_min
}${
ruleTypeOptions
.
value
[
data
.
alert_rule_type
]?.
unit
||
""
}
-
$
{
data
.
alert_condition
.
thresholds_max
}
$
{
ruleTypeOptions
.
value
[
data
.
alert_rule_type
]?.
unit
||
""
}
`,
current_alarm_value: data.current_value + (ruleTypeOptions.value[data.alert_rule_type]?.unit || ""),
warning_time: data.alert_time?.split("+")[0].replace("T", " ").replace("Z", " ") || "-",
};
}
});
};
const GetRuleTypeOptions = () => {
let arr = [
{
id: "empty",
label: "空",
},
{
id: "1",
label: "百分比范围",
unit: "%",
},
{
id: "2",
label: "毫秒范围",
unit: "ms",
},
{
id: "3",
label: "秒范围",
unit: "s",
},
{
id: "4",
label: "个范围",
unit: "个",
},
{
id: "5",
label: "温度范围",
unit: "℃",
},
];
arr.forEach((e) => {
ruleTypeOptions.value[e.id] = e;
});
getInfo();
};
onBeforeMount(() => {
GetRuleTypeOptions();
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -122,6 +200,27 @@ const tabs = [
...
@@ -122,6 +200,27 @@ const tabs = [
box-shadow
:
0px
1px
4px
0px
rgba
(
0
,
7
,
101
,
0
.15
);
box-shadow
:
0px
1px
4px
0px
rgba
(
0
,
7
,
101
,
0
.15
);
border-radius
:
6px
;
border-radius
:
6px
;
padding
:
32px
;
padding
:
32px
;
.status
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
border-radius
:
50%
;
margin-right
:
8px
;
$statusObj
:
(
1
:
#48ad97
,
3
:
#9e9e9e
,
2
:
#3759be
,
);
@each
$status
,
$color
in
$statusObj
{
&
-
#{
$status
}
{
background-color
:
$color
;
}
}
}
.status-body
{
display
:
flex
;
align-items
:
center
;
}
}
}
}
}
</
style
>
</
style
>
src/page/main/forewarning/list/index.vue
View file @
d972548e
This diff is collapsed.
Click to expand it.
src/page/main/forewarning/rule-set/add/index.vue
View file @
d972548e
...
@@ -28,7 +28,6 @@ const add_form = ref(null);
...
@@ -28,7 +28,6 @@ const add_form = ref(null);
const
SaveSubmit
=
async
()
=>
{
const
SaveSubmit
=
async
()
=>
{
let
res
=
await
add_form
.
value
.
Submit
();
let
res
=
await
add_form
.
value
.
Submit
();
if
(
!
res
)
return
;
if
(
!
res
)
return
;
console
.
log
(
"
res:
"
,
res
);
Save
(
res
,
{},
()
=>
{
Save
(
res
,
{},
()
=>
{
Cancle
();
Cancle
();
});
});
...
...
src/page/main/ticket/business-ticket-list/close-ticket.vue
View file @
d972548e
<
template
>
<
template
>
<el-dialog
<el-dialog
v-model=
"show"
width=
"774px"
top=
"10vh"
:before-close=
"beforeClose"
:close-on-click-modal=
"false"
>
v-model=
"show"
width=
"774px"
top=
"10vh"
:before-close=
"beforeClose"
:close-on-click-modal=
"false"
>
<template
#header
>
<template
#header
>
<GapTitle
title=
"关闭工单"
></GapTitle>
<GapTitle
title=
"关闭工单"
></GapTitle>
</
template
>
</
template
>
<div
class=
"feedback-body"
>
<div
class=
"feedback-body"
>
<el-form
<el-form
:model=
"state.form"
ref=
"form"
:rules=
"state.rules"
label-width=
"80px"
>
:model=
"state.form"
ref=
"form"
:rules=
"state.rules"
label-width=
"80px"
>
<el-form-item
label=
"关闭原因"
prop=
"reason"
>
<el-form-item
label=
"关闭原因"
prop=
"reason"
>
<el-input
<el-input
type=
"textarea"
v-model=
"state.form.reason"
rows=
"5"
placeholder=
"请输入关闭原因"
></el-input>
type=
"textarea"
v-model=
"state.form.reason"
rows=
"5"
placeholder=
"请输入关闭原因"
></el-input>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
...
@@ -36,6 +20,8 @@
...
@@ -36,6 +20,8 @@
<
script
setup
>
<
script
setup
>
import
{
computed
,
reactive
,
ref
}
from
"
vue
"
;
import
{
computed
,
reactive
,
ref
}
from
"
vue
"
;
import
GapTitle
from
"
@/components/gap-title.vue
"
;
import
GapTitle
from
"
@/components/gap-title.vue
"
;
import
axios
from
"
axios
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
const
props
=
defineProps
({
const
props
=
defineProps
({
visible
:
{
visible
:
{
...
@@ -81,6 +67,19 @@ const Submit = () => {
...
@@ -81,6 +67,19 @@ const Submit = () => {
form
.
value
.
validate
((
valid
)
=>
{
form
.
value
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
console
.
log
(
state
.
form
);
console
.
log
(
state
.
form
);
//
let
params
=
{
id
:
props
.
active_row
.
id
,
reason_closure
:
state
.
form
.
reason
,
};
axios
.
put
(
"
/v1/api/work_order/work_order_issuance/close
"
,
params
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
ElMessage
.
success
(
"
关闭工单提交成功!
"
);
Close
();
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
}
else
{
}
else
{
return
false
;
return
false
;
}
}
...
...
src/page/main/ticket/business-ticket-list/detail/index.vue
View file @
d972548e
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<template
#status
="
{ item, valueData }">
<template
#status
="
{ item, valueData }">
<span
class=
"status-body"
>
<span
class=
"status-body"
>
<span
class=
"status"
:class=
"`status-$
{valueData.status}`">
</span>
<span
class=
"status"
:class=
"`status-$
{valueData.status}`">
</span>
<span>
{{
STATUS_OBJ
[
valueData
[
item
.
prop
]]
}}
</span>
<span>
{{
statusOptions
[
valueData
[
item
.
prop
]]
}}
</span>
</span>
</span>
</
template
>
</
template
>
</Info>
</Info>
...
@@ -22,11 +22,8 @@
...
@@ -22,11 +22,8 @@
<div
class=
"info"
>
<div
class=
"info"
>
<Info
:labelData=
"notificationMethod"
:valueData=
"info"
>
<Info
:labelData=
"notificationMethod"
:valueData=
"info"
>
<
template
#notification_method
="{
valueData
}"
>
<
template
#notification_method
="{
valueData
}"
>
<span>
{{
valueData
.
notification_method
.
map
((
e
)
=>
METHODS
[
e
]).
join
(
"
,
"
)
}}
</span>
<span>
{{
valueData
.
notification_method
?.
map
((
e
)
=>
ORDER_
METHODS
[
e
]).
join
(
"
,
"
)
}}
</span>
</
template
>
</
template
>
<!-- <template #value="{ item, valueData }">
<span>{{ valueData[item.prop].map((e) => METHODS[e]).join(",") }}</span>
</template> -->
</Info>
</Info>
<div
class=
"notification-lists"
>
<div
class=
"notification-lists"
>
<bg-table
border
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
>
</bg-table>
<bg-table
border
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
>
</bg-table>
...
@@ -41,18 +38,20 @@
...
@@ -41,18 +38,20 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
ref
}
from
"
vue
"
;
import
{
onBeforeMount
,
ref
}
from
"
vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
Info
from
"
@/components/warn-detail/info.vue
"
;
import
Info
from
"
@/components/warn-detail/info.vue
"
;
import
gapTitle
from
"
@/components/gap-title.vue
"
;
import
gapTitle
from
"
@/components/gap-title.vue
"
;
import
feedbackDetail
from
"
@/page/main/ticket/modules/feedback-detail/index.vue
"
;
import
feedbackDetail
from
"
@/page/main/ticket/modules/feedback-detail/index.vue
"
;
import
goBack
from
"
@/components/go-back/index.vue
"
;
import
goBack
from
"
@/components/go-back/index.vue
"
;
import
{
METHODS
}
from
"
@/components/manual-distribution/env.js
"
;
import
{
ORDER_METHODS
}
from
"
@/components/manual-distribution/env.js
"
;
const
STATUS_OBJ
=
{
import
{
useRoute
}
from
"
vue-router
"
;
finish
:
"
已完成
"
,
import
{
ElMessage
}
from
"
element-plus
"
;
close
:
"
已关闭
"
,
import
axios
from
"
@/request/http.js
"
;
info
:
"
待处置
"
,
const
route
=
useRoute
();
};
const
{
id
}
=
route
.
query
;
const
ticketLevelOptions
=
[
""
,
"
紧急任务
"
,
"
重要任务
"
,
"
一般任务
"
];
const
statusOptions
=
[
""
,
"
待处置
"
,
"
已完成
"
,
"
已关闭
"
];
const
labelData
=
[
const
labelData
=
[
[
[
{
{
...
@@ -91,16 +90,7 @@ const labelData = [
...
@@ -91,16 +90,7 @@ const labelData = [
},
},
],
],
];
];
const
info
=
{
const
info
=
ref
({});
ticket_name
:
"
7月常态化运维巡检任务
"
,
status
:
"
finish
"
,
ticket_level
:
"
紧急任务
"
,
create_by
:
"
管理员
"
,
description
:
"
请进行所有系统常态化月度巡检任务(每月定期常态运维巡检),将巡检结果上报!
"
,
create_time
:
"
2020-01-01 00:00:00
"
,
finish_time
:
"
2020-01-01 00:00:00
"
,
notification_method
:
[
"
1
"
,
"
2
"
],
};
const
notificationMethod
=
[
const
notificationMethod
=
[
[
[
{
{
...
@@ -123,37 +113,49 @@ const headers = [
...
@@ -123,37 +113,49 @@ const headers = [
label
:
"
联系方式
"
,
label
:
"
联系方式
"
,
},
},
];
];
const
rows
=
ref
([
const
rows
=
ref
([]);
{
const
detailInfo
=
ref
([]);
user_id
:
"
11
"
,
const
getInfo
=
()
=>
{
user_name
:
"
1111
"
,
axios
phone
:
"
13211111111
"
,
.
get
(
"
/v1/api/work_order/work_order_issuance/details
"
,
{
},
params
:
{
{
id
,
user_id
:
"
22
"
,
},
user_name
:
"
2222
"
,
})
phone
:
"
13222222222
"
,
.
then
((
res
)
=>
{
},
if
(
res
.
data
.
code
==
200
)
{
{
let
{
data
}
=
res
.
data
;
user_id
:
"
33
"
,
info
.
value
=
{
user_name
:
"
3333
"
,
ticket_name
:
data
.
order_name
,
phone
:
"
13233333333
"
,
status
:
data
.
order_state
,
},
ticket_level
:
ticketLevelOptions
[
data
.
order_level
],
]);
create_by
:
data
.
create_user
,
const
detailInfo
=
ref
([
description
:
data
.
order_desc
,
{
create_time
:
data
.
create_time
?.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
||
"
-
"
,
status
:
"
close
"
,
finish_time
:
data
.
complete_time
?.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
||
"
-
"
,
target
:
"
张三
"
,
notification_method
:
data
.
push_obj
.
push_method
==
"
3
"
?
[
"
1
"
,
"
2
"
]
:
[
data
.
push_obj
.
push_method
],
feedback
:
"
任务临时取消
"
,
};
time
:
"
2022-10-22 09:58:30
"
,
rows
.
value
=
data
.
push_obj
.
user_obj
?.
map
((
e
)
=>
{
},
return
{
{
user_id
:
e
.
system_account
,
status
:
"
finish
"
,
user_name
:
e
.
user_name
,
target
:
"
李四
"
,
phone
:
e
.
phone
,
feedback
:
"
任务临时取消
"
,
};
time
:
"
2022-10-22 09:58:30
"
,
});
},
detailInfo
.
value
=
data
.
work_order_me
?.
map
((
e
)
=>
{
]);
return
{
status
:
e
.
order_state
,
target
:
e
.
system_account
,
feedback
:
e
.
result_feedback
,
time
:
e
.
complete_time
?.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
||
"
-
"
,
};
});
}
});
};
onBeforeMount
(()
=>
{
getInfo
();
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -192,9 +194,9 @@ const detailInfo = ref([
...
@@ -192,9 +194,9 @@ const detailInfo = ref([
border-radius
:
50%
;
border-radius
:
50%
;
margin-right
:
8px
;
margin-right
:
8px
;
$statusObj
:
(
$statusObj
:
(
finish
:
#48ad97
,
2
:
#48ad97
,
close
:
#9e9e9e
,
3
:
#9e9e9e
,
info
:
#3759be
,
1
:
#3759be
,
);
);
@each
$status
,
$color
in
$statusObj
{
@each
$status
,
$color
in
$statusObj
{
&
-
#{
$status
}
{
&
-
#{
$status
}
{
...
...
src/page/main/ticket/business-ticket-list/index.vue
View file @
d972548e
...
@@ -4,31 +4,28 @@
...
@@ -4,31 +4,28 @@
<bg-breadcrumb
/>
<bg-breadcrumb
/>
</div>
</div>
<div
class=
"content"
>
<div
class=
"content"
>
<bg-filter-group
<bg-filter-group
@
search=
"changeSearch"
v-model=
"filter.search"
placeholder=
"请输入任务名称"
>
@
search=
"changeSearch"
v-model=
"filter.key_word"
placeholder=
"请输入任务名称"
>
<template
v-slot:filter_group
>
<template
v-slot:filter_group
>
<div
class=
"left-filter filter_list"
>
<div
class=
"left-filter filter_list"
>
<div
class=
"filter_item"
>
<div
class=
"filter_item"
>
<span
class=
"filter_title"
>
工单等级
</span>
<span
class=
"filter_title"
>
工单等级
</span>
<el-select
v-model=
"filter.
ticket
_level"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.
order
_level"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in ticketLevelOptions"
v-for=
"(item, index) in ticketLevelOptions"
:key=
"'
pushO
ptions' + index"
:key=
"'
order_level_o
ptions' + index"
:label=
"item
.name
"
:label=
"item"
:value=
"i
tem.value
"
>
:value=
"i
ndex
"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
<div
class=
"filter_item"
>
<div
class=
"filter_item"
>
<span
class=
"filter_title"
>
状态
</span>
<span
class=
"filter_title"
>
状态
</span>
<el-select
v-model=
"filter.
status
"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.
order_state
"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in statusOptions"
v-for=
"(item, index) in statusOptions"
:key=
"'
pushO
ptions' + index"
:key=
"'
order_state_o
ptions' + index"
:label=
"item
.name
"
:label=
"item"
:value=
"i
tem.value
"
>
:value=
"i
ndex
"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
...
@@ -63,24 +60,36 @@
...
@@ -63,24 +60,36 @@
</bg-filter-group>
</bg-filter-group>
<div
class=
"table_container"
>
<div
class=
"table_container"
>
<div
class=
"table"
>
<div
class=
"table"
>
<bg-table
<bg-table
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
:stripe=
"true"
>
ref=
"listtable"
<
template
#order_name
="{
row
}"
>
:headers=
"headers"
<div
class=
"href"
@
click=
"goTo(row)"
>
{{
row
.
order_name
||
"
-
"
}}
</div>
:rows=
"rows"
</
template
>
height=
"100%"
<
template
#order_level
="{
row
}"
>
:isIndex=
"true"
<span>
{{
ticketLevelOptions
[
row
.
order_level
]
}}
</span>
:stripe=
"true"
>
</
template
>
<
template
#work_order_name
="{
row
}"
>
<
template
#order_state
="{
row
}"
>
<div
class=
"href"
@
click=
"goTo(row)"
>
{{
row
.
work_order_name
||
"
-
"
}}
</div>
<span
class=
"status-body"
>
<span
class=
"status"
:class=
"`status-$
{row.order_state}`">
</span>
<span>
{{
statusOptions
[
row
.
order_state
]
}}
</span>
<span
v-if=
"row.order_level != 3"
>
(
{{
row
.
state_cnt
}}
/
{{
row
.
all_cnt
}}
)
</span>
</span>
</
template
>
<
template
#create_time
="{
row
}"
>
{{
row
.
create_time
?
row
.
create_time
.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
:
"
-
"
}}
</
template
>
<
template
#complete_time
="{
row
}"
>
{{
row
.
complete_time
?
row
.
complete_time
.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
:
"
-
"
}}
</
template
>
</
template
>
<
template
#operation
="{
row
}"
>
<
template
#operation
="{
row
}"
>
<span
class=
"primary-edit"
@
click=
"operation(row)"
>
关闭工单
</span>
<el-button
type=
"primary"
:disabled=
"row.order_state != 1"
link
size=
"small"
@
click=
"operation(row)"
>
关闭工单
</el-button>
</
template
>
</
template
>
</bg-table>
</bg-table>
<div
class=
"pagination_box"
>
<div
class=
"pagination_box"
>
<bg-pagination
<bg-pagination
:page=
"filter.page"
:page=
"filter.page"
:size=
"filter.
limit
"
:size=
"filter.
page_size
"
:total=
"tableTotal"
:total=
"tableTotal"
@
change-page=
"changePage"
@
change-page=
"changePage"
@
change-size=
"changeSize"
>
@
change-size=
"changeSize"
>
...
@@ -88,107 +97,79 @@
...
@@ -88,107 +97,79 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!-- <el-button type="primary" size="default" @click="feedback">
处置反馈
</el-button> -->
<!-- <ManualDistributionForm ref="form" :disabled="true" /> -->
<CloseTicket
v-model:visible=
"visible"
:active_row=
"active_row"
/>
<CloseTicket
v-model:visible=
"visible"
:active_row=
"active_row"
/>
<!-- <ManualDistribution v-model:visible="visible" /> -->
</div>
</div>
</div>
</div>
</template>
</template>
<
script
setup
>
<
script
setup
>
// import { nextTick, onBeforeMount, onMounted, ref } from "vue";
// import ManualDistribution from "@/components/manual-distribution/index.vue";
// import ManualDistributionForm from "@/components/manual-distribution/form.vue";
// const form = ref(null);
// onMounted(async () => {
// await nextTick();
// form.value.init({
// method: ["1", "2"],
// lists: [
// {
// user_id: 1,
// user_name: 1111,
// phone: "13011111111",
// },
// ],
// });
// });
import
{
ref
,
reactive
,
onMounted
,
nextTick
}
from
"
vue
"
;
import
{
ref
,
reactive
,
onMounted
,
nextTick
}
from
"
vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
FeedBack
from
"
../modules/feedback.vue
"
;
import
FeedBack
from
"
../modules/feedback.vue
"
;
import
CloseTicket
from
"
./close-ticket.vue
"
;
import
CloseTicket
from
"
./close-ticket.vue
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
axios
from
"
@/request/http.js
"
;
const
router
=
useRouter
();
const
router
=
useRouter
();
const
filter
=
reactive
({
const
filter
=
reactive
({
ticket_level
:
""
,
order_level
:
0
,
key_word
:
""
,
search
:
""
,
create_time
:
[],
create_time
:
[],
finish_time
:
[],
finish_time
:
[],
status
:
""
,
order_state
:
0
,
page
:
1
,
page
:
1
,
limit
:
10
,
page_size
:
10
,
});
});
const
filterClear
=
()
=>
{
const
filterClear
=
()
=>
{
filter
.
ticket_level
=
""
;
filter
.
order_level
=
0
;
filter
.
key_word
=
""
;
filter
.
search
=
""
;
filter
.
status
=
""
;
filter
.
order_state
=
0
;
filter
.
create_time
=
[];
filter
.
create_time
=
[];
filter
.
finish_time
=
[];
filter
.
finish_time
=
[];
filter
.
limit
=
10
;
filter
.
page_size
=
10
;
filter
.
page
=
1
;
filter
.
page
=
1
;
changePage
(
1
);
changePage
(
1
);
};
// 重置筛选项
};
// 重置筛选项
const
tableTotal
=
ref
(
0
);
const
tableTotal
=
ref
(
0
);
const
ticketLevelOptions
=
ref
([
const
ticketLevelOptions
=
[
"
全部
"
,
"
紧急任务
"
,
"
重要任务
"
,
"
一般任务
"
];
{
const
statusOptions
=
[
"
全部
"
,
"
待处置
"
,
"
已完成
"
,
"
已关闭
"
];
value
:
""
,
name
:
"
全部
"
,
},
]);
const
statusOptions
=
ref
([
{
value
:
""
,
name
:
"
全部
"
,
},
]);
let
headers
=
reactive
([
let
headers
=
reactive
([
{
{
label
:
"
工单名称
"
,
label
:
"
工单名称
"
,
prop
:
"
work_
order_name
"
,
prop
:
"
order_name
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
工单等级
"
,
label
:
"
工单等级
"
,
prop
:
"
work_
order_level
"
,
prop
:
"
order_level
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
工单状态
"
,
label
:
"
工单状态
"
,
prop
:
"
work_order_status
"
,
prop
:
"
order_state
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
下发对象
"
,
label
:
"
下发对象
"
,
prop
:
"
distribute_target
"
,
prop
:
"
push_obj
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
创建人
"
,
label
:
"
创建人
"
,
prop
:
"
create_
by
"
,
prop
:
"
create_
user
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
创建时间
"
,
label
:
"
创建时间
"
,
prop
:
"
create_time
"
,
prop
:
"
create_time
"
,
align
:
"
left
"
,
align
:
"
left
"
,
width
:
160
,
},
},
{
{
label
:
"
完成时间
"
,
label
:
"
完成时间
"
,
prop
:
"
finish
_time
"
,
prop
:
"
complete
_time
"
,
align
:
"
left
"
,
align
:
"
left
"
,
width
:
160
,
},
},
{
{
label
:
"
操作
"
,
label
:
"
操作
"
,
...
@@ -197,13 +178,9 @@ let headers = reactive([
...
@@ -197,13 +178,9 @@ let headers = reactive([
width
:
"
80px
"
,
width
:
"
80px
"
,
},
},
]);
]);
let
rows
=
ref
([
let
rows
=
ref
([]);
{
work_order_name
:
11
,
id
:
111
},
{
work_order_name
:
22
,
id
:
222
},
{
work_order_name
:
33
,
id
:
333
},
]);
const
changeSize
=
(
size
)
=>
{
const
changeSize
=
(
size
)
=>
{
filter
.
limit
=
size
;
filter
.
page_size
=
size
;
changePage
(
1
);
changePage
(
1
);
};
};
...
@@ -212,7 +189,7 @@ const changePage = (page) => {
...
@@ -212,7 +189,7 @@ const changePage = (page) => {
getTableRows
();
getTableRows
();
};
};
const
changeSearch
=
(
val
)
=>
{
const
changeSearch
=
(
val
)
=>
{
filter
.
key_word
=
val
;
filter
.
search
=
val
;
changePage
(
1
);
changePage
(
1
);
};
// 表格关键字筛选
};
// 表格关键字筛选
...
@@ -224,21 +201,25 @@ onMounted(() => {
...
@@ -224,21 +201,25 @@ onMounted(() => {
});
});
const
getTableRows
=
async
()
=>
{
const
getTableRows
=
async
()
=>
{
let
[
create
StartTime
=
""
,
createEndTime
=
""
]
=
filter
.
create_time
||
[];
let
[
create
_date_from
=
""
,
create_date_to
=
""
]
=
filter
.
create_time
||
[];
let
[
finishStartTime
=
""
,
finishEndTime
=
""
]
=
filter
.
finish_time
||
[];
let
[
complete_time_from
=
""
,
complete_time_to
=
""
]
=
filter
.
finish_time
||
[];
let
urlParams
=
{
let
urlParams
=
{
...
filter
,
...
filter
,
create
StartTime
,
create
_date_from
,
create
EndTime
,
create
_date_to
,
finishStartTime
,
complete_time_from
,
finishEndTime
,
complete_time_to
,
};
};
Reflect
.
deleteProperty
(
urlParams
,
"
create_time
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
create_time
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
finish_time
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
finish_time
"
);
console
.
log
(
"
urlParams:
"
,
urlParams
);
axios
.
get
(
"
/v1/api/work_order/work_order_issuance/list
"
,
{
params
:
urlParams
}).
then
((
res
)
=>
{
// const { data, total } = await instanceList(urlParams);
if
(
res
.
data
.
code
==
200
)
{
// rows.value = data.list || [];
rows
.
value
=
res
.
data
.
data
||
[];
// pagination.total = data.total_count;
tableTotal
.
value
=
res
.
data
.
total
;
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
};
};
// 处置反馈
// 处置反馈
const
visible
=
ref
(
false
);
const
visible
=
ref
(
false
);
...
@@ -306,9 +287,33 @@ const goTo = ({ id }) => {
...
@@ -306,9 +287,33 @@ const goTo = ({ id }) => {
}
}
}
}
}
}
:deep
(
.el-button.is-link
)
{
line-height
:
1
;
}
.bg-pagination
{
.bg-pagination
{
bottom
:
unset
;
bottom
:
unset
;
}
}
.status-body
{
display
:
flex
;
align-items
:
center
;
.status
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
border-radius
:
50%
;
margin-right
:
8px
;
$statusObj
:
(
2
:
#48ad97
,
3
:
#9e9e9e
,
1
:
#3759be
,
);
@each
$status
,
$color
in
$statusObj
{
&
-
#{
$status
}
{
background-color
:
$color
;
}
}
}
}
}
}
}
}
</
style
>
</
style
>
src/page/main/ticket/business-ticket-manage/add/index.vue
View file @
d972548e
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
</div>
</div>
<div
class=
"add-btns"
>
<div
class=
"add-btns"
>
<el-button
size=
"default"
@
click=
"Cancle"
>
取消
</el-button>
<el-button
size=
"default"
@
click=
"Cancle"
>
取消
</el-button>
<el-button
type=
"primary"
size=
"default"
@
click=
"Save"
>
保存
</el-button>
<el-button
type=
"primary"
size=
"default"
@
click=
"Save
Submit
"
>
保存
</el-button>
<el-button
type=
"primary"
size=
"default"
@
click=
"Distribute"
>
立即下发
</el-button>
<el-button
type=
"primary"
size=
"default"
@
click=
"Distribute"
>
立即下发
</el-button>
</div>
</div>
</div>
</div>
...
@@ -21,20 +21,25 @@ import { ref } from "vue";
...
@@ -21,20 +21,25 @@ import { ref } from "vue";
import
{
useRouter
}
from
"
vue-router
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
addForm
from
"
../modules/add-form.vue
"
;
import
addForm
from
"
../modules/add-form.vue
"
;
import
{
Save
}
from
"
../modules/interface.js
"
;
const
router
=
useRouter
();
const
router
=
useRouter
();
const
Cancle
=
()
=>
{
const
Cancle
=
()
=>
{
router
.
go
(
-
1
);
router
.
go
(
-
1
);
};
};
const
add_form
=
ref
(
null
);
const
add_form
=
ref
(
null
);
const
Save
=
async
()
=>
{
const
Save
Submit
=
async
()
=>
{
let
res
=
await
add_form
.
value
.
Submit
();
let
res
=
await
add_form
.
value
.
Submit
();
if
(
!
res
)
return
;
if
(
!
res
)
return
;
console
.
log
(
"
res:
"
,
res
);
Save
(
res
,
{
url
:
"
/v1/api/work_order/work_order_manage/add
"
},
()
=>
{
Cancle
();
});
};
};
const
Distribute
=
async
()
=>
{
const
Distribute
=
async
()
=>
{
let
res
=
await
add_form
.
value
.
Submit
();
let
res
=
await
add_form
.
value
.
Submit
();
if
(
!
res
)
return
;
if
(
!
res
)
return
;
console
.
log
(
"
res:
"
,
res
);
Save
(
res
,
{},
()
=>
{
Cancle
();
});
};
};
</
script
>
</
script
>
...
...
src/page/main/ticket/business-ticket-manage/detail/index.vue
View file @
d972548e
This diff is collapsed.
Click to expand it.
src/page/main/ticket/business-ticket-manage/edit/index.vue
View file @
d972548e
...
@@ -18,10 +18,14 @@
...
@@ -18,10 +18,14 @@
<
script
setup
>
<
script
setup
>
import
{
onMounted
,
ref
}
from
"
vue
"
;
import
{
onMounted
,
ref
}
from
"
vue
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
{
useRouter
,
useRoute
}
from
"
vue-router
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
addForm
from
"
../modules/add-form.vue
"
;
import
addForm
from
"
../modules/add-form.vue
"
;
import
axios
from
"
@/request/http.js
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
const
router
=
useRouter
();
const
router
=
useRouter
();
const
route
=
useRoute
();
const
{
id
}
=
route
.
query
;
const
infoData
=
ref
({});
const
infoData
=
ref
({});
const
Cancle
=
()
=>
{
const
Cancle
=
()
=>
{
router
.
go
(
-
1
);
router
.
go
(
-
1
);
...
@@ -30,51 +34,69 @@ const add_form = ref(null);
...
@@ -30,51 +34,69 @@ const add_form = ref(null);
const
Save
=
async
()
=>
{
const
Save
=
async
()
=>
{
let
res
=
await
add_form
.
value
.
Submit
();
let
res
=
await
add_form
.
value
.
Submit
();
if
(
!
res
)
return
;
if
(
!
res
)
return
;
console
.
log
(
"
res:
"
,
res
);
Save
(
res
,
{
url
:
"
/v1/api/work_order/work_order_manage/edit
"
},
()
=>
{
Cancle
();
});
};
};
const
Distribute
=
async
()
=>
{
const
Distribute
=
async
()
=>
{
let
res
=
await
add_form
.
value
.
Submit
();
let
res
=
await
add_form
.
value
.
Submit
();
if
(
!
res
)
return
;
if
(
!
res
)
return
;
console
.
log
(
"
res:
"
,
res
);
Save
(
res
,
{
id
,
url
:
"
/v1/api/work_order/work_order_manage/edit
"
},
()
=>
{
Cancle
();
});
};
const
getInfoData
=
()
=>
{
const
params
=
{
id
,
};
axios
.
get
(
"
/v1/api/work_order/work_order_manage/details
"
,
{
params
}).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
let
{
data
}
=
res
.
data
;
let
ruleObj
=
{
1
:
{},
2
:
{
week_days
:
data
.
timing_weekly
?.
week
||
[],
time
:
data
.
timing_weekly
?.
point_time
||
""
,
},
3
:
{
lists
:
data
.
timing_custom
?.
map
((
e
)
=>
{
return
{
date
:
[
e
.
date_from
,
e
.
date_to
],
time
:
e
.
point_time
,
};
}),
},
};
infoData
.
value
=
{
ticket_name
:
data
.
order_name
,
id
:
data
.
id
,
status
:
data
.
timing_state
,
// finish: 10,
// all: 10,
history
:
{
method
:
data
.
push_obj
.
push_method
==
3
?
[
"
1
"
,
"
2
"
]
:
[
`
${
data
.
push_obj
.
push_method
}
`
],
lists
:
data
.
push_obj
.
user_obj
.
map
((
e
)
=>
{
return
{
user_id
:
e
.
system_account
,
user_name
:
e
.
user_name
,
phone
:
e
.
phone
,
};
}),
},
ticket_level
:
data
.
order_level
,
ticket_desc
:
data
.
order_desc
,
timing_rules
:
+
data
.
timing_type
,
rules
:
{
...
ruleObj
,
},
};
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
};
};
onMounted
(()
=>
{
onMounted
(()
=>
{
setTimeout
(()
=>
{
getInfoData
();
infoData
.
value
=
{
ticket_name
:
11
,
id
:
111
,
status
:
1
,
finish
:
10
,
all
:
10
,
history
:
{
method
:
[
"
1
"
,
"
2
"
],
lists
:
[
{
user_id
:
"
1111
"
,
user_name
:
"
11111111
"
,
phone
:
"
13011111111
"
,
},
],
},
ticket_name
:
"
1
"
,
ticket_level
:
1
,
ticket_desc
:
"
1111
"
,
timing_rules
:
2
,
rules
:
{
lists
:
[
{
date
:
[
"
2023-01-01
"
,
"
2023-12-31
"
],
time
:
"
00:00:00
"
,
},
{
date
:
[
"
2023-01-01
"
,
"
2023-12-31
"
],
time
:
"
00:00:01
"
,
},
],
week_days
:
[
1
,
2
,
3
,
4
,
6
],
time
:
"
00:00:03
"
,
},
};
},
1000
);
});
});
</
script
>
</
script
>
...
...
src/page/main/ticket/business-ticket-manage/index.vue
View file @
d972548e
This diff is collapsed.
Click to expand it.
src/page/main/ticket/business-ticket-manage/modules/add-form.vue
View file @
d972548e
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
<ManualDistributionForm
<ManualDistributionForm
ref=
"manual_distribution_form"
ref=
"manual_distribution_form"
:noElLabel=
"false"
:noElLabel=
"false"
:methodLists=
"ORDER_METHODS"
methodLabel=
"推送方式"
methodLabel=
"推送方式"
:history=
"history"
/>
:history=
"history"
/>
</div>
</div>
...
@@ -52,6 +53,7 @@ import { computed, onMounted, reactive, ref, shallowReactive, defineExpose, watc
...
@@ -52,6 +53,7 @@ import { computed, onMounted, reactive, ref, shallowReactive, defineExpose, watc
import
ManualDistributionForm
from
"
@/components/manual-distribution/form.vue
"
;
import
ManualDistributionForm
from
"
@/components/manual-distribution/form.vue
"
;
import
customTime
from
"
./custom-time.vue
"
;
import
customTime
from
"
./custom-time.vue
"
;
import
byWeek
from
"
./by-week.vue
"
;
import
byWeek
from
"
./by-week.vue
"
;
import
{
ORDER_METHODS
}
from
"
@/components/manual-distribution/env.js
"
;
const
manual_distribution_form
=
ref
(
null
);
const
manual_distribution_form
=
ref
(
null
);
const
coms
=
shallowReactive
({
const
coms
=
shallowReactive
({
2
:
byWeek
,
2
:
byWeek
,
...
@@ -136,7 +138,7 @@ const Submit = async () => {
...
@@ -136,7 +138,7 @@ const Submit = async () => {
return
{
return
{
...
state
.
form
,
...
state
.
form
,
...
manual_distribution_form
.
value
.
form
,
...
manual_distribution_form
.
value
.
form
,
...
rule_ref
.
value
.
form
,
rule_ref
:
{
...
rule_ref
.
value
?.
form
}
||
{}
,
};
};
};
};
defineExpose
({
defineExpose
({
...
...
src/page/main/ticket/business-ticket-manage/modules/interface.js
0 → 100644
View file @
d972548e
import
{
ElMessage
}
from
"
element-plus
"
;
import
axios
from
"
@/request/http.js
"
;
const
setParams
=
(
res
,
{
id
})
=>
{
let
params
=
{
order_name
:
res
.
ticket_name
,
order_level
:
+
res
.
ticket_level
,
order_desc
:
res
.
ticket_desc
,
timing_type
:
+
res
.
timing_rules
,
push_obj
:
{
push_method
:
res
.
method
.
length
>
1
?
3
:
+
res
.
method
[
0
],
user_obj
:
res
.
lists
.
map
(
e
=>
{
return
{
system_account
:
e
.
user_id
,
user_name
:
e
.
user_name
,
phone
:
e
.
phone
}
})
}
}
let
ruleObj
=
{
1
:
{},
2
:
{
timing_weekly
:
{
week
:
res
.
rule_ref
.
week_days
,
point_time
:
res
.
rule_ref
.
time
}
},
3
:
{
timing_custom
:
!
res
.
rule_ref
.
rules
?
[]
:
res
.
rule_ref
.
rules
.
map
(
e
=>
{
return
{
date_from
:
e
.
date
[
0
]
||
''
,
date_to
:
e
.
date
[
1
]
||
''
,
point_time
:
e
.
time
}
})
}
}
params
=
{
...
params
,
...
ruleObj
[
res
.
timing_rules
]
}
if
(
id
)
{
params
.
id
=
id
}
return
params
;
}
export
const
Save
=
(
res
,
p
,
cb
)
=>
{
let
params
=
setParams
(
res
,
p
);
axios
[
p
.
id
?
'
put
'
:
'
post
'
](
p
.
url
,
params
).
then
(
res
=>
{
if
(
res
.
data
.
code
==
200
)
{
ElMessage
.
success
(
`
${
p
.
id
?
'
编辑
'
:
'
新增
'
}
成功`
)
cb
&&
cb
()
}
else
{
ElMessage
.
error
(
res
.
data
.
data
)
}
})
}
\ No newline at end of file
src/page/main/ticket/modules/feedback-detail/detail.vue
View file @
d972548e
<
template
>
<
template
>
<div
class=
"detail-info"
>
<div
class=
"detail-info"
>
<div
class=
"status"
:class=
"`feedback-detail-status-$
{info.status}`">
<div
class=
"status"
:class=
"`feedback-detail-status-$
{info.status}`">
{{
STATUS_OBJ
[
info
.
status
]
}}
{{
statusOptions
[
info
.
status
]
}}
</div>
</div>
<div
class=
"info-body"
>
<div
class=
"info-body"
>
<div
v-for=
"label in infoLabel"
:key=
"label.prop"
>
<div
v-for=
"label in infoLabel"
:key=
"label.prop"
>
...
@@ -13,11 +13,7 @@
...
@@ -13,11 +13,7 @@
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
const
STATUS_OBJ
=
{
const
statusOptions
=
[
""
,
"
待处置
"
,
"
已完成
"
,
"
已关闭
"
];
finish
:
"
已完成
"
,
close
:
"
已关闭
"
,
info
:
"
待处置
"
,
};
const
props
=
defineProps
({
const
props
=
defineProps
({
info
:
{
info
:
{
type
:
Object
,
type
:
Object
,
...
@@ -58,9 +54,9 @@ const infoLabel = [
...
@@ -58,9 +54,9 @@ const infoLabel = [
border-bottom
:
1px
solid
#e3e4ef
;
border-bottom
:
1px
solid
#e3e4ef
;
&
.feedback-detail-status
{
&
.feedback-detail-status
{
$statusObj
:
(
$statusObj
:
(
finish
:
#48ad97
,
2
:
#48ad97
,
close
:
#242c43
,
3
:
#242c43
,
info
:
#3759be
,
1
:
#3759be
,
);
);
@each
$status
,
$color
in
$statusObj
{
@each
$status
,
$color
in
$statusObj
{
&
-
#{
$status
}
{
&
-
#{
$status
}
{
...
...
src/page/main/ticket/modules/feedback.vue
View file @
d972548e
...
@@ -33,6 +33,8 @@
...
@@ -33,6 +33,8 @@
<
script
setup
>
<
script
setup
>
import
{
computed
,
reactive
,
ref
}
from
"
vue
"
;
import
{
computed
,
reactive
,
ref
}
from
"
vue
"
;
import
GapTitle
from
"
@/components/gap-title.vue
"
;
import
GapTitle
from
"
@/components/gap-title.vue
"
;
import
axios
from
"
axios
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
const
props
=
defineProps
({
const
props
=
defineProps
({
visible
:
{
visible
:
{
...
@@ -87,7 +89,24 @@ const beforeClose = () => {
...
@@ -87,7 +89,24 @@ const beforeClose = () => {
const
Submit
=
()
=>
{
const
Submit
=
()
=>
{
form
.
value
.
validate
((
valid
)
=>
{
form
.
value
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
console
.
log
(
state
.
form
);
let
params
=
{
id
:
props
.
active_row
.
id
,
};
if
(
!
props
.
isWarn
)
{
params
.
order_issuance_id
=
props
.
active_row
.
order_issuance_id
;
params
.
result_feedback
=
state
.
form
.
result
;
}
else
{
params
.
order_issuance_id
=
props
.
active_row
.
order_issuance_id
;
params
.
result_feedback
=
state
.
form
.
result
;
}
axios
.
put
(
props
.
active_row
.
url
,
params
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
ElMessage
.
success
(
"
处置反馈提交成功!
"
);
Close
();
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
}
else
{
}
else
{
return
false
;
return
false
;
}
}
...
...
src/page/main/ticket/my-business-ticket/detail/index.vue
View file @
d972548e
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<template
#status
="
{ item, valueData }">
<template
#status
="
{ item, valueData }">
<span
class=
"status-body"
>
<span
class=
"status-body"
>
<span
class=
"status"
:class=
"`status-$
{valueData.status}`">
</span>
<span
class=
"status"
:class=
"`status-$
{valueData.status}`">
</span>
<span>
{{
STATUS_OBJ
[
valueData
[
item
.
prop
]]
}}
</span>
<span>
{{
statusOptions
[
valueData
[
item
.
prop
]]
}}
</span>
</span>
</span>
</
template
>
</
template
>
</Info>
</Info>
...
@@ -22,11 +22,8 @@
...
@@ -22,11 +22,8 @@
<div
class=
"info"
>
<div
class=
"info"
>
<Info
:labelData=
"notificationMethod"
:valueData=
"info"
>
<Info
:labelData=
"notificationMethod"
:valueData=
"info"
>
<
template
#notification_method
="{
valueData
}"
>
<
template
#notification_method
="{
valueData
}"
>
<span>
{{
valueData
.
notification_method
.
map
((
e
)
=>
METHODS
[
e
]).
join
(
"
,
"
)
}}
</span>
<span>
{{
valueData
.
notification_method
?.
map
((
e
)
=>
ORDER_
METHODS
[
e
]).
join
(
"
,
"
)
}}
</span>
</
template
>
</
template
>
<!-- <template #value="{ item, valueData }">
<span>{{ valueData[item.prop].map((e) => METHODS[e]).join(",") }}</span>
</template> -->
</Info>
</Info>
<div
class=
"notification-lists"
>
<div
class=
"notification-lists"
>
<bg-table
border
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
>
</bg-table>
<bg-table
border
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
>
</bg-table>
...
@@ -41,18 +38,20 @@
...
@@ -41,18 +38,20 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
ref
}
from
"
vue
"
;
import
{
ref
,
onBeforeMount
}
from
"
vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
Info
from
"
@/components/warn-detail/info.vue
"
;
import
Info
from
"
@/components/warn-detail/info.vue
"
;
import
gapTitle
from
"
@/components/gap-title.vue
"
;
import
gapTitle
from
"
@/components/gap-title.vue
"
;
import
feedbackDetail
from
"
@/page/main/ticket/modules/feedback-detail/index.vue
"
;
import
feedbackDetail
from
"
@/page/main/ticket/modules/feedback-detail/index.vue
"
;
import
goBack
from
"
@/components/go-back/index.vue
"
;
import
goBack
from
"
@/components/go-back/index.vue
"
;
import
{
METHODS
}
from
"
@/components/manual-distribution/env.js
"
;
import
{
ORDER_METHODS
}
from
"
@/components/manual-distribution/env.js
"
;
const
STATUS_OBJ
=
{
import
{
useRoute
}
from
"
vue-router
"
;
finish
:
"
已完成
"
,
import
{
ElMessage
}
from
"
element-plus
"
;
close
:
"
已关闭
"
,
import
axios
from
"
@/request/http.js
"
;
info
:
"
待处置
"
,
const
route
=
useRoute
();
};
const
{
id
}
=
route
.
query
;
const
ticketLevelOptions
=
[
""
,
"
紧急任务
"
,
"
重要任务
"
,
"
一般任务
"
];
const
statusOptions
=
[
""
,
"
待处置
"
,
"
已完成
"
,
"
已关闭
"
];
const
labelData
=
[
const
labelData
=
[
[
[
{
{
...
@@ -91,16 +90,7 @@ const labelData = [
...
@@ -91,16 +90,7 @@ const labelData = [
},
},
],
],
];
];
const
info
=
{
const
info
=
ref
();
ticket_name
:
"
7月常态化运维巡检任务
"
,
status
:
"
finish
"
,
ticket_level
:
"
紧急任务
"
,
create_by
:
"
管理员
"
,
description
:
"
请进行所有系统常态化月度巡检任务(每月定期常态运维巡检),将巡检结果上报!
"
,
create_time
:
"
2020-01-01 00:00:00
"
,
finish_time
:
"
2020-01-01 00:00:00
"
,
notification_method
:
[
"
1
"
,
"
2
"
],
};
const
notificationMethod
=
[
const
notificationMethod
=
[
[
[
{
{
...
@@ -123,37 +113,50 @@ const headers = [
...
@@ -123,37 +113,50 @@ const headers = [
label
:
"
联系方式
"
,
label
:
"
联系方式
"
,
},
},
];
];
const
rows
=
ref
([
const
rows
=
ref
([]);
{
const
detailInfo
=
ref
([]);
user_id
:
"
11
"
,
const
getInfo
=
()
=>
{
user_name
:
"
1111
"
,
axios
phone
:
"
13211111111
"
,
.
get
(
"
/v1/api/work_order/work_order_issuance/details
"
,
{
},
params
:
{
{
id
,
user_id
:
"
22
"
,
},
user_name
:
"
2222
"
,
})
phone
:
"
13222222222
"
,
.
then
((
res
)
=>
{
},
if
(
res
.
data
.
code
==
200
)
{
{
let
{
data
}
=
res
.
data
;
user_id
:
"
33
"
,
console
.
log
(
"
data:
"
,
data
);
user_name
:
"
3333
"
,
info
.
value
=
{
phone
:
"
13233333333
"
,
ticket_name
:
data
.
order_name
,
},
status
:
data
.
order_state
,
]);
ticket_level
:
ticketLevelOptions
[
data
.
order_level
],
const
detailInfo
=
ref
([
create_by
:
data
.
create_user
,
{
description
:
data
.
order_desc
,
status
:
"
close
"
,
create_time
:
data
.
create_time
?.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
||
"
-
"
,
target
:
"
张三
"
,
finish_time
:
data
.
complete_time
?.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
||
"
-
"
,
feedback
:
"
任务临时取消
"
,
notification_method
:
data
.
push_obj
.
push_method
==
"
3
"
?
[
"
1
"
,
"
2
"
]
:
[
data
.
push_obj
.
push_method
],
time
:
"
2022-10-22 09:58:30
"
,
};
},
rows
.
value
=
data
.
push_obj
.
user_obj
.
map
((
e
)
=>
{
{
return
{
status
:
"
finish
"
,
user_id
:
e
.
system_account
,
target
:
"
李四
"
,
user_name
:
e
.
user_name
,
feedback
:
"
任务临时取消
"
,
phone
:
e
.
phone
,
time
:
"
2022-10-22 09:58:30
"
,
};
},
});
]);
detailInfo
.
value
=
data
.
work_order_me
.
map
((
e
)
=>
{
return
{
status
:
e
.
order_state
,
target
:
e
.
system_account
,
feedback
:
e
.
result_feedback
,
time
:
e
.
complete_time
?.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
||
"
-
"
,
};
});
}
});
};
onBeforeMount
(()
=>
{
getInfo
();
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -192,9 +195,9 @@ const detailInfo = ref([
...
@@ -192,9 +195,9 @@ const detailInfo = ref([
border-radius
:
50%
;
border-radius
:
50%
;
margin-right
:
8px
;
margin-right
:
8px
;
$statusObj
:
(
$statusObj
:
(
finish
:
#48ad97
,
2
:
#48ad97
,
close
:
#9e9e9e
,
3
:
#9e9e9e
,
info
:
#3759be
,
1
:
#3759be
,
);
);
@each
$status
,
$color
in
$statusObj
{
@each
$status
,
$color
in
$statusObj
{
&
-
#{
$status
}
{
&
-
#{
$status
}
{
...
...
src/page/main/ticket/my-business-ticket/index.vue
View file @
d972548e
...
@@ -4,28 +4,28 @@
...
@@ -4,28 +4,28 @@
<bg-breadcrumb
/>
<bg-breadcrumb
/>
</div>
</div>
<div
class=
"content"
>
<div
class=
"content"
>
<bg-filter-group
@
search=
"changeSearch"
v-model=
"filter.
key_word
"
placeholder=
"请输入角色名称"
>
<bg-filter-group
@
search=
"changeSearch"
v-model=
"filter.
search
"
placeholder=
"请输入角色名称"
>
<template
v-slot:filter_group
>
<template
v-slot:filter_group
>
<div
class=
"left-filter filter_list"
>
<div
class=
"left-filter filter_list"
>
<div
class=
"filter_item"
>
<div
class=
"filter_item"
>
<span
class=
"filter_title"
>
工单等级
</span>
<span
class=
"filter_title"
>
工单等级
</span>
<el-select
v-model=
"filter.
ticket
_level"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.
order
_level"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in ticketLevelOptions"
v-for=
"(item, index) in ticketLevelOptions"
:key=
"'
pushO
ptions' + index"
:key=
"'
order_level_o
ptions' + index"
:label=
"item
.name
"
:label=
"item"
:value=
"i
tem.value
"
>
:value=
"i
ndex
"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
<div
class=
"filter_item"
>
<div
class=
"filter_item"
>
<span
class=
"filter_title"
>
状态
</span>
<span
class=
"filter_title"
>
状态
</span>
<el-select
v-model=
"filter.
status
"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.
order_state
"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in statusOptions"
v-for=
"(item, index) in statusOptions"
:key=
"'
pushO
ptions' + index"
:key=
"'
order_state_o
ptions' + index"
:label=
"item
.name
"
:label=
"item"
:value=
"i
tem.value
"
>
:value=
"i
ndex
"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
...
@@ -61,17 +61,34 @@
...
@@ -61,17 +61,34 @@
<div
class=
"table_container"
>
<div
class=
"table_container"
>
<div
class=
"table"
>
<div
class=
"table"
>
<bg-table
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
:stripe=
"true"
>
<bg-table
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
:stripe=
"true"
>
<
template
#ticket_name
="{
row
}"
>
<
template
#order_name
="{
row
}"
>
<div
class=
"href"
@
click=
"goTo(row)"
>
{{
row
.
ticket_name
||
"
-
"
}}
</div>
<div
class=
"href"
@
click=
"goTo(row)"
>
{{
row
.
order_name
||
"
-
"
}}
</div>
</
template
>
<
template
#order_level
="{
row
}"
>
<span>
{{
ticketLevelOptions
[
row
.
order_level
]
}}
</span>
</
template
>
<
template
#order_state
="{
row
}"
>
<span
class=
"status-body"
>
<span
class=
"status"
:class=
"`status-$
{row.order_state}`">
</span>
<span>
{{
statusOptions
[
row
.
order_state
]
}}
</span>
</span>
</
template
>
<
template
#create_time
="{
row
}"
>
{{
row
.
create_time
?
row
.
create_time
.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
:
"
-
"
}}
</
template
>
<
template
#complete_time
="{
row
}"
>
{{
row
.
complete_time
?
row
.
complete_time
.
split
(
"
+
"
)[
0
].
replace
(
"
T
"
,
"
"
).
replace
(
"
Z
"
,
"
"
)
:
"
-
"
}}
</
template
>
</
template
>
<
template
#operation
="{
row
}"
>
<
template
#operation
="{
row
}"
>
<span
class=
"primary-edit"
@
click=
"operation(row)"
>
处置反馈
</span>
<el-button
type=
"primary"
:disabled=
"row.order_state != 1"
link
size=
"small"
@
click=
"operation(row)"
>
处置反馈
</el-button>
</
template
>
</
template
>
</bg-table>
</bg-table>
<div
class=
"pagination_box"
>
<div
class=
"pagination_box"
>
<bg-pagination
<bg-pagination
:page=
"filter.page"
:page=
"filter.page"
:size=
"filter.
limit
"
:size=
"filter.
page_size
"
:total=
"tableTotal"
:total=
"tableTotal"
@
change-page=
"changePage"
@
change-page=
"changePage"
@
change-size=
"changeSize"
>
@
change-size=
"changeSize"
>
...
@@ -89,74 +106,68 @@ import { ref, reactive, onMounted, nextTick } from "vue";
...
@@ -89,74 +106,68 @@ import { ref, reactive, onMounted, nextTick } from "vue";
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
FeedBack
from
"
../modules/feedback.vue
"
;
import
FeedBack
from
"
../modules/feedback.vue
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
axios
from
"
@/request/http.js
"
;
const
router
=
useRouter
();
const
router
=
useRouter
();
const
filter
=
reactive
({
const
filter
=
reactive
({
ticket_level
:
""
,
order_level
:
0
,
key_word
:
""
,
search
:
""
,
create_time
:
[],
create_time
:
[],
finish_time
:
[],
finish_time
:
[],
status
:
""
,
order_state
:
0
,
page
:
1
,
page
:
1
,
limit
:
10
,
page_size
:
10
,
});
});
const
filterClear
=
()
=>
{
const
filterClear
=
()
=>
{
filter
.
ticket_level
=
""
;
filter
.
order_level
=
0
;
filter
.
key_word
=
""
;
filter
.
search
=
""
;
filter
.
status
=
""
;
filter
.
order_state
=
0
;
filter
.
create_time
=
[];
filter
.
create_time
=
[];
filter
.
finish_time
=
[];
filter
.
finish_time
=
[];
filter
.
limit
=
10
;
filter
.
page_size
=
10
;
filter
.
page
=
1
;
filter
.
page
=
1
;
changePage
(
1
);
changePage
(
1
);
};
// 重置筛选项
};
// 重置筛选项
const
tableTotal
=
ref
(
0
);
const
tableTotal
=
ref
(
0
);
const
ticketLevelOptions
=
ref
([
const
ticketLevelOptions
=
[
"
全部
"
,
"
紧急任务
"
,
"
重要任务
"
,
"
一般任务
"
];
{
const
statusOptions
=
[
"
全部
"
,
"
待处置
"
,
"
已完成
"
,
"
已关闭
"
];
value
:
""
,
name
:
"
全部
"
,
},
]);
const
statusOptions
=
ref
([
{
value
:
""
,
name
:
"
全部
"
,
},
]);
let
headers
=
reactive
([
let
headers
=
reactive
([
{
{
label
:
"
工单名称
"
,
label
:
"
工单名称
"
,
prop
:
"
ticket
_name
"
,
prop
:
"
order
_name
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
工单等级
"
,
label
:
"
工单等级
"
,
prop
:
"
ticket
_level
"
,
prop
:
"
order
_level
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
工单状态
"
,
label
:
"
工单状态
"
,
prop
:
"
ticket_status
"
,
prop
:
"
order_state
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
下发对象
"
,
label
:
"
下发对象
"
,
prop
:
"
distribute_target
"
,
prop
:
"
push_obj
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
创建人
"
,
label
:
"
创建人
"
,
prop
:
"
create_
by
"
,
prop
:
"
create_
user
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
创建时间
"
,
label
:
"
创建时间
"
,
prop
:
"
create_time
"
,
prop
:
"
create_time
"
,
align
:
"
left
"
,
align
:
"
left
"
,
width
:
160
,
},
},
{
{
label
:
"
完成时间
"
,
label
:
"
完成时间
"
,
prop
:
"
finish
_time
"
,
prop
:
"
complete
_time
"
,
align
:
"
left
"
,
align
:
"
left
"
,
width
:
160
,
},
},
{
{
label
:
"
操作
"
,
label
:
"
操作
"
,
...
@@ -165,13 +176,9 @@ let headers = reactive([
...
@@ -165,13 +176,9 @@ let headers = reactive([
width
:
"
80px
"
,
width
:
"
80px
"
,
},
},
]);
]);
let
rows
=
ref
([
let
rows
=
ref
([]);
{
ticket_name
:
11
,
id
:
111
},
{
ticket_name
:
22
,
id
:
222
},
{
ticket_name
:
33
,
id
:
333
},
]);
const
changeSize
=
(
size
)
=>
{
const
changeSize
=
(
size
)
=>
{
filter
.
limit
=
size
;
filter
.
page_size
=
size
;
changePage
(
1
);
changePage
(
1
);
};
};
...
@@ -180,7 +187,7 @@ const changePage = (page) => {
...
@@ -180,7 +187,7 @@ const changePage = (page) => {
getTableRows
();
getTableRows
();
};
};
const
changeSearch
=
(
val
)
=>
{
const
changeSearch
=
(
val
)
=>
{
filter
.
key_word
=
val
;
filter
.
search
=
val
;
changePage
(
1
);
changePage
(
1
);
};
// 表格关键字筛选
};
// 表格关键字筛选
...
@@ -192,34 +199,38 @@ onMounted(() => {
...
@@ -192,34 +199,38 @@ onMounted(() => {
});
});
const
getTableRows
=
async
()
=>
{
const
getTableRows
=
async
()
=>
{
let
[
create
StartTime
=
""
,
createEndTime
=
""
]
=
filter
.
create_time
||
[];
let
[
create
_date_from
=
""
,
create_date_to
=
""
]
=
filter
.
create_time
||
[];
let
[
finishStartTime
=
""
,
finishEndTime
=
""
]
=
filter
.
finish_time
||
[];
let
[
complete_time_from
=
""
,
complete_time_to
=
""
]
=
filter
.
finish_time
||
[];
let
urlParams
=
{
let
urlParams
=
{
...
filter
,
...
filter
,
create
StartTime
,
create
_date_from
,
create
EndTime
,
create
_date_to
,
finishStartTime
,
complete_time_from
,
finishEndTime
,
complete_time_to
,
};
};
Reflect
.
deleteProperty
(
urlParams
,
"
create_time
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
create_time
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
finish_time
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
finish_time
"
);
console
.
log
(
"
urlParams:
"
,
urlParams
);
axios
.
get
(
"
/v1/api/work_order/work_order_me/list
"
,
{
params
:
urlParams
}).
then
((
res
)
=>
{
// const { data, total } = await instanceList(urlParams);
if
(
res
.
data
.
code
==
200
)
{
// rows.value = data.list || [];
rows
.
value
=
res
.
data
.
data
||
[];
// pagination.total = data.total_count;
tableTotal
.
value
=
res
.
data
.
total
;
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
};
};
// 处置反馈
// 处置反馈
const
visible
=
ref
(
false
);
const
visible
=
ref
(
false
);
const
active_row
=
ref
(
null
);
const
active_row
=
ref
(
null
);
const
operation
=
(
row
)
=>
{
const
operation
=
(
row
)
=>
{
active_row
.
value
=
row
;
active_row
.
value
=
{
...
row
,
url
:
"
/v1/api/work_order/work_order_me/feedback
"
}
;
visible
.
value
=
true
;
visible
.
value
=
true
;
};
};
const
goTo
=
({
id
})
=>
{
const
goTo
=
({
order_issuance_
id
})
=>
{
router
.
push
({
router
.
push
({
path
:
"
/ticket/my-business-ticket/detail
"
,
path
:
"
/ticket/my-business-ticket/detail
"
,
query
:
{
query
:
{
id
,
id
:
order_issuance_id
,
},
},
});
});
};
};
...
@@ -273,9 +284,33 @@ const goTo = ({ id }) => {
...
@@ -273,9 +284,33 @@ const goTo = ({ id }) => {
}
}
}
}
}
}
:deep
(
.el-button.is-link
)
{
line-height
:
1
;
}
.bg-pagination
{
.bg-pagination
{
bottom
:
unset
;
bottom
:
unset
;
}
}
.status-body
{
display
:
flex
;
align-items
:
center
;
.status
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
border-radius
:
50%
;
margin-right
:
8px
;
$statusObj
:
(
2
:
#48ad97
,
3
:
#9e9e9e
,
1
:
#3759be
,
);
@each
$status
,
$color
in
$statusObj
{
&
-
#{
$status
}
{
background-color
:
$color
;
}
}
}
}
}
}
}
}
</
style
>
</
style
>
src/page/main/ticket/my-warn-ticket/index.vue
View file @
d972548e
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
<el-select
v-model=
"filter.warning_index"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.warning_index"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in wainingIndexOptions"
v-for=
"(item, index) in wainingIndexOptions"
:key=
"'
pushO
ptions' + index"
:key=
"'
warning_index_o
ptions' + index"
:label=
"item.name"
:label=
"item.name"
:value=
"item.value"
>
:value=
"item.value"
>
</el-option>
</el-option>
...
@@ -34,9 +34,9 @@
...
@@ -34,9 +34,9 @@
<el-select
v-model=
"filter.risk_level"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.risk_level"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in riskLevelOptions"
v-for=
"(item, index) in riskLevelOptions"
:key=
"'
pushO
ptions' + index"
:key=
"'
risk_level_o
ptions' + index"
:label=
"item.name"
:label=
"item.name"
:value=
"item.
value
"
>
:value=
"item.
id
"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
...
@@ -45,9 +45,9 @@
...
@@ -45,9 +45,9 @@
<el-select
v-model=
"filter.status"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-select
v-model=
"filter.status"
placeholder=
"请选择"
style=
"width: 300px"
>
<el-option
<el-option
v-for=
"(item, index) in statusOptions"
v-for=
"(item, index) in statusOptions"
:key=
"'
push
Options' + index"
:key=
"'
status
Options' + index"
:label=
"item
.name
"
:label=
"item"
:value=
"i
tem.value
"
>
:value=
"i
ndex
"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
...
@@ -72,17 +72,19 @@
...
@@ -72,17 +72,19 @@
<div
class=
"table_container"
>
<div
class=
"table_container"
>
<div
class=
"table"
>
<div
class=
"table"
>
<bg-table
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
:stripe=
"true"
>
<bg-table
ref=
"listtable"
:headers=
"headers"
:rows=
"rows"
height=
"100%"
:isIndex=
"true"
:stripe=
"true"
>
<
template
#
warning
_point
="{
row
}"
>
<
template
#
alert
_point
="{
row
}"
>
<div
class=
"href"
@
click=
"goTo(row)"
>
{{
row
.
warning
_point
||
"
-
"
}}
</div>
<div
class=
"href"
@
click=
"goTo(row)"
>
{{
row
.
alert
_point
||
"
-
"
}}
</div>
</
template
>
</
template
>
<
template
#operation
="{
row
}"
>
<
template
#operation
="{
row
}"
>
<span
class=
"primary-edit"
@
click=
"operation(row)"
>
处置反馈
</span>
<el-button
type=
"primary"
:disabled=
"row.order_state != 1"
link
size=
"small"
@
click=
"operation(row)"
>
处置反馈
</el-button>
</
template
>
</
template
>
</bg-table>
</bg-table>
<div
class=
"pagination_box"
>
<div
class=
"pagination_box"
>
<bg-pagination
<bg-pagination
:page=
"filter.page"
:page=
"filter.page"
:size=
"filter.
limit
"
:size=
"filter.
page_size
"
:total=
"tableTotal"
:total=
"tableTotal"
@
change-page=
"changePage"
@
change-page=
"changePage"
@
change-size=
"changeSize"
>
@
change-size=
"changeSize"
>
...
@@ -90,34 +92,12 @@
...
@@ -90,34 +92,12 @@
</div>
</div>
</div>
</div>
</div>
</div>
<!-- <el-button type="primary" size="default" @click="feedback">
处置反馈
</el-button> -->
<!-- <ManualDistributionForm ref="form" :disabled="true" /> -->
<!-- <ManualDistribution v-model:visible="visible" /> -->
</div>
</div>
<FeedBack
v-model:visible=
"visible"
:active_row=
"active_row"
:isWarn=
"true"
/>
<FeedBack
v-model:visible=
"visible"
:active_row=
"active_row"
:isWarn=
"true"
/>
</div>
</div>
</template>
</template>
<
script
setup
>
<
script
setup
>
// import { nextTick, onBeforeMount, onMounted, ref } from "vue";
// import ManualDistribution from "@/components/manual-distribution/index.vue";
// import ManualDistributionForm from "@/components/manual-distribution/form.vue";
// const form = ref(null);
// onMounted(async () => {
// await nextTick();
// form.value.init({
// method: ["1", "2"],
// lists: [
// {
// user_id: 1,
// user_name: 1111,
// phone: "13011111111",
// },
// ],
// });
// });
import
{
ref
,
reactive
,
onMounted
,
nextTick
}
from
"
vue
"
;
import
{
ref
,
reactive
,
onMounted
,
nextTick
}
from
"
vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
FeedBack
from
"
../modules/feedback.vue
"
;
import
FeedBack
from
"
../modules/feedback.vue
"
;
...
@@ -131,7 +111,7 @@ const filter = reactive({
...
@@ -131,7 +111,7 @@ const filter = reactive({
status
:
""
,
status
:
""
,
date
:
[],
date
:
[],
page
:
1
,
page
:
1
,
limit
:
10
,
page_size
:
10
,
});
});
const
tableTotal
=
ref
(
0
);
const
tableTotal
=
ref
(
0
);
const
filterClear
=
()
=>
{
const
filterClear
=
()
=>
{
...
@@ -141,10 +121,11 @@ const filterClear = () => {
...
@@ -141,10 +121,11 @@ const filterClear = () => {
filter
.
risk_level
=
""
;
filter
.
risk_level
=
""
;
filter
.
status
=
""
;
filter
.
status
=
""
;
filter
.
date
=
[];
filter
.
date
=
[];
filter
.
limit
=
10
;
filter
.
page_size
=
10
;
filter
.
page
=
1
;
filter
.
page
=
1
;
changePage
(
1
);
changePage
(
1
);
};
// 重置筛选项
};
// 重置筛选项
const
statusOptions
=
[
"
全部
"
,
"
待处置
"
,
"
已完成
"
,
"
已关闭
"
];
const
wainingTypeOptions
=
ref
([
const
wainingTypeOptions
=
ref
([
{
{
value
:
""
,
value
:
""
,
...
@@ -159,25 +140,35 @@ const wainingIndexOptions = ref([
...
@@ -159,25 +140,35 @@ const wainingIndexOptions = ref([
]);
]);
const
riskLevelOptions
=
ref
([
const
riskLevelOptions
=
ref
([
{
{
value
:
""
,
id
:
""
,
name
:
"
全部
"
,
name
:
"
全部
"
,
},
},
]);
const
statusOptions
=
ref
([
{
{
value
:
""
,
id
:
4
,
name
:
"
全部
"
,
name
:
"
重大风险
"
,
},
{
id
:
3
,
name
:
"
较大风险
"
,
},
{
id
:
2
,
name
:
"
一般风险
"
,
},
{
id
:
1
,
name
:
"
低风险
"
,
},
},
]);
]);
let
headers
=
reactive
([
let
headers
=
reactive
([
{
{
label
:
"
预警点
"
,
label
:
"
预警点
"
,
prop
:
"
warning
_point
"
,
prop
:
"
alert
_point
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
label
:
"
预警时间
"
,
label
:
"
预警时间
"
,
prop
:
"
warning_time
"
,
prop
:
"
alert_point
"
,
align
:
"
left
"
,
align
:
"
left
"
,
},
},
{
{
...
@@ -229,12 +220,12 @@ let headers = reactive([
...
@@ -229,12 +220,12 @@ let headers = reactive([
]);
]);
let
rows
=
ref
([
let
rows
=
ref
([
{
{
warning
_point
:
1
,
alert
_point
:
1
,
id
:
1
,
id
:
1
,
},
},
]);
]);
const
changeSize
=
(
size
)
=>
{
const
changeSize
=
(
size
)
=>
{
filter
.
limit
=
size
;
filter
.
page_size
=
size
;
changePage
(
1
);
changePage
(
1
);
};
};
...
@@ -262,10 +253,15 @@ const getTableRows = async () => {
...
@@ -262,10 +253,15 @@ const getTableRows = async () => {
endTime
,
endTime
,
};
};
Reflect
.
deleteProperty
(
urlParams
,
"
date
"
);
Reflect
.
deleteProperty
(
urlParams
,
"
date
"
);
console
.
log
(
"
urlParams:
"
,
urlParams
);
axios
.
get
(
"
/v1/api/alert_list/list
"
,
{
params
:
urlParams
}).
then
((
res
)
=>
{
// const { data, total } = await instanceList(urlParams);
if
(
res
.
data
.
code
==
200
)
{
// rows.value = data.list || [];
let
{
list
,
total_count
}
=
res
.
data
.
data
;
// pagination.total = data.total_count;
rows
.
value
=
list
||
[];
tableTotal
.
value
=
total_count
;
}
else
{
ElMessage
.
error
(
res
.
data
.
msg
);
}
});
};
};
// 处置反馈
// 处置反馈
const
visible
=
ref
(
false
);
const
visible
=
ref
(
false
);
...
@@ -332,6 +328,9 @@ const goTo = ({ id }) => {
...
@@ -332,6 +328,9 @@ const goTo = ({ id }) => {
}
}
}
}
}
}
:deep
(
.el-button.is-link
)
{
line-height
:
1
;
}
.bg-pagination
{
.bg-pagination
{
bottom
:
unset
;
bottom
:
unset
;
}
}
...
...
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