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
d95e4a8d
Commit
d95e4a8d
authored
Jun 05, 2024
by
pangchong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 布置工作--工作验证
parent
f8eefbd7
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
151 additions
and
62 deletions
+151
-62
src/mocp/api/assign-work.js
+10
-0
src/mocp/components/global-upload/global-upload.vue
+25
-15
src/mocp/hooks/use-dict/dict-data/assign-work.js
+8
-4
src/mocp/store/base.js
+2
-2
src/pages/modules/mocp/panel/appraisal-record/constants/edit.compositions.js
+2
-1
src/pages/modules/mocp/panel/appraisal-record/constants/edit.functionals.js
+1
-5
src/pages/modules/mocp/panel/appraisal-record/edit.vue
+4
-6
src/pages/modules/mocp/panel/assign-work/constants/edit-work.compositions.js
+3
-1
src/pages/modules/mocp/panel/assign-work/constants/edit-work.functionals.js
+0
-8
src/pages/modules/mocp/panel/assign-work/edit-validate.vue
+89
-14
src/pages/modules/mocp/panel/assign-work/edit-work.vue
+7
-6
No files found.
src/mocp/api/assign-work.js
View file @
d95e4a8d
...
...
@@ -26,6 +26,7 @@ export const savaArrangeWorkFeedbackApi = (data, config) => {
config
})
}
export
const
savaLeaderApprovalApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
...
...
@@ -34,3 +35,12 @@ export const savaLeaderApprovalApi = (data, config) => {
config
})
}
export
const
savaWorkValidateApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/technical-support/savaWorkValidate'
,
data
,
config
})
}
src/mocp/components/global-upload/global-upload.vue
View file @
d95e4a8d
...
...
@@ -23,7 +23,7 @@ import { computed, ref, watch } from 'vue'
import
{
cloneDeep
}
from
'lodash'
import
{
upload
}
from
'mocp/utils/http'
const
es
=
defineEmits
([
'
handleUpload
'
])
const
es
=
defineEmits
([
'
update:modelValue'
,
'change
'
])
const
ps
=
defineProps
({
fileList
:
{
type
:
Array
,
...
...
@@ -44,6 +44,14 @@ const ps = defineProps({
uploadIcon
:
{
type
:
String
,
default
:
'plus'
},
mapFieldName
:
{
type
:
String
,
default
:
''
},
mapFieldSplit
:
{
type
:
String
,
default
:
','
}
})
const
getUploadButtonSize
=
computed
(()
=>
{
...
...
@@ -99,21 +107,23 @@ const afterRead = async (event) => {
watch
(
fileList
,
(
value
)
=>
{
es
(
'handleUpload'
,
cloneDeep
(
value
)
.
filter
((
item
)
=>
{
return
item
.
status
!=
'uploading'
})
.
filter
((
item
)
=>
{
return
delete
item
.
status
})
.
filter
((
item
)
=>
{
return
delete
item
.
message
})
)
let
files
=
cloneDeep
(
value
)
.
filter
((
item
)
=>
{
return
item
.
status
!=
'uploading'
})
.
filter
((
item
)
=>
{
return
delete
item
.
status
})
.
filter
((
item
)
=>
{
return
delete
item
.
message
})
if
(
ps
.
mapFieldName
)
{
files
=
files
.
map
((
v
)
=>
v
[
ps
.
mapFieldName
]).
join
(
ps
.
mapFieldSplit
)
}
es
(
'update:modelValue'
,
files
)
es
(
'change'
,
files
)
},
{
deep
:
true
}
{
deep
:
true
,
immediate
:
true
}
)
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/mocp/hooks/use-dict/dict-data/assign-work.js
View file @
d95e4a8d
export
const
feedbackOpts
=
[
{
label
:
'是'
,
value
:
1
},
{
label
:
'落实执行'
,
value
:
0
}
{
label
:
'是'
,
value
:
'1'
},
{
label
:
'落实执行'
,
value
:
'0'
}
]
export
const
feedbackState
=
[
{
label
:
'OPEN'
,
value
:
1
},
{
label
:
'CLOSE'
,
value
:
2
}
{
label
:
'OPEN'
,
value
:
'1'
},
{
label
:
'CLOSE'
,
value
:
'2'
}
]
export
const
leaderState
=
[
{
label
:
'同意'
,
value
:
'1'
},
{
label
:
'不同意'
,
value
:
'0'
},
{
label
:
'部分同意'
,
value
:
'2'
}
]
export
const
validateType
=
[
{
label
:
'重复事件'
,
value
:
'1'
},
{
label
:
'同类事件'
,
value
:
'2'
}
]
src/mocp/store/base.js
View file @
d95e4a8d
...
...
@@ -45,8 +45,8 @@ const useBaseStore = defineStore('base', {
},
getParamsByType
(
paramType
)
{
return
this
.
allBasicParams
[
paramType
]
.
filter
((
item
)
=>
item
.
isDel
==
0
)
.
map
((
item
)
=>
{
?
.
filter
((
item
)
=>
item
.
isDel
==
0
)
?
.
map
((
item
)
=>
{
return
{
label
:
item
.
paramName
,
value
:
item
.
paramCode
}
})
},
...
...
src/pages/modules/mocp/panel/appraisal-record/constants/edit.compositions.js
View file @
d95e4a8d
...
...
@@ -37,5 +37,6 @@ export const formData = reactive({
qualityOpinionMsg
:
''
,
qualityOpinionType
:
-
1
,
status
:
''
,
emailSendTime
:
-
1
emailSendTime
:
-
1
,
file
:
[]
})
src/pages/modules/mocp/panel/appraisal-record/constants/edit.functionals.js
View file @
d95e4a8d
import
{
getAcReduceListApi
}
from
'mocp/api/base'
import
{
f
ileList
,
f
ormData
}
from
'./edit.compositions'
import
{
formData
}
from
'./edit.compositions'
//切换机号
export
const
changeAc
=
async
()
=>
{
...
...
@@ -11,7 +11,3 @@ export const changeAc = async () => {
uni
.
$mocpMessage
.
showToast
(
res
.
message
)
}
}
//获取文件内容
export
const
handleUpload
=
(
data
)
=>
{
fileList
.
value
=
data
}
src/pages/modules/mocp/panel/appraisal-record/edit.vue
View file @
d95e4a8d
...
...
@@ -119,7 +119,7 @@
<global-picker
pickAlign=
"right"
dictkey=
"appealInfo"
v-model=
"formData.appealInfo"
clearable
></global-picker>
</view>
<view
class=
"appeal-content"
>
<global-upload
:fileList=
"getFileList"
@
handleUpload=
"handleUpload
"
></global-upload>
<global-upload
:fileList=
"getFileList"
v-model=
"formData.file
"
></global-upload>
</view>
</view>
</view>
...
...
@@ -132,8 +132,8 @@ import CardDetailsItem from './components/card-details-item.vue'
import
{
onShow
}
from
'@dcloudio/uni-app'
import
useBaseStore
from
'mocp/store/base'
import
{
useGetDictByValue
}
from
'mocp/hooks/use-dict/useDict'
import
{
rules
,
formData
,
f
ileList
,
f
ormRef
}
from
'./constants/edit.compositions'
import
{
changeAc
,
handleUpload
}
from
'./constants/edit.functionals'
import
{
rules
,
formData
,
formRef
}
from
'./constants/edit.compositions'
import
{
changeAc
}
from
'./constants/edit.functionals'
import
useAppraisalRecordStore
from
'mocp/store/appraisal-record'
import
{
storeToRefs
}
from
'pinia'
import
{
updateRqmDataApi
}
from
'mocp/api/appraisal-record'
...
...
@@ -172,13 +172,11 @@ onShow(() => {
formData
.
qualityOpinionType
=
details
.
value
.
qualityOpinionType
formData
.
status
=
details
.
value
.
status
formData
.
emailSendTime
=
details
.
value
.
emailSendTime
//初始化文件列表
fileList
.
value
=
getFileList
.
value
})
//提交表单
const
handleSubmit
=
async
()
=>
{
await
formRef
.
value
?.
validate
()
const
params
=
{
...
formData
,
file
:
JSON
.
stringify
(
f
ileList
.
valu
e
)
}
const
params
=
{
...
formData
,
file
:
JSON
.
stringify
(
f
ormData
.
fil
e
)
}
const
res
=
await
updateRqmDataApi
(
params
,
{
loading
:
true
})
if
(
res
.
code
==
200
)
{
uni
.
$mocpJump
.
navigateBack
()
...
...
src/pages/modules/mocp/panel/assign-work/constants/edit-work.compositions.js
View file @
d95e4a8d
...
...
@@ -11,7 +11,9 @@ export const formData = reactive({
pcTime
:
null
,
feedbackState
:
null
,
feedbackUser
:
''
,
feedbackTime
:
''
feedbackTime
:
''
,
approvalFile
:
''
,
file
:
''
})
export
const
rules
=
reactive
({
feedbackState
:
[
...
...
src/pages/modules/mocp/panel/assign-work/constants/edit-work.functionals.js
deleted
100644 → 0
View file @
f8eefbd7
import
{
approvalFileVoList
,
fileVoList
}
from
'./edit-work.compositions'
export
const
handleUploadFile
=
(
data
)
=>
{
fileVoList
.
value
=
data
}
export
const
handleUploadApproval
=
(
data
)
=>
{
approvalFileVoList
.
value
=
data
}
src/pages/modules/mocp/panel/assign-work/edit-validate.vue
View file @
d95e4a8d
<
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=
"trackingPoints"
required
>
<up-textarea
v-model=
"formData.trackingPoints"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
></up-textarea>
</up-form-item>
<up-form-item
label=
"事件类型"
:borderBottom=
"true"
>
<global-picker
pickAlign=
"right"
clearable
></global-picker>
<up-form-item
label=
"事件类型"
:borderBottom=
"true"
prop=
"eventType"
required
>
<global-picker
pickAlign=
"right"
v-model=
"formData.eventType"
clearable
:options=
"baseStore.getParamsByType('LayoutEventType')"
></global-picker>
</up-form-item>
<up-form-item
label=
"重复/同类事件"
:borderBottom=
"true"
>
<global-checkbox
checkboxAlign=
"right"
v-model=
"
box
"
></global-checkbox>
<up-form-item
label=
"重复/同类事件"
:borderBottom=
"true"
prop=
"validateType"
required
>
<global-checkbox
checkboxAlign=
"right"
v-model=
"
formData.validateType"
dictkey=
"validateType
"
></global-checkbox>
</up-form-item>
<up-form-item
label=
"验证附件"
labelPosition=
"top"
:borderBottom=
"true"
>
<view
style=
"margin-top: 24rpx"
>
<global-upload></global-upload>
<global-upload
:fileList=
"arrangeWorkExtend.validateFileVoList"
v-model=
"formData.validateFile"
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=
"validateState"
required
>
<global-picker
pickAlign=
"right"
clearable
v-model=
"formData.validateState"
dictkey=
"feedbackState"
></global-picker>
</up-form-item>
</up-form>
</view>
...
...
@@ -29,12 +39,77 @@
</
template
>
<
script
setup
>
import
{
ref
,
watch
}
from
'vue'
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
{
savaWorkValidateApi
}
from
'mocp/api/assign-work'
const
box
=
ref
(
''
)
watch
(
box
,
(
value
)
=>
{
console
.
log
(
value
)
const
baseStore
=
useBaseStore
()
const
assignWorkStore
=
useAssignWorkStore
()
const
{
arrangeWorkExtend
}
=
storeToRefs
(
assignWorkStore
)
const
formData
=
reactive
({
trackingPoints
:
''
,
eventType
:
''
,
validateFile
:
[],
validateType
:
''
,
validateState
:
'1'
})
const
rules
=
reactive
({
trackingPoints
:
[
{
required
:
true
,
message
:
'请输入跟踪要点'
,
trigger
:
[
'blur'
,
'change'
]
}
],
eventType
:
[
{
required
:
true
,
message
:
'请选择事件类型'
,
trigger
:
[
'blur'
,
'change'
]
}
],
validateType
:
[
{
required
:
true
,
message
:
'请选择重复/同类事件'
,
trigger
:
[
'blur'
,
'change'
]
}
],
validateState
:
[
{
required
:
true
,
message
:
'请选择工作验证状态'
,
trigger
:
[
'blur'
,
'change'
]
}
]
})
//页面初始化
onLoad
(()
=>
{
formData
.
id
=
arrangeWorkExtend
.
value
.
id
formData
.
workId
=
arrangeWorkExtend
.
value
.
workId
formData
.
company
=
arrangeWorkExtend
.
value
.
company
formData
.
trackingPoints
=
arrangeWorkExtend
.
value
.
trackingPoints
formData
.
eventType
=
arrangeWorkExtend
.
value
.
eventType
formData
.
validateType
=
arrangeWorkExtend
.
value
.
validateType
formData
.
validateState
=
arrangeWorkExtend
.
value
.
validateState
})
//保存
const
formRef
=
ref
()
const
handleSave
=
async
()
=>
{
await
formRef
.
value
?.
validate
()
const
res
=
await
savaWorkValidateApi
(
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
{
...
...
src/pages/modules/mocp/panel/assign-work/edit-work.vue
View file @
d95e4a8d
...
...
@@ -66,7 +66,7 @@
></up-textarea>
</up-form-item>
<up-form-item
:borderBottom=
"true"
>
<global-upload
:fileList=
"arrangeWorkExtend.fileVoList"
@
handleUpload=
"handleUploadFile
"
></global-upload>
<global-upload
:fileList=
"arrangeWorkExtend.fileVoList"
v-model=
"formData.file"
mapFieldName=
"id
"
></global-upload>
</up-form-item>
</view>
</view>
...
...
@@ -97,7 +97,11 @@
</up-form-item>
<up-form-item
label=
"批复附件"
labelPosition=
"top"
:borderBottom=
"true"
>
<view
style=
"margin-top: 24rpx"
>
<global-upload
:fileList=
"arrangeWorkExtend.approvalFileVoList"
@
handleUpload=
"handleUploadApproval"
></global-upload>
<global-upload
:fileList=
"arrangeWorkExtend.approvalFileVoList"
v-model=
"formData.approvalFile"
mapFieldName=
"id"
></global-upload>
</view>
</up-form-item>
<up-form-item
label=
"后续措施反馈"
:borderBottom=
"true"
required
>
...
...
@@ -120,7 +124,6 @@ import useAssignWorkStore from 'mocp/store/assign-work'
import
{
storeToRefs
}
from
'pinia'
import
{
formData
,
rules
}
from
'./constants/edit-work.compositions'
import
{
onLoad
,
onUnload
}
from
'@dcloudio/uni-app'
import
{
handleUploadApproval
,
handleUploadFile
}
from
'./constants/edit-work.functionals'
import
{
approvalFileVoList
,
fileVoList
}
from
'./constants/edit-work.compositions'
import
{
timeStampFormat
}
from
'mocp/utils/tool'
import
{
ref
}
from
'vue'
...
...
@@ -165,9 +168,7 @@ const handleSave = async () => {
}
const
params
=
{
...
formData
,
decompose
:
JSON
.
stringify
(
decompose
.
value
),
approvalFile
:
approvalFileVoList
.
value
.
map
((
v
)
=>
v
.
id
).
join
(),
file
:
fileVoList
.
value
.
map
((
v
)
=>
v
.
id
).
join
()
decompose
:
JSON
.
stringify
(
decompose
.
value
)
}
if
(
formData
.
followUpFeedback
==
'0'
)
{
params
.
pcTime
=
''
...
...
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