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
8ee315d4
Commit
8ee315d4
authored
Jun 05, 2024
by
pangchong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 布置工作编辑
parent
b109d222
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
310 additions
and
31 deletions
+310
-31
src/mocp/api/assign-work.js
+27
-0
src/mocp/utils/tool.js
+1
-1
src/pages.json
+6
-0
src/pages/modules/mocp/panel/appraisal-record/components/card-details.vue
+1
-1
src/pages/modules/mocp/panel/appraisal-record/details.vue
+1
-1
src/pages/modules/mocp/panel/assign-work/components/card-details-footer.vue
+1
-0
src/pages/modules/mocp/panel/assign-work/details.vue
+49
-5
src/pages/modules/mocp/panel/assign-work/edit-followUpFeedback.vue
+79
-8
src/pages/modules/mocp/panel/assign-work/edit-gzApproval.vue
+80
-0
src/pages/modules/mocp/panel/assign-work/edit-gzFeedback.vue
+62
-12
src/pages/modules/mocp/panel/assign-work/edit-work.vue
+1
-1
src/pages/modules/mocp/panel/assign-work/list.vue
+2
-2
No files found.
src/mocp/api/assign-work.js
View file @
8ee315d4
...
...
@@ -44,3 +44,30 @@ export const savaWorkValidateApi = (data, config) => {
config
})
}
export
const
savaGzFeedbackApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/technical-support/savaGzFeedback'
,
data
,
config
})
}
export
const
savaGzApprovalApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/technical-support/savaGzApproval'
,
data
,
config
})
}
export
const
savaFollowUpFeedbackApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/technical-support/savaFollowUpFeedback'
,
data
,
config
})
}
src/mocp/utils/tool.js
View file @
8ee315d4
...
...
@@ -10,6 +10,6 @@ export const timeStampFormat = (timeStamp, opt) => {
return
''
}
timeStamp
=
parseInt
(
String
(
timeStamp
))
const
format
=
opt
?.
format
||
'YYYY/MM/DD'
const
format
=
opt
?.
format
||
'YYYY/MM/DD
HH:mm:ss
'
return
Day
(
timeStamp
).
format
(
format
)
}
src/pages.json
View file @
8ee315d4
...
...
@@ -124,6 +124,12 @@
"style"
:
{
"navigationBarTitleText"
:
"工作验证"
}
},
{
"path"
:
"pages/modules/mocp/panel/assign-work/edit-gzApproval"
,
"style"
:
{
"navigationBarTitleText"
:
"跟踪批示"
}
}
],
"globalStyle"
:
{
...
...
src/pages/modules/mocp/panel/appraisal-record/components/card-details.vue
View file @
8ee315d4
...
...
@@ -25,7 +25,7 @@
</view>
<view
class=
"label"
>
<global-icon
icon=
"calendar"
color=
"#1D2129"
></global-icon>
<text
class=
"txt"
>
{{ calendar != -1 ? timeStampFormat(calendar
, { format: 'YYYY/MM/DD HH:mm:ss' }
) : '-' }}
</text>
<text
class=
"txt"
>
{{ calendar != -1 ? timeStampFormat(calendar) : '-' }}
</text>
</view>
</view>
</slot>
...
...
src/pages/modules/mocp/panel/appraisal-record/details.vue
View file @
8ee315d4
...
...
@@ -16,7 +16,7 @@
<global-icon
class=
"left-icon"
icon=
"Vector"
size=
"24"
color=
"#DD4012"
></global-icon>
<view
class=
"txt"
>
{{
details
.
ac
}}
{{
details
.
acType
}}
</view>
</view>
<view
class=
"right"
>
{{
timeStampFormat
(
details
.
eventTime
)
}}
</view>
<view
class=
"right"
>
{{
timeStampFormat
(
details
.
eventTime
,
{
format
:
'YYYY/MM/DD'
}
)
}}
<
/view
>
<
/view
>
<
/view
>
<
view
class
=
"details-body"
>
...
...
src/pages/modules/mocp/panel/assign-work/components/card-details-footer.vue
View file @
8ee315d4
...
...
@@ -34,6 +34,7 @@ const ps = defineProps({
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
flex-wrap
:
wrap
;
margin-top
:
16
rpx
;
}
</
style
>
src/pages/modules/mocp/panel/assign-work/details.vue
View file @
8ee315d4
...
...
@@ -2,7 +2,7 @@
<global-page
:padding=
"24"
:title=
"arrangeWorkExtend?.companyFullName"
:showNavRight=
"arrangeWorkExtendList.length"
:showNavRight=
"arrangeWorkExtendList.length
> 1
"
navRightType=
"icon"
showFooterBtn
footerBtnText=
"领导批示"
...
...
@@ -45,8 +45,8 @@
</view>
</view>
<view
class=
"details-footer"
>
<global-field
label=
"开始日期:"
:value=
"timeStampFormat(details.startTime)"
></global-field>
<global-field
label=
"完成日期:"
:value=
"timeStampFormat(details.feedbackTime)"
></global-field>
<global-field
label=
"开始日期:"
:value=
"timeStampFormat(details.startTime
,
{ format: 'YYYY/MM/DD' }
)">
</global-field>
<global-field
label=
"完成日期:"
:value=
"timeStampFormat(details.feedbackTime
,
{ format: 'YYYY/MM/DD' }
)">
</global-field>
</view>
</view>
<template
v-if=
"arrangeWorkExtend"
>
...
...
@@ -55,7 +55,10 @@
<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-footer
rightLabel=
"完成时限:"
:rightValue=
"timeStampFormat(item.time) || '-'"
></card-details-footer>
<card-details-footer
rightLabel=
"完成时限:"
:rightValue=
"timeStampFormat(item.time,
{ format: 'YYYY/MM/DD' }) || '-'"
>
</card-details-footer>
</card-details-item>
</
template
>
<card-details-item
label=
"当前进展"
:content=
"arrangeWorkExtend.current"
>
...
...
@@ -71,7 +74,9 @@
leftLabel=
"后续措施反馈:"
:leftValue=
"arrangeWorkExtend.followUpFeedback == '1' ? '是' : '否'"
rightLabel=
"计划完成时间:"
:rightValue=
"arrangeWorkExtend.followUpFeedback == '1' ? timeStampFormat(arrangeWorkExtend.pcTime) : '-'"
:rightValue=
"
arrangeWorkExtend.followUpFeedback == '1' ? timeStampFormat(arrangeWorkExtend.pcTime, { format: 'YYYY/MM/DD' }) : '-'
"
></card-details-footer>
<card-details-footer
leftLabel=
"工作反馈状态:"
...
...
@@ -98,6 +103,45 @@
:rightValue=
"timeStampFormat(arrangeWorkExtend.approvalTime) || '-'"
></card-details-footer>
</card-details>
<card-details
title=
"跟踪反馈"
:showEmpty=
"arrangeWorkExtend.gzFeedbackTime == '0'"
>
<card-details-item
title=
"跟踪反馈"
:content=
"arrangeWorkExtend.gzFeedbackContent"
></card-details-item>
<card-details-footer
leftLabel=
"反馈人:"
:leftValue=
"arrangeWorkExtend.gzFeedbackUser"
rightLabel=
"反馈时间:"
:rightValue=
"timeStampFormat(arrangeWorkExtend.gzFeedbackTime)"
></card-details-footer>
</card-details>
<card-details
title=
"跟踪批示"
:showEmpty=
"arrangeWorkExtend.gzApprovalTime == '0'"
>
<card-details-item
title=
"领导批示意见"
:content=
"useGetDictByValue('leaderState', arrangeWorkExtend.gzApprovalComments)"
></card-details-item>
<card-details-item
title=
"批示要点"
:content=
"arrangeWorkExtend.gzApprovalContent"
></card-details-item>
<card-details-footer
leftLabel=
"批示人:"
:leftValue=
"arrangeWorkExtend.gzApprovalUser || '-'"
rightLabel=
"批示时间:"
:rightValue=
"timeStampFormat(arrangeWorkExtend.gzApprovalTime) || '-'"
></card-details-footer>
</card-details>
<card-details
title=
"后续措施反馈"
:showEmpty=
"arrangeWorkExtend.followUpFeedbackTime == '0'"
>
<card-details-item
:borderBottom=
"false"
title=
"反馈内容"
:content=
"arrangeWorkExtend.followUpFeedbackContent"
></card-details-item>
<card-details-item
:borderBottom=
"false"
title=
"应用分类"
:content=
"baseStore.getParamNameByValue('ApplicationType', arrangeWorkExtend.appType)"
></card-details-item>
<card-details-item
label=
"验证材料"
>
<global-album
:fileList=
"arrangeWorkExtend.followUpFeedbackFileVoList"
></global-album>
<card-details-footer
leftLabel=
"反馈人:"
:leftValue=
"arrangeWorkExtend.followUpFeedbackUser || '-'"
rightLabel=
"反馈时间:"
:rightValue=
"timeStampFormat(arrangeWorkExtend.followUpFeedbackTime) || '-'"
></card-details-footer>
</card-details-item>
</card-details>
<card-details
title=
"工作验证"
:showEmpty=
"arrangeWorkExtend.eventType == ''"
>
<card-details-item
title=
"跟踪要点"
:content=
"arrangeWorkExtend.trackingPoints"
></card-details-item>
<card-details-item
label=
"批复附件"
>
...
...
src/pages/modules/mocp/panel/assign-work/edit-followUpFeedback.vue
View file @
8ee315d4
<
template
>
<global-page
title=
"后续措施反馈"
navLeftType=
"text"
:showNavRight=
"true"
navRightType=
"button"
navRightText=
"保存"
>
<global-page
title=
"后续措施反馈"
navLeftType=
"text"
:showNavRight=
"true"
navRightType=
"button"
navRightText=
"保存"
@
handleRightClick=
"handleSave"
>
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
ref=
"formRef"
>
<up-form-item
label=
"反馈内容"
:borderBottom=
"true"
labelPosition=
"top"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
:rules=
"rules"
ref=
"formRef"
>
<up-form-item
label=
"反馈内容"
:borderBottom=
"true"
labelPosition=
"top"
prop=
"followUpFeedbackContent"
required
>
<up-textarea
v-model=
"formData.followUpFeedbackContent"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
...
...
@@ -11,22 +19,85 @@
</up-form-item>
<up-form-item
label=
"验证材料"
labelPosition=
"top"
:borderBottom=
"true"
>
<view
style=
"margin-top: 24rpx"
>
<global-upload></global-upload>
<global-upload
:fileList=
"arrangeWorkExtend.followUpFeedbackFileVoList"
v-model=
"formData.followUpFeedbackFile"
mapFieldName=
"id"
></global-upload>
</view>
</up-form-item>
<up-form-item
label=
"应用分类"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
clearable
></global-picker>
<up-form-item
label=
"应用分类"
:borderBottom=
"true"
prop=
"appType"
required
>
<global-picker
pickAlign=
"right"
v-model=
"formData.appType"
clearable
:options=
"baseStore.getParamsByType('ApplicationType')"
></global-picker>
</up-form-item>
</up-form>
</view>
</global-page>
</
template
>
<
script
setup
></
script
>
<
script
setup
>
import
{
reactive
,
ref
}
from
'vue'
import
useAssignWorkStore
from
'mocp/store/assign-work'
import
{
storeToRefs
}
from
'pinia'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
useBaseStore
from
'mocp/store/base'
import
{
savaFollowUpFeedbackApi
}
from
'mocp/api/assign-work'
const
baseStore
=
useBaseStore
()
const
assignWorkStore
=
useAssignWorkStore
()
const
{
arrangeWorkExtend
}
=
storeToRefs
(
assignWorkStore
)
const
formData
=
reactive
({
followUpFeedbackContent
:
''
,
followUpFeedbackFile
:
''
,
appType
:
''
})
const
rules
=
reactive
({
followUpFeedbackContent
:
[
{
required
:
true
,
message
:
'请输入反馈内容'
,
trigger
:
[
'blur'
,
'change'
]
}
],
appType
:
[
{
required
:
true
,
message
:
'请选择应用分类'
,
trigger
:
[
'blur'
,
'change'
]
}
]
})
//页面初始化
onLoad
(()
=>
{
formData
.
id
=
arrangeWorkExtend
.
value
.
id
formData
.
workId
=
arrangeWorkExtend
.
value
.
workId
formData
.
company
=
arrangeWorkExtend
.
value
.
company
formData
.
followUpFeedbackContent
=
arrangeWorkExtend
.
value
.
followUpFeedbackContent
formData
.
followUpFeedbackFile
=
arrangeWorkExtend
.
value
.
followUpFeedbackFile
formData
.
appType
=
arrangeWorkExtend
.
value
.
appType
})
//保存
const
formRef
=
ref
()
const
handleSave
=
async
()
=>
{
await
formRef
.
value
?.
validate
()
const
res
=
await
savaFollowUpFeedbackApi
(
formData
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
uni
.
$mocpJump
.
navigateBack
()
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
//更新当前责任单位详情
assignWorkStore
.
setState
(
'arrangeWorkExtend'
,
res
.
data
)
}
else
{
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.mocp-form
{
background
:
#fff
;
margin-bottom
:
24
rpx
;
padding
:
0
32
rpx
;
}
</
style
>
src/pages/modules/mocp/panel/assign-work/edit-gzApproval.vue
0 → 100644
View file @
8ee315d4
<
template
>
<global-page
title=
"跟踪批示"
navLeftType=
"text"
:showNavRight=
"true"
navRightType=
"button"
navRightText=
"保存"
@
handleRightClick=
"handleSave"
>
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
:rules=
"rules"
ref=
"formRef"
>
<up-form-item
label=
"领导批示意见"
:borderBottom=
"true"
prop=
"gzApprovalComments"
required
>
<global-picker
pickAlign=
"right"
v-model=
"formData.gzApprovalComments"
clearable
dictkey=
"leaderState"
></global-picker>
</up-form-item>
<up-form-item
label=
"批示要点"
:borderBottom=
"true"
labelPosition=
"top"
prop=
"gzApprovalContent"
required
>
<up-textarea
v-model
.
trim=
"formData.gzApprovalContent"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
></up-textarea>
</up-form-item>
</up-form>
</view>
</global-page>
</
template
>
<
script
setup
>
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
savaGzApprovalApi
}
from
'mocp/api/assign-work'
import
useAssignWorkStore
from
'mocp/store/assign-work'
import
{
storeToRefs
}
from
'pinia'
import
{
reactive
,
ref
}
from
'vue'
const
assignWorkStore
=
useAssignWorkStore
()
const
{
arrangeWorkExtend
}
=
storeToRefs
(
assignWorkStore
)
const
formData
=
reactive
({
gzApprovalComments
:
''
,
gzApprovalContent
:
''
})
const
rules
=
reactive
({
gzApprovalComments
:
[
{
type
:
'number'
,
required
:
true
,
message
:
'请选择领导批示意见'
,
trigger
:
[
'blur'
,
'change'
]
}
],
gzApprovalContent
:
[
{
required
:
true
,
message
:
'请输入批示要点'
,
trigger
:
[
'blur'
,
'change'
]
}
]
})
//页面初始化
onLoad
(()
=>
{
formData
.
id
=
arrangeWorkExtend
.
value
.
id
formData
.
workId
=
arrangeWorkExtend
.
value
.
workId
formData
.
company
=
arrangeWorkExtend
.
value
.
company
formData
.
gzApprovalComments
=
arrangeWorkExtend
.
value
.
gzApprovalComments
formData
.
gzApprovalContent
=
arrangeWorkExtend
.
value
.
gzApprovalContent
})
//保存
const
formRef
=
ref
()
const
handleSave
=
async
()
=>
{
await
formRef
.
value
?.
validate
()
const
res
=
await
savaGzApprovalApi
(
formData
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
uni
.
$mocpJump
.
navigateBack
()
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
//更新当前责任单位详情
assignWorkStore
.
setState
(
'arrangeWorkExtend'
,
res
.
data
)
}
else
{
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.mocp-form
{
background
:
#fff
;
margin-bottom
:
24
rpx
;
padding
:
0
32
rpx
;
}
</
style
>
src/pages/modules/mocp/panel/assign-work/edit-gzFeedback.vue
View file @
8ee315d4
<
template
>
<global-page
title=
"跟踪反馈"
navLeftType=
"text"
:showNavRight=
"true"
navRightType=
"button"
navRightText=
"保存"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
ref=
"formRef"
>
<up-form-item
label=
"跟踪反馈"
:borderBottom=
"true"
labelPosition=
"top"
>
<up-textarea
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
></up-textarea>
</up-form-item>
</up-form>
<global-page
title=
"跟踪反馈"
navLeftType=
"text"
:showNavRight=
"true"
navRightType=
"button"
navRightText=
"保存"
@
handleRightClick=
"handleSave"
>
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
:rules=
"rules"
ref=
"formRef"
>
<up-form-item
label=
"跟踪反馈"
:borderBottom=
"true"
labelPosition=
"top"
prop=
"gzFeedbackContent"
required
>
<up-textarea
v-model=
"formData.gzFeedbackContent"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
></up-textarea>
</up-form-item>
</up-form>
</view>
</global-page>
</
template
>
<
script
setup
></
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
script
setup
>
import
{
reactive
,
ref
}
from
'vue'
import
useAssignWorkStore
from
'mocp/store/assign-work'
import
{
storeToRefs
}
from
'pinia'
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
savaGzFeedbackApi
}
from
'mocp/api/assign-work'
const
assignWorkStore
=
useAssignWorkStore
()
const
{
arrangeWorkExtend
}
=
storeToRefs
(
assignWorkStore
)
const
formData
=
reactive
({
gzFeedbackContent
:
''
})
const
rules
=
reactive
({
gzFeedbackContent
:
[
{
required
:
true
,
message
:
'请输入跟踪反馈'
,
trigger
:
[
'blur'
,
'change'
]
}
]
})
//页面初始化
onLoad
(()
=>
{
formData
.
id
=
arrangeWorkExtend
.
value
.
id
formData
.
workId
=
arrangeWorkExtend
.
value
.
workId
formData
.
company
=
arrangeWorkExtend
.
value
.
company
formData
.
gzFeedbackContent
=
arrangeWorkExtend
.
value
.
gzFeedbackContent
})
//保存
const
formRef
=
ref
()
const
handleSave
=
async
()
=>
{
await
formRef
.
value
?.
validate
()
const
res
=
await
savaGzFeedbackApi
(
formData
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
uni
.
$mocpJump
.
navigateBack
()
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
//更新当前责任单位详情
assignWorkStore
.
setState
(
'arrangeWorkExtend'
,
res
.
data
)
}
else
{
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.mocp-form
{
background
:
#fff
;
padding
:
0
32
rpx
;
}
</
style
>
src/pages/modules/mocp/panel/assign-work/edit-work.vue
View file @
8ee315d4
...
...
@@ -51,7 +51,7 @@
<view
class=
"left"
>
{{
decompose
.
length
>
1
?
'分解计划'
+
(
index
+
1
)
:
'分解计划'
}}
</view>
<view
class=
"right"
>
{{
timeStampFormat
(
item
.
time
)
}}
</view>
<view
class=
"right"
>
{{
timeStampFormat
(
item
.
time
,
{
format
:
'YYYY/MM/DD'
}
)
}}
<
/view
>
<
/view
>
<
view
class
=
"plan-body-text"
>
{{
item
.
plan
}}
<
/view
>
<
/view
>
...
...
src/pages/modules/mocp/panel/assign-work/list.vue
View file @
8ee315d4
...
...
@@ -24,9 +24,9 @@
<view
class=
"label"
>
<global-icon
icon=
"calendar"
></global-icon>
<text
class=
"txt"
>
{{
timeStampFormat
(
item
.
startTime
)
}}
{{
timeStampFormat
(
item
.
startTime
,
{
format
:
'YYYY/MM/DD'
}
)
}}
-
{{
timeStampFormat
(
item
.
feedbackTime
)
}}
{{
timeStampFormat
(
item
.
feedbackTime
,
{
format
:
'YYYY/MM/DD'
}
)
}}
<
/text
>
<
/view
>
<
view
class
=
"label"
>
...
...
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