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
1ed821ba
Commit
1ed821ba
authored
Oct 21, 2024
by
罗林杰
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
parents
56ab86db
1a23b014
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
611 additions
and
126 deletions
+611
-126
biddingManagement.ts
src/api/project/biddingManagement.ts
+15
-0
biddingPlan.ts
src/router/routes/modules/biddingPlan.ts
+10
-0
biddingManagement.data.ts
src/views/biddingManagement/biddingManagement.data.ts
+3
-28
biddingManagementEdit.vue
src/views/biddingManagement/biddingManagementEdit.vue
+149
-35
index.vue
src/views/biddingManagement/index.vue
+6
-2
statisticsBidding.vue
src/views/biddingManagement/statisticsBidding.vue
+362
-0
monthlyPlanEdit.vue
src/views/monthlyPlan/monthlyPlanEdit/monthlyPlanEdit.vue
+66
-61
No files found.
src/api/project/biddingManagement.ts
View file @
1ed821ba
...
...
@@ -16,6 +16,8 @@ enum Api {
selectCount
=
'/pro/tenderManager/selectCount'
,
Itemdelete
=
'/pro/tenderManager/details/del'
,
audit
=
'/pro/tenderManager/examine'
,
GetListAll
=
'/pro/tenderManager/selectAll'
,
ExportCount
=
'/pro/export/tendMangeStatistic'
}
export
const
getListByPage
=
(
params
?:
ProjectPageParams
)
=>
defHttp
.
post
<
ListGetResultModel
>
({
url
:
Api
.
GetList
,
data
:
params
});
...
...
@@ -59,3 +61,16 @@ export const selectCount = (params?: any) =>
url
:
Api
.
selectCount
,
data
:
params
,
});
export
const
getListAll
=
(
params
?:
any
)
=>
defHttp
.
post
<
ProjectModel
>
({
url
:
Api
.
GetListAll
,
data
:
params
});
export
const
exportStatisticList
=
(
params
?:
any
)
=>
defHttp
.
post
<
any
>
(
{
url
:
Api
.
ExportCount
,
data
:
params
,
responseType
:
'blob'
,
},
{
errorMessageMode
:
'none'
,
isTransformResponse
:
false
},
);
src/router/routes/modules/biddingPlan.ts
View file @
1ed821ba
...
...
@@ -35,6 +35,16 @@ const biddingPlan: AppRouteModule = {
orderNo
:
3
,
},
},
{
path
:
'statisticsBidding'
,
name
:
'statisticsBidding'
,
component
:
()
=>
import
(
'@/views/biddingManagement/statisticsBidding.vue'
),
meta
:
{
auth
:
'/www/dist/index.html#/biddingManagement/index'
,
title
:
'招标情况统计'
,
orderNo
:
3
,
},
},
{
path
:
'situationEdit'
,
name
:
'situationEdit'
,
...
...
src/views/biddingManagement/biddingManagement.data.ts
View file @
1ed821ba
...
...
@@ -81,34 +81,6 @@ export const searchFormSchema: FormSchema[] = [
},
colProps
:
{
span
:
4
},
},
{
field
:
'companyName'
,
label
:
''
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'公司名称'
,
options
:
[
{
label
:
'公司名称'
,
value
:
'公司名称'
,
key
:
'公司名称'
,
},
],
},
colProps
:
{
span
:
4
},
},
// {
// field: 'status',
// label: '状态',
// component: 'Select',
// componentProps: {
// options: [
// { label: '启用', value: '1' },
// { label: '停用', value: '0' },
// ],
// },
// colProps: { span: 8 },
// },
];
export
const
formSchema
:
FormSchema
[]
=
[
...
...
@@ -119,6 +91,7 @@ export const formSchema: FormSchema[] = [
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
disabled
:
true
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
...
...
@@ -130,6 +103,7 @@ export const formSchema: FormSchema[] = [
component
:
'Input'
,
componentProps
:
{
readonly
:
true
,
disabled
:
true
,
},
colProps
:
{
span
:
7
,
offset
:
1
},
},
...
...
@@ -211,6 +185,7 @@ export const formSchema: FormSchema[] = [
colProps
:
{
span
:
7
,
offset
:
1
},
componentProps
:
{
readonly
:
true
,
disabled
:
true
,
},
},
{
...
...
src/views/biddingManagement/biddingManagementEdit.vue
View file @
1ed821ba
...
...
@@ -8,26 +8,51 @@
>
<template
#
extra
>
<!--
<a-button
type=
"primary"
danger
>
删除
</a-button>
-->
<a-button
type=
"primary"
v-if=
"!disabled"
@
click=
"handleSubmit"
>
提交
</a-button>
<a-button
type=
"primary"
v-if=
"!disabled"
:disabled=
"loadingRef"
@
click=
"handleSubmit('0')"
>
暂存
</a-button>
<a-button
type=
"primary"
v-if=
"!disabled"
@
click=
"handleSubmit('1')"
>
提交
</a-button>
<a-button
type=
"primary"
@
click=
"history"
v-if=
"historyData"
>
历史记录
</a-button>
<a-button
type=
"default"
@
click=
"router.back()"
>
返回
</a-button>
</
template
>
<
template
v-for=
"(item, index) in tabsFormSchema"
>
<PageCard
v-if=
"item.show"
:key=
"index"
:title=
"item.name"
>
<template
#
right
>
<CollapseContainer
v-for=
"(item, index) in tabsFormSchema"
:key=
"index"
>
<
template
#
title
>
<span
class=
"projectName"
>
{{
item
.
name
}}
</span>
</
template
>
<
template
#
action
>
<a-button
v-if=
"!disabled"
type=
"text"
preIcon=
"ant-design:delete-outlined"
danger
@
click=
"deleteItem(index)"
/>
@
click=
"deleteItemPro(index)"
>
删除项目
</a-button
>
</
template
>
<BasicForm
:loading=
"loading"
@
register=
"item.Form[0]"
/>
</PageCard>
<!-- 左上角为项目名 -->
<CollapseContainer
v-for=
"(content, key) in item.list"
:key=
"key"
class=
"subCard"
:title=
"content.name"
>
<
template
#
title
>
<span
class=
"contractName"
>
{{
content
.
name
}}
</span>
</
template
>
<!-- 右上角的删除按钮 -->
<
template
#
action
>
<a-button
v-if=
"!disabled"
type=
"text"
preIcon=
"ant-design:delete-outlined"
danger
@
click=
"deleteItemCon(index, key)"
>
删除合同
</a-button
>
</
template
>
<BasicForm
:loading=
"loading"
@
register=
"content.form"
/>
</CollapseContainer>
</CollapseContainer>
<a-button
v-if=
"!disabled"
type=
"dashed"
@
click=
"add"
preIcon=
"ei:plus"
>
从项目库导入
</a-button>
...
...
@@ -59,6 +84,8 @@
//历史记录
import
Operations
from
'@/components/Operations/Operations.vue'
;
import
{
addItem
,
updateItem
,
getItem
}
from
'@/api/project/biddingManagement'
;
import
CollapseContainer
from
'@/components/Container/src/collapse/CollapseContainer.vue'
;
//历史记录是否可查
const
historyData
=
ref
(
true
);
//页面传递过来了的id
...
...
@@ -90,7 +117,7 @@
}
else
{
isUpdate
.
value
=
true
;
tenderId
.
value
=
id
;
formData
.
value
.
tender
l
d
=
id
;
formData
.
value
.
tender
I
d
=
id
;
disabled
.
value
=
route
.
query
.
disabled
==
'0'
?
false
:
true
;
if
(
disabled
.
value
)
{
getTitle
.
value
=
'查看招标管理'
;
...
...
@@ -102,7 +129,7 @@
for
(
let
i
=
0
;
i
<
res
.
length
;
i
++
)
{
const
source
=
res
[
i
];
const
item
=
{
name
:
'
序号'
+
(
i
+
1
)
,
name
:
'
项目:'
+
source
.
projectName
,
show
:
true
,
forceRender
:
true
,
Form
:
useForm
(
...
...
@@ -153,12 +180,21 @@
});
}
}
/*删除项目表单*/
async
function
deleteItemPro
(
index
:
any
)
{
console
.
log
(
formData
.
value
);
formData
.
value
.
tenderPlanPro
.
splice
(
index
,
1
);
tabsFormSchema
.
splice
(
index
,
1
);
loadingRef
.
value
=
false
;
console
.
log
(
formData
.
value
);
// }
}
/***
*
*/
async
function
handleNew
(
info
:
any
)
{
const
item
=
{
name
:
'
序号'
+
(
tabsFormSchema
.
length
+
1
)
,
name
:
'
项目:'
+
info
.
projectName
,
forceRender
:
true
,
show
:
true
,
Form
:
useForm
(
Object
.
assign
({
schemas
:
formSchema
},
baseFormConfig
)
as
FormProps
),
...
...
@@ -179,20 +215,7 @@
}
async
function
deleteItem
(
index
:
any
)
{
formData
.
value
.
tenderPlanPro
.
splice
(
index
,
1
);
// loadingRef.value = true;
// const id = formData.value.tenderPlanPro[index].id;
// if (id) {
// await Itemdelete({
// id,
// });
// formData.value.tenderPlanPro.splice(index, 1);
// tabsFormSchema.splice(index, 1);
// loadingRef.value = false;
// tabsFormSchema[index].show = false;
tabsFormSchema
.
splice
(
index
,
1
);
// loadingRef.value = false;
// }
}
async
function
handleAdd
()
{
...
...
@@ -204,32 +227,108 @@
console
.
log
(
params
);
handleNew
(
params
);
}
async
function
handleSubmit
()
{
async
function
handleSubmit
(
isSubmit
)
{
for
(
let
i
=
0
;
i
<
tabsFormSchema
.
length
;
i
++
){
let
formSchema
=
tabsFormSchema
[
i
].
Form
[
1
]
const
{
updateSchema
}
=
formSchema
await
nextTick
(()
=>
{
if
(
isSubmit
==
'0'
)
{
updateSchema
([
{
field
:
'projectName'
,
required
:
false
},
{
field
:
'fundingSource'
,
required
:
false
},
{
field
:
'investmentAmount'
,
required
:
false
},
{
field
:
'field11'
,
required
:
false
},
{
field
:
'biddingType'
,
required
:
false
},
{
field
:
'tenderContent'
,
required
:
false
},
{
field
:
'controlPrice'
,
required
:
false
},
{
field
:
'constructionMode'
,
required
:
false
},
{
field
:
'procurementMethod'
,
required
:
false
},
{
field
:
'evaluationMethod'
,
required
:
false
},
{
field
:
'field11'
,
required
:
false
},
{
field
:
'completionStatus'
,
required
:
false
},
{
field
:
'openingTime'
,
required
:
false
},
{
field
:
'winningBidder'
,
required
:
false
},
{
field
:
'winningAmount'
,
required
:
false
},
{
field
:
'winningPeriod'
,
required
:
false
},
{
field
:
'signingDate'
,
required
:
false
},
{
field
:
'meetingMinute'
,
required
:
false
},
{
field
:
'releaseChannels'
,
required
:
false
},
{
field
:
'detailedInformation'
,
required
:
false
},
{
field
:
'publishWebsite'
,
required
:
false
},
{
field
:
'publicityWebsite'
,
required
:
false
},
{
field
:
'isReportingSituation'
,
required
:
false
},
{
field
:
'handSituation'
,
required
:
false
},
{
field
:
'remark'
,
dynamicRules
:
({
values
})
=>
{
return
[{
required
:
false
,}]
},
},
])
}
else
{
updateSchema
([
{
field
:
'projectName'
,
required
:
true
},
{
field
:
'fundingSource'
,
required
:
true
},
{
field
:
'investmentAmount'
,
required
:
true
},
{
field
:
'field11'
,
required
:
true
},
{
field
:
'biddingType'
,
required
:
true
},
{
field
:
'tenderContent'
,
required
:
true
},
{
field
:
'controlPrice'
,
required
:
true
},
{
field
:
'constructionMode'
,
required
:
true
},
{
field
:
'procurementMethod'
,
required
:
true
},
{
field
:
'evaluationMethod'
,
required
:
true
},
{
field
:
'field11'
,
required
:
true
},
{
field
:
'completionStatus'
,
required
:
true
},
{
field
:
'openingTime'
,
required
:
true
},
{
field
:
'winningBidder'
,
required
:
true
},
{
field
:
'winningAmount'
,
required
:
true
},
{
field
:
'winningPeriod'
,
required
:
true
},
{
field
:
'signingDate'
,
required
:
true
},
{
field
:
'meetingMinute'
,
required
:
true
},
{
field
:
'releaseChannels'
,
required
:
true
},
{
field
:
'detailedInformation'
,
required
:
true
},
{
field
:
'publishWebsite'
,
required
:
true
},
{
field
:
'publicityWebsite'
,
required
:
true
},
{
field
:
'isReportingSituation'
,
required
:
true
},
{
field
:
'handSituation'
,
required
:
true
},
{
field
:
'remark'
,
dynamicRules
:
({
values
})
=>
{
return
values
.
fundGap
?
[{
required
:
true
,
message
:
'说明必填'
}]
:
[];
},
}
])
}
})
}
loadingRef
.
value
=
true
;
console
.
log
(
'333333'
)
try
{
for
(
let
i
=
0
;
i
<
tabsFormSchema
.
length
;
i
++
)
{
console
.
log
(
'4444'
)
let
item
=
tabsFormSchema
[
i
];
if
(
item
.
show
)
{
const
{
validate
,
getFieldsValue
}
=
item
.
Form
[
1
];
await
validate
();
let
res
=
getFieldsValue
();
formData
.
value
.
tenderPlanPro
[
i
]
=
deepMerge
(
formData
.
value
.
tenderPlanPro
[
i
],
res
);
console
.
log
(
formData
.
value
.
tenderPlanPro
);
}
}
formData
.
value
.
proNumber
=
formData
.
value
.
tenderPlanPro
.
Length
;
formData
.
value
.
proNumber
=
formData
.
value
.
tenderPlanPro
.
Length
;
formData
.
value
.
isSubmit
=
isSubmit
;
console
.
log
(
'formData.value:'
,
formData
.
value
)
let
res
=
isUpdate
.
value
?
await
updateItem
(
unref
(
formData
))
:
await
addItem
(
unref
(
formData
));
loadingRef
.
value
=
true
;
addItemData
.
operateType
=
operateType
.
update
;
addItemData
.
businessId
=
routeId
.
value
;
addItemData
.
businessType
=
'招标管理'
;
const
showDatem
=
await
addItemApi
(
addItemData
);
console
.
log
(
showDatem
,
'记录添加成功'
);
console
.
log
(
res
);
if
(
isSubmit
===
'0'
){
createMessage
.
success
(
'暂存成功!'
);
}
else
{
createMessage
.
success
(
'提交成功!'
);
router
.
back
();
}
// router.back();
}
catch
(
e
)
{
// 验证失败或出错,切换到对应标签页
console
.
log
(
e
);
...
...
@@ -245,3 +344,18 @@
console
.
log
(
'历史记录'
);
}
</
script
>
<
style
scoped
>
.subCard
{
border
:
1px
solid
#e8eaec
;
}
.projectName
{
border-left
:
blue
solid
6px
;
padding-left
:
10px
;
font-weight
:
bold
;
}
.contractName
{
border-left
:
red
solid
6px
;
padding-left
:
10px
;
font-weight
:
bold
;
}
</
style
>
src/views/biddingManagement/index.vue
View file @
1ed821ba
...
...
@@ -49,7 +49,7 @@
confirm: examine.bind(null, record, true),
},
ifShow: (_action) => {
return
record.reviewStatus == '0'||record.reviewStatus == null
;
return
(record.reviewStatus == '0'||record.reviewStatus == null)
&&
record.isSubmit == '1'
&&
deptId !== '100'
;
},
},
]"
...
...
@@ -76,9 +76,11 @@
import
yearModal
from
'@/components/yearModal.vue'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
onMounted
}
from
"vue"
;
import
{
onMounted
,
ref
}
from
"vue"
;
import
{
getDepartmentList
}
from
"@/api/project/settlementManage"
;
import
{
useUserStore
}
from
'@/store/modules/user'
;
const
deptId
=
ref
(
''
);
const
{
push
}
=
useRouter
();
const
{
createMessage
}
=
useMessage
();
const
{
error
}
=
createMessage
;
...
...
@@ -106,6 +108,8 @@
const
[
register
,
{
openModal
:
openModal
,
closeModal
:
closeModal
}]
=
useModal
();
onMounted
(
async
()
=>
{
deptId
.
value
=
useUserStore
().
userInfo
.
deptId
;
// console.log('deptId.value:',deptId.value)
const
data
=
await
getDepartmentList
();
searchFormSchema
[
2
].
componentProps
.
options
=
data
;
});
...
...
src/views/biddingManagement/statisticsBidding.vue
0 → 100644
View file @
1ed821ba
<
template
>
<div
style=
"margin: 16px"
>
<PageCard
title=
"统计招标管理"
>
<BasicForm
ref=
"formElRef"
@
register=
"registerForm"
>
<template
#
formFooter
>
<a-button
type=
"primary"
@
click=
"handleSubmit"
>
查询
</a-button>
<a-button
type=
"primary"
@
click=
"exportCount"
style=
"margin-left: 10px"
>
导出
</a-button>
</
template
>
</BasicForm>
<Table
:pagination=
"false"
:dataSource=
"dataSource"
:columns=
"columns"
bordered
:loading=
"loadingRef"
:rowClassName=
"setRowClassName"
:scroll=
"{ x: 1300,y: 350 }"
>
</Table>
</PageCard>
<StatisticWindow
@
register=
"register"
/>
</div>
</template>
<
script
lang=
"ts"
setup
>
import
{
onMounted
,
ref
}
from
'vue'
;
import
{
Table
}
from
'ant-design-vue'
;
import
{
getListAll
,
exportStatisticList
}
from
'@/api/project/biddingManagement.js'
;
import
{
BasicForm
,
FormActionType
,
FormSchema
,
useForm
}
from
'@/components/Form'
;
import
StatisticWindow
from
'@/views/monthlyPlan/statisticWindow/statisticWindow.vue'
;
import
{
useModal
}
from
'@/components/Modal'
;
import
{
useRouter
}
from
'vue-router'
;
import
PageCard
from
'@/components/Page/src/PageCard.vue'
;
import
{
downloadByData
}
from
'@/utils/file/download'
;
import
{
useUserStore
}
from
'@/store/modules/user'
;
import
moment
from
"moment"
;
const
seach
=
ref
([
{
field
:
'tenderYear'
,
label
:
''
,
component
:
'DatePicker'
,
componentProps
:
{
placeholder
:
'年份'
,
picker
:
'year'
,
valueFormat
:
'YYYY'
,
format
:
'YYYY'
,
style
:
{
width
:
'100%'
,
},
},
colProps
:
{
span
:
4
},
},
{
field
:
'biddingQuarter'
,
label
:
''
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'季度'
,
options
:
[
{
label
:
'第一季度'
,
value
:
'第一季度'
,
},
{
label
:
'第二季度'
,
value
:
'第二季度'
,
},
{
label
:
'第三季度'
,
value
:
'第三季度'
,
},
{
label
:
'第四季度'
,
value
:
'第四季度'
,
},
],
},
colProps
:
{
span
:
4
},
},
])
const
deptId
=
ref
(
''
);
onMounted
(
async
()
=>
{
deptId
.
value
=
useUserStore
().
userInfo
.
deptId
;
getStatisticList
();
});
// defineOptions({ name: 'MonthlyPlan' });
const
[
register
,
{
openModal
:
openModal
}]
=
useModal
();
const
formElRef
=
ref
<
Nullable
<
FormActionType
>>
(
null
);
const
[
registerForm
,
{
getFieldsValue
}]
=
useForm
({
labelWidth
:
90
,
baseColProps
:
{
span
:
24
},
schemas
:
seach
,
showActionButtonGroup
:
false
,
});
async
function
exportCount
()
{
const
params
=
getFieldsValue
();
const
data
=
await
exportStatisticList
(
params
);
downloadByData
(
data
,
'招标管理统计报表'
+
'.xlsx'
);
}
const
loadingRef
=
ref
(
false
);
function
handleSubmit
()
{
getStatisticList
();
}
function
setRowClassName
(
record
)
{
if
(
record
.
projectName
===
'总计(万元)'
)
{
return
'rowcolor'
;
}
if
(
record
.
companyName
===
'合计(万元)'
){
return
'rowcolor'
;
}
else
{
return
;
}
}
function
getCurrentDateFormatted
()
{
const
now
=
new
Date
();
const
year
=
now
.
getFullYear
();
const
month
=
(
now
.
getMonth
()
+
1
).
toString
().
padStart
(
2
,
'0'
);
// 月份从0开始,所以要加1,并且格式化为两位数
return
`
${
year
}
-
${
month
}
`
;
}
async
function
getStatisticList
()
{
const
params
=
getFieldsValue
();
if
(
params
.
tenderYear
===
undefined
||
params
.
tenderYear
===
null
){
// 创建一个表示当前日期和时间的 Date 对象
var
currentDate
=
new
Date
();
// 使用 getFullYear() 方法获取当前年份
var
currentYear
=
currentDate
.
getFullYear
();
columns
[
0
].
title
=
currentYear
+
'年招标管理'
}
else
{
columns
[
0
].
title
=
params
.
tenderYear
+
'年招标管理'
;
}
loadingRef
.
value
=
true
;
let
data
=
await
getListAll
(
params
);
// dataSource.value = data;
let
propsList
=
[
'companyName'
,
'projectName'
];
propsList
.
map
((
item
)
=>
{
changeData
(
data
,
item
);
});
loadingRef
.
value
=
false
;
}
function
changeData
(
data
,
field
)
{
if
(
field
==
'companyName'
){
let
count
=
0
;
//重复项的第一项
let
indexCount
=
1
;
//下一项
while
(
indexCount
<
data
.
length
)
{
var
item
=
data
.
slice
(
count
,
count
+
1
)[
0
];
//获取没有比较的第一个对象
if
(
!
item
[
`
${
field
}
rowSpan`
])
{
item
[
`
${
field
}
rowSpan`
]
=
1
;
//初始化为1
}
if
(
item
[
field
]
===
data
[
indexCount
][
field
])
{
//第一个对象与后面的对象相比,有相同项就累加,并且后面相同项设置为0
item
[
`
${
field
}
rowSpan`
]
++
;
data
[
indexCount
][
`
${
field
}
rowSpan`
]
=
0
;
}
else
{
count
=
indexCount
;
}
indexCount
++
;
}
}
if
(
field
==
'projectName'
){
let
count
=
0
;
//重复项的第一项
let
indexCount
=
1
;
//下一项
while
(
indexCount
<
data
.
length
)
{
var
item
=
data
.
slice
(
count
,
count
+
1
)[
0
];
//获取没有比较的第一个对象
if
(
!
item
[
`
${
field
}
rowSpan`
])
{
item
[
`
${
field
}
rowSpan`
]
=
1
;
//初始化为1
}
if
(
item
[
field
]
===
data
[
indexCount
][
field
]
&&
item
[
'companyName'
]
===
data
[
indexCount
][
'companyName'
])
{
//第一个对象与后面的对象相比,有相同项就累加,并且后面相同项设置为0
item
[
`
${
field
}
rowSpan`
]
++
;
data
[
indexCount
][
`
${
field
}
rowSpan`
]
=
0
;
}
else
{
count
=
indexCount
;
}
indexCount
++
;
}
}
dataSource
.
value
=
data
;
}
// 列表
const
dataSource
=
ref
([]);
// 表头
const
columns1
=
[
{
title
:
''
,
dataIndex
:
''
,
fixed
:
'left'
,
children
:
[
{
title
:
'公司名称'
,
dataIndex
:
'companyName'
,
fixed
:
'left'
,
width
:
180
,
customCell
:
(
_
,
any
)
=>
({
rowSpan
:
_
.
companyNamerowSpan
,
}),
},
{
title
:
'项目名称'
,
fixed
:
'left'
,
dataIndex
:
'sourceType'
,
width
:
180
,
slots
:
{
customRender
:
'sourceType'
},
},
{
title
:
'合同额(万元)'
,
fixed
:
'left'
,
dataIndex
:
'contractAmount'
,
width
:
180
,
},
],
},
{
title
:
'202X年招标管理'
,
dataIndex
:
''
,
children
:
[
{
title
:
'上月实际完成值(万元)'
,
dataIndex
:
'completionValueActual'
,
width
:
180
,
},
{
title
:
'累计完成值(万元)'
,
dataIndex
:
'accumulateCompletionValue'
,
width
:
180
,
},
{
title
:
'本月计划完成值(万元)'
,
dataIndex
:
'planCompletionValue'
,
width
:
180
,
},
{
title
:
'上月计划数(万元)'
,
dataIndex
:
'lastMonthPlan'
,
width
:
180
,
},
],
},
{
title
:
'资金支付情况'
,
dataIndex
:
''
,
children
:
[
{
title
:
'上月实付数(万元)'
,
dataIndex
:
'lastMonthActual'
,
width
:
180
,
},
{
title
:
'累计支付数(万元)'
,
dataIndex
:
'accumulatePayment'
,
width
:
180
,
},
{
title
:
'本月计划数(万元)'
,
dataIndex
:
'thisPlanNumber'
,
width
:
180
,
},
],
},
{
title
:
'资金来源'
,
dataIndex
:
''
,
children
:
[
{
title
:
'专项债拨款(万元)'
,
dataIndex
:
'specialFund'
,
width
:
180
,
},
{
title
:
'政府拨款(万元)'
,
dataIndex
:
'governmentFund'
,
width
:
180
,
},
{
title
:
'银行融资(万元)'
,
dataIndex
:
'banFinancing'
,
width
:
180
,
},
{
title
:
'自有资金(万元)'
,
dataIndex
:
'ownFund'
,
width
:
180
,
},
{
title
:
'资金缺口'
,
dataIndex
:
'fundGap'
,
width
:
180
,
},
],
},
];
const
columns
=
[
{
title
:
'202X年招标管理'
,
dataIndex
:
''
,
children
:
[
{
title
:
'公司名称'
,
dataIndex
:
'companyName'
,
fixed
:
'left'
,
width
:
180
,
customCell
:
(
_
,
any
)
=>
({
rowSpan
:
_
.
companyNamerowSpan
,
}),
},
{
title
:
'项目名称'
,
dataIndex
:
'projectName'
,
width
:
180
,
fixed
:
'left'
,
customCell
:
(
_
,
any
)
=>
({
rowSpan
:
_
.
projectNamerowSpan
,
}),
},
{
title
:
'招标方案'
,
dataIndex
:
''
,
children
:
[
{
title
:
'招标类型'
,
dataIndex
:
'biddingType'
,
width
:
180
,
},
{
title
:
'招标控制价(万元)'
,
dataIndex
:
'controlPrice'
,
width
:
180
,
}
],
},
{
title
:
'招标情况'
,
dataIndex
:
''
,
children
:
[
{
title
:
'中标单位'
,
dataIndex
:
'winningBidder'
,
width
:
180
,
},
{
title
:
'中标金额'
,
dataIndex
:
'winningAmount'
,
width
:
180
,
}
],
},
],
},
];
const
{
push
}
=
useRouter
();
</
script
>
<
style
lang=
"less"
scoped
>
::v-deep .ant-table-tbody .ant-table-row {
&.rowcolor .ant-table-cell-fix-left {
background-color: #f5f5f5;
}
}
</
style
>
src/views/monthlyPlan/monthlyPlanEdit/monthlyPlanEdit.vue
View file @
1ed821ba
...
...
@@ -348,67 +348,72 @@
}
/*提交表单*/
async
function
handleSubmit
(
isSubmit
)
{
for
(
let
i
=
0
;
i
<
tabsFormSchema
.
length
;
i
++
)
{
let
formProjectSchema
=
tabsFormSchema
[
i
].
Form
[
1
]
const
{
updateSchema
}
=
formProjectSchema
if
(
isSubmit
==
'0'
)
{
for
(
let
i
=
0
;
i
<
tabsFormSchema
.
length
;
i
++
)
{
let
formProjectSchema
=
tabsFormSchema
[
i
].
Form
[
1
]
;
const
{
updateSchema
}
=
formProjectSchema
;
if
(
isSubmit
==
'0'
)
{
updateSchema
([
{
field
:
'projectName'
,
required
:
false
},
{
field
:
'sourceType'
,
required
:
false
},
])
{
field
:
'projectName'
,
required
:
false
},
{
field
:
'sourceType'
,
required
:
false
},
]);
}
for
(
let
j
=
0
;
j
<
tabsFormSchema
[
i
].
list
.
length
;
j
++
)
{
let
formSchema
=
tabsFormSchema
[
i
].
list
[
j
].
form
[
1
]
for
(
let
j
=
0
;
j
<
tabsFormSchema
[
i
].
list
.
length
;
j
++
)
{
let
formSchema
=
tabsFormSchema
[
i
].
list
[
j
].
form
[
1
];
const
{
updateSchema
}
=
formSchema
console
.
log
(
subFormSchema
)
nextTick
(()
=>
{
if
(
isSubmit
==
'0'
)
{
const
{
updateSchema
}
=
formSchema
;
console
.
log
(
subFormSchema
);
nextTick
(()
=>
{
if
(
isSubmit
==
'0'
)
{
updateSchema
([
{
field
:
'contrcatName'
,
required
:
false
},
{
field
:
'collectingUnit'
,
required
:
false
},
{
field
:
'contractAmount'
,
required
:
false
},
{
field
:
'paymentLevel'
,
required
:
false
},
{
field
:
'completionValueActual'
,
required
:
false
},
{
field
:
'accumulateCompletionValue'
,
required
:
false
},
{
field
:
'planCompletionValue'
,
required
:
false
},
{
field
:
'lastMonthPlan'
,
required
:
false
},
{
field
:
'lastMonthActual'
,
required
:
false
},
{
field
:
'accumulatePayment'
,
required
:
false
},
{
field
:
'thisPlanNumber'
,
required
:
false
},
{
field
:
'specialFund'
,
required
:
false
},
{
field
:
'governmentFund'
,
required
:
false
},
{
field
:
'banFinancing'
,
required
:
false
},
{
field
:
'ownFund'
,
required
:
false
},
{
field
:
'fundGap'
,
required
:
false
},
{
field
:
'remark'
,
dynamicRules
:
({
values
})
=>
{
return
[{
required
:
false
,
}]
},},
])
}
else
{
{
field
:
'contrcatName'
,
required
:
false
},
{
field
:
'collectingUnit'
,
required
:
false
},
{
field
:
'contractAmount'
,
required
:
false
},
{
field
:
'paymentLevel'
,
required
:
false
},
{
field
:
'completionValueActual'
,
required
:
false
},
{
field
:
'accumulateCompletionValue'
,
required
:
false
},
{
field
:
'planCompletionValue'
,
required
:
false
},
{
field
:
'lastMonthPlan'
,
required
:
false
},
{
field
:
'lastMonthActual'
,
required
:
false
},
{
field
:
'accumulatePayment'
,
required
:
false
},
{
field
:
'thisPlanNumber'
,
required
:
false
},
{
field
:
'specialFund'
,
required
:
false
},
{
field
:
'governmentFund'
,
required
:
false
},
{
field
:
'banFinancing'
,
required
:
false
},
{
field
:
'ownFund'
,
required
:
false
},
{
field
:
'fundGap'
,
required
:
false
},
{
field
:
'remark'
,
dynamicRules
:
({
values
})
=>
{
return
[{
required
:
false
}];
},
},
]);
}
else
{
updateSchema
([
{
field
:
'contrcatName'
,
required
:
true
},
{
field
:
'collectingUnit'
,
required
:
true
},
{
field
:
'contractAmount'
,
required
:
true
},
{
field
:
'paymentLevel'
,
required
:
true
},
{
field
:
'completionValueActual'
,
required
:
true
},
{
field
:
'accumulateCompletionValue'
,
required
:
true
},
{
field
:
'planCompletionValue'
,
required
:
true
},
{
field
:
'lastMonthPlan'
,
required
:
true
},
{
field
:
'lastMonthActual'
,
required
:
true
},
{
field
:
'accumulatePayment'
,
required
:
true
},
{
field
:
'thisPlanNumber'
,
required
:
true
},
{
field
:
'specialFund'
,
required
:
true
},
{
field
:
'governmentFund'
,
required
:
true
},
{
field
:
'banFinancing'
,
required
:
true
},
{
field
:
'ownFund'
,
required
:
true
},
{
field
:
'remark'
,
dynamicRules
:
({
values
})
=>
{
{
field
:
'contrcatName'
,
required
:
true
},
{
field
:
'collectingUnit'
,
required
:
true
},
{
field
:
'contractAmount'
,
required
:
true
},
{
field
:
'paymentLevel'
,
required
:
true
},
{
field
:
'completionValueActual'
,
required
:
true
},
{
field
:
'accumulateCompletionValue'
,
required
:
true
},
{
field
:
'planCompletionValue'
,
required
:
true
},
{
field
:
'lastMonthPlan'
,
required
:
true
},
{
field
:
'lastMonthActual'
,
required
:
true
},
{
field
:
'accumulatePayment'
,
required
:
true
},
{
field
:
'thisPlanNumber'
,
required
:
true
},
{
field
:
'specialFund'
,
required
:
true
},
{
field
:
'governmentFund'
,
required
:
true
},
{
field
:
'banFinancing'
,
required
:
true
},
{
field
:
'ownFund'
,
required
:
true
},
{
field
:
'remark'
,
dynamicRules
:
({
values
})
=>
{
return
values
.
fundGap
?
[{
required
:
true
,
message
:
'说明必填'
}]
:
[];
},}
])
},
},
]);
}
})
});
}
}
console
.
log
(
'moth的值'
,
moth
.
value
);
...
...
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