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
230e11af
Commit
230e11af
authored
Jul 12, 2024
by
pangchong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 运行决策开发
parent
c24653ce
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
621 additions
and
342 deletions
+621
-342
components.d.ts
+3
-0
src/main.js
+10
-0
src/mocp/api/move-decision.js
+16
-0
src/mocp/components/global-checkbox/global-checkbox.vue
+12
-24
src/mocp/components/global-page/global-page.vue
+0
-1
src/mocp/components/global-picker/global-picker.vue
+1
-1
src/mocp/components/global-radio/global-radio.vue
+145
-0
src/mocp/components/widget/custom-card-details-item.vue
+0
-0
src/mocp/components/widget/custom-card-details.vue
+2
-12
src/mocp/hooks/use-dict/dict-data/assign-work.js
+4
-0
src/mocp/store/base.js
+4
-4
src/pages.json
+10
-10
src/pages/modules/mocp/panel/appraisal-record/details.vue
+43
-20
src/pages/modules/mocp/panel/appraisal-record/edit.vue
+0
-0
src/pages/modules/mocp/panel/appraisal-record/search.vue
+51
-45
src/pages/modules/mocp/panel/assign-work/details.vue
+11
-16
src/pages/modules/mocp/panel/assign-work/edit-decompose.vue
+1
-1
src/pages/modules/mocp/panel/assign-work/edit-work.vue
+7
-2
src/pages/modules/mocp/panel/assign-work/list.vue
+2
-2
src/pages/modules/mocp/panel/assign-work/search.vue
+49
-43
src/pages/modules/mocp/panel/move-decision/constants/details.scss
+0
-5
src/pages/modules/mocp/panel/move-decision/constants/list.scss
+7
-1
src/pages/modules/mocp/panel/move-decision/details.vue
+34
-20
src/pages/modules/mocp/panel/move-decision/edit-approver.vue
+32
-51
src/pages/modules/mocp/panel/move-decision/edit-mco-director.vue
+75
-0
src/pages/modules/mocp/panel/move-decision/list.vue
+4
-5
src/pages/modules/mocp/panel/move-decision/search.vue
+63
-50
src/pages/modules/mocp/panel/technology-evaluation/add-engineering.vue
+2
-2
src/pages/modules/mocp/panel/technology-evaluation/add-opinion.vue
+2
-2
src/pages/modules/mocp/panel/technology-evaluation/add-ratify.vue
+2
-2
src/pages/modules/mocp/panel/technology-evaluation/search.vue
+29
-23
No files found.
components.d.ts
View file @
230e11af
...
...
@@ -22,10 +22,13 @@ declare module 'vue' {
GlobalPageSwiperItem
:
typeof
import
(
'./src/mocp/components/global-page-swiper-item/global-page-swiper-item.vue'
)[
'default'
]
GlobalPicker
:
typeof
import
(
'./src/mocp/components/global-picker/global-picker.vue'
)[
'default'
]
GlobalPopup
:
typeof
import
(
'./src/mocp/components/global-popup/global-popup.vue'
)[
'default'
]
GlobalRadio
:
typeof
import
(
'./src/mocp/components/global-radio/global-radio.vue'
)[
'default'
]
GlobalTabs
:
typeof
import
(
'./src/mocp/components/global-tabs/global-tabs.vue'
)[
'default'
]
GlobalUpload
:
typeof
import
(
'./src/mocp/components/global-upload/global-upload.vue'
)[
'default'
]
GlobalUploadImage
:
typeof
import
(
'./src/mocp/components/global-upload-image/global-upload-image.vue'
)[
'default'
]
// 自定义组件
CustomCardDetails
:
typeof
import
(
'./src/mocp/components/widget/custom-card-details.vue'
)[
'default'
]
CustomCardDetailsItem
:
typeof
import
(
'./src/mocp/components/widget/custom-card-details-item.vue'
)[
'default'
]
CustomScore
:
typeof
import
(
'./src/mocp/components/widget/custom-score.vue'
)[
'default'
]
CustomState
:
typeof
import
(
'./src/mocp/components/widget/custom-state.vue'
)[
'default'
]
CustomTabbar
:
typeof
import
(
'./src/mocp/components/widget/custom-tabbar.vue'
)[
'default'
]
...
...
src/main.js
View file @
230e11af
...
...
@@ -27,6 +27,16 @@ export function createApp() {
activeColor
:
'#165dff'
,
labelColor
:
'#1D2129'
,
labelSize
:
16
},
radio
:
{
activeColor
:
'#165dff'
,
labelColor
:
'#1D2129'
,
labelSize
:
16
},
radioGroup
:
{
activeColor
:
'#165dff'
,
labelColor
:
'#1D2129'
,
labelSize
:
16
}
}
})
...
...
src/mocp/api/move-decision.js
View file @
230e11af
...
...
@@ -16,3 +16,19 @@ export const updateDecisionApi = (data, config) => {
config
})
}
export
const
updateMcoDirectorInfoApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/workbench/updateMcoDirectorInfo'
,
data
,
config
})
}
export
const
updateApproverInfoApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/workbench/updateApproverInfo'
,
data
,
config
})
}
src/mocp/components/global-checkbox/global-checkbox.vue
View file @
230e11af
<
template
>
<!-- 全局复选框 -->
<view
class=
"checkbox"
:style=
"getStyle"
>
<up-checkbox-group
v-model=
"checkboxValue"
:placement=
"placement"
@
change=
"checkboxChange"
:disabled=
"disabled"
:activeColor=
"activeColor"
:labelSize=
"labelSize"
:labelColor=
"labelColor"
:borderBottom=
"borderBottom"
>
<view
class=
"checkbox-group"
:style=
"getStyle"
>
<up-checkbox-group
v-model=
"checkboxValue"
:placement=
"placement"
@
change=
"checkboxChange"
:disabled=
"disabled"
:borderBottom=
"borderBottom"
>
<up-checkbox
:customStyle=
"getCustomStyle"
0
v-for=
"(item, index) in getColumns"
:key=
"index"
:label=
"item.label"
...
...
@@ -74,22 +66,18 @@ const ps = defineProps({
return
{}
}
},
activeColor
:
{
type
:
String
,
default
:
'#165dff'
},
// row|column
placement
:
{
type
:
String
,
default
:
'row'
},
labelSize
:
{
type
:
String
,
default
:
'28rpx'
marginLeft
:
{
type
:
[
String
,
Number
]
,
default
:
16
},
labelColor
:
{
type
:
String
,
default
:
'#1D2129'
marginBottom
:
{
type
:
[
String
,
Number
]
,
default
:
40
},
borderBottom
:
{
type
:
Boolean
,
...
...
@@ -114,10 +102,10 @@ const getCustomStyle = computed(() => {
...
ps
.
customStyle
}
if
(
ps
.
placement
==
'row'
)
{
_style
.
marginLeft
=
'16rpx'
_style
.
marginLeft
=
ps
.
marginLeft
}
if
(
ps
.
placement
==
'column'
)
{
_style
.
marginBottom
=
'40rpx'
_style
.
marginBottom
=
ps
.
marginBottom
}
return
_style
})
...
...
@@ -157,7 +145,7 @@ const checkboxChange = (value) => {
}
</
script
>
<
style
lang=
"scss"
scoped
>
.checkbox
{
.checkbox
-group
{
display
:
flex
;
}
:deep
(
.u-checkbox
)
{
...
...
src/mocp/components/global-page/global-page.vue
View file @
230e11af
...
...
@@ -56,7 +56,6 @@
</z-paging>
</template>
<
script
setup
>
import
{
onUnload
}
from
'@dcloudio/uni-app'
import
{
filterEmptyValues
}
from
'mocp/utils/tool'
import
{
computed
,
nextTick
,
onUnmounted
,
ref
}
from
'vue'
...
...
src/mocp/components/global-picker/global-picker.vue
View file @
230e11af
...
...
@@ -9,7 +9,7 @@
</
template
>
<view
class=
"popup-content-list"
v-if=
"getFilterColumns.length"
>
<view
class=
"popup-content-item"
class=
"popup-content-item
u-line-1
"
:class=
"{ 'mocp-color-primary-6': modelValue == item[valueField] }"
v-for=
"(item, index) in getFilterColumns"
:key=
"index"
...
...
src/mocp/components/global-radio/global-radio.vue
0 → 100644
View file @
230e11af
<
template
>
<!-- 全局单选框 -->
<up-radio-group
:style=
"getStyle"
class=
"radio-group"
v-model=
"radioValue"
:placement=
"placement"
@
change=
"radioChange"
:disabled=
"disabled"
:borderBottom=
"borderBottom"
>
<up-radio
:customStyle=
"getCustomStyle"
v-for=
"(item, index) in getColumns"
:key=
"index"
:label=
"item.label"
:name=
"item.value"
></up-radio>
</up-radio-group>
</
template
>
<
script
setup
>
import
{
computed
,
ref
,
watch
}
from
'vue'
import
*
as
dictData
from
'mocp/hooks/use-dict/dict-data'
import
{
cloneDeep
}
from
'lodash'
const
es
=
defineEmits
([
'update:modelValue'
,
'change'
])
const
ps
=
defineProps
({
//显示为空的value值
emptyValue
:
{
type
:
[
String
,
Number
],
default
:
''
},
dictkey
:
{
type
:
String
,
default
:
''
},
modelValue
:
{
type
:
[
String
,
Number
],
default
:
''
},
options
:
{
type
:
Array
,
default
:
()
=>
{
return
[]
}
},
labelField
:
{
type
:
String
,
default
:
'label'
},
valueField
:
{
type
:
String
,
default
:
'value'
},
radioAlign
:
{
type
:
String
,
default
:
'left'
},
disabled
:
{
type
:
Boolean
,
default
:
false
},
customStyle
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
}
},
// row|column
placement
:
{
type
:
String
,
default
:
'row'
},
marginLeft
:
{
type
:
[
String
,
Number
],
default
:
16
},
marginBottom
:
{
type
:
[
String
,
Number
],
default
:
40
},
borderBottom
:
{
type
:
Boolean
,
default
:
false
}
})
const
radioValue
=
ref
(
''
)
//获取单选框样式
const
getAlign
=
computed
(()
=>
{
let
radioAlign
=
'flex-start'
if
(
ps
.
radioAlign
==
'center'
)
{
radioAlign
=
'center'
}
else
if
(
ps
.
radioAlign
==
'right'
)
{
radioAlign
=
'flex-end'
}
return
radioAlign
})
const
getStyle
=
computed
(()
=>
{
return
{
justifyContent
:
getAlign
.
value
}
})
const
getCustomStyle
=
computed
(()
=>
{
const
_style
=
{
...
ps
.
customStyle
}
if
(
ps
.
placement
==
'row'
)
{
_style
.
marginLeft
=
ps
.
marginLeft
+
'rpx'
}
if
(
ps
.
placement
==
'column'
)
{
_style
.
marginBottom
=
ps
.
marginBottom
+
'rpx'
}
return
_style
})
//获取下拉框的内容Columns
const
getColumns
=
computed
(()
=>
{
if
(
ps
.
dictkey
)
{
return
cloneDeep
(
dictData
[
ps
.
dictkey
])
}
else
{
if
(
ps
.
options
&&
Object
.
prototype
.
toString
.
call
(
ps
.
options
[
0
])
==
'[object Object]'
)
{
return
ps
.
options
}
else
{
return
ps
.
options
.
map
((
item
)
=>
{
return
{
[
ps
.
labelField
]:
item
,
[
ps
.
valueField
]:
item
}
})
}
}
})
//监听设置默认值
watch
(
[()
=>
ps
.
modelValue
,
()
=>
ps
.
options
],
()
=>
{
let
option
=
getColumns
.
value
.
find
((
option
)
=>
String
(
option
[
ps
.
valueField
])
===
String
(
ps
.
modelValue
))
if
(
option
)
{
radioValue
.
value
=
option
[
ps
.
valueField
]
}
else
{
radioValue
.
value
=
ps
.
emptyValue
}
},
{
immediate
:
true
}
)
const
radioChange
=
(
value
)
=>
{
es
(
'update:modelValue'
,
value
)
es
(
'change'
,
value
)
}
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
src/
pages/modules/mocp/panel/appraisal-record/components/
card-details-item.vue
→
src/
mocp/components/widget/custom-
card-details-item.vue
View file @
230e11af
File moved
src/
pages/modules/mocp/panel/appraisal-record/components/
card-details.vue
→
src/
mocp/components/widget/custom-
card-details.vue
View file @
230e11af
...
...
@@ -6,16 +6,11 @@
<text
class=
"txt"
>
{{
title
}}
</text>
</view>
<view
class=
"right"
v-if=
"edit"
>
<global-button
type=
"text"
@
tap=
"handleAdd"
>
{{
calendar
!=
-
1
?
'编辑'
:
'添加'
}}
</global-button>
<global-button
type=
"text"
@
tap=
"handleAdd"
>
编辑
</global-button>
</view>
</view>
<view
class=
"card-content"
>
<template
v-if=
"type == 'appeal'"
>
<slot></slot>
</
template
>
<
template
v-else
>
<slot></slot>
</
template
>
<slot></slot>
</view>
<slot
name=
"footer"
v-if=
"showfooter"
>
<view
class=
"card-footer"
>
...
...
@@ -36,11 +31,6 @@
import
{
timeStampFormat
}
from
'mocp/utils/tool'
const
es
=
defineEmits
([
'handleAdd'
])
const
ps
=
defineProps
({
// company,quality,appeal
type
:
{
type
:
String
,
default
:
'company'
},
title
:
{
type
:
String
,
default
:
''
...
...
src/mocp/hooks/use-dict/dict-data/assign-work.js
View file @
230e11af
...
...
@@ -16,3 +16,7 @@ export const aw_validateType = [
{
label
:
'重复事件'
,
value
:
'1'
},
{
label
:
'同类事件'
,
value
:
'2'
}
]
export
const
aw_followUpFeedback
=
[
{
label
:
'是'
,
value
:
'1'
},
{
label
:
'否'
,
value
:
'0'
}
]
src/mocp/store/base.js
View file @
230e11af
...
...
@@ -76,10 +76,10 @@ const useBaseStore = defineStore('base', {
},
actions
:
{
async
initSysData
()
{
uni
.
showLoading
({
title
:
'正在加载系统所有基本参数中,请稍后!'
,
mask
:
true
})
//
uni.showLoading({
//
title: '正在加载系统所有基本参数中,请稍后!',
//
mask: true
//
})
try
{
await
Promise
.
all
([
this
.
getAircraftNumbers
(),
...
...
src/pages.json
View file @
230e11af
...
...
@@ -77,13 +77,7 @@
{
"path"
:
"pages/modules/mocp/panel/appraisal-record/edit"
,
"style"
:
{
"navigationBarTitleText"
:
"考核记录登记"
}
},
{
"path"
:
"pages/modules/mocp/panel/appraisal-record/add"
,
"style"
:
{
"navigationBarTitleText"
:
"添加公司值班信息"
"navigationBarTitleText"
:
""
}
},
{
...
...
@@ -101,7 +95,7 @@
{
"path"
:
"pages/modules/mocp/panel/assign-work/details"
,
"style"
:
{
"navigationBarTitleText"
:
"
早会
工作详情"
"navigationBarTitleText"
:
"
布置
工作详情"
}
},
{
...
...
@@ -165,9 +159,15 @@
}
},
{
"path"
:
"pages/modules/mocp/panel/move-decision/edit"
,
"path"
:
"pages/modules/mocp/panel/move-decision/edit-mco-director"
,
"style"
:
{
"navigationBarTitleText"
:
"MCO主任意见"
}
},
{
"path"
:
"pages/modules/mocp/panel/move-decision/edit-approver"
,
"style"
:
{
"navigationBarTitleText"
:
"
编辑运行决策
"
"navigationBarTitleText"
:
"
公司值班经理意见
"
}
},
{
...
...
src/pages/modules/mocp/panel/appraisal-record/details.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
title=
"考核记录详情"
showNavRight
@
handleRightClick=
"handleRightClick"
>
<global-page
:padding=
"24"
title=
"考核记录详情"
>
<template
v-if=
"details"
>
<view
class=
"details"
>
<view
class=
"details-header"
>
...
...
@@ -52,33 +52,45 @@
<
/view
>
<
/view
>
<
/view
>
<
card
-
details
type
=
"company"
title
=
"公司值班信息"
showfooter
:
idcard
=
"details.dmName"
:
calendar
=
"details.optionSaveTime"
>
<
card
-
details
-
item
label
=
"公司值班经理"
:
value
=
"details.dmName || '-'"
><
/card-details-item
>
<
card
-
details
-
item
<
custom
-
card
-
details
title
=
"公司值班信息"
showfooter
:
idcard
=
"details.dmName"
:
calendar
=
"details.optionSaveTime"
edit
@
handleAdd
=
"handleAdd(0)"
>
<
custom
-
card
-
details
-
item
label
=
"公司值班经理"
:
value
=
"details.dmName || '-'"
><
/custom-card-details-item
>
<
custom
-
card
-
details
-
item
label
=
"公司值班经理意见"
:
value
=
"details.opinionType != -1 ? useGetDictByValue('ar_opinionType', details.opinionType) : '-'"
><
/card-details-item
>
<
card
-
details
-
item
label
=
"公司值班经理意见描述"
:
value
=
"details.dmMsg || '-'"
><
/card-details-item
>
<
/card-details
>
<
card
-
details
type
=
"quality"
title
=
"品质中心信息"
showfooter
:
idcard
=
"details.qmName"
:
calendar
=
"details.qualitySaveTime"
>
<
card
-
details
-
item
label
=
"品质中心经理"
:
value
=
"details.qmName || '-'"
><
/card-details-item
>
<
card
-
details
-
item
><
/custom-card-details-item
>
<
custom
-
card
-
details
-
item
label
=
"公司值班经理意见描述"
:
value
=
"details.dmMsg || '-'"
><
/custom-card-details-item
>
<
/custom-card-details
>
<
custom
-
card
-
details
title
=
"品质中心信息"
showfooter
:
idcard
=
"details.qmName"
:
calendar
=
"details.qualitySaveTime"
edit
@
handleAdd
=
"handleAdd(1)"
>
<
custom
-
card
-
details
-
item
label
=
"品质中心经理"
:
value
=
"details.qmName || '-'"
><
/custom-card-details-item
>
<
custom
-
card
-
details
-
item
label
=
"品质中心经理意见"
:
value
=
"details.qualityOpinionType != -1 ? useGetDictByValue('ar_opinionType', details.qualityOpinionType) : '-'"
><
/card-details-item
>
<
c
ard
-
details
-
item
label
=
"品质中心经理意见描述"
:
value
=
"details.qmMsg || '-'"
><
/
card-details-item
>
<
/card-details
>
<
c
ard
-
details
type
=
"appeal"
title
=
"申诉状态"
titleIcon
=
"email"
>
><
/c
ustom-c
ard-details-item
>
<
c
ustom
-
card
-
details
-
item
label
=
"品质中心经理意见描述"
:
value
=
"details.qmMsg || '-'"
><
/custom-
card-details-item
>
<
/c
ustom-c
ard-details
>
<
c
ustom
-
card
-
details
title
=
"申诉状态"
titleIcon
=
"email"
>
<
view
class
=
"appeal-status"
>
{{
useGetDictByValue
(
'ar_appealInfo'
,
details
.
appealInfo
)
}}
<
/view
>
<
global
-
upload
:
fileList
=
"getFileList"
:
showUpload
=
"false"
><
/global-upload
>
<
/card-details
>
<
/c
ustom-c
ard-details
>
<
/template
>
<
/global-page
>
<
/template
>
<
script
setup
>
import
CardDetails
from
'./components/card-details.vue'
import
CardDetailsItem
from
'./components/card-details-item.vue'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
import
useAppraisalRecordStore
from
'mocp/store/appraisal-record'
import
{
storeToRefs
}
from
'pinia'
...
...
@@ -92,9 +104,20 @@ onLoad(() => {
appraisalRecordStore
.
setState
(
'id'
,
query
.
id
)
appraisalRecordStore
.
getRqmDetails
()
}
)
//跳转
const
handleRightClick
=
()
=>
{
uni
.
$mocpJump
.
navigateTo
(
'/panel/appraisal-record/edit'
)
// 添加
const
handleAdd
=
(
isDuty
)
=>
{
let
params
=
{
}
let
realName
=
''
if
(
isDuty
==
0
)
{
params
=
{
id
:
details
.
value
.
id
,
isDuty
,
mid
:
details
.
value
.
dmUid
,
opinionType
:
details
.
value
.
opinionType
,
msg
:
details
.
value
.
dmMsg
}
realName
=
details
.
value
.
dmName
}
else
{
params
=
{
id
:
details
.
value
.
id
,
isDuty
,
mid
:
details
.
value
.
qmUid
,
opinionType
:
details
.
value
.
qualityOpinionType
,
msg
:
details
.
value
.
qmMsg
}
realName
=
details
.
value
.
qmName
}
uni
.
$mocpJump
.
navigateTo
(
'/panel/appraisal-record/edit'
).
then
(()
=>
{
uni
.
$emit
(
'appraisalRecordEdit'
,
params
,
realName
)
}
)
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
...
...
src/pages/modules/mocp/panel/appraisal-record/edit.vue
View file @
230e11af
This diff is collapsed.
Click to expand it.
src/pages/modules/mocp/panel/appraisal-record/search.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
title=
"筛选"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"状态"
prop=
"status"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.status"
pickAlign=
"right"
clearable
:options=
"[
{ label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '0' }
]"
>
</global-picker>
</up-form-item>
<up-form-item
label=
"是否有效"
prop=
"valid"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.valid"
pickAlign=
"right"
:options=
"[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
>
</global-picker>
</up-form-item>
<up-form-item
label=
"基地/职能部门"
prop=
"department"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.department"
pickAlign=
"right"
:options=
"department"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"考核对象"
prop=
"appraisee"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.appraisee"
pickAlign=
"right"
:options=
"appraisee"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"事件类别"
prop=
"eventType"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.eventType"
pickAlign=
"right"
clearable
dictkey=
"ar_eventType"
></global-picker>
</up-form-item>
<up-form-item
label=
"机号"
prop=
"ac"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.ac"
pickAlign=
"right"
clearable
:options=
"deviceNumList"
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>
<global-page
title=
"筛选"
>
<view
class=
"search-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"状态"
prop=
"status"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.status"
pickAlign=
"right"
clearable
:options=
"[
{ label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '0' }
]"
>
</global-picker>
</up-form-item>
<up-form-item
label=
"是否有效"
prop=
"valid"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.valid"
pickAlign=
"right"
:options=
"[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
>
</global-picker>
</up-form-item>
<up-form-item
label=
"基地/职能部门"
prop=
"department"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.department"
pickAlign=
"right"
:options=
"department"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"考核对象"
prop=
"appraisee"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.appraisee"
pickAlign=
"right"
:options=
"appraisee"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"事件类别"
prop=
"eventType"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.eventType"
pickAlign=
"right"
clearable
dictkey=
"ar_eventType"
></global-picker>
</up-form-item>
<up-form-item
label=
"机号"
prop=
"ac"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.ac"
pickAlign=
"right"
clearable
:options=
"deviceNumList"
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>
</view>
<template
#
bottom
>
<view
class=
"footer-btn"
>
<up-row
gutter=
"10"
>
...
...
@@ -71,6 +73,10 @@ const {
}
=
useAppraisalRecordStore
()
</
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
;
...
...
src/pages/modules/mocp/panel/assign-work/details.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
:title=
"arrangeWorkExtend?.companyFullName
"
title=
"布置工作详情
"
:showNavRight=
"arrangeWorkExtendList.length > 1"
navRightType=
"icon"
:showFooterBtn=
"!!assignWorkStore.getDetailsFooterBtn"
...
...
@@ -50,11 +50,14 @@
</view>
</view>
<template
v-if=
"arrangeWorkExtend"
>
<card-details
title=
"工作反馈"
:showEmpty=
"arrangeWorkExtend.feedbackTime == '0'"
v-if=
"arrangeWorkExtend.feedbackTime != '0'"
>
<card-details
title=
"工作反馈"
:showEmpty=
"arrangeWorkExtend.feedbackTime == '0'"
>
<card-details-item
title=
"问题分析"
:content=
"arrangeWorkExtend.problem"
></card-details-item>
<card-details-item
title=
"解决措施"
label=
"工作目标"
:content=
"arrangeWorkExtend.workTarget"
></card-details-item>
<template
v-for=
"(item, index) in assignWorkStore.getDecompose"
:key=
"index"
>
<card-details-item
:label=
"assignWorkStore.getDecompose.length > 1 ? '分解计划' + (index + 1) : '分解计划'"
:content=
"item.plan"
>
<card-details-item
:label=
"assignWorkStore.getDecompose.length > 1 && index > 0 ? '分解计划' + (index + 1) : '分解计划'"
:content=
"item.plan"
>
<card-details-footer
rightLabel=
"完成时限:"
:rightValue=
"timeStampFormat(item.time,
{ format: 'YYYY/MM/DD' }) || '-'"
...
...
@@ -90,7 +93,7 @@
></card-details-footer>
</card-details-item>
</card-details>
<card-details
title=
"领导批示"
:showEmpty=
"arrangeWorkExtend.approvalTime == '0'"
v-if=
"arrangeWorkExtend.approvalTime != '0'"
>
<card-details
title=
"领导批示"
:showEmpty=
"arrangeWorkExtend.approvalTime == '0'"
>
<card-details-item
title=
"领导批示意见"
:content=
"useGetDictByValue('aw_leaderState', arrangeWorkExtend.leaderApprovalComments)"
...
...
@@ -106,11 +109,7 @@
<card-details
title=
"跟踪反馈"
:showEmpty=
"arrangeWorkExtend.gzFeedbackTime == '0'"
v-if=
"
arrangeWorkExtend.gzFeedbackTime != '0' &&
arrangeWorkExtend.leaderApprovalComments != '' &&
arrangeWorkExtend.leaderApprovalComments != '1'
"
v-if=
"arrangeWorkExtend.feedbackTime && arrangeWorkExtend.approvalTime && arrangeWorkExtend.leaderApprovalComments != 1"
>
<card-details-item
title=
"跟踪反馈"
:content=
"arrangeWorkExtend.gzFeedbackContent"
></card-details-item>
<card-details-footer
...
...
@@ -123,11 +122,7 @@
<card-details
title=
"跟踪批示"
:showEmpty=
"arrangeWorkExtend.gzApprovalTime == '0'"
v-if=
"
arrangeWorkExtend.gzApprovalTime != '0' &&
arrangeWorkExtend.leaderApprovalComments != '' &&
arrangeWorkExtend.leaderApprovalComments != '1'
"
v-if=
"arrangeWorkExtend.approvalTime && arrangeWorkExtend.gzFeedbackTime && arrangeWorkExtend.leaderApprovalComments != 1"
>
<card-details-item
title=
"领导批示意见"
...
...
@@ -144,7 +139,7 @@
<card-details
title=
"后续措施反馈"
:showEmpty=
"arrangeWorkExtend.followUpFeedbackTime == '0'"
v-if=
"arrangeWorkExtend.followUpFeedback
Time != '0' && arrangeWorkExtend.followUpFeedback
== '1'"
v-if=
"arrangeWorkExtend.followUpFeedback == '1'"
>
<card-details-item
:borderBottom=
"false"
title=
"反馈内容"
:content=
"arrangeWorkExtend.followUpFeedbackContent"
></card-details-item>
<card-details-item
...
...
@@ -162,7 +157,7 @@
></card-details-footer>
</card-details-item>
</card-details>
<card-details
title=
"工作验证"
:showEmpty=
"arrangeWorkExtend.eventType == ''"
v-if=
"a
rrangeWorkExtend.eventType != ''
"
>
<card-details
title=
"工作验证"
:showEmpty=
"arrangeWorkExtend.eventType == ''"
v-if=
"a
ssignWorkStore.isCreateUser
"
>
<card-details-item
title=
"跟踪要点"
:content=
"arrangeWorkExtend.trackingPoints"
></card-details-item>
<card-details-item
label=
"批复附件"
>
<global-upload
:fileList=
"arrangeWorkExtend.validateFileVoList"
:showUpload=
"false"
></global-upload>
...
...
src/pages/modules/mocp/panel/assign-work/edit-decompose.vue
View file @
230e11af
...
...
@@ -14,7 +14,7 @@
<template
v-for=
"(item, index) in formData"
:key=
"index"
>
<view
class=
"form"
>
<up-form-item
:label=
"formData.length > 1 ? '分解计划' + (index + 1) : '分解计划'"
:label=
"formData.length > 1
&& index > 0
? '分解计划' + (index + 1) : '分解计划'"
:borderBottom=
"true"
labelPosition=
"top"
required
...
...
src/pages/modules/mocp/panel/assign-work/edit-work.vue
View file @
230e11af
...
...
@@ -49,7 +49,7 @@
<view
class=
"plan-body-item"
>
<view
class=
"plan-body-title"
>
<view
class=
"left"
>
{{
decompose
.
length
>
1
?
'分解计划'
+
(
index
+
1
)
:
'分解计划'
}}
{{
decompose
.
length
>
1
&&
index
>
0
?
'分解计划'
+
(
index
+
1
)
:
'分解计划'
}}
</view>
<view
class=
"right"
>
{{
timeStampFormat
(
item
.
time
,
{
format
:
'YYYY/MM/DD'
}
)
}}
<
/view
>
<
/view
>
...
...
@@ -106,7 +106,12 @@
<
/up-form-item
>
<
up
-
form
-
item
label
=
"后续措施反馈"
:
borderBottom
=
"true"
required
>
<
view
class
=
"switch"
>
<
up
-
switch
v
-
model
=
"formData.followUpFeedback"
activeValue
=
"1"
inactiveValue
=
"0"
><
/up-switch
>
<
global
-
radio
radioAlign
=
"right"
v
-
model
=
"formData.followUpFeedback"
dictkey
=
"aw_followUpFeedback"
empty
-
value
=
"0"
><
/global-radio
>
<
/view
>
<
/up-form-item
>
<
up
-
form
-
item
label
=
"计划完成时间"
:
borderBottom
=
"true"
v
-
if
=
"formData.followUpFeedback == 1"
prop
=
"pcTime"
required
>
...
...
src/pages/modules/mocp/panel/assign-work/list.vue
View file @
230e11af
...
...
@@ -19,7 +19,7 @@
<view
class=
"item-title"
>
<view
class=
"left"
>
<custom-state
:value=
"item.state == 1 ? 'OPEN' : 'CLOSE'"
></custom-state>
<view
class=
"txt u-line-1"
>
{{
baseStore
.
getParamNameByValue
(
'LayoutWorkType'
,
item
.
workType
)
}}
详情
</view>
<view
class=
"txt u-line-1"
>
{{
item
.
seat
}}
</view>
</view>
<view
class=
"right u-line-1"
>
{{
baseStore
.
getParamNameByValue
(
'LayoutWorkType'
,
item
.
workType
)
}}
</view>
</view>
...
...
@@ -37,7 +37,7 @@
<
/view
>
<
view
class
=
"label"
>
<
global
-
icon
icon
=
"idcard"
><
/global-icon
>
<
text
class
=
"txt"
>
{{
item
.
presenter
}}
<
/text
>
<
text
class
=
"txt"
>
提出人
:{{
item
.
presenter
||
'-'
}}
<
/text
>
<
/view
>
<
/view
>
<
/view
>
...
...
src/pages/modules/mocp/panel/assign-work/search.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
title=
"筛选"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"任务状态"
prop=
"state"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.state"
pickAlign=
"right"
clearable
:options=
"[
{ label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '2' }
]"
>
</global-picker>
</up-form-item>
<up-form-item
label=
"提出人"
prop=
"presenter"
:borderBottom=
"true"
>
<up-input
v-model=
"formData.presenter"
inputAlign=
"right"
border=
"none"
placeholder=
"请输入"
clearable
></up-input>
</up-form-item>
<up-form-item
label=
"管理席位"
prop=
"seat"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.seat"
pickAlign=
"right"
:options=
"assignWorkStore.getSeatUnitSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"工作类型"
prop=
"workType"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.workType"
pickAlign=
"right"
:options=
"baseStore.getParamsByType('LayoutWorkType')"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"开始日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startTimeS"
v-model:endTime=
"formData.startTimeE"
clearable
></global-calendar>
</up-form-item>
</up-form>
<global-page
title=
"筛选"
>
<view
class=
"search-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"任务状态"
prop=
"state"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.state"
pickAlign=
"right"
clearable
:options=
"[
{ label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '2' }
]"
>
</global-picker>
</up-form-item>
<up-form-item
label=
"提出人"
prop=
"presenter"
:borderBottom=
"true"
>
<up-input
v-model=
"formData.presenter"
inputAlign=
"right"
border=
"none"
placeholder=
"请输入"
clearable
></up-input>
</up-form-item>
<up-form-item
label=
"管理席位"
prop=
"seat"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.seat"
pickAlign=
"right"
:options=
"assignWorkStore.getSeatUnitSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"工作类型"
prop=
"workType"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.workType"
pickAlign=
"right"
:options=
"baseStore.getParamsByType('LayoutWorkType')"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"开始日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startTimeS"
v-model:endTime=
"formData.startTimeE"
clearable
></global-calendar>
</up-form-item>
</up-form>
</view>
<template
#
bottom
>
<view
class=
"footer-btn"
>
<up-row
gutter=
"10"
>
...
...
@@ -66,6 +68,10 @@ const assignWorkStore = useAssignWorkStore()
const
baseStore
=
useBaseStore
()
</
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
;
...
...
src/pages/modules/mocp/panel/move-decision/constants/details.scss
View file @
230e11af
...
...
@@ -32,11 +32,6 @@
}
}
}
&
-footer
{
&
-item
{
margin-top
:
16rpx
;
}
}
}
.time-list
{
background
:
#fff
;
...
...
src/pages/modules/mocp/panel/move-decision/constants/list.scss
View file @
230e11af
...
...
@@ -6,14 +6,20 @@
&
-title
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding-bottom
:
16rpx
;
border-bottom
:
2rpx
solid
#f4f4f4
;
.left
{
display
:
flex
;
align-items
:
center
;
}
.right
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
.txt
{
color
:
$mocp-text-5
;
font-size
:
34
rpx
;
font-size
:
28
rpx
;
margin-left
:
16rpx
;
}
}
...
...
src/pages/modules/mocp/panel/move-decision/details.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
title=
"
查看运行决策"
showNavRight
@
handleRightClick=
"handleRightClick
"
>
<global-page
:padding=
"24"
title=
"
运行决策详情
"
>
<template
v-if=
"details"
>
<view
class=
"details"
>
<view
class=
"details-header"
>
...
...
@@ -42,7 +42,7 @@
></global-field>
</view>
</view>
<view
class=
"details-body-
box
"
>
<view
class=
"details-body-
wrap
"
>
<view
class=
"details-body-list"
>
<view
class=
"details-body-item"
>
<view
class=
"title"
>
故障描述
</view>
...
...
@@ -60,24 +60,38 @@
</view>
</view>
</view>
<view
class=
"details-footer"
>
<view
class=
"details-footer-list"
>
<view
class=
"details-footer-item"
>
<global-field
label=
"批准人:"
:value=
"details.approver || '-'"
></global-field>
</view>
<view
class=
"details-footer-item"
>
<global-field
label=
"决策结果:"
:value=
"useGetDictByValue('md_decisionState', details.decisionState) || '-'"
></global-field>
</view>
<view
class=
"details-footer-item"
v-if=
"details.decisionState == '0' && details.remark"
>
<global-field
:value=
"details.remark"
></global-field>
</view>
</view>
</view>
</view>
</view>
<custom-card-details
title=
"公司值班经理意见"
showfooter
:idcard=
"details.approverUpdateName"
:calendar=
"details.approverUpdateTime"
edit
@
handleAdd=
"handleAdd('edit-approver')"
>
<custom-card-details-item
label=
"公司值班经理"
:value=
"details.approverName || '-'"
></custom-card-details-item>
<custom-card-details-item
label=
"公司值班经理意见"
:value=
"useGetDictByValue('md_decisionState', details.decisionState) || '-'"
></custom-card-details-item>
<custom-card-details-item
label=
"公司值班经理意见描述"
:value=
"details.decisionOpinion || '-'"
></custom-card-details-item>
</custom-card-details>
<custom-card-details
title=
"MCO主任意见"
showfooter
:idcard=
"details.mcoDirectorUpdateName"
:calendar=
"details.mcoDirectorUpdateTime"
edit
@
handleAdd=
"handleAdd('edit-mco-director')"
>
<custom-card-details-item
label=
"MCO主任"
:value=
"details.mcoDirectorName || '-'"
></custom-card-details-item>
<custom-card-details-item
label=
"MCO主任意见"
:value=
"useGetDictByValue('md_decisionState', details.mcoDirectorDecisionState) || '-'"
></custom-card-details-item>
<custom-card-details-item
label=
"MCO主任意见描述"
:value=
"details.mcoDirectorOpinion || '-'"
></custom-card-details-item>
</custom-card-details>
<view
class=
"time-list"
>
<view
class=
"time-item"
>
<global-field
label=
"填报人:"
:value=
"details.filledBy"
></global-field>
...
...
@@ -103,8 +117,8 @@ const baseStore = useBaseStore()
const
moveDecisionStore
=
useMoveDecisionStore
()
const
{
details
,
getFileList
}
=
storeToRefs
(
moveDecisionStore
)
//跳转
const
handle
RightClick
=
(
)
=>
{
uni
.
$mocpJump
.
navigateTo
(
'/panel/move-decision/edit'
)
const
handle
Add
=
(
path
)
=>
{
uni
.
$mocpJump
.
navigateTo
(
`/panel/move-decision/
${
path
}
`
)
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/pages/modules/mocp/panel/
appraisal-record/add
.vue
→
src/pages/modules/mocp/panel/
move-decision/edit-approver
.vue
View file @
230e11af
<
template
>
<global-page
:title=
"formData.isDuty == 0 ? '添加公司值班信息' : '添加品质中心信息'
"
title=
"公司值班经理意见
"
navLeftType=
"text"
showNavRight
navRightType=
"button"
...
...
@@ -9,28 +9,18 @@
>
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<up-form-item
:label=
"formData.isDuty == 0 ? '公司值班经理' : '品质中心经理'
"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
clearable
v-model=
"formData.
mid"
:options=
"selectList"
emptyValue=
"-1"
></global-picker>
<up-form-item
label=
"公司值班经理
"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
clearable
v-model=
"formData.
approver"
:options=
"selectList"
filter
></global-picker>
</up-form-item>
<up-form-item
:label=
"formData.isDuty == 0 ? '公司值班经理意见' : '品质中心经理意见'"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
clearable
v-model=
"formData.opinionType"
dictkey=
"ar_opinionType"
:emptyValue=
"-1"
></global-picker>
<up-form-item
label=
"公司值班经理意见"
:borderBottom=
"true"
>
<global-radio
radioAlign=
"right"
clearable
v-model=
"formData.decisionState"
dictkey=
"md_decisionState"
></global-radio>
</up-form-item>
<up-form-item
:label=
"formData.isDuty == 0 ? '公司值班经理意见描述' : '品质中心经理意见描述'"
:borderBottom=
"true"
labelPosition=
"top"
>
<up-form-item
label=
"公司值班经理意见描述"
:borderBottom=
"true"
labelPosition=
"top"
>
<up-textarea
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
v-model=
"formData.
msg
"
v-model=
"formData.
decisionOpinion
"
></up-textarea>
</up-form-item>
</up-form>
...
...
@@ -39,54 +29,45 @@
</
template
>
<
script
setup
>
import
{
saveRqmOpinionApi
}
from
'mocp/api/appraisal-record'
import
{
getAdminListApi
}
from
'mocp/api/base'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
reactive
,
ref
}
from
'vue'
import
useAppraisalRecordStore
from
'mocp/store/appraisal-record'
import
useBaseStore
from
'mocp/store/base'
import
{
storeToRefs
}
from
'pinia'
import
useMoveDecisionStore
from
'mocp/store/move-decision'
import
{
updateApproverInfoApi
}
from
'mocp/api/move-decision'
const
appraisalRecordStore
=
useAppraisalRecordStore
()
const
baseStore
=
useBaseStore
()
const
moveDecisionStore
=
useMoveDecisionStore
()
const
{
details
}
=
storeToRefs
(
moveDecisionStore
)
//表单数据
const
formData
=
reactive
({
id
:
''
,
isDuty
:
0
,
mid
:
'-1'
,
opinionType
:
-
1
,
msg
:
''
approver
:
''
,
decisionState
:
''
,
decisionOpinion
:
''
})
//获取下拉框列表
const
selectList
=
ref
([])
onLoad
(()
=>
{
uni
.
$once
(
'appraisalRecordAdd'
,
(
data
,
realName
)
=>
{
Object
.
assign
(
formData
,
data
)
getAdminList
(
realName
||
''
)
formData
.
id
=
details
.
value
.
id
formData
.
approver
=
details
.
value
.
approver
formData
.
decisionState
=
details
.
value
.
decisionState
formData
.
decisionOpinion
=
details
.
value
.
decisionOpinion
baseStore
.
getAdminList
().
then
((
res
)
=>
{
selectList
.
value
=
res
})
})
//获取下拉框列表
const
selectList
=
ref
([])
const
getAdminList
=
async
(
realName
)
=>
{
const
params
=
{
pageIndex
:
1
,
pageSize
:
100
,
realName
}
const
res
=
await
getAdminListApi
(
params
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
selectList
.
value
=
res
.
data
.
list
.
map
((
item
)
=>
{
return
{
label
:
`
${
item
.
nickname
}
(
${(
item
.
enetAccount
||
'无易网号'
)
+
'-'
+
(
item
.
deptFullName
||
'无机构'
)}
)`
,
value
:
item
.
id
}
})
}
else
{
uni
.
$mocpMessage
.
error
(
res
.
message
)
}
}
const
handleRightClick
=
async
()
=>
{
const
res
=
await
saveRqmOpinion
Api
(
formData
,
{
loading
:
true
})
const
res
=
await
updateApproverInfo
Api
(
formData
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
uni
.
$mocpJump
.
navigateBack
()
appraisalRecordStore
.
getRqmDetails
()
uni
.
$mocpMessage
.
success
(
res
.
message
)
res
.
data
.
approver
=
formData
.
approver
res
.
data
.
approverName
=
selectList
.
value
.
find
((
item
)
=>
item
.
value
==
formData
.
approver
)?.
label
.
split
(
'('
)[
0
]
||
''
res
.
data
.
decisionState
=
formData
.
decisionState
res
.
data
.
decisionOpinion
=
formData
.
decisionOpinion
//更新详情
moveDecisionStore
.
setState
(
'details'
,
res
.
data
)
}
else
{
uni
.
$mocpMessage
.
error
(
res
.
message
)
}
...
...
src/pages/modules/mocp/panel/move-decision/edit-mco-director.vue
0 → 100644
View file @
230e11af
<
template
>
<global-page
title=
"MCO主任意见"
navLeftType=
"text"
showNavRight
navRightType=
"button"
navRightText=
"保存"
@
handleRightClick=
"handleRightClick"
>
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<up-form-item
label=
"MCO主任"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
clearable
v-model=
"formData.mcoDirector"
:options=
"selectList"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"MCP主任意见"
:borderBottom=
"true"
>
<global-radio
radioAlign=
"right"
clearable
v-model=
"formData.mcoDirectorDecisionState"
dictkey=
"md_decisionState"
></global-radio>
</up-form-item>
<up-form-item
label=
"MCP主任意见描述"
:borderBottom=
"true"
labelPosition=
"top"
>
<up-textarea
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
v-model=
"formData.mcoDirectorOpinion"
></up-textarea>
</up-form-item>
</up-form>
</view>
</global-page>
</
template
>
<
script
setup
>
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
reactive
,
ref
}
from
'vue'
import
useBaseStore
from
'mocp/store/base'
import
{
storeToRefs
}
from
'pinia'
import
useMoveDecisionStore
from
'mocp/store/move-decision'
import
{
updateMcoDirectorInfoApi
}
from
'mocp/api/move-decision'
const
baseStore
=
useBaseStore
()
const
moveDecisionStore
=
useMoveDecisionStore
()
const
{
details
}
=
storeToRefs
(
moveDecisionStore
)
//表单数据
const
formData
=
reactive
({
id
:
''
,
mcoDirector
:
''
,
mcoDirectorDecisionState
:
''
,
mcoDirectorOpinion
:
''
})
//获取下拉框列表
const
selectList
=
ref
([])
onLoad
(()
=>
{
formData
.
id
=
details
.
value
.
id
formData
.
mcoDirector
=
details
.
value
.
mcoDirector
formData
.
mcoDirectorDecisionState
=
details
.
value
.
mcoDirectorDecisionState
formData
.
mcoDirectorOpinion
=
details
.
value
.
mcoDirectorOpinion
baseStore
.
getAdminList
().
then
((
res
)
=>
{
selectList
.
value
=
res
})
})
const
handleRightClick
=
async
()
=>
{
const
res
=
await
updateMcoDirectorInfoApi
(
formData
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
uni
.
$mocpJump
.
navigateBack
()
uni
.
$mocpMessage
.
success
(
res
.
message
)
res
.
data
.
mcoDirector
=
formData
.
mcoDirector
res
.
data
.
mcoDirectorName
=
selectList
.
value
.
find
((
item
)
=>
item
.
value
==
formData
.
mcoDirector
)?.
label
.
split
(
'('
)[
0
]
||
''
res
.
data
.
mcoDirectorDecisionState
=
formData
.
mcoDirectorDecisionState
res
.
data
.
mcoDirectorOpinion
=
formData
.
mcoDirectorOpinion
//更新详情
moveDecisionStore
.
setState
(
'details'
,
res
.
data
)
}
else
{
uni
.
$mocpMessage
.
error
(
res
.
message
)
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.mocp-form
{
background
:
#fff
;
padding
:
0
32
rpx
;
}
</
style
>
src/pages/modules/mocp/panel/move-decision/list.vue
View file @
230e11af
...
...
@@ -19,7 +19,10 @@
<view
class=
"item-title"
>
<view
class=
"left"
>
<custom-state
:value=
"useGetDictByValue('md_state', item.state)"
></custom-state>
<text
class=
"txt u-line-1"
>
{{
item
.
decisionNumber
}}
</text>
</view>
<view
class=
"right"
>
<text
class=
"txt u-line-1"
v-if=
"item.machineNumber"
>
{{
item
.
machineNumber
}}
</text>
<text
class=
"txt u-line-1"
v-if=
"item.aviation"
>
{{
item
.
aviation
}}
</text>
</view>
</view>
<view
class=
"item-content u-line-3"
>
...
...
@@ -32,10 +35,6 @@
{{
timeStampFormat
(
item
.
filledTime
,
{
format
:
'YYYY/MM/DD HH:mm'
}
)
}}
<
/text
>
<
/view
>
<
view
class
=
"label"
>
<
global
-
icon
icon
=
"idcard"
><
/global-icon
>
<
text
class
=
"txt"
>
{{
item
.
filledBy
}}
<
/text
>
<
/view
>
<
/view
>
<
/view
>
<
/template
>
...
...
src/pages/modules/mocp/panel/move-decision/search.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
title=
"筛选"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"状态"
prop=
"state"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.state"
pickAlign=
"right"
clearable
dictkey=
"md_state"
></global-picker>
</up-form-item>
<up-form-item
label=
"航站"
prop=
"terminal"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.terminal"
clearable
:options=
"baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"是否有效"
prop=
"valid"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.valid"
pickAlign=
"right"
:options=
"[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
>
</global-picker>
</up-form-item>
<up-form-item
label=
"决策结果"
prop=
"decisionState"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.decisionState"
pickAlign=
"right"
:options=
"[
{ label: '同意', value: '1' },
{ label: '不同意', value: '0' }
]"
clearable
>
</global-picker>
</up-form-item>
<up-form-item
label=
"航司"
prop=
"aviation"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.aviation"
pickAlign=
"right"
:options=
"baseStore.getAirlineSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"机号"
prop=
"machineNumber"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.machineNumber"
:options=
"deviceNumList"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startDateTime"
v-model:endTime=
"formData.endDateTime"
clearable
></global-calendar>
</up-form-item>
</up-form>
<global-page
title=
"筛选"
>
<view
class=
"search-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"状态"
prop=
"state"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.state"
pickAlign=
"right"
clearable
dictkey=
"md_state"
></global-picker>
</up-form-item>
<up-form-item
label=
"航站"
prop=
"terminal"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.terminal"
clearable
:options=
"baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"是否有效"
prop=
"valid"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.valid"
pickAlign=
"right"
:options=
"[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
>
</global-picker>
</up-form-item>
<up-form-item
label=
"决策结果"
prop=
"decisionState"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.decisionState"
pickAlign=
"right"
:options=
"[
{ label: '同意', value: '1' },
{ label: '不同意', value: '0' }
]"
clearable
>
</global-picker>
</up-form-item>
<up-form-item
label=
"航司"
prop=
"aviation"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.aviation"
pickAlign=
"right"
:options=
"baseStore.getAirlineSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"机号"
prop=
"machineNumber"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.machineNumber"
:options=
"deviceNumList"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startDateTime"
v-model:endTime=
"formData.endDateTime"
clearable
></global-calendar>
</up-form-item>
</up-form>
</view>
<template
#
bottom
>
<view
class=
"footer-btn"
>
<up-row
gutter=
"10"
>
...
...
@@ -74,6 +83,10 @@ const {
}
=
useBaseStore
()
</
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
;
...
...
src/pages/modules/mocp/panel/technology-evaluation/add-engineering.vue
View file @
230e11af
...
...
@@ -10,7 +10,7 @@
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<up-form-item
label=
"授权工程师"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.estimateEngineer"
clearable
:options=
"estimateOpts"
></global-picker>
<global-picker
pickAlign=
"right"
v-model=
"formData.estimateEngineer"
clearable
:options=
"estimateOpts"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"日期"
:borderBottom=
"true"
>
<global-date
pickAlign=
"right"
v-model=
"formData.engineerTime"
clearable
:timestamp=
"false"
></global-date>
...
...
@@ -89,7 +89,7 @@ onLoad(() => {
formData
.
estimateEngineer
=
details
.
value
.
estimateEngineer
formData
.
estimateType
=
details
.
value
.
estimateType
formData
.
engineerTime
=
details
.
value
.
engineerTime
baseStore
.
getAdminList
(
details
.
value
.
estimateEngineerName
).
then
((
res
)
=>
{
baseStore
.
getAdminList
().
then
((
res
)
=>
{
estimateOpts
.
value
=
res
})
})
...
...
src/pages/modules/mocp/panel/technology-evaluation/add-opinion.vue
View file @
230e11af
...
...
@@ -10,7 +10,7 @@
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<up-form-item
label=
"机队经理或其授权人"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.otherName"
clearable
:options=
"otherNameOpts"
></global-picker>
<global-picker
pickAlign=
"right"
v-model=
"formData.otherName"
clearable
:options=
"otherNameOpts"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"机队经理或其授权人意见"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.opinionType"
clearable
dictkey=
"te_opinionType"
emptyValue=
"0"
></global-picker>
...
...
@@ -44,7 +44,7 @@ onLoad(() => {
formData
.
num
=
details
.
value
.
num
formData
.
otherName
=
details
.
value
.
otherName
formData
.
opinionType
=
details
.
value
.
opinionType
baseStore
.
getAdminList
(
details
.
value
.
otherFullName
).
then
((
res
)
=>
{
baseStore
.
getAdminList
().
then
((
res
)
=>
{
otherNameOpts
.
value
=
res
})
})
...
...
src/pages/modules/mocp/panel/technology-evaluation/add-ratify.vue
View file @
230e11af
...
...
@@ -10,7 +10,7 @@
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<up-form-item
label=
"客户工程授权人"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.customName"
clearable
:options=
"customNameOpts"
></global-picker>
<global-picker
pickAlign=
"right"
v-model=
"formData.customName"
clearable
:options=
"customNameOpts"
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"客户工程授权人意见"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
v-model=
"formData.customType"
clearable
dictkey=
"te_customType"
emptyValue=
"0"
></global-picker>
...
...
@@ -44,7 +44,7 @@ onLoad(() => {
formData
.
num
=
details
.
value
.
num
formData
.
customName
=
details
.
value
.
customName
formData
.
customType
=
details
.
value
.
customType
baseStore
.
getAdminList
(
details
.
value
.
customFullName
).
then
((
res
)
=>
{
baseStore
.
getAdminList
().
then
((
res
)
=>
{
customNameOpts
.
value
=
res
})
})
...
...
src/pages/modules/mocp/panel/technology-evaluation/search.vue
View file @
230e11af
<
template
>
<global-page
:padding=
"24"
title=
"筛选"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"状态"
prop=
"state"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.state"
pickAlign=
"right"
clearable
dictkey=
"te_state"
></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=
"机型"
prop=
"model"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.model"
pickAlign=
"right"
:options=
"baseStore.getTypeSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"ATA章节"
prop=
"ata"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.ata"
pickAlign=
"right"
:options=
"baseStore.getATASelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startDateTime"
v-model:endTime=
"formData.endDateTime"
clearable
></global-calendar>
</up-form-item>
</up-form>
<global-page
title=
"筛选"
>
<view
class=
"search-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
ref=
"formRef"
>
<up-form-item
label=
"状态"
prop=
"state"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.state"
pickAlign=
"right"
clearable
dictkey=
"te_state"
></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=
"机型"
prop=
"model"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.model"
pickAlign=
"right"
:options=
"baseStore.getTypeSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"ATA章节"
prop=
"ata"
:borderBottom=
"true"
>
<global-picker
v-model=
"formData.ata"
pickAlign=
"right"
:options=
"baseStore.getATASelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item
label=
"日期"
:borderBottom=
"true"
>
<global-calendar
pickAlign=
"right"
v-model:startTime=
"formData.startDateTime"
v-model:endTime=
"formData.endDateTime"
clearable
></global-calendar>
</up-form-item>
</up-form>
</view>
<template
#
bottom
>
<view
class=
"footer-btn"
>
<up-row
gutter=
"10"
>
...
...
@@ -47,6 +49,10 @@ const {
}
=
useBaseStore
()
</
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
;
...
...
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