Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mocp-uniapp
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pangchong
mocp-uniapp
Commits
9619bcfa
Commit
9619bcfa
authored
Sep 27, 2024
by
pangchong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 品质分析责任单位
parent
83f97dad
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
715 additions
and
6 deletions
+715
-6
src/mocp/api/technicalAnalysis.js
+10
-0
src/mocp/hooks/use-dict/dict-data/technicalAnalysis.js
+6
-0
src/mocp/store/qualityAnalysis.js
+78
-2
src/mocp/store/technicalAnalysis.js
+62
-0
src/mocp/store/user.js
+1
-1
src/pages.json
+24
-0
src/pages/modules/mocp/panel/assign-work/details.vue
+1
-1
src/pages/modules/mocp/panel/qualityAnalysis/arrangeWorkList.vue
+11
-0
src/pages/modules/mocp/panel/qualityAnalysis/details.vue
+8
-2
src/pages/modules/mocp/panel/qualityAnalysis/qualityTraceList.vue
+11
-0
src/pages/modules/mocp/panel/technicalAnalysis/details.vue
+295
-0
src/pages/modules/mocp/panel/technicalAnalysis/historicalFault.vue
+27
-0
src/pages/modules/mocp/panel/technicalAnalysis/list.vue
+85
-0
src/pages/modules/mocp/panel/technicalAnalysis/search.vue
+96
-0
No files found.
src/mocp/api/technicalAnalysis.js
0 → 100644
View file @
9619bcfa
import
{
http
}
from
'mocp/utils/http'
export
const
getTaDataList2Api
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/repaircontrol/getTaDataList2'
,
data
,
config
})
}
src/mocp/hooks/use-dict/dict-data/technicalAnalysis.js
0 → 100644
View file @
9619bcfa
// 建议以文件名首字母作为前缀ta_
export
const
ta_isOpen
=
[
{
label
:
'OPEN'
,
value
:
1
},
{
label
:
'CLOSE'
,
value
:
0
},
{
label
:
'跟踪'
,
value
:
2
}
]
src/mocp/store/qualityAnalysis.js
View file @
9619bcfa
import
{
getEnetOrgTreeApi
}
from
'mocp/api/assign-work'
import
{
getQaData2Api
,
getQaDimensionTree2Api
}
from
'mocp/api/qualityAnalysis'
import
{
getQaData2Api
,
getQaDimensionTree2Api
}
from
'mocp/api/qualityAnalysis'
import
{
getSysSeatListApi
}
from
'mocp/api/system'
import
{
getSysSeatListApi
}
from
'mocp/api/system'
import
{
defineStore
}
from
'pinia'
import
{
defineStore
}
from
'pinia'
function
findRelatedLabelOfEnetOrg
(
items
,
id
)
{
let
res
=
''
for
(
const
item
of
items
)
{
if
(
item
.
key
==
id
)
{
res
=
item
.
label
break
}
if
(
Array
.
isArray
(
item
.
children
))
{
res
=
findRelatedLabelOfEnetOrg
(
item
.
children
,
id
)
if
(
res
)
{
break
}
}
}
return
res
}
const
useQualityAnalysisStore
=
defineStore
(
'qualityAnalysis'
,
{
const
useQualityAnalysisStore
=
defineStore
(
'qualityAnalysis'
,
{
state
:
()
=>
{
state
:
()
=>
{
return
{
return
{
selectList
:
{
selectList
:
{
allSeatSelect
:
[],
allSeatSelect
:
[],
dimensionTree
:
[]
dimensionTree
:
[],
EnetOrgTree
:
[],
EnetOrgRepeatTree
:
[],
EnetOrgRepeatTreeZh
:
[]
},
},
searchData
:
{
searchData
:
{
isOpen
:
0
,
isOpen
:
0
,
...
@@ -78,13 +98,69 @@ const useQualityAnalysisStore = defineStore('qualityAnalysis', {
...
@@ -78,13 +98,69 @@ const useQualityAnalysisStore = defineStore('qualityAnalysis', {
}
}
},
},
async
getQaData2
()
{
async
getQaData2
()
{
const
res
=
await
getQaData2Api
({
workbenchId
:
this
.
workbenchId
}
,
{
loading
:
true
}
)
const
res
=
await
getQaData2Api
({
workbenchId
:
this
.
workbenchId
})
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
this
.
details
=
res
.
data
this
.
details
=
res
.
data
}
else
{
}
else
{
uni
.
$mocpMessage
.
error
(
res
.
message
)
uni
.
$mocpMessage
.
error
(
res
.
message
)
}
}
},
},
async
getEnetOrgTree
()
{
const
res
=
await
getEnetOrgTreeApi
({})
if
(
res
.
code
==
200
)
{
function
transformData
(
data
)
{
return
data
.
map
((
v
)
=>
{
let
arr
=
[]
if
(
v
.
nodeList
.
length
)
{
arr
=
transformData
(
v
.
nodeList
)
}
return
{
label
:
v
.
fullName
,
key
:
v
.
nodeId
+
v
.
level
,
id
:
v
.
nodeId
,
children
:
arr
}
})
}
this
.
selectList
.
EnetOrgTree
=
transformData
(
res
.
data
)
function
transformRepeatData
(
data
)
{
return
data
.
map
((
v
)
=>
{
let
arr
=
[]
if
(
v
.
nodeList
.
length
)
{
arr
=
transformRepeatData
(
v
.
nodeList
)
}
return
{
label
:
v
.
fullName
,
key
:
v
.
nodeId
,
id
:
v
.
nodeId
,
children
:
arr
}
})
}
this
.
selectList
.
EnetOrgRepeatTree
=
transformRepeatData
(
res
.
data
)
function
transformRepeatDataZh
(
data
)
{
return
data
.
map
((
v
)
=>
{
let
arr
=
[]
if
(
v
.
nodeList
.
length
)
{
arr
=
transformRepeatDataZh
(
v
.
nodeList
)
}
return
{
label
:
v
.
fullName
,
key
:
v
.
fullName
,
id
:
v
.
fullName
,
children
:
arr
}
})
}
this
.
selectList
.
EnetOrgRepeatTreeZh
=
transformRepeatDataZh
(
res
.
data
)
}
},
getEnetRepeatOrg
(
id
)
{
return
findRelatedLabelOfEnetOrg
(
this
.
selectList
.
EnetOrgRepeatTree
,
id
)
},
getEnetOrg
(
id
)
{
return
findRelatedLabelOfEnetOrg
(
this
.
selectList
.
EnetOrgTree
,
id
)
},
resetForm
()
{
resetForm
()
{
this
.
searchData
=
{
this
.
searchData
=
{
isOpen
:
0
,
isOpen
:
0
,
...
...
src/mocp/store/technicalAnalysis.js
0 → 100644
View file @
9619bcfa
import
{
getRsData2Api
}
from
'mocp/api/operationalSurvey'
import
{
getSysSeatListApi
}
from
'mocp/api/system'
import
{
defineStore
}
from
'pinia'
const
useTechnicalAnalysisStore
=
defineStore
(
'technicalAnalysis'
,
{
state
:
()
=>
{
return
{
selectList
:
{
allSeatSelect
:
[]
},
searchData
:
{
isOpen
:
1
,
acTerminal
:
''
,
acOwn
:
''
,
acType
:
''
,
ac
:
''
,
startTime
:
null
,
stopTime
:
null
,
seat
:
''
},
workbenchId
:
''
,
details
:
undefined
}
},
getters
:
{},
actions
:
{
async
getSysSeatList
()
{
const
res
=
await
getSysSeatListApi
({
pid
:
0
,
pageSize
:
9999
})
if
(
res
.
code
==
200
)
{
this
.
selectList
.
allSeatSelect
=
res
.
data
.
list
||
[]
}
else
{
uni
.
$mocpMessage
.
error
(
res
.
message
)
}
},
async
getRsData2
()
{
const
res
=
await
getRsData2Api
({
workbenchId
:
this
.
workbenchId
},
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
this
.
details
=
res
.
data
}
else
{
uni
.
$mocpMessage
.
error
(
res
.
message
)
}
},
resetForm
()
{
this
.
searchData
=
{
isOpen
:
1
,
acTerminal
:
''
,
acOwn
:
''
,
acType
:
''
,
ac
:
''
,
startTime
:
null
,
stopTime
:
null
,
seat
:
''
}
},
setState
(...
args
)
{
this
.
$patch
({
[
args
[
0
]]:
args
[
1
]
})
}
},
// 配置持久化
persist
:
false
})
export
default
useTechnicalAnalysisStore
src/mocp/store/user.js
View file @
9619bcfa
...
@@ -21,7 +21,7 @@ const menuList = ref([
...
@@ -21,7 +21,7 @@ const menuList = ref([
{
id
:
'zysq'
,
name
:
'支援申请'
,
icon
:
'zysq'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/support-application/search'
},
{
id
:
'zysq'
,
name
:
'支援申请'
,
icon
:
'zysq'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/support-application/search'
},
{
id
:
'gzzl'
,
name
:
'工作指令'
,
icon
:
'gzzl'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/work-assignment/search'
},
{
id
:
'gzzl'
,
name
:
'工作指令'
,
icon
:
'gzzl'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/work-assignment/search'
},
{
id
:
'jspg'
,
name
:
'技术评估'
,
icon
:
'jspg'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/technology-evaluation/list'
},
{
id
:
'jspg'
,
name
:
'技术评估'
,
icon
:
'jspg'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/technology-evaluation/list'
},
{
id
:
'jsfx'
,
name
:
'技术分析'
,
icon
:
'jsfx'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
},
{
id
:
'jsfx'
,
name
:
'技术分析'
,
icon
:
'jsfx'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/technicalAnalysis/list'
},
{
id
:
'MCO'
,
name
:
'MCO'
,
icon
:
'MCO'
,
group
:
'技术支援'
,
default
:
true
,
count
:
0
,
url
:
'/panel/mco/search'
},
{
id
:
'MCO'
,
name
:
'MCO'
,
icon
:
'MCO'
,
group
:
'技术支援'
,
default
:
true
,
count
:
0
,
url
:
'/panel/mco/search'
},
{
id
:
'wjll'
,
name
:
'文件浏览'
,
icon
:
'wjll'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/fileList/index'
},
{
id
:
'wjll'
,
name
:
'文件浏览'
,
icon
:
'wjll'
,
group
:
'技术支援'
,
default
:
false
,
count
:
0
,
url
:
'/panel/fileList/index'
},
// 运行品质
// 运行品质
...
...
src/pages.json
View file @
9619bcfa
...
@@ -644,6 +644,30 @@
...
@@ -644,6 +644,30 @@
"style"
:
{
"style"
:
{
"navigationBarTitleText"
:
"品质跟踪闭环要求详情"
"navigationBarTitleText"
:
"品质跟踪闭环要求详情"
}
}
},
{
"path"
:
"pages/modules/mocp/panel/technicalAnalysis/list"
,
"style"
:
{
"navigationBarTitleText"
:
"技术分析"
}
},
{
"path"
:
"pages/modules/mocp/panel/technicalAnalysis/search"
,
"style"
:
{
"navigationBarTitleText"
:
"筛选"
}
},
{
"path"
:
"pages/modules/mocp/panel/technicalAnalysis/details"
,
"style"
:
{
"navigationBarTitleText"
:
"技术分析详情"
}
},
{
"path"
:
"pages/modules/mocp/panel/technicalAnalysis/historicalFault"
,
"style"
:
{
"navigationBarTitleText"
:
"故障历史详情"
}
}
}
],
],
"globalStyle"
:
{
"globalStyle"
:
{
...
...
src/pages/modules/mocp/panel/assign-work/details.vue
View file @
9619bcfa
...
@@ -191,7 +191,7 @@ import CardDetailsFooter from './components/card-details-footer.vue'
...
@@ -191,7 +191,7 @@ import CardDetailsFooter from './components/card-details-footer.vue'
import
CompanyPopup
from
'./components/company-popup.vue'
import
CompanyPopup
from
'./components/company-popup.vue'
import
useAssignWorkStore
from
'mocp/store/assign-work'
import
useAssignWorkStore
from
'mocp/store/assign-work'
import
{
storeToRefs
}
from
'pinia'
import
{
storeToRefs
}
from
'pinia'
import
{
onLoad
,
onUnload
}
from
'@dcloudio/uni-app'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
import
{
useGetDictByValue
}
from
'mocp/hooks/use-dict/useDict'
import
{
useGetDictByValue
}
from
'mocp/hooks/use-dict/useDict'
import
{
getParamNameByValue
}
from
'mocp/hooks/use-params/useParams'
import
{
getParamNameByValue
}
from
'mocp/hooks/use-params/useParams'
...
...
src/pages/modules/mocp/panel/qualityAnalysis/arrangeWorkList.vue
View file @
9619bcfa
...
@@ -4,6 +4,9 @@
...
@@ -4,6 +4,9 @@
<template
#
index=
"
{ index }">
<template
#
index=
"
{ index }">
{{
index
+
1
}}
{{
index
+
1
}}
</
template
>
</
template
>
<
template
#
company=
"{ row }"
>
{{
getCompany
(
row
.
company
)
}}
</
template
>
<
template
#
endTime=
"{ row }"
>
<
template
#
endTime=
"{ row }"
>
{{
timeStampFormat
(
row
.
endTime
)
}}
{{
timeStampFormat
(
row
.
endTime
)
}}
</
template
>
</
template
>
...
@@ -25,5 +28,13 @@ const columns = ref([
...
@@ -25,5 +28,13 @@ const columns = ref([
{
title
:
'任务描述'
,
dataIndex
:
'taskDescribe'
},
{
title
:
'任务描述'
,
dataIndex
:
'taskDescribe'
},
{
title
:
'完成日期'
,
dataIndex
:
'endTime'
}
{
title
:
'完成日期'
,
dataIndex
:
'endTime'
}
])
])
const
getCompany
=
(
company
)
=>
{
return
company
.
split
(
','
)
.
map
((
v
)
=>
{
return
qualityAnalysisStore
.
getEnetRepeatOrg
(
v
)
||
qualityAnalysisStore
.
getEnetOrg
(
v
)
})
.
join
(
','
)
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
style
lang=
"scss"
scoped
></
style
>
src/pages/modules/mocp/panel/qualityAnalysis/details.vue
View file @
9619bcfa
...
@@ -146,9 +146,15 @@ import useQualityAnalysisStore from 'mocp/store/qualityAnalysis'
...
@@ -146,9 +146,15 @@ import useQualityAnalysisStore from 'mocp/store/qualityAnalysis'
const
query
=
defineProps
([
'workbenchId'
])
const
query
=
defineProps
([
'workbenchId'
])
const
baseStore
=
useBaseStore
()
const
baseStore
=
useBaseStore
()
const
qualityAnalysisStore
=
useQualityAnalysisStore
()
const
qualityAnalysisStore
=
useQualityAnalysisStore
()
onLoad
(()
=>
{
onLoad
(
async
()
=>
{
qualityAnalysisStore
.
setState
(
'workbenchId'
,
query
.
workbenchId
)
qualityAnalysisStore
.
setState
(
'workbenchId'
,
query
.
workbenchId
)
qualityAnalysisStore
.
getQaData2
()
uni
.
showLoading
({
title
:
'加载中...'
,
mask
:
true
})
await
qualityAnalysisStore
.
getQaData2
()
await
qualityAnalysisStore
.
getEnetOrgTree
()
uni
.
hideLoading
()
})
})
const
{
details
}
=
storeToRefs
(
qualityAnalysisStore
)
const
{
details
}
=
storeToRefs
(
qualityAnalysisStore
)
// 获取发起席位
// 获取发起席位
...
...
src/pages/modules/mocp/panel/qualityAnalysis/qualityTraceList.vue
View file @
9619bcfa
...
@@ -4,6 +4,9 @@
...
@@ -4,6 +4,9 @@
<template
#
index=
"
{ index }">
<template
#
index=
"
{ index }">
{{
index
+
1
}}
{{
index
+
1
}}
</
template
>
</
template
>
<
template
#
unit=
"{ row }"
>
{{
getCompany
(
row
.
unit
)
}}
</
template
>
<
template
#
endTime=
"{ row }"
>
<
template
#
endTime=
"{ row }"
>
{{
timeStampFormat
(
row
.
endTime
)
}}
{{
timeStampFormat
(
row
.
endTime
)
}}
</
template
>
</
template
>
...
@@ -25,5 +28,13 @@ const columns = ref([
...
@@ -25,5 +28,13 @@ const columns = ref([
{
title
:
'事件类型'
,
dataIndex
:
'eventType'
},
{
title
:
'事件类型'
,
dataIndex
:
'eventType'
},
{
title
:
'反馈期限'
,
dataIndex
:
'callbackLimit'
}
{
title
:
'反馈期限'
,
dataIndex
:
'callbackLimit'
}
])
])
const
getCompany
=
(
company
)
=>
{
return
company
.
split
(
','
)
.
map
((
v
)
=>
{
return
qualityAnalysisStore
.
getEnetRepeatOrg
(
v
)
||
qualityAnalysisStore
.
getEnetOrg
(
v
)
})
.
join
(
','
)
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
style
lang=
"scss"
scoped
></
style
>
src/pages/modules/mocp/panel/technicalAnalysis/details.vue
0 → 100644
View file @
9619bcfa
<
template
>
<global-page
:padding=
"24"
title=
"技术分析详情"
>
<template
v-if=
"details"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"发起时间"
:value=
"timeStampFormat(details.proposedTime,
{ format: 'YYYY/MM/DD HH:mm' }) || '-'" />
<up-cell
title=
"机号"
:value=
"details.ac || '-'"
/>
<up-cell
title=
"机型"
:value=
"details.acType || '-'"
/>
<up-cell
title=
"航司"
:value=
"details.acOwn || '-'"
/>
<up-cell
title=
"航站"
:value=
"baseStore.getTerminalObject[details.acTerminal] || '-'"
/>
<up-cell
title=
"提出人"
:value=
"details.proposer || '-'"
/>
<up-cell
title=
"发起席位"
:value=
"getSeat"
/>
<up-cell
title=
"调查等级"
:value=
"useGetDictByValue('os_surveyLevel', details.surveyLevel) || '-'"
/>
<up-cell
title=
"标题"
:label=
"details.title || '无'"
/>
</up-cell-group>
</view>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"客户延误定性"
:value=
"delayNature[details.delayNature] || '-'"
/>
<up-cell
title=
"是否争议"
:value=
"useGetDictByValue('os_disputeMsg', details.disputeMsg) || '-'"
/>
<up-cell
title=
"申诉定性"
:value=
"delayNature[details.qualitativeAppeal] || '-'"
/>
<up-cell
title=
"第一客观延误原因"
:value=
"details.delayReason1 || '-'"
/>
<up-cell
title=
"第二客观延误原因"
:value=
"details.delayReason2 || '-'"
/>
</up-cell-group>
</view>
<view
class=
"mocp-cell"
>
<up-collapse
:value=
"getCollapseValue"
>
<up-collapse-item
title=
"事件简述"
name=
"1"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"内容"
:label=
"details.eventMsg || '-'"
/>
<up-cell
title=
"相关附件"
>
<template
#
label
>
<view
style=
"margin-top: 16rpx"
>
<global-upload
:fileList=
"details.files"
:showUpload=
"false"
></global-upload>
</view>
</
template
>
</up-cell>
<up-cell
title=
"事件分类"
:value=
"getEventclass"
/>
</up-cell-group>
</view>
</up-collapse-item>
<view
class=
"mocp-title"
>
故障历史
<global-button
type=
"text"
@
tap=
"navigateTo('/panel/operationalSurvey/historicalFault')"
>
点击查看
</global-button>
</view>
<up-collapse-item
title=
"手册标准"
name=
"2"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<
template
v-for=
"item in details.manualList"
>
<up-cell
title=
"内容"
:label=
"item.content || '-'"
/>
<up-cell
title=
"相关附件"
>
<template
#
label
>
<view
style=
"margin-top: 16rpx"
>
<global-upload
:fileList=
"item.files"
:showUpload=
"false"
></global-upload>
</view>
</
template
>
</up-cell>
</template>
</up-cell-group>
</view>
</up-collapse-item>
<up-collapse-item
title=
"处置经过"
name=
"3"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"内容"
:label=
"details.dispose?.content || '-'"
/>
<up-cell
title=
"相关附件"
>
<
template
#
label
>
<view
style=
"margin-top: 16rpx"
>
<global-upload
:fileList=
"details.dispose?.files"
:showUpload=
"false"
></global-upload>
</view>
</
template
>
</up-cell>
</up-cell-group>
</view>
</up-collapse-item>
<up-collapse-item
title=
"经济损失分析"
name=
"4"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"不正常航班费用"
>
<
template
#
value
>
{{
details
.
economy
?.
abnormal
||
0
}}
元
</
template
>
</up-cell>
<up-cell
title=
"人员AOG差旅费用"
>
<
template
#
value
>
{{
details
.
economy
?.
travel
||
0
}}
元
</
template
>
</up-cell>
<up-cell
title=
"外委费用"
>
<
template
#
value
>
{{
details
.
economy
?.
outsourcing
||
0
}}
元
</
template
>
</up-cell>
<up-cell
title=
"航材保障费用"
>
<
template
#
value
>
{{
details
.
economy
?.
material
||
0
}}
元
</
template
>
</up-cell>
<up-cell
title=
"工具设备借用费用"
>
<
template
#
value
>
{{
details
.
economy
?.
equipment
||
0
}}
元
</
template
>
</up-cell>
<up-cell
title=
"其他"
>
<
template
#
value
>
{{
details
.
economy
?.
others
||
0
}}
元
</
template
>
</up-cell>
<up-cell
title=
"合计"
>
<
template
#
value
>
{{
(
details
.
economy
?.
abnormal
||
0
)
*
1
+
(
details
.
economy
?.
travel
||
0
)
*
1
+
(
details
.
economy
?.
outsourcing
||
0
)
*
1
+
(
details
.
economy
?.
material
||
0
)
*
1
+
(
details
.
economy
?.
equipment
||
0
)
*
1
+
(
details
.
economy
?.
others
||
0
)
*
1
}}
元
</
template
>
</up-cell>
</up-cell-group>
</view>
</up-collapse-item>
<
template
v-for=
"item in details.elementList"
>
<up-collapse-item
:title=
"item.title || '-'"
:name=
"item.id"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"内容"
:label=
"item.content || '-'"
/>
<up-cell
title=
"相关附件"
>
<template
#
label
>
<view
style=
"margin-top: 16rpx"
>
<global-upload
:fileList=
"item.files"
:showUpload=
"false"
></global-upload>
</view>
</
template
>
</up-cell>
<up-cell
title=
"填报人"
:value=
"item.uname || '-'"
/>
<up-cell
title=
"填报时间"
:value=
"timeStampFormat(item.time) || '-'"
/>
</up-cell-group>
</view>
</up-collapse-item>
</template>
<view
class=
"mocp-title"
>
事件分析
<global-button
type=
"text"
@
tap=
"navigateTo('/panel/operationalSurvey/analysisList')"
>
点击查看
</global-button>
</view>
<up-collapse-item
title=
"事件结论"
name=
"5"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"内容"
:label=
"details.conclusion?.eventConclusion || '-'"
/>
<up-cell
title=
"相关附件"
>
<
template
#
label
>
<view
style=
"margin-top: 16rpx"
>
<global-upload
:fileList=
"details.conclusion?.files"
:showUpload=
"false"
></global-upload>
</view>
</
template
>
</up-cell>
<
template
v-for=
"item in details.conclusion?.liabilities"
>
<up-cell
title=
"责任单位"
:value=
"getParamNameByValue('RcQaLiabilityBelong', item.liabilityBelong)"
/>
<up-cell
title=
"责任定性"
:value=
"getParamNameByValue('RcQaNature', item.liabilityNature)"
/>
</
template
>
<up-cell
title=
"填报人"
:value=
"details.conclusion?.uname || '-'"
/>
<up-cell
title=
"填报时间"
:value=
"timeStampFormat(details.conclusion?.time) || '-'"
/>
</up-cell-group>
</view>
</up-collapse-item>
<up-collapse-item
title=
"改进措施"
name=
"6"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"内容"
:label=
"details.improve?.content || '-'"
/>
<up-cell
title=
"填报人"
:value=
"details.improve?.uname || '-'"
/>
<up-cell
title=
"填报时间"
:value=
"timeStampFormat(details.improve?.time) || '-'"
/>
</up-cell-group>
</view>
</up-collapse-item>
<up-collapse-item
title=
"批准"
name=
"7"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"批示意见"
:value=
"getAuditContent"
/>
<up-cell
title=
"填报人"
:value=
"details.audit?.auditName || '-'"
/>
<up-cell
title=
"填报时间"
:value=
"timeStampFormat(details.audit?.auditTime) || '-'"
/>
</up-cell-group>
</view>
<global-button
type=
"primary"
:radius=
"0"
size=
"large"
@
tap=
"navigateTo('/panel/operationalSurvey/audit')"
>
批示
</global-button>
</up-collapse-item>
<up-collapse-item
title=
"MOC点评"
name=
"8"
>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"内容"
:label=
"details.reviews?.evaluation || '-'"
/>
<up-cell
title=
"填报人"
:value=
"details.reviews?.uname || '-'"
/>
<up-cell
title=
"填报时间"
:value=
"timeStampFormat(details.reviews?.time) || '-'"
/>
</up-cell-group>
</view>
</up-collapse-item>
</up-collapse>
</view>
<view
class=
"mocp-cell"
>
<up-cell-group>
<up-cell
title=
"填报人"
:value=
"details.openUsernameL || '-'"
/>
<up-cell
title=
"填报时间"
:value=
"timeStampFormat(details.openTimeL) || '-'"
/>
<up-cell
title=
"关闭人"
:value=
"details.closeUsername || '-'"
/>
<up-cell
title=
"关闭时间"
:value=
"timeStampFormat(details.closeTime) || '-'"
/>
</up-cell-group>
</view>
</template>
</global-page>
</template>
<
script
setup
>
import
{
storeToRefs
}
from
'pinia'
import
useBaseStore
from
'mocp/store/base'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
import
{
useGetDictByValue
}
from
'mocp/hooks/use-dict/useDict'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
useOperationalSurveyStore
from
'mocp/store/operationalSurvey'
import
{
computed
}
from
'vue'
import
{
getParamNameByValue
}
from
'mocp/hooks/use-params/useParams'
import
{
navigateTo
}
from
'mocp/utils/jump'
const
query
=
defineProps
([
'workbenchId'
])
const
baseStore
=
useBaseStore
()
const
{
rcOptions
:
{
delayNature
}
}
=
useBaseStore
()
const
operationalSurveyStore
=
useOperationalSurveyStore
()
onLoad
(()
=>
{
operationalSurveyStore
.
setState
(
'workbenchId'
,
query
.
workbenchId
)
operationalSurveyStore
.
getRsData2
()
})
const
{
details
}
=
storeToRefs
(
operationalSurveyStore
)
// 获取发起席位
const
getSeat
=
computed
(()
=>
{
return
(
details
.
value
?.
seat
.
split
(
','
)
.
map
((
item
)
=>
{
const
seat
=
operationalSurveyStore
.
selectList
.
allSeatSelect
.
find
((
option
)
=>
item
==
option
.
id
)
return
seat
?.
seatName
||
''
})
.
join
(
','
)
||
'-'
)
})
//获取事件分类
const
getEventclass
=
computed
(()
=>
{
return
(
details
.
value
?.
eventclassList
.
map
((
item
)
=>
{
return
item
.
eventclass2
||
item
.
eventclass1
})
.
join
(
','
)
||
'-'
)
})
//获取批准意见
const
getAuditContent
=
computed
(()
=>
{
if
(
details
.
value
?.
audit
)
{
return
(
useGetDictByValue
(
'os_opinion'
,
details
.
value
.
audit
.
opinion
)
+
(
details
.
value
.
audit
.
content
?
','
+
details
.
value
.
audit
.
content
:
details
.
value
.
audit
.
content
)
)
}
else
{
return
'-'
}
})
//获取默认展开项
const
getCollapseValue
=
computed
(()
=>
{
const
value
=
[
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
]
details
.
value
?.
elementList
.
forEach
((
element
)
=>
{
value
.
push
(
element
.
id
)
})
return
value
})
</
script
>
<
style
lang=
"scss"
scoped
>
.mocp-cell
{
background
:
#fff
;
margin-bottom
:
16
rpx
;
}
.mocp-title
{
padding
:
12
rpx
32
rpx
12
rpx
32
rpx
;
background-color
:
#f7f8fa
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.mocp-subTitle
{
padding
:
24
rpx
32
rpx
0
32
rpx
;
font-weight
:
bold
;
}
:deep
(
.u-collapse-item
)
{
.u-cell
{
background
:
#f7f8fa
;
}
.u-collapse-item__content
{
.u-cell
{
background
:
#fff
;
}
}
.u-collapse-item__content__text
{
padding
:
0
;
}
.u-cell__title
{
color
:
$
mocp-text-5
;
}
}
</
style
>
src/pages/modules/mocp/panel/technicalAnalysis/historicalFault.vue
0 → 100644
View file @
9619bcfa
<
template
>
<global-page
title=
"故障历史详情"
>
<global-table
:columns=
"columns"
:data=
"details?.historicalFault"
>
<template
#
sendingTime=
"
{ row }">
{{
timeStampFormat
(
row
.
sendingTime
)
}}
</
template
>
</global-table>
</global-page>
</template>
<
script
setup
>
import
{
ref
}
from
'vue'
import
{
storeToRefs
}
from
'pinia'
import
useOperationalSurveyStore
from
'mocp/store/operationalSurvey'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
const
operationalSurveyStore
=
useOperationalSurveyStore
()
const
{
details
}
=
storeToRefs
(
operationalSurveyStore
)
const
columns
=
ref
([
{
title
:
'机号'
,
dataIndex
:
'machineNumber'
},
{
title
:
'故障描述'
,
dataIndex
:
'faultDescribe'
},
{
title
:
'处理措施'
,
dataIndex
:
'handle'
},
{
title
:
'ATA章节'
,
dataIndex
:
'ata'
},
{
title
:
'发生时间'
,
dataIndex
:
'sendingTime'
}
])
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
src/pages/modules/mocp/panel/technicalAnalysis/list.vue
0 → 100644
View file @
9619bcfa
<
template
>
<global-page
ref=
"paging"
:api=
"getRsDataList2Api"
:padding=
"24"
:params=
"searchData"
auto
isDataList
loadingMoreEnabled
navRightIcon=
"saixuan-01"
navRightType=
"icon"
refresherEnabled
showNavRight
title=
"技术分析"
@
handleRightClick=
"handleRightClick"
>
<template
#
default=
"
{ item }">
<view
class=
"item"
@
tap=
"goDetails(item)"
>
<view
class=
"item-title"
>
<view
class=
"left"
>
<custom-state
:value=
"useGetDictByValue('os_isOpen', item.isOpen)"
></custom-state>
</view>
<view
class=
"right"
>
<text
class=
"txt u-line-1"
v-if=
"item.ac"
>
{{
item
.
ac
}}
</text>
<text
class=
"txt u-line-1"
v-if=
"item.acType"
>
{{
item
.
acType
}}
</text>
<text
class=
"txt u-line-1"
v-if=
"item.acOwn"
>
{{
item
.
acOwn
}}
</text>
<text
class=
"txt u-line-1"
v-if=
"item.acTerminal"
>
{{
item
.
acTerminal
}}
</text>
</view>
</view>
<view
class=
"item-content u-line-3"
>
{{
item
.
eventMsg
||
'无'
}}
</view>
<view
class=
"item-footer"
>
<view
class=
"label"
>
<global-icon
icon=
"calendar"
></global-icon>
<text
class=
"txt"
>
{{
timeStampFormat
(
item
.
proposedTime
)
}}
</text>
</view>
<view
class=
"label u-line-1"
>
<global-icon
icon=
"idcard"
></global-icon>
<text
class=
"txt"
>
提出人:
{{
item
.
proposer
||
'-'
}}
</text>
</view>
</view>
</view>
</
template
>
</global-page>
</template>
<
script
setup
>
import
{
storeToRefs
}
from
'pinia'
import
{
useGetDictByValue
}
from
'mocp/hooks/use-dict/useDict'
import
{
onLoad
,
onUnload
}
from
'@dcloudio/uni-app'
import
{
ref
}
from
'vue'
import
useOperationalSurveyStore
from
'mocp/store/operationalSurvey'
import
{
getRsDataList2Api
}
from
'mocp/api/operationalSurvey'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
//跳转
const
goDetails
=
(
data
)
=>
{
uni
.
$mocpJump
.
navigateTo
(
'/panel/operationalSurvey/details'
,
{
workbenchId
:
data
.
workbenchId
})
}
//加载下拉框数据
const
operationalSurveyStore
=
useOperationalSurveyStore
()
const
{
searchData
}
=
storeToRefs
(
operationalSurveyStore
)
onLoad
(()
=>
{
operationalSurveyStore
.
getSysSeatList
()
})
//筛选
const
handleRightClick
=
()
=>
{
uni
.
$mocpJump
.
navigateTo
(
'/panel/operationalSurvey/search'
)
}
const
paging
=
ref
()
uni
.
$on
(
'operationalSurveyReload'
,
()
=>
{
paging
.
value
?.
reload
()
})
onUnload
(()
=>
{
uni
.
$off
(
'operationalSurveyReload'
)
})
</
script
>
<
style
lang=
"scss"
scoped
>
@import
'mocpStatic/css/list.scss'
;
</
style
>
src/pages/modules/mocp/panel/technicalAnalysis/search.vue
0 → 100644
View file @
9619bcfa
<
template
>
<global-page
title=
"筛选"
>
<view
class=
"search-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<up-form-item
label=
"状态"
prop=
"isOpen"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.isOpen"
pickAlign=
"right"
clearable
dictkey=
"mae_isOpen"
></global-picker>
</up-form-item>
<up-form-item
label=
"航站"
prop=
"acTerminal"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.acTerminal"
clearable
:options=
"baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"航司"
prop=
"acOwn"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.acOwn"
pickAlign=
"right"
:options=
"baseStore.getAirlineSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"机型"
prop=
"acType"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.acType"
pickAlign=
"right"
:options=
"baseStore.getTypeSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"机号"
prop=
"ac"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.ac"
:options=
"deviceNumList"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"发起日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startTime"
v-model:endTime=
"formData.stopTime"
clearable
></global-calendar>
</up-form-item>
<up-form-item
label=
"发起席位"
prop=
"seat"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.seat"
:options=
"operationalSurveyStore.selectList.allSeatSelect"
label-field=
"seatName"
value-field=
"id"
clearable
filter
></global-picker>
</up-form-item>
</up-form>
</view>
<template
#
bottom
>
<view
class=
"footer-btn"
>
<up-row
gutter=
"10"
>
<up-col
span=
"6"
>
<global-button
type=
"primary"
plain
size=
"large"
:radius=
"5"
@
tap=
"handleReset"
>
重置
</global-button>
</up-col>
<up-col
span=
"6"
><global-button
type=
"primary"
size=
"large"
:radius=
"5"
@
tap=
"handleConfirm"
>
确定
</global-button></up-col>
</up-row>
</view>
</
template
>
</global-page>
</template>
<
script
setup
>
import
useBaseStore
from
'mocp/store/base'
import
{
storeToRefs
}
from
'pinia'
import
{
cloneDeep
}
from
'lodash'
import
{
ref
}
from
'vue'
import
useOperationalSurveyStore
from
'mocp/store/operationalSurvey'
//获取下拉框选项
const
baseStore
=
useBaseStore
()
const
{
selectList
:
{
deviceNumList
}
}
=
useBaseStore
()
const
operationalSurveyStore
=
useOperationalSurveyStore
()
//获取查询表单数据
const
{
searchData
}
=
storeToRefs
(
operationalSurveyStore
)
const
formData
=
ref
(
cloneDeep
(
searchData
.
value
))
const
handleReset
=
()
=>
{
operationalSurveyStore
.
resetForm
()
uni
.
$mocpJump
.
navigateBack
()
uni
.
$emit
(
'operationalSurveyReload'
)
}
const
handleConfirm
=
()
=>
{
operationalSurveyStore
.
setState
(
'searchData'
,
formData
.
value
)
uni
.
$mocpJump
.
navigateBack
()
uni
.
$emit
(
'operationalSurveyReload'
)
}
</
script
>
<
style
lang=
"scss"
scoped
>
.search-form
{
padding
:
24
rpx
24
rpx
0
24
rpx
;
background
:
#fff
;
}
.footer-btn
{
padding
:
24
rpx
32
rpx
;
background-color
:
#fff
;
}
</
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