明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_front
Project
Project
Details
Activity
Releases
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
Administrator
jt_front
Commits
ecb5c026
Commit
ecb5c026
authored
May 22, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
必选处理
parent
4e292e8c
Pipeline
#111754
passed with stage
in 18 seconds
Changes
6
Pipelines
1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
591 additions
and
210 deletions
+591
-210
addProject.vue
src/views/projectManage/addProject.vue
+39
-6
JueceApproval.vue
...ews/projectManage/addProject/components/JueceApproval.vue
+52
-13
JueceBasicInfo.vue
...ws/projectManage/addProject/components/JueceBasicInfo.vue
+134
-53
JueceReport.vue
...views/projectManage/addProject/components/JueceReport.vue
+136
-51
LixiangApproval.vue
...s/projectManage/addProject/components/LixiangApproval.vue
+51
-9
LixiangBasicInfo.vue
.../projectManage/addProject/components/LixiangBasicInfo.vue
+179
-78
No files found.
src/views/projectManage/addProject.vue
View file @
ecb5c026
...
@@ -20,10 +20,10 @@
...
@@ -20,10 +20,10 @@
<div
class=
"project-tab-content"
>
<div
class=
"project-tab-content"
>
<el-tabs
v-model=
"lxTabActiveName"
>
<el-tabs
v-model=
"lxTabActiveName"
>
<el-tab-pane
label=
"基本信息"
name=
"基本信息"
>
<el-tab-pane
label=
"基本信息"
name=
"基本信息"
>
<LixiangBasicInfo
/>
<LixiangBasicInfo
ref=
"lxBasicInfoRef"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"立项批复"
name=
"立项批复"
>
<el-tab-pane
label=
"立项批复"
name=
"立项批复"
>
<LixiangApproval
/>
<LixiangApproval
ref=
"lxApprovalRef"
/>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</div>
</div>
...
@@ -36,16 +36,16 @@
...
@@ -36,16 +36,16 @@
>
>
<el-tabs
v-model=
"jcTabActiveName"
>
<el-tabs
v-model=
"jcTabActiveName"
>
<el-tab-pane
label=
"基本信息"
name=
"基本信息"
>
<el-tab-pane
label=
"基本信息"
name=
"基本信息"
>
<JueceBasicInfo
/>
<JueceBasicInfo
ref=
"jcBasicInfoRef"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"财务评价"
name=
"财务评价"
>
<el-tab-pane
label=
"财务评价"
name=
"财务评价"
>
<JueceFinance
/>
<JueceFinance
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"决策批复"
name=
"决策批复"
>
<el-tab-pane
label=
"决策批复"
name=
"决策批复"
>
<JueceApproval
/>
<JueceApproval
ref=
"jcApprovalRef"
/>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"申请报告"
name=
"申请报告"
>
<el-tab-pane
label=
"申请报告"
name=
"申请报告"
>
<JueceReport
/>
<JueceReport
ref=
"jcReportRef"
/>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</el-tab-pane>
</el-tab-pane>
...
@@ -233,6 +233,12 @@ const flowType = computed(() => {
...
@@ -233,6 +233,12 @@ const flowType = computed(() => {
return
"complex"
;
return
"complex"
;
});
});
const
lxBasicInfoRef
=
ref
();
const
lxApprovalRef
=
ref
();
const
jcBasicInfoRef
=
ref
();
const
jcApprovalRef
=
ref
();
const
jcReportRef
=
ref
();
// tab相关
// tab相关
const
pageActiveName
=
ref
(
"立项填报"
);
const
pageActiveName
=
ref
(
"立项填报"
);
const
lxTabActiveName
=
ref
(
"基本信息"
);
const
lxTabActiveName
=
ref
(
"基本信息"
);
...
@@ -572,7 +578,34 @@ const backClick = () => {
...
@@ -572,7 +578,34 @@ const backClick = () => {
};
};
// 保存数据
// 保存数据
const
saveClick
=
(
type
)
=>
{
const
saveClick
=
async
(
type
)
=>
{
if
(
type
===
"submit"
)
{
const
allErrors
=
[];
const
isJuece
=
formData
.
projectLzType
&&
Number
(
formData
.
projectLzType
)
>
4
;
const
refs
=
isJuece
?
[
jcBasicInfoRef
,
jcApprovalRef
,
jcReportRef
]
:
[
lxBasicInfoRef
,
lxApprovalRef
];
for
(
const
r
of
refs
)
{
try
{
await
r
.
value
?.
validate
();
}
catch
(
fields
)
{
const
msgs
=
Object
.
values
(
fields
||
{})
.
flat
()
.
map
((
e
)
=>
e
.
message
)
.
filter
(
Boolean
);
allErrors
.
push
(...
msgs
);
}
}
if
(
allErrors
.
length
)
{
ElMessageBox
.
alert
(
allErrors
.
map
((
msg
)
=>
`•
${
msg
}
`
).
join
(
"<br/>"
),
"以下必填项未填写"
,
{
dangerouslyUseHTMLString
:
true
,
type
:
"warning"
},
);
return
;
}
}
if
(
!
formData
.
projectLzType
||
Number
(
formData
.
projectLzType
)
<=
4
)
{
if
(
!
formData
.
projectLzType
||
Number
(
formData
.
projectLzType
)
<=
4
)
{
let
url
=
formData
.
id
let
url
=
formData
.
id
?
type
===
"submit"
?
type
===
"submit"
...
...
src/views/projectManage/addProject/components/JueceApproval.vue
View file @
ecb5c026
<
template
>
<
template
>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<el-form
:model=
"jcFormData
"
:label-width=
"150"
:disabled=
"isPreview"
>
<el-form
ref=
"jcApprovalFormRef"
:model=
"jcFormData"
:rules=
"formRules"
:validate-on-rule-change=
"false
"
:label-width=
"150"
:disabled=
"isPreview"
>
<el-collapse
v-model=
"activeCollapse"
>
<el-collapse
v-model=
"activeCollapse"
>
<el-collapse-item
<el-collapse-item
title=
"项目投资总额(全口径)"
title=
"项目投资总额(全口径)"
...
@@ -529,7 +529,7 @@
...
@@ -529,7 +529,7 @@
</el-table>
</el-table>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"其他会议审议情况"
>
<el-form-item
label=
"其他会议审议情况"
prop=
"jcqthysyqk"
>
<el-input
<el-input
v-model=
"jcFormData.jcqthysyqk"
v-model=
"jcFormData.jcqthysyqk"
type=
"textarea"
type=
"textarea"
...
@@ -542,7 +542,7 @@
...
@@ -542,7 +542,7 @@
<el-collapse-item
title=
"项目批复信息"
name=
"项目批复信息"
>
<el-collapse-item
title=
"项目批复信息"
name=
"项目批复信息"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"最终审批意见"
label-width=
"160"
>
<el-form-item
label=
"最终审批意见"
label-width=
"160"
prop=
"jczzpfyj"
>
<CommonSelector
<CommonSelector
v-model=
"jcFormData.jczzpfyj"
v-model=
"jcFormData.jczzpfyj"
dictName=
"spyj"
dictName=
"spyj"
...
@@ -550,7 +550,7 @@
...
@@ -550,7 +550,7 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"项目批复时间"
>
<el-form-item
label=
"项目批复时间"
prop=
"jcxmpfsj"
>
<el-date-picker
<el-date-picker
v-model=
"jcFormData.jcxmpfsj"
v-model=
"jcFormData.jcxmpfsj"
type=
"date"
type=
"date"
...
@@ -559,17 +559,17 @@
...
@@ -559,17 +559,17 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"项目批复文号"
>
<el-form-item
label=
"项目批复文号"
prop=
"jcxmpfwh"
>
<el-input
v-model=
"jcFormData.jcxmpfwh"
/>
<el-input
v-model=
"jcFormData.jcxmpfwh"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"审核处室"
label-width=
"160"
>
<el-form-item
label=
"审核处室"
label-width=
"160"
prop=
"jcpfshcs"
>
<el-input
v-model=
"jcFormData.jcpfshcs"
/>
<el-input
v-model=
"jcFormData.jcpfshcs"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"未通过主要原因与要求"
label-width=
"160"
>
<el-form-item
label=
"未通过主要原因与要求"
label-width=
"160"
prop=
"jcwtgzyyyyyq"
>
<el-input
<el-input
v-model=
"jcFormData.jcwtgzyyyyyq"
v-model=
"jcFormData.jcwtgzyyyyyq"
type=
"textarea"
type=
"textarea"
...
@@ -675,7 +675,7 @@
...
@@ -675,7 +675,7 @@
<el-collapse-item
title=
"其他"
name=
"其他"
>
<el-collapse-item
title=
"其他"
name=
"其他"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label-width=
"160"
label=
"投资主体首次申报时间"
>
<el-form-item
label-width=
"160"
label=
"投资主体首次申报时间"
prop=
"tzztscsbsj"
>
<el-date-picker
<el-date-picker
v-model=
"jcFormData.tzztscsbsj"
v-model=
"jcFormData.tzztscsbsj"
type=
"date"
type=
"date"
...
@@ -684,12 +684,12 @@
...
@@ -684,12 +684,12 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label-width=
"160"
label=
"审核人"
>
<el-form-item
label-width=
"160"
label=
"审核人"
prop=
"shr"
>
<el-input
v-model=
"jcFormData.shr"
/>
<el-input
v-model=
"jcFormData.shr"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label-width=
"160"
label=
"会签完成时间"
>
<el-form-item
label-width=
"160"
label=
"会签完成时间"
prop=
"hqwcsj"
>
<el-date-picker
<el-date-picker
v-model=
"jcFormData.hqwcsj"
v-model=
"jcFormData.hqwcsj"
type=
"date"
type=
"date"
...
@@ -698,7 +698,7 @@
...
@@ -698,7 +698,7 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label-width=
"160"
label=
"首次发函时间"
>
<el-form-item
label-width=
"160"
label=
"首次发函时间"
prop=
"scfhsj"
>
<el-date-picker
<el-date-picker
v-model=
"jcFormData.scfhsj"
v-model=
"jcFormData.scfhsj"
type=
"date"
type=
"date"
...
@@ -707,7 +707,7 @@
...
@@ -707,7 +707,7 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label-width=
"160"
label=
"补充资料时间"
>
<el-form-item
label-width=
"160"
label=
"补充资料时间"
prop=
"bczlsj"
>
<el-date-picker
<el-date-picker
v-model=
"jcFormData.bczlsj"
v-model=
"jcFormData.bczlsj"
type=
"date"
type=
"date"
...
@@ -724,10 +724,43 @@
...
@@ -724,10 +724,43 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
inject
}
from
"vue"
;
import
{
inject
,
ref
}
from
"vue"
;
import
CommonSelector
from
"@/components/CommonSelector.vue"
;
import
CommonSelector
from
"@/components/CommonSelector.vue"
;
import
FileUploader
from
"@/components/FileUploader/index.vue"
;
import
FileUploader
from
"@/components/FileUploader/index.vue"
;
const
jcApprovalFormRef
=
ref
();
const
requiredInput
=
(
msg
)
=>
({
required
:
true
,
message
:
`请输入
${
msg
}
`
,
trigger
:
"blur"
,
});
const
requiredSelect
=
(
msg
)
=>
({
required
:
true
,
message
:
`请选择
${
msg
}
`
,
trigger
:
[],
});
const
formRules
=
{
jcqthysyqk
:
[
requiredInput
(
"其他会议审议情况"
)],
jczzpfyj
:
[
requiredSelect
(
"最终审批意见"
)],
jcxmpfsj
:
[
requiredSelect
(
"项目批复时间"
)],
jcxmpfwh
:
[
requiredInput
(
"项目批复文号"
)],
jcpfshcs
:
[
requiredInput
(
"审核处室"
)],
jcwtgzyyyyyq
:
[
requiredInput
(
"未通过主要原因与要求"
)],
tzztscsbsj
:
[
requiredSelect
(
"投资主体首次申报时间"
)],
shr
:
[
requiredInput
(
"审核人"
)],
hqwcsj
:
[
requiredSelect
(
"会签完成时间"
)],
scfhsj
:
[
requiredSelect
(
"首次发函时间"
)],
bczlsj
:
[
requiredSelect
(
"补充资料时间"
)],
};
const
validate
=
()
=>
{
return
jcApprovalFormRef
.
value
?.
validate
();
};
defineExpose
({
validate
});
const
{
const
{
jcFormData
,
jcFormData
,
isPreview
,
isPreview
,
...
@@ -757,3 +790,9 @@ const {
...
@@ -757,3 +790,9 @@ const {
token
,
token
,
}
=
inject
(
"jcShared"
);
}
=
inject
(
"jcShared"
);
</
script
>
</
script
>
<
style
scoped
>
.tab-content
:deep
(
.el-form-item__error
)
{
display
:
none
;
}
</
style
>
src/views/projectManage/addProject/components/JueceBasicInfo.vue
View file @
ecb5c026
This diff is collapsed.
Click to expand it.
src/views/projectManage/addProject/components/JueceReport.vue
View file @
ecb5c026
This diff is collapsed.
Click to expand it.
src/views/projectManage/addProject/components/LixiangApproval.vue
View file @
ecb5c026
...
@@ -2,7 +2,10 @@
...
@@ -2,7 +2,10 @@
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<el-form
<el-form
ref=
"lxApprovalFormRef"
:model=
"formData"
:model=
"formData"
:rules=
"formRules"
:validate-on-rule-change=
"false"
:label-width=
"150"
:label-width=
"150"
:disabled=
"isPreview || Number(formData.projectLzType) >= 5"
:disabled=
"isPreview || Number(formData.projectLzType) >= 5"
>
>
...
@@ -198,17 +201,17 @@
...
@@ -198,17 +201,17 @@
<el-collapse-item
title=
"项目立项信息"
name=
"项目立项信息"
>
<el-collapse-item
title=
"项目立项信息"
name=
"项目立项信息"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"其他会议审议情况"
>
<el-form-item
label=
"其他会议审议情况"
prop=
"qthysyqk"
>
<el-input
v-model=
"formData.qthysyqk"
type=
"textarea"
/>
<el-input
v-model=
"formData.qthysyqk"
type=
"textarea"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"
8
"
>
<el-col
:span=
"
6
"
>
<el-form-item
label=
"立项最终审批意见"
>
<el-form-item
label=
"立项最终审批意见"
prop=
"lxzzpfyj"
>
<CommonSelector
v-model=
"formData.lxzzpfyj"
dictName=
"spyj"
/>
<CommonSelector
v-model=
"formData.lxzzpfyj"
dictName=
"spyj"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"
8
"
>
<el-col
:span=
"
6
"
>
<el-form-item
label=
"项目立项批复时间"
>
<el-form-item
label=
"项目立项批复时间"
prop=
"lxxmpfsj"
>
<el-date-picker
<el-date-picker
v-model=
"formData.lxxmpfsj"
v-model=
"formData.lxxmpfsj"
type=
"date"
type=
"date"
...
@@ -216,13 +219,18 @@
...
@@ -216,13 +219,18 @@
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"
8
"
>
<el-col
:span=
"
6
"
>
<el-form-item
label=
"立项项目批复文号"
>
<el-form-item
label=
"立项项目批复文号"
prop=
"lxxmpfwh"
>
<el-input
v-model=
"formData.lxxmpfwh"
/>
<el-input
v-model=
"formData.lxxmpfwh"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
label=
"审核处室"
prop=
"jcpfshcs"
>
<el-input
v-model=
"formData.jcpfshcs"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"未通过主要原因与要求"
>
<el-form-item
label=
"未通过主要原因与要求"
prop=
"wtgzyyyyyq"
>
<el-input
v-model=
"formData.wtgzyyyyyq"
type=
"textarea"
/>
<el-input
v-model=
"formData.wtgzyyyyyq"
type=
"textarea"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -250,11 +258,39 @@
...
@@ -250,11 +258,39 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
inject
}
from
"vue"
;
import
{
inject
,
ref
}
from
"vue"
;
import
CommonSelector
from
"@/components/CommonSelector.vue"
;
import
CommonSelector
from
"@/components/CommonSelector.vue"
;
import
FormDynamicTable
from
"@/components/FormDynamicTable/index.vue"
;
import
FormDynamicTable
from
"@/components/FormDynamicTable/index.vue"
;
import
FileUploader
from
"@/components/FileUploader/index.vue"
;
import
FileUploader
from
"@/components/FileUploader/index.vue"
;
const
lxApprovalFormRef
=
ref
();
const
requiredInput
=
(
msg
)
=>
({
required
:
true
,
message
:
`请输入
${
msg
}
`
,
trigger
:
"blur"
,
});
const
requiredSelect
=
(
msg
)
=>
({
required
:
true
,
message
:
`请选择
${
msg
}
`
,
trigger
:
[],
});
const
formRules
=
{
qthysyqk
:
[
requiredInput
(
"其他会议审议情况"
)],
lxzzpfyj
:
[
requiredSelect
(
"立项最终审批意见"
)],
lxxmpfsj
:
[
requiredSelect
(
"项目立项批复时间"
)],
lxxmpfwh
:
[
requiredInput
(
"立项项目批复文号"
)],
jcpfshcs
:
[
requiredInput
(
"审核处室"
)],
wtgzyyyyyq
:
[
requiredInput
(
"未通过主要原因与要求"
)],
};
const
validate
=
()
=>
{
return
lxApprovalFormRef
.
value
?.
validate
();
};
defineExpose
({
validate
});
const
{
const
{
formData
,
formData
,
isPreview
,
isPreview
,
...
@@ -302,3 +338,9 @@ const updateSpyjTable = (val) => {
...
@@ -302,3 +338,9 @@ const updateSpyjTable = (val) => {
spyjTableData
.
splice
(
0
,
spyjTableData
.
length
,
...
val
);
spyjTableData
.
splice
(
0
,
spyjTableData
.
length
,
...
val
);
};
};
</
script
>
</
script
>
<
style
scoped
>
.tab-content
:deep
(
.el-form-item__error
)
{
display
:
none
;
}
</
style
>
src/views/projectManage/addProject/components/LixiangBasicInfo.vue
View file @
ecb5c026
This diff is collapsed.
Click to expand it.
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