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
ffd8ea2c
Commit
ffd8ea2c
authored
Jun 04, 2024
by
pangchong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 领导批示
parent
53185b82
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
201 additions
and
99 deletions
+201
-99
src/App.vue
+0
-2
src/mocp/api/assign-work.js
+8
-0
src/mocp/components/global-page/global-page.vue
+29
-2
src/mocp/components/global-picker/dictData.js
+5
-0
src/mocp/store/base.js
+12
-3
src/pages/modules/mocp/login/index.vue
+21
-23
src/pages/modules/mocp/panel/assign-work/details.vue
+17
-4
src/pages/modules/mocp/panel/assign-work/edit-approval.vue
+70
-6
src/pages/modules/mocp/panel/assign-work/edit-decompose.vue
+25
-27
src/pages/modules/mocp/panel/assign-work/edit-gzFeedback.vue
+9
-11
src/pages/modules/mocp/panel/index.vue
+5
-1
src/static/mocp/css/uview-plus.scss
+0
-20
No files found.
src/App.vue
View file @
ffd8ea2c
...
...
@@ -15,8 +15,6 @@ export default {
<
style
lang=
"scss"
>
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
@import
'uview-plus/index.scss'
;
//
修改
uview-plus
样式
@import
'mocpStatic/css/uview-plus.scss'
;
//
加入
mocp
主题相关样式
@import
'mocpStatic/css/theme.scss'
;
//
加入
mocp
字体图标
...
...
src/mocp/api/assign-work.js
View file @
ffd8ea2c
...
...
@@ -26,3 +26,11 @@ export const savaArrangeWorkFeedbackApi = (data, config) => {
config
})
}
export
const
savaLeaderApprovalApi
=
(
data
,
config
)
=>
{
return
http
({
method
:
'POST'
,
url
:
'/technical-support/savaLeaderApproval'
,
data
,
config
})
}
src/mocp/components/global-page/global-page.vue
View file @
ffd8ea2c
...
...
@@ -39,7 +39,7 @@
<slot
name=
"top"
></slot>
</template>
<!-- 滚动内容 -->
<view
class=
"content"
:style=
"getStyle"
>
<view
class=
"
mocp-
content"
:style=
"getStyle"
>
<slot
:dataList=
"dataList"
v-if=
"isDataList"
></slot>
<slot></slot>
</view>
...
...
@@ -229,7 +229,34 @@ const handleFooterClick = () => {
// 获取页面栈
const
pages
=
getCurrentPages
()
</
script
>
<
style
scoped
>
<
script
>
export
default
{
options
:
{
styleIsolation
:
'shared'
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.mocp-content
{
//
表单内容
:deep(.u-form-item__body)
{
padding
:
24
rpx
0
!important
;
.u-form-item__body__left__content__label
{
color
:
$
mocp-text-5
!important
;
font-size
:
28
rpx
!important
;
}
.u-input__content__field-wrapper__field
{
color
:
$
mocp-text-4
!important
;
}
.u-textarea
{
margin-top
:
8
rpx
;
.u-textarea__field
{
font-size
:
28
rpx
!important
;
color
:
$
mocp-text-4
!important
;
}
}
}
}
.cancel
{
font-size
:
28
rpx
;
}
...
...
src/mocp/components/global-picker/dictData.js
View file @
ffd8ea2c
...
...
@@ -23,3 +23,8 @@ export const feedbackState = [
{
label
:
'OPEN'
,
value
:
1
},
{
label
:
'CLOSE'
,
value
:
2
}
]
export
const
leaderState
=
[
{
label
:
'同意'
,
value
:
'1'
},
{
label
:
'不同意'
,
value
:
'0'
},
{
label
:
'部分同意'
,
value
:
'2'
}
]
src/mocp/store/base.js
View file @
ffd8ea2c
...
...
@@ -12,9 +12,18 @@ const useBaseStore = defineStore('base', {
},
getters
:
{},
actions
:
{
initSysData
()
{
this
.
getAircraftNumbers
()
this
.
getBasicParamsList
()
async
initSysData
()
{
uni
.
showLoading
({
title
:
'正在加载系统所有基本参数中,请稍后!'
,
mask
:
true
})
try
{
await
this
.
getAircraftNumbers
()
await
this
.
getBasicParamsList
()
uni
.
hideLoading
()
}
catch
(
error
)
{
uni
.
hideLoading
()
}
},
async
getAircraftNumbers
()
{
const
res
=
await
getAircraftNumbersApi
({})
...
...
src/pages/modules/mocp/login/index.vue
View file @
ffd8ea2c
...
...
@@ -9,29 +9,27 @@
<view
class=
"p"
>
登录你的账户
</view>
<view
class=
"txt"
>
请输入账号密码登录
</view>
</view>
<view
class=
"mocp-form"
>
<up-form
ref=
"loginFormRef"
labelWidth=
"auto"
:model=
"loginForm"
:rules=
"rules"
label-position=
"top"
>
<up-form-item
label=
"账号"
prop=
"username"
>
<up-input
v-model=
"loginForm.username"
placeholder=
"请输入账号"
clearable
/>
</up-form-item>
<up-form-item
label=
"密码"
prop=
"password"
>
<up-input
v-model=
"loginForm.password"
placeholder=
"请输入密码"
clearable
type=
"password"
/>
</up-form-item>
<up-form-item
label=
"验证码"
prop=
"verifyCode"
>
<view
class=
"verify-code"
>
<up-input
v-model=
"loginForm.verifyCode"
placeholder=
"请输入验证码"
style=
"flex: auto"
/>
<image
class=
"verify-code-image"
v-if=
"loginCode && loginForm.username"
:src=
"loginCode"
mode=
"scaleToFill"
@
tap=
"getGifCaptcha"
/>
<view
class=
"verify-code-image"
v-else
></view>
</view>
</up-form-item>
</up-form>
</view>
<up-form
ref=
"loginFormRef"
labelWidth=
"auto"
:model=
"loginForm"
:rules=
"rules"
label-position=
"top"
>
<up-form-item
label=
"账号"
prop=
"username"
>
<up-input
v-model=
"loginForm.username"
placeholder=
"请输入账号"
clearable
/>
</up-form-item>
<up-form-item
label=
"密码"
prop=
"password"
>
<up-input
v-model=
"loginForm.password"
placeholder=
"请输入密码"
clearable
type=
"password"
/>
</up-form-item>
<up-form-item
label=
"验证码"
prop=
"verifyCode"
>
<view
class=
"verify-code"
>
<up-input
v-model=
"loginForm.verifyCode"
placeholder=
"请输入验证码"
style=
"flex: auto"
/>
<image
class=
"verify-code-image"
v-if=
"loginCode && loginForm.username"
:src=
"loginCode"
mode=
"scaleToFill"
@
tap=
"getGifCaptcha"
/>
<view
class=
"verify-code-image"
v-else
></view>
</view>
</up-form-item>
</up-form>
<view
class=
"login-btn"
>
<global-button
size=
"large"
type=
"primary"
@
tap=
"handleLogin"
:loading=
"loading"
>
登录
</global-button>
</view>
...
...
src/pages/modules/mocp/panel/assign-work/details.vue
View file @
ffd8ea2c
...
...
@@ -5,7 +5,7 @@
:showNavRight=
"arrangeWorkExtendList.length"
navRightType=
"icon"
showFooterBtn
footerBtnText=
"
工作反馈
"
footerBtnText=
"
领导批示
"
@
handleRightClick=
"handleRightClick"
@
handleFooterClick=
"handleFooterClick"
>
...
...
@@ -93,8 +93,21 @@
<global-empty></global-empty>
</view>
</card-details>
<card-details
title=
"领导批示"
titleIcon=
"drive"
>
<view
class=
"card-empty"
>
<card-details
title=
"领导批示"
>
<
template
v-if=
"arrangeWorkExtend.approvalTime != 0"
>
<card-details-item
title=
"领导批示意见"
:content=
"useGetDictByValue('leaderState', arrangeWorkExtend.leaderApprovalComments)"
></card-details-item>
<card-details-item
title=
"批示要点"
:content=
"arrangeWorkExtend.approvalContent"
></card-details-item>
<card-details-footer
leftLabel=
"批示人:"
:leftValue=
"arrangeWorkExtend.approvalUser || '-'"
rightLabel=
"批示时间:"
:rightValue=
"timeStampFormat(arrangeWorkExtend.approvalTime) || '-'"
></card-details-footer>
</
template
>
<view
class=
"card-empty"
v-else
>
<global-empty></global-empty>
</view>
</card-details>
...
...
@@ -132,7 +145,7 @@ const handleRightClick = () => {
}
//新增
const
handleFooterClick
=
()
=>
{
uni
.
$mocpJump
.
navigateTo
(
'/panel/assign-work/edit-
work
'
)
uni
.
$mocpJump
.
navigateTo
(
'/panel/assign-work/edit-
approval
'
)
}
onUnload
(()
=>
{
assignWorkStore
.
$reset
()
...
...
src/pages/modules/mocp/panel/assign-work/edit-approval.vue
View file @
ffd8ea2c
<
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"
>
<global-picker
pickAlign=
"right"
clearable
></global-picker>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
:model=
"formData"
:rules=
"rules"
ref=
"formRef"
>
<up-form-item
label=
"领导批示意见"
:borderBottom=
"true"
prop=
"leaderApprovalComments"
required
>
<global-picker
pickAlign=
"right"
v-model=
"formData.leaderApprovalComments"
clearable
dictkey=
"leaderState"
></global-picker>
</up-form-item>
<up-form-item
label=
"批示要点"
:borderBottom=
"true"
labelPosition=
"top"
>
<up-form-item
label=
"批示要点"
:borderBottom=
"true"
labelPosition=
"top"
prop=
"approvalContent"
required
>
<up-textarea
v-model
.
trim=
"formData.approvalContent"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
...
...
@@ -17,7 +25,63 @@
</global-page>
</
template
>
<
script
setup
></
script
>
<
script
setup
>
import
{
onLoad
}
from
'@dcloudio/uni-app'
import
{
savaLeaderApprovalApi
}
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
({
leaderApprovalComments
:
''
,
approvalContent
:
''
,
approvalUser
:
''
,
approvalTime
:
''
})
const
rules
=
reactive
({
leaderApprovalComments
:
[
{
type
:
'number'
,
required
:
true
,
message
:
'请选择领导批示意见'
,
trigger
:
[
'blur'
,
'change'
]
}
],
approvalContent
:
[
{
required
:
true
,
message
:
'请输入批示要点'
,
trigger
:
[
'blur'
,
'change'
]
}
]
})
//页面初始化
onLoad
(()
=>
{
formData
.
id
=
arrangeWorkExtend
.
value
.
id
formData
.
workId
=
arrangeWorkExtend
.
value
.
workId
formData
.
company
=
arrangeWorkExtend
.
value
.
company
formData
.
leaderApprovalComments
=
arrangeWorkExtend
.
value
.
leaderApprovalComments
formData
.
approvalContent
=
arrangeWorkExtend
.
value
.
approvalContent
formData
.
approvalUser
=
arrangeWorkExtend
.
value
.
approvalUser
formData
.
approvalTime
=
arrangeWorkExtend
.
value
.
approvalTime
})
//保存
const
formRef
=
ref
()
const
handleSave
=
async
()
=>
{
await
formRef
.
value
?.
validate
()
const
res
=
await
savaLeaderApprovalApi
(
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
;
...
...
src/pages/modules/mocp/panel/assign-work/edit-decompose.vue
View file @
ffd8ea2c
...
...
@@ -10,33 +10,31 @@
footerBtnText=
"添加分解计划"
@
handleFooterClick=
"handleFooterClick"
>
<view
class=
"mocp-form"
>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<template
v-for=
"(item, index) in formData"
:key=
"index"
>
<view
class=
"form"
>
<up-form-item
:label=
"formData.length > 1 ? '分解计划' + (index + 1) : '分解计划'"
:borderBottom=
"true"
labelPosition=
"top"
required
>
<view
class=
"delete"
v-if=
"formData.length > 1"
@
tap=
"handleDelete(index)"
>
<global-icon
icon=
"delete-01"
color=
"#F53F3F"
></global-icon>
</view>
<up-textarea
v-model=
"item.plan"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
></up-textarea>
</up-form-item>
<up-form-item
label=
"完成时限"
:borderBottom=
"true"
>
<global-date
pickAlign=
"right"
clearable
placeholder=
"请选择日期"
v-model=
"item.time"
emptyValue=
"null"
></global-date>
</up-form-item>
</view>
</
template
>
</up-form>
</view>
<up-form
labelPosition=
"left"
labelWidth=
"auto"
>
<template
v-for=
"(item, index) in formData"
:key=
"index"
>
<view
class=
"form"
>
<up-form-item
:label=
"formData.length > 1 ? '分解计划' + (index + 1) : '分解计划'"
:borderBottom=
"true"
labelPosition=
"top"
required
>
<view
class=
"delete"
v-if=
"formData.length > 1"
@
tap=
"handleDelete(index)"
>
<global-icon
icon=
"delete-01"
color=
"#F53F3F"
></global-icon>
</view>
<up-textarea
v-model=
"item.plan"
placeholder=
"一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height=
"40"
border=
"none"
></up-textarea>
</up-form-item>
<up-form-item
label=
"完成时限"
:borderBottom=
"true"
>
<global-date
pickAlign=
"right"
clearable
placeholder=
"请选择日期"
v-model=
"item.time"
emptyValue=
"null"
></global-date>
</up-form-item>
</view>
</
template
>
</up-form>
<up-modal
:width=
"250"
content=
"确认删除吗?删除后不可恢复!"
...
...
src/pages/modules/mocp/panel/assign-work/edit-gzFeedback.vue
View file @
ffd8ea2c
<
template
>
<global-page
title=
"跟踪反馈"
navLeftType=
"text"
:showNavRight=
"true"
navRightType=
"button"
navRightText=
"保存"
>
<view
class=
"mocp-form"
>
<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>
</view>
<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>
</
template
>
...
...
src/pages/modules/mocp/panel/index.vue
View file @
ffd8ea2c
<
template
>
<image
class=
"page-bg"
src=
"/static/mocp/image/panel/page-bg.png"
/>
<global-page
:showNavbar=
"false"
>
<!-- 导航栏 -->
<template
#
top
>
<image
class=
"page-bg"
src=
"/static/mocp/image/panel/page-bg.png"
/>
<panel-navbar></panel-navbar>
</
template
>
<!-- 菜单图标 -->
...
...
@@ -24,6 +24,10 @@ baseStore.initSysData()
position
:
absolute
;
width
:
100%
;
height
:
100%
;
top
:
0
;
bottom
:
0
;
left
:
0
;
right
:
0
;
z-index
:
-1
;
}
</
style
>
src/static/mocp/css/uview-plus.scss
deleted
100644 → 0
View file @
53185b82
// 表单
.mocp-form
{
.u-form-item__body
{
padding
:
24rpx
0
!
important
;
.u-form-item__body__left__content__label
{
color
:
$mocp-text-5
!
important
;
font-size
:
28rpx
!
important
;
}
.u-input__content__field-wrapper__field
{
color
:
$mocp-text-4
!
important
;
}
.u-textarea
{
margin-top
:
8rpx
;
.u-textarea__field
{
font-size
:
28rpx
!
important
;
color
:
$mocp-text-4
!
important
;
}
}
}
}
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