明树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
c1d8e4a4
Commit
c1d8e4a4
authored
Apr 07, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加单位
parent
d7b10ba8
Pipeline
#109397
passed with stage
in 21 seconds
Changes
25
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
307 additions
and
269 deletions
+307
-269
index.vue
src/components/FormDynamicTable/index.vue
+60
-0
routerBack.vue
src/components/common/routerBack.vue
+53
-1
evaluateAdd.vue
src/views/castbehind/evaluateAdd.vue
+5
-1
investmentCecoveryAdd.vue
src/views/castbehind/investmentCecoveryAdd.vue
+5
-1
runningPeriodAdd.vue
src/views/castbehind/runningPeriodAdd.vue
+5
-1
turnoverAdd.vue
src/views/castbehind/turnoverAdd.vue
+5
-1
costAdd.vue
src/views/elseManage/costAdd.vue
+5
-1
workForHousingAdd.vue
src/views/elseManage/workForHousingAdd.vue
+5
-1
annualAdd.vue
src/views/everydayPage/annualAdd.vue
+5
-1
everydayAdd.vue
src/views/everydayPage/everydayAdd.vue
+5
-1
informationConstructionAdd.vue
src/views/everydayPage/informationConstructionAdd.vue
+5
-1
investmentAdd.vue
src/views/everydayPage/investmentAdd.vue
+5
-1
recordAdd.vue
src/views/everydayPage/recordAdd.vue
+5
-1
shareAdd.vue
src/views/everydayPage/shareAdd.vue
+5
-1
systemAdd.vue
src/views/everydayPage/systemAdd.vue
+5
-1
vscouncilAdd.vue
src/views/everydayPage/vscouncilAdd.vue
+5
-1
addControl.vue
src/views/investingManage/addControl.vue
+5
-1
addRisk.vue
src/views/investingManage/addRisk.vue
+5
-1
addStatement.vue
src/views/investingManage/addStatement.vue
+5
-1
bigIssuesAdd.vue
src/views/investingManage/bigIssuesAdd.vue
+5
-1
constructionAdd.vue
src/views/investingManage/constructionAdd.vue
+5
-1
constructionTimeAdd.vue
src/views/investingManage/constructionTimeAdd.vue
+5
-1
decisionAdd.vue
src/views/investingManage/decisionAdd.vue
+84
-246
quitAdd.vue
src/views/investingManage/quitAdd.vue
+5
-1
addProject.vue
src/views/projectManage/addProject.vue
+5
-1
No files found.
src/components/FormDynamicTable/index.vue
View file @
c1d8e4a4
...
...
@@ -102,6 +102,21 @@
</el-select>
</
template
>
<!-- Autocomplete 类型(联想输入框) -->
<
template
v-else-if=
"col.type === 'autocomplete'"
>
<el-autocomplete
v-model=
"scope.row[col.prop]"
:placeholder=
"col.placeholder || '请输入或选择'"
:disabled=
"disabled || col.disabled"
:fetch-suggestions=
"(queryString, callback) => handleQuerySearch(queryString, callback, col.optionKey)"
:trigger-on-focus=
"col.triggerOnFocus !== false"
:debounce=
"col.debounce || 300"
clearable
style=
"width: 100%"
size=
"small"
/>
</
template
>
<!-- Number 类型 -->
<
template
v-else-if=
"col.type === 'number'"
>
<el-input
...
...
@@ -224,6 +239,21 @@
</el-select>
</
template
>
<!-- Autocomplete 类型(联想输入框) -->
<
template
v-else-if=
"col.type === 'autocomplete'"
>
<el-autocomplete
v-model=
"scope.row[col.prop]"
:placeholder=
"col.placeholder || '请输入或选择'"
:disabled=
"disabled || col.disabled"
:fetch-suggestions=
"(queryString, callback) => handleQuerySearch(queryString, callback, col.optionKey)"
:trigger-on-focus=
"col.triggerOnFocus !== false"
:debounce=
"col.debounce || 300"
clearable
style=
"width: 100%"
size=
"small"
/>
</
template
>
<!-- Number 类型 -->
<
template
v-else-if=
"col.type === 'number'"
>
<el-input
...
...
@@ -443,6 +473,36 @@ const headerColumnGroups = computed(() => {
return
result
;
});
// 联想搜索处理方法
const
handleQuerySearch
=
(
queryString
,
callback
,
optionKey
)
=>
{
try
{
const
options
=
mergedSelectOptions
.
value
[
optionKey
]
||
[];
if
(
!
queryString
)
{
// 无输入时返回所有选项
callback
(
options
.
map
(
item
=>
({
value
:
item
.
name
||
item
.
label
,
key
:
item
.
key
||
item
.
value
})));
return
;
}
// 过滤匹配的选项
const
results
=
queryString
?
options
.
filter
(
item
=>
{
const
name
=
(
item
.
name
||
item
.
label
||
""
).
toLowerCase
();
const
query
=
queryString
.
toLowerCase
();
return
name
.
includes
(
query
);
})
.
map
(
item
=>
({
value
:
item
.
name
||
item
.
label
,
key
:
item
.
key
||
item
.
value
}))
:
[];
// 如果有匹配结果,返回建议列表
// 如果没有匹配结果,返回空数组(允许用户输入自定义内容)
callback
(
results
);
}
catch
(
e
)
{
console
.
error
(
"联想搜索失败:"
,
e
);
callback
([]);
}
};
// 新增行(适配默认行数据,初始化upload字段为数组)
const
handleAdd
=
()
=>
{
try
{
...
...
src/components/common/routerBack.vue
View file @
c1d8e4a4
<
template
>
<div>
<div
class=
"add-project-back"
>
<div
class=
"back"
@
click=
"
() => router.back()
"
>
<div
class=
"back"
@
click=
"
handleBack
"
>
<el-icon
class=
"backIcon"
><ArrowLeft
/></el-icon>
<span
class=
"backText"
>
返回
</span>
</div>
<span
class=
"backName"
>
{{
route
.
meta
.
title
}}
</span>
<div
class=
"back-actions"
v-if=
"showSave"
>
<el-button
type=
"primary"
:loading=
"loading"
:disabled=
"loading || disabled"
@
click=
"handleSave"
>
{{
saveText
}}
</el-button>
</div>
</div>
</div>
</
template
>
<
script
setup
>
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
const
props
=
defineProps
({
// 是否显示保存按钮
showSave
:
{
type
:
Boolean
,
default
:
false
,
},
// 保存按钮文本
saveText
:
{
type
:
String
,
default
:
"保存"
,
},
// 是否禁用保存按钮
disabled
:
{
type
:
Boolean
,
default
:
false
,
},
// 是否显示loading状态
loading
:
{
type
:
Boolean
,
default
:
false
,
},
});
const
emit
=
defineEmits
([
'save'
,
'back'
]);
const
route
=
useRoute
();
const
router
=
useRouter
();
const
handleBack
=
()
=>
{
emit
(
'back'
);
router
.
back
();
};
const
handleSave
=
()
=>
{
emit
(
'save'
);
};
</
script
>
<
style
scoped
lang=
"scss"
>
.add-project-back
{
...
...
@@ -38,6 +83,13 @@ const router = useRouter();
font-size
:
16px
;
font-weight
:
700
;
color
:
rgba
(
51
,
51
,
51
,
1
);
flex
:
1
;
}
.back-actions
{
margin-left
:
auto
;
display
:
flex
;
gap
:
10px
;
}
}
</
style
>
src/views/castbehind/evaluateAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/castbehind/investmentCecoveryAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content-wrapper"
>
<div
class=
"tab-content"
>
...
...
src/views/castbehind/runningPeriodAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/castbehind/turnoverAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/elseManage/costAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/elseManage/workForHousingAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/everydayPage/annualAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content-wrapper"
>
<div
class=
"tab-content"
>
...
...
src/views/everydayPage/everydayAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/everydayPage/informationConstructionAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/everydayPage/investmentAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/everydayPage/recordAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/everydayPage/shareAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/everydayPage/systemAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/everydayPage/vscouncilAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/investingManage/addControl.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content-wrapper"
>
<div
class=
"tab-content"
>
...
...
src/views/investingManage/addRisk.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/investingManage/addStatement.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<el-tabs
v-model=
"pageActiveName"
type=
"border-card"
>
...
...
src/views/investingManage/bigIssuesAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/investingManage/constructionAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
...
...
src/views/investingManage/constructionTimeAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content-wrapper"
>
<div
class=
"tab-content"
>
...
...
src/views/investingManage/decisionAdd.vue
View file @
c1d8e4a4
This diff is collapsed.
Click to expand it.
src/views/investingManage/quitAdd.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack
/>
<routerBack
:show-save=
"!loading && !isPreview"
:loading=
"loading"
@
save=
"saveClick"
/>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
...
...
src/views/projectManage/addProject.vue
View file @
c1d8e4a4
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<routerBack></routerBack>
<routerBack
:show-save=
"!loading && !isPreview && (!formData.projectLzType || ['1', '5', '7'].includes(formData.projectLzType.toString()))"
:loading=
"loading"
@
save=
"() => saveClick('save')"
></routerBack>
<div
class=
"tabs-content"
>
<el-tabs
v-model=
"pageActiveName"
type=
"border-card"
>
<el-tab-pane
label=
"立项填报"
name=
"立项填报"
>
...
...
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