Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web-project
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
紫光云
web-project
Commits
6dda5ff3
Commit
6dda5ff3
authored
Jun 11, 2024
by
牛虎林
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
parents
783e16a9
edbd08b7
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1764 additions
and
770 deletions
+1764
-770
engineeringProject.ts
src/api/project/engineeringProject.ts
+9
-5
engineeringProject.ts
src/router/routes/modules/engineeringProject.ts
+23
-3
index.vue
src/views/biddingManagement/index.vue
+12
-0
index.vue
src/views/biddingPlan/index.vue
+12
-0
constructionEdit.vue
.../engineeringProject/constructionEdit/constructionEdit.vue
+402
-0
tableData.tsx
src/views/engineeringProject/constructionEdit/tableData.tsx
+269
-0
data.tsx
src/views/engineeringProject/data.tsx
+0
-237
engineeringEdit.vue
...ws/engineeringProject/engineeringEdit/engineeringEdit.vue
+57
-31
tableData.tsx
src/views/engineeringProject/engineeringEdit/tableData.tsx
+263
-0
index.vue
src/views/engineeringProject/index.vue
+73
-24
reserveEdit.vue
src/views/engineeringProject/reserveEdit/reserveEdit.vue
+402
-0
tableData.tsx
src/views/engineeringProject/reserveEdit/tableData.tsx
+242
-0
tableData.tsx
src/views/engineeringProject/tableData.tsx
+0
-470
No files found.
src/api/project/engineeringProject.ts
View file @
6dda5ff3
...
...
@@ -11,8 +11,9 @@ enum Api {
GetList
=
'/pro/investmentPlan/getList'
,
GetEngineProjectList
=
'/pro/investmentPlan/getProject'
,
AddEngineeringProject
=
'/pro/investmentPlan/add'
,
UpdateProject
=
''
,
ProjectDetail
=
''
,
UpdateProject
=
'/pro/investmentPlan/edit'
,
ProjectDetail
=
'/pro/investmentPlan/getById'
,
audit
=
'/pro/investmentPlan/audit'
,
}
export
const
getEngineeringList
=
(
params
?:
ProjectParams
)
=>
defHttp
.
post
<
ProjectModel
>
({
url
:
Api
.
GetList
,
data
:
params
});
...
...
@@ -33,9 +34,9 @@ export const updateItem = (params?: any) =>
defHttp
.
post
<
ProjectModel
>
({
url
:
Api
.
UpdateProject
,
data
:
params
,
//
headers: {
//
'Content-Type': 'application/json;charset=UTF-8',
//
},
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
,
},
});
// export const deleteItem = (params?: any) =>
...
...
@@ -43,3 +44,6 @@ export const updateItem = (params?: any) =>
export
const
getItem
=
(
params
?:
any
)
=>
defHttp
.
get
<
ListItem
[]
>
({
url
:
Api
.
ProjectDetail
,
params
});
export
const
auditItem
=
(
params
?:
any
)
=>
defHttp
.
post
<
ListItem
[]
>
({
url
:
Api
.
audit
,
params
});
src/router/routes/modules/engineeringProject.ts
View file @
6dda5ff3
...
...
@@ -2,7 +2,7 @@ import type { AppRouteModule } from '@/router/types';
import
{
LAYOUT
}
from
'@/router/constant'
;
const
engineeringProject
:
AppRouteModule
=
{
const
engineeringProject
:
{
redirect
:
string
;
path
:
string
;
component
:
()
=>
Promise
<
{}
>
;
children
:
({
path
:
string
;
component
:
()
=>
Promise
<
{}
>
;
meta
:
{
orderNo
:
number
;
title
:
string
};
name
:
string
}
|
{
path
:
string
;
component
:
()
=>
Promise
<
{}
>
;
meta
:
{
orderNo
:
number
;
title
:
string
};
name
:
string
}
|
{
path
:
string
;
component
:
()
=>
Promise
<
{}
>
;
meta
:
{
orderNo
:
number
;
title
:
string
};
name
:
string
})[];
meta
:
{
orderNo
:
number
;
icon
:
string
;
hideChildrenInMenu
:
boolean
;
title
:
string
};
name
:
string
}
=
{
path
:
'/engineeringProject'
,
name
:
'engineeringProject'
,
component
:
LAYOUT
,
...
...
@@ -25,15 +25,35 @@ const engineeringProject: AppRouteModule = {
},
},
{
path
:
'edit'
,
path
:
'e
ngineeringE
dit'
,
name
:
'engineeringEdit'
,
component
:
()
=>
import
(
'@/views/engineeringProject/engineeringEdit.vue'
),
component
:
()
=>
import
(
'@/views/engineeringProject/engineeringEdit
/engineeringEdit
.vue'
),
meta
:
{
// affix: true,
title
:
'新建计划(工程)'
,
orderNo
:
8
,
},
},
{
path
:
'constructionEdit'
,
name
:
'constructionEdit'
,
component
:
()
=>
import
(
'@/views/engineeringProject/constructionEdit/constructionEdit.vue'
),
meta
:
{
// affix: true,
title
:
'新建计划(承建)'
,
orderNo
:
8
,
},
},
{
path
:
'reserveEdit'
,
name
:
'reserveEdit'
,
component
:
()
=>
import
(
'@/views/engineeringProject/reserveEdit/reserveEdit.vue'
),
meta
:
{
// affix: true,
title
:
'新建计划(储备)'
,
orderNo
:
8
,
},
},
],
};
...
...
src/views/biddingManagement/index.vue
View file @
6dda5ff3
...
...
@@ -17,10 +17,16 @@
{
label: '详情',
onClick: handleEdit.bind(null, record, 1),
ifShow: (_action) => {
return record.reviewStatus == '1';
},
},
{
label: '修改',
onClick: handleEdit.bind(null, record, 0),
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
{
label: '删除',
...
...
@@ -30,6 +36,9 @@
placement: 'left',
confirm: handleDelete.bind(null, record),
},
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
{
label: '审核',
...
...
@@ -39,6 +48,9 @@
placement: 'left',
confirm: examine.bind(null, record, true),
},
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
]"
/>
...
...
src/views/biddingPlan/index.vue
View file @
6dda5ff3
...
...
@@ -17,10 +17,16 @@
{
label: '详情',
onClick: handleEdit.bind(null, record, 1),
ifShow: (_action) => {
return record.reviewStatus == '1';
},
},
{
label: '修改',
onClick: handleEdit.bind(null, record, 0),
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
{
label: '删除',
...
...
@@ -30,6 +36,9 @@
placement: 'left',
confirm: handleDelete.bind(null, record),
},
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
{
label: '审核',
...
...
@@ -39,6 +48,9 @@
placement: 'left',
confirm: examine.bind(null, record, true),
},
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
]"
/>
...
...
src/views/engineeringProject/constructionEdit/constructionEdit.vue
0 → 100644
View file @
6dda5ff3
This diff is collapsed.
Click to expand it.
src/views/engineeringProject/constructionEdit/tableData.tsx
0 → 100644
View file @
6dda5ff3
import
{
optionsListApi
}
from
'@/api/demo/select'
;
import
{
FormProps
,
FormSchema
,
BasicColumn
}
from
'@/components/Table'
;
import
{
VxeFormItemProps
,
VxeGridPropTypes
}
from
'@/components/VxeTable'
;
import
{
ref
}
from
'vue'
;
import
{
Input
}
from
'ant-design-vue'
;
export
function
getBasicColumns
():
BasicColumn
[]
{
return
[
{
title
:
'年份'
,
dataIndex
:
'year'
,
width
:
80
,
},
{
title
:
'金额(万元)'
,
dataIndex
:
'amount'
,
width
:
150
,
// sorter: true,
// defaultHidden: true,
edit
:
true
,
},
];
}
export
const
formSchema
:
({
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
valueFormat
:
string
;
format
:
string
;
style
:
{
width
:
string
};
placeholder
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
icon
:
string
;
componentProps
:
{
style
:
{
width
:
string
};
placeholder
:
string
[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
})[]
=
[
{
field
:
'projectName'
,
label
:
'项目名称'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionSite'
,
label
:
'建设地点'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionMode'
,
label
:
'建设模式'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectType'
,
label
:
'项目类型'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionScale'
,
label
:
'建设规模'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'fundingSource'
,
label
:
'资金来源:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'implementingEntity'
,
label
:
'实施主体:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'filingCycle'
,
label
:
'填报年度:'
,
required
:
true
,
component
:
'DatePicker'
,
componentProps
:
{
placeholder
:
'选择填报周期'
,
picker
:
'year'
,
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY'
,
format
:
'YYYY'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'totalInvestment'
,
label
:
'合同金额'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'contract'
,
label
:
'合同方式'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'总包'
,
value
:
'0'
},
{
label
:
'分包'
,
value
:
'1'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'matchingFunds'
,
label
:
'2024年财政预算匹配资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'specialBondFunds'
,
label
:
'其中专项债项目2024年预计使用专项债资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'planFunds'
,
label
:
'2024年计划资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'attribute'
,
label
:
'建设性质'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'新建'
,
value
:
'0'
},
{
label
:
'结转'
,
value
:
'1'
},
{
label
:
'缓建'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'time'
,
component
:
'RangePicker'
,
label
:
'开竣工时间'
,
required
:
true
,
icon
:
'healthicons:i-schedule-school-date-time-outline'
,
colProps
:
{
span
:
7
,
offset
:
1
},
componentProps
:
{
placeholder
:
[
'开始日期'
,
'结束日期'
],
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY-MM-DD'
,
format
:
'YYYY-MM-DD'
,
},
},
{
field
:
'schedule'
,
label
:
'2024年底预计形象进度'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'A(已经立项实施的跨年工程)'
,
value
:
'0'
},
{
label
:
'B(该年度必须建设的项目)'
,
value
:
'1'
},
{
label
:
'C(该年度必须建设的项目)'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
label
:
'备注'
,
field
:
'remarks'
,
required
:
true
,
component
:
'InputTextArea'
,
componentProps
:
{
maxlength
:
100
,
showCount
:
true
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
// {
// field: 'isReserveProject',
// label: '是否为储备项目',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '是', value: '1' },
// { label: '否', value: '0' },
// ],
// },
// },
// {
// field: 'status',
// label: '状态',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '启用', value: '1' },
// { label: '停用', value: '0' },
// ],
// },
// },
];
src/views/engineeringProject/data.tsx
View file @
6dda5ff3
...
...
@@ -125,241 +125,4 @@ export const searchFormSchema: FormSchema[] = [
},
];
export
const
formSchema
:
({
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
valueFormat
:
string
;
format
:
string
;
style
:
{
width
:
string
};
placeholder
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
icon
:
string
;
componentProps
:
{
style
:
{
width
:
string
};
placeholder
:
string
[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
})[]
=
[
{
field
:
'projectName'
,
label
:
'项目名称'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionSite'
,
label
:
'建设地点'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionMode'
,
label
:
'建设模式'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectType'
,
label
:
'项目类型'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionScale'
,
label
:
'建设规模'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'fundingSource'
,
label
:
'资金来源:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'implementingEntity'
,
label
:
'实施主体:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'filingCycle'
,
label
:
'填报年度:'
,
required
:
true
,
component
:
'DatePicker'
,
componentProps
:
{
placeholder
:
'选择填报周期'
,
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY-MM-DD'
,
format
:
'YYYY-MM-DD'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'totalInvestment'
,
label
:
'总投资'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'competentDepartment'
,
label
:
'项目主管部门'
,
required
:
true
,
component
:
'Input'
,
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'matchingFunds'
,
label
:
'2024年财政预算匹配资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'specialBondFunds'
,
label
:
'其中专项债项目2024年预计使用专项债资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'planFunds'
,
label
:
'2024年计划资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'attribute'
,
label
:
'建设性质'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'新建'
,
value
:
'0'
},
{
label
:
'结转'
,
value
:
'1'
},
{
label
:
'缓建'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'time'
,
component
:
'RangePicker'
,
label
:
'开竣工时间'
,
required
:
true
,
icon
:
'healthicons:i-schedule-school-date-time-outline'
,
field
:
''
,
colProps
:
{
span
:
7
,
offset
:
1
},
componentProps
:
{
placeholder
:
[
'开始日期'
,
'结束日期'
],
style
:
{
width
:
'100%'
},
},
},
{
field
:
'schedule'
,
label
:
'2024年底预计形象进度'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'A(已经立项实施的跨年工程)'
,
value
:
'0'
},
{
label
:
'B(该年度必须建设的项目)'
,
value
:
'1'
},
{
label
:
'C(该年度必须建设的项目)'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
label
:
'备注'
,
field
:
'completionRemarks'
,
required
:
true
,
component
:
'InputTextArea'
,
componentProps
:
{
maxlength
:
100
,
showCount
:
true
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
// {
// field: 'isReserveProject',
// label: '是否为储备项目',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '是', value: '1' },
// { label: '否', value: '0' },
// ],
// },
// },
// {
// field: 'status',
// label: '状态',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '启用', value: '1' },
// { label: '停用', value: '0' },
// ],
// },
// },
];
src/views/engineeringProject/engineeringEdit.vue
→
src/views/engineeringProject/engineeringEdit
/engineeringEdit
.vue
View file @
6dda5ff3
<
template
>
<PageWrapper
:title=
"getTitle"
:contentBackground=
"false"
headerSticky
>
<template
#
extra
>
<a-button
type=
"primary"
danger
>
删除
</a-button>
<a-button
type=
"primary"
@
click=
"handleSubmit"
>
提交
</a-button>
<a-button
type=
"primary"
v-if=
"!disabled"
danger
>
删除
</a-button>
<a-button
type=
"primary"
v-if=
"!disabled"
@
click=
"handleSubmit"
>
提交
</a-button>
</
template
>
<PageCard
v-for=
"(item, index) in tabsFormSchema"
:key=
"index"
:title=
"item.name"
>
...
...
@@ -11,6 +11,7 @@
type=
"text"
preIcon=
"ant-design:delete-outlined"
danger
v-if=
"!disabled"
@
click=
"deleteItem(index)"
/>
</
template
>
...
...
@@ -23,8 +24,12 @@
/>
</div>
</PageCard>
<a-button
type=
"dashed"
@
click=
"add"
preIcon=
"ei:plus"
>
从项目库导入
</a-button>
<a-button
type=
"dashed"
@
click=
"handleAdd"
class=
"ml-2"
preIcon=
"ei:plus"
>
新建项目
</a-button>
<a-button
v-if=
"!disabled"
type=
"dashed"
@
click=
"add"
preIcon=
"ei:plus"
>
从项目库导入
</a-button>
<a-button
v-if=
"!disabled"
type=
"dashed"
@
click=
"handleAdd"
class=
"ml-2"
preIcon=
"ei:plus"
>
新建项目
</a-button>
<projectDrawer
@
register=
"registerDrawer"
@
success=
"handleSuccess"
/>
<engineeringprojectModel
@
register=
"register"
@
close=
"handleNewData"
/>
</PageWrapper>
...
...
@@ -35,13 +40,13 @@
import
{
ref
,
nextTick
,
onMounted
,
unref
,
computed
,
reactive
}
from
'vue'
;
import
{
demoListApi
}
from
'@/api/demo/table'
;
import
engineeringprojectModel
from
'./engineeringProjectModel/engineeringprojectModel.vue'
;
import
engineeringprojectModel
from
'.
.
/engineeringProjectModel/engineeringprojectModel.vue'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
PageWrapper
}
from
'@/components/Page'
;
import
PageCard
from
'@/components/Page/src/PageCard.vue'
;
import
projectDrawer
from
'@/views/project/projectDrawer.vue'
;
import
{
BasicForm
,
useForm
,
FormProps
,
UseFormReturnType
}
from
'@/components/Form'
;
import
{
formSchema
}
from
'.
/d
ata'
;
import
{
formSchema
}
from
'.
./engineeringEdit/tableD
ata'
;
import
{
deepMerge
}
from
'@/utils'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
useDrawer
}
from
'@/components/Drawer'
;
...
...
@@ -50,6 +55,8 @@
import
{
editModel
}
from
'@/api/project/model/engineeringprojectModel'
;
import
{
useModal
}
from
'@/components/Modal'
;
const
getTitle
=
ref
(
''
);
const
engineerId
=
ref
(
''
);
let
show
=
ref
<
Recordable
[]
>
([]);
// function handleSummary(tableData: Recordable[]) {
// const totalNo = tableData.reduce((prev, next) => {
...
...
@@ -146,12 +153,14 @@
const
[
registerDrawer
,
{
openDrawer
}]
=
useDrawer
();
const
[
register
,
{
openModal
:
openModal
}]
=
useModal
();
const
{
createMessage
}
=
useMessage
();
const
getTitle
=
computed
(()
=>
!
unref
(
isUpdate
)
?
'新增工程项目投资计划(工程)'
:
'编辑工程项目投资计划(工程)'
,
);
// const getTitle = computed(() =>
// !unref(isUpdate) ? '新增工程项目投资计划(工程)' : '编辑工程项目投资计划(工程)',
// );
getTitle
.
value
=
'新增工程项目投资计划(工程)'
;
const
isUpdate
=
ref
(
false
);
const
loading
=
ref
(
false
);
const
formData
=
ref
<
editModel
>
({});
const
disabled
=
ref
(
false
);
onMounted
(
async
()
=>
{
const
route
=
useRoute
();
const
id
=
route
.
query
.
id
;
// 获取名为id的参数
...
...
@@ -163,15 +172,23 @@
isUpdate
.
value
=
false
;
console
.
log
(
formData
);
}
else
{
disabled
.
value
=
route
.
query
.
disabled
==
'0'
?
false
:
true
;
if
(
disabled
.
value
)
{
getTitle
.
value
=
'查看工程项目投资计划(工程)'
;
}
else
{
getTitle
.
value
=
'编辑工程项目投资计划(工程)'
;
}
engineerId
.
value
=
id
;
isUpdate
.
value
=
true
;
let
res
=
await
getItem
({
id
});
formData
.
value
.
biddingQuarter
=
res
.
data
.
quarter
;
formData
.
value
.
tenderYear
=
res
.
data
.
year
;
for
(
let
i
=
0
;
i
<
res
.
data
.
investmentPlan
.
length
;
i
++
)
{
console
.
log
(
'getItem'
,
res
);
for
(
let
i
=
0
;
i
<
res
.
length
;
i
++
)
{
const
item
=
{
name
:
'序号'
+
(
i
+
1
),
forceRender
:
true
,
Form
:
useForm
(
Object
.
assign
({
schemas
:
formSchema
},
baseFormConfig
)
as
FormProps
),
Form
:
useForm
(
Object
.
assign
({
schemas
:
formSchema
,
disabled
},
baseFormConfig
)
as
FormProps
,
),
table
:
useTable
({
title
:
'表尾行合计示例'
,
// api: demoListApi,
...
...
@@ -190,11 +207,20 @@
};
const
{
setFieldsValue
}
=
item
.
Form
[
1
];
tabsFormSchema
.
push
(
item
);
formData
.
value
.
investmentPlan
.
push
({
proId
:
info
.
id
,
});
const
info
=
res
[
i
];
info
.
time
=
[
info
.
beginTime
,
info
.
endTime
];
const
data
=
{
id
:
info
.
id
,
investmentId
:
info
.
investmentId
,
};
formData
.
value
.
investmentPlan
=
[];
formData
.
value
.
investmentPlan
.
push
(
data
);
console
.
log
(
'info'
,
info
);
const
{
setTableData
}
=
item
.
table
[
1
];
nextTick
(()
=>
{
setFieldsValue
({
setTableData
(
info
.
planYear
);
setFieldsValue
(
info
,
// projectName: info.projectName,
// constructionSite: info.constructionSite,
// constructionMode: info.constructionMode,
...
...
@@ -204,17 +230,17 @@
// fundingSource: info.fundingSource,
// implementingEntity: info.implementingEntity,
filingCycle
:
info
.
filingCycle
,
competentDepartment
:
info
.
competentDepartment
,
matchingFunds
:
info
.
matchingFunds
,
specialBondFunds
:
info
.
specialBondFunds
,
planFunds
:
info
.
planFunds
,
attribute
:
info
.
attribute
,
beginTime
:
info
.
time
[
0
],
endTime
:
info
.
time
[
1
],
schedule
:
info
.
schedule
,
completionRemarks
:
info
.
completionRemarks
,
}
);
//
filingCycle: info.filingCycle,
//
competentDepartment: info.competentDepartment,
//
matchingFunds: info.matchingFunds,
//
specialBondFunds: info.specialBondFunds,
//
planFunds: info.planFunds,
//
attribute: info.attribute,
//
beginTime: info.time[0],
//
endTime: info.time[1],
//
schedule: info.schedule,
//
completionRemarks: info.completionRemarks,
);
});
}
console
.
log
(
res
);
...
...
@@ -350,14 +376,14 @@
// res.plannedPeriod = res.plannedPeriod.join(',');
formData
.
value
.
investmentPlan
[
i
]
=
deepMerge
(
formData
.
value
.
investmentPlan
[
i
],
res
);
formData
.
value
.
investmentPlan
[
i
].
planYear
=
data
;
formData
.
value
.
investmentPlan
[
i
].
beginTime
=
'2024-08-08'
;
formData
.
value
.
investmentPlan
[
i
].
endTime
=
'2024-08-08'
;
formData
.
value
.
investmentPlan
[
i
].
beginTime
=
res
.
time
[
0
]
;
formData
.
value
.
investmentPlan
[
i
].
endTime
=
res
.
time
[
1
]
;
formData
.
value
.
planType
=
'工程'
;
formData
.
value
.
filingCycle
=
'2024'
;
formData
.
value
.
investmentPlan
[
i
].
totalInvestment
=
Number
(
formData
.
value
.
investmentPlan
[
i
].
totalInvestment
,
);
console
.
log
(
'formData.value'
,
formData
.
value
)
;
formData
.
value
.
id
=
engineerId
.
value
;
}
formData
.
value
.
proNumber
=
formData
.
value
.
investmentPlan
.
Length
;
console
.
log
(
' formData()'
,
unref
(
formData
));
...
...
src/views/engineeringProject/engineeringEdit/tableData.tsx
0 → 100644
View file @
6dda5ff3
import
{
optionsListApi
}
from
'@/api/demo/select'
;
import
{
FormProps
,
FormSchema
,
BasicColumn
}
from
'@/components/Table'
;
import
{
VxeFormItemProps
,
VxeGridPropTypes
}
from
'@/components/VxeTable'
;
import
{
ref
}
from
'vue'
;
import
{
Input
}
from
'ant-design-vue'
;
export
function
getBasicColumns
():
BasicColumn
[]
{
return
[
{
title
:
'年份'
,
dataIndex
:
'year'
,
width
:
80
,
},
{
title
:
'金额(万元)'
,
dataIndex
:
'amount'
,
width
:
150
,
// sorter: true,
// defaultHidden: true,
edit
:
true
,
},
];
}
export
const
formSchema
:
({
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
valueFormat
:
string
;
format
:
string
;
style
:
{
width
:
string
};
placeholder
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
icon
:
string
;
componentProps
:
{
style
:
{
width
:
string
};
placeholder
:
string
[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
})[]
=
[
{
field
:
'projectName'
,
label
:
'项目名称'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionSite'
,
label
:
'建设地点'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionMode'
,
label
:
'建设模式'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectType'
,
label
:
'项目类型'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionScale'
,
label
:
'建设规模'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'fundingSource'
,
label
:
'资金来源:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'implementingEntity'
,
label
:
'实施主体:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'filingCycle'
,
label
:
'填报年度:'
,
required
:
true
,
component
:
'DatePicker'
,
componentProps
:
{
placeholder
:
'选择填报周期'
,
picker
:
'year'
,
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY'
,
format
:
'YYYY'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'totalInvestment'
,
label
:
'总投资'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'competentDepartment'
,
label
:
'项目主管部门'
,
required
:
true
,
component
:
'Input'
,
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'matchingFunds'
,
label
:
'2024年财政预算匹配资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'specialBondFunds'
,
label
:
'其中专项债项目2024年预计使用专项债资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'planFunds'
,
label
:
'2024年计划资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'attribute'
,
label
:
'建设性质'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'新建'
,
value
:
'0'
},
{
label
:
'结转'
,
value
:
'1'
},
{
label
:
'缓建'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'time'
,
component
:
'RangePicker'
,
label
:
'开竣工时间'
,
required
:
true
,
icon
:
'healthicons:i-schedule-school-date-time-outline'
,
colProps
:
{
span
:
7
,
offset
:
1
},
componentProps
:
{
placeholder
:
[
'开始日期'
,
'结束日期'
],
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY-MM-DD'
,
format
:
'YYYY-MM-DD'
,
},
},
{
field
:
'schedule'
,
label
:
'2024年底预计形象进度'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'A(已经立项实施的跨年工程)'
,
value
:
'0'
},
{
label
:
'B(该年度必须建设的项目)'
,
value
:
'1'
},
{
label
:
'C(该年度必须建设的项目)'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
label
:
'备注'
,
field
:
'remarks'
,
required
:
true
,
component
:
'InputTextArea'
,
componentProps
:
{
maxlength
:
100
,
showCount
:
true
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
// {
// field: 'isReserveProject',
// label: '是否为储备项目',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '是', value: '1' },
// { label: '否', value: '0' },
// ],
// },
// },
// {
// field: 'status',
// label: '状态',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '启用', value: '1' },
// { label: '停用', value: '0' },
// ],
// },
// },
];
src/views/engineeringProject/index.vue
View file @
6dda5ff3
...
...
@@ -2,9 +2,9 @@
<div>
<BasicTable
@
register=
"registerTable"
:title=
"'工程项目投资计划'"
>
<template
#
toolbar
>
<a-button
class=
"btn"
type=
"primary"
@
click=
"addEngineering"
>
新建计划(工程)
</a-button>
<a-button
class=
"btn"
type=
"primary"
@
click=
"
Import
"
>
新建计划(承建)
</a-button>
<a-button
type=
"primary"
@
click=
"
Import
"
>
新建计划(储备)
</a-button>
<a-button
class=
"btn"
type=
"primary"
@
click=
"addEngineering
('engineering')
"
>
新建计划(工程)
</a-button>
<a-button
class=
"btn"
type=
"primary"
@
click=
"
addEngineering('construction')
"
>
新建计划(承建)
</a-button>
<a-button
type=
"primary"
@
click=
"
addEngineering('reserve')
"
>
新建计划(储备)
</a-button>
</
template
>
<
template
#
bodyCell=
"{ column, text, record, index }"
>
<!-- 当前列是序号列时,显示序号 -->
...
...
@@ -16,18 +16,25 @@
<TableAction
:actions=
"[
{
label: '
修改
',
label: '
详情
',
// icon: 'clarity:note-edit-line',
onClick: handleEdit.bind(null, record),
onClick: handleEdit.bind(null, record
, 1
),
},
{
label: '删除',
// icon: 'ant-design:delete-outlined',
color: 'error',
label: '修改',
// icon: 'clarity:note-edit-line',
onClick: handleEdit.bind(null, record, 0),
},
{
label: '审核',
color: 'success',
popConfirm: {
title: '是否确认
删除
',
title: '是否确认
审核
',
placement: 'left',
confirm: handleDelete.bind(null, record),
confirm: examine.bind(null, record, true),
},
ifShow: (_action) => {
return record.reviewStatus == null;
},
},
]"
...
...
@@ -42,7 +49,7 @@
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
yearModal
from
'@/components/yearModal.vue'
;
import
{
useModal
}
from
'@/components/Modal'
;
import
{
getEngineeringList
}
from
'@/api/project/engineeringProject'
;
import
{
getEngineeringList
,
auditItem
}
from
'@/api/project/engineeringProject'
;
import
{
getListByPage
}
from
'@/api/project/biddingPlan'
;
...
...
@@ -50,8 +57,10 @@
import
{
columns
,
searchFormSchema
}
from
'./data'
;
import
{
router
}
from
'@/router'
;
import
{
ref
}
from
"vue"
;
defineOptions
({
name
:
'EngineeringProject'
});
const
types
=
ref
(
''
);
const
[
registerDrawer
,
{
openDrawer
}]
=
useDrawer
();
...
...
@@ -78,17 +87,37 @@
},
});
function
handleEdit
(
record
:
Recordable
)
{
function
handleEdit
(
record
:
Recordable
,
disabled
:
number
)
{
// openDrawer(true, {
// record,
// isUpdate: true,
// });
router
.
push
({
path
:
'/engineeringProject/edit'
,
query
:
{
id
:
record
.
id
,
},
});
console
.
log
(
'record.planType'
,
record
.
planType
)
if
(
record
.
planType
===
'工程'
)
{
router
.
push
({
path
:
'/engineeringProject/engineeringEdit'
,
query
:
{
id
:
record
.
id
,
disabled
:
String
(
disabled
),
},
});
}
else
if
(
record
.
planType
===
'承建'
)
{
router
.
push
({
path
:
'/engineeringProject/constructionEdit'
,
query
:
{
id
:
record
.
id
,
disabled
:
String
(
disabled
),
},
});
}
else
if
(
record
.
planType
===
'储备'
)
{
router
.
push
({
path
:
'/engineeringProject/reserveEdit'
,
query
:
{
id
:
record
.
id
,
disabled
:
String
(
disabled
),
},
});
}
}
function
handleDelete
(
record
:
Recordable
)
{
...
...
@@ -103,27 +132,47 @@
console
.
log
(
'导入数据'
);
};
const
addEngineering
=
()
=>
{
const
addEngineering
=
(
type
)
=>
{
// openModal(true, {
// data: 'content',
// info: 'Info',
// });
types
.
value
=
type
openModal
(
true
,
{
data
:
[
'year'
],
});
};
const
handleNew
=
(
e
)
=>
{
console
.
log
(
e
);
router
.
push
({
path
:
'/engineeringProject/edit'
,
query
:
e
,
});
console
.
log
(
'eeee'
,
e
);
console
.
log
(
'types.value'
,
types
.
value
)
if
(
types
.
value
==
'engineering'
)
{
router
.
push
({
path
:
'/engineeringProject/engineeringEdit'
,
query
:
e
,
});
}
else
if
(
types
.
value
==
'construction'
)
{
router
.
push
({
path
:
'/engineeringProject/constructionEdit'
,
query
:
e
,
});
}
else
if
(
types
.
value
==
'reserve'
)
{
router
.
push
({
path
:
'/engineeringProject/reserveEdit'
,
query
:
e
,
});
}
};
const
change
=
(
key
:
string
)
=>
{
reload
();
};
async
function
examine
(
record
:
Recordable
,
disabled
:
boolean
)
{
const
id
=
record
.
id
;
const
res
=
await
auditItem
({
id
});
console
.
log
(
res
);
reload
();
}
</
script
>
<
style
scoped
>
.btn
{
...
...
src/views/engineeringProject/reserveEdit/reserveEdit.vue
0 → 100644
View file @
6dda5ff3
This diff is collapsed.
Click to expand it.
src/views/engineeringProject/reserveEdit/tableData.tsx
0 → 100644
View file @
6dda5ff3
import
{
optionsListApi
}
from
'@/api/demo/select'
;
import
{
FormProps
,
FormSchema
,
BasicColumn
}
from
'@/components/Table'
;
import
{
VxeFormItemProps
,
VxeGridPropTypes
}
from
'@/components/VxeTable'
;
import
{
ref
}
from
'vue'
;
import
{
Input
}
from
'ant-design-vue'
;
export
function
getBasicColumns
():
BasicColumn
[]
{
return
[
{
title
:
'年份'
,
dataIndex
:
'year'
,
width
:
80
,
},
{
title
:
'金额(万元)'
,
dataIndex
:
'amount'
,
width
:
150
,
// sorter: true,
// defaultHidden: true,
edit
:
true
,
},
];
}
export
const
formSchema
:
({
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
readonly
:
boolean
;
style
:
{
border
:
string
}
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
valueFormat
:
string
;
format
:
string
;
style
:
{
width
:
string
};
placeholder
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
addonAfter
:
string
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
icon
:
string
;
componentProps
:
{
style
:
{
width
:
string
};
placeholder
:
string
[]
};
label
:
string
;
required
:
boolean
}
|
{
colProps
:
{
offset
:
number
;
span
:
number
};
component
:
string
;
field
:
string
;
componentProps
:
{
options
:
({
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
}
|
{
label
:
string
;
value
:
string
})[]
};
label
:
string
;
required
:
boolean
})[]
=
[
{
field
:
'projectName'
,
label
:
'项目名称'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionSite'
,
label
:
'建设地点'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionMode'
,
label
:
'建设模式'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectType'
,
label
:
'项目类型'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'constructionScale'
,
label
:
'建设规模'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'fundingSource'
,
label
:
'资金来源:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'implementingEntity'
,
label
:
'实施主体:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'projectOverview'
,
label
:
'项目概况:'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
style
:
{
border
:
'none'
},
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'filingCycle'
,
label
:
'填报年度:'
,
required
:
true
,
component
:
'DatePicker'
,
componentProps
:
{
placeholder
:
'选择填报周期'
,
picker
:
'year'
,
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY'
,
format
:
'YYYY'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'totalInvestment'
,
label
:
'总投资'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'competentDepartment'
,
label
:
'项目主管部门'
,
required
:
true
,
component
:
'Input'
,
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'planFunds'
,
label
:
'2024年计划资金'
,
required
:
true
,
component
:
'Input'
,
componentProps
:
{
addonAfter
:
'万元'
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'attribute'
,
label
:
'建设性质'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'新建'
,
value
:
'0'
},
{
label
:
'结转'
,
value
:
'1'
},
{
label
:
'缓建'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
field
:
'time'
,
component
:
'RangePicker'
,
label
:
'开竣工时间'
,
required
:
true
,
icon
:
'healthicons:i-schedule-school-date-time-outline'
,
colProps
:
{
span
:
7
,
offset
:
1
},
componentProps
:
{
placeholder
:
[
'开始日期'
,
'结束日期'
],
style
:
{
width
:
'100%'
},
valueFormat
:
'YYYY-MM-DD'
,
format
:
'YYYY-MM-DD'
,
},
},
{
field
:
'schedule'
,
label
:
'2024年底预计形象进度'
,
required
:
true
,
component
:
'Select'
,
componentProps
:
{
options
:
[
{
label
:
'A(已经立项实施的跨年工程)'
,
value
:
'0'
},
{
label
:
'B(该年度必须建设的项目)'
,
value
:
'1'
},
{
label
:
'C(该年度必须建设的项目)'
,
value
:
'2'
},
],
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
{
label
:
'备注'
,
field
:
'remarks'
,
required
:
true
,
component
:
'InputTextArea'
,
componentProps
:
{
maxlength
:
300
,
showCount
:
true
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
// {
// field: 'isReserveProject',
// label: '是否为储备项目',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '是', value: '1' },
// { label: '否', value: '0' },
// ],
// },
// },
// {
// field: 'status',
// label: '状态',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '启用', value: '1' },
// { label: '停用', value: '0' },
// ],
// },
// },
];
src/views/engineeringProject/tableData.tsx
deleted
100644 → 0
View file @
783e16a9
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