You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
13 KiB
371 lines
13 KiB
<template>
|
|
<view class="project">
|
|
<view class="cc-header">
|
|
<!-- Tabs栏 -->
|
|
<view class="cc-tabs tabs">
|
|
<view class="tab" :class="{'active': activeTab === 0}" @click="changeTab(0)">
|
|
<view class="tab-text">项目基本信息</view>
|
|
</view>
|
|
<view class="tab" :class="{'active': activeTab === 1}" @click="changeTab(1)">
|
|
<view class="tab-text">资金下达</view>
|
|
</view>
|
|
<view class="tab" :class="{'active': activeTab === 2}" @click="changeTab(2)">
|
|
<view class="tab-text">资金支付</view>
|
|
</view>
|
|
</view>
|
|
<view v-if="activeTab === 1" class="query-part">
|
|
<!-- 搜索框 -->
|
|
<view class="cc-search search-bar">
|
|
<view class="search-box">
|
|
<image src="/static/images/icon/search.png" />
|
|
<input v-model="queryParams.data.sectionName" type="text" @confirm="handleSearchFunsList" placeholder="请输入标段名称" />
|
|
</view>
|
|
</view>
|
|
<!-- 行政区划和项目类型下拉框 -->
|
|
<view class="cc-query-dropdowns dropdowns">
|
|
<picker mode="date" @change="handleBindTimeChange">
|
|
<view class="dropdown">{{ showTimeStr }}<image src="/static/images/icon/down.png" /></view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
<view v-if="activeTab === 2" class="query-part">
|
|
<!-- 搜索框 -->
|
|
<view class="cc-search search-bar">
|
|
<view class="search-box">
|
|
<image src="/static/images/icon/search.png" />
|
|
<input v-model="payQueryParams.data.contractName" type="text" @confirm="handleSearchContractNameList" placeholder="请输入标段名称或合同名称" />
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="tab-content">
|
|
<view v-if="activeTab === 0" class="base-info-box">
|
|
<project-add ref="projectAdd" :operateType="operateType" :projectId="projectId" />
|
|
</view>
|
|
|
|
<!-- 资金下达 -->
|
|
<view v-if="activeTab === 1" class="capital-execute-box">
|
|
<!-- 项目列表 -->
|
|
<view class="cc-project-list project-list">
|
|
<view v-for="(sourceFunds, index) in sourceFundsList" :key="index" class="project-card">
|
|
<view class="attr-item project-title">{{ sourceFunds.sectionName }}</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">下达日期</view>
|
|
<view class="attr-value">{{ sourceFunds.releaseTime }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">下达资金总金额(万元)</view>
|
|
<view class="attr-value">{{ sourceFunds.releaseFunds }}</view>
|
|
</view>
|
|
<view v-if="sourceFunds.isExpand">
|
|
<view class="attr-item">
|
|
<view class="attr-title">中央资金(万元)</view>
|
|
<view class="attr-value">{{ sourceFunds.centralArrangedFunds }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">省级资金(万元)</view>
|
|
<view class="attr-value">{{ sourceFunds.provincialFunding }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">地级市资金(万元)</view>
|
|
<view class="attr-value">{{ sourceFunds.cityLevelFunds }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">县级资金(万元)</view>
|
|
<view class="attr-value">{{ sourceFunds.countyLevelFunds }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">乡镇及群众自筹和其他投资(万元)</view>
|
|
<view class="attr-value">{{ sourceFunds.townshipInvestments }}</view>
|
|
</view>
|
|
</view>
|
|
<view class="expand-btn" @click="handleItemExpand(sourceFunds.isExpand, index)">
|
|
<view v-if="!sourceFunds.isExpand" class="btn">
|
|
展开
|
|
<image src="@/static/images/icon/arrow-down.png" />
|
|
<!-- <uni-icons type="down" size="30" color="red"></uni-icons> -->
|
|
</view>
|
|
<view v-else class="btn no-open">
|
|
收起
|
|
<image src="@/static/images/icon/arrow-down.png" />
|
|
<!-- <uni-icons type="up" size="30"></uni-icons> -->
|
|
</view>
|
|
</view>
|
|
<view class="operate-buttons">
|
|
<view class="buttons-group">
|
|
<view class="primary-button__text button" @click="handleUpdatePassDown(sourceFunds)">修改</view>
|
|
<view class="error-button__text button" @click="handleDeletePassDown(sourceFunds)">删除</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<no-data-view v-if="sourceFundsList.length === 0" :top="marginTop" />
|
|
<uni-load-more v-if="queryParams.pageNum == pages" status="no-more"></uni-load-more>
|
|
</view>
|
|
|
|
<!-- 资金下达 -->
|
|
<view v-if="activeTab === 2" class="capital-pay-box">
|
|
<!-- 项目列表 -->
|
|
<view class="cc-project-list project-list">
|
|
<view v-for="(contract, index) in contractInfoList" :key="index" class="project-card">
|
|
<view class="attr-item project-title">{{ contract.sectionName }}</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">合同名称</view>
|
|
<view class="attr-value">{{ contract.contractName }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">合同工期</view>
|
|
<view class="attr-value">{{ contract.contractDuration }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">开工时间</view>
|
|
<view class="attr-value">{{ contract.commencementTime }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">合同金额(万元)</view>
|
|
<view class="attr-value">{{ contract.contractAmount }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">应付金额(万元)</view>
|
|
<view class="attr-value">{{ contract.payableAmountUnit }}</view>
|
|
</view>
|
|
<view class="attr-item">
|
|
<view class="attr-title">实际金额(万元)</view>
|
|
<view class="attr-value">{{ contract.actualPayment }}</view>
|
|
</view>
|
|
<view class="operate-buttons">
|
|
<view class="buttons-group">
|
|
<view class="primary-button__text button" @click="handlePayment(contract)">资金支付</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<no-data-view v-if="contractInfoList.length === 0" :top="marginTop" />
|
|
<uni-load-more v-if="payQueryParams.pageNum == payPages" status="no-more"></uni-load-more>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 操作按钮 -->
|
|
<view v-if="activeTab === 1" class="cc-operation-buttons operation-buttons">
|
|
<view class="buttons-group">
|
|
<view class="primary-button button" @click="handleAddPassDown()">新增</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import ProjectAdd from '@/components/project-add/project-add.vue'
|
|
import NoDataView from '@/components/no-data-view/no-data-view.vue'
|
|
import { projectInfoApi, projectSourceFundsListApi } from '@/api/system/project'
|
|
import { listInfoByCode } from '@/api/system/contractInfo'
|
|
|
|
export default {
|
|
components: {
|
|
ProjectAdd,
|
|
NoDataView
|
|
},
|
|
data() {
|
|
return {
|
|
// 传递的ID
|
|
id: this.$route.query.id,
|
|
projectId: this.$route.query.id,
|
|
activeTab: 0, // 当前选中的Tab索引
|
|
searchQuery: '', // 搜索框的内容
|
|
selectedDistrict: 0, // 行政区划选择的索引
|
|
selectedProjectType: 0, // 项目类型选择的索引
|
|
districts: ['请选择', '北京市', '上海市', '广州市'], // 行政区划数据
|
|
projectTypes: ['请选择', '建筑', 'IT', '教育'], // 项目类型数据
|
|
projectKindsOptions: [],
|
|
engineeringGradeOptions: [],
|
|
// 工程用途字典
|
|
engineeringPurposesOptions: [],
|
|
// 建设模式字典
|
|
constructionModeOptions: [],
|
|
// 建设性质字典
|
|
constructionNatureOptions: [],
|
|
isMajorProjectOptions: [],
|
|
marginTop: '120',
|
|
projects: [ // 项目列表
|
|
{ name: '项目1', code: 'P001', district: '北京市', type: '建筑', status: 1, isExpand: false },
|
|
{ name: '项目2', code: 'P002', district: '上海市', type: 'IT', status: 0, isExpand: false},
|
|
{ name: '项目3', code: 'P003', district: '广州市', type: '教育', status: 1, isExpand: false},
|
|
{ name: '项目4', code: 'P004', district: '北京市', type: '建筑', status: 1, isExpand: false}
|
|
],
|
|
form: {
|
|
projectName: '',
|
|
region: [],
|
|
projectCode: '',
|
|
projectType: 0,
|
|
legalEntity: '',
|
|
projectLeader: '',
|
|
leaderPhone: '',
|
|
legalRep: ''
|
|
},
|
|
operateType: 'view',
|
|
queryParams: {
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
params: {orderBy: "create_time", sort: "desc"},
|
|
data: {
|
|
proNo: this.$route.query.id,
|
|
sectionName: '',
|
|
releaseTime: ''
|
|
}
|
|
},
|
|
pages: 0,
|
|
showTimeStr: '下达日期',
|
|
sourceFundsList: [],
|
|
|
|
payQueryParams: {
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
params: {orderBy: "create_time", sort: "desc"},
|
|
data: {
|
|
proNo: this.$route.query.id
|
|
},
|
|
ids: null
|
|
},
|
|
contractInfoList: [],
|
|
payPages: 0
|
|
};
|
|
},
|
|
created() {
|
|
// 在这里进行组件初始化的操作
|
|
this.activeTab = Number(this.$route.query.tabNum)
|
|
this.judgeGetList()
|
|
},
|
|
onReachBottom() {
|
|
if (this.queryParams.pageNum < this.pages) {
|
|
this.queryParams.pageNum++ // 页码加1
|
|
this.judgeGetList()
|
|
}
|
|
},
|
|
methods: {
|
|
getProjectInfo() {
|
|
projectInfoApi(this.id).then(res => {
|
|
this.form = res.data
|
|
})
|
|
},
|
|
|
|
changeTab(index) {
|
|
this.activeTab = index
|
|
this.judgeGetList()
|
|
},
|
|
|
|
// 判断获取哪个列表
|
|
judgeGetList() {
|
|
if (this.activeTab === 0) {
|
|
} else if (this.activeTab === 1) {
|
|
this.getSourceFundsList('again')
|
|
} else {
|
|
this.getContractInfoList('again')
|
|
}
|
|
},
|
|
|
|
// 获取资金下达列表
|
|
getSourceFundsList(mode) {
|
|
uni.showLoading({
|
|
title: '加载中...',
|
|
mask: true
|
|
})
|
|
projectSourceFundsListApi(this.queryParams).then(res => {
|
|
if (mode === 'again') {
|
|
this.sourceFundsList = []
|
|
uni.pageScrollTo({
|
|
scrollTop: 0, // 设置滚动到顶部
|
|
duration: 300 // 滚动动画持续时间,单位为毫秒
|
|
})
|
|
}
|
|
res.records.forEach(item => {
|
|
item.isExpand = false
|
|
})
|
|
this.pages = res.pages
|
|
this.sourceFundsList = [...this.sourceFundsList, ...res.records]
|
|
this.pages = res.pages
|
|
uni.hideLoading()
|
|
})
|
|
},
|
|
|
|
// 检索列表
|
|
handleSearchFunsList() {
|
|
this.queryParams.pageNum = 1
|
|
this.getSourceFundsList('again')
|
|
},
|
|
|
|
handleSearchContractNameList() {
|
|
this.queryParams.pageNum = 1
|
|
this.getContractInfoList('again')
|
|
},
|
|
|
|
// 处理下达时间
|
|
handleBindTimeChange(e) {
|
|
this.queryParams.data.releaseTime = this.showTimeStr = e.detail.value
|
|
this.queryParams.pageNum = 1
|
|
this.getSourceFundsList('again')
|
|
},
|
|
|
|
// 获取资金支付列表
|
|
getContractInfoList(mode) {
|
|
uni.showLoading({
|
|
title: '加载中...',
|
|
mask: true
|
|
})
|
|
listInfoByCode(this.payQueryParams).then(res => {
|
|
if (mode === 'again') {
|
|
this.contractInfoList = []
|
|
uni.pageScrollTo({
|
|
scrollTop: 0, // 设置滚动到顶部
|
|
duration: 300 // 滚动动画持续时间,单位为毫秒
|
|
})
|
|
}
|
|
this.contractInfoList = [...this.contractInfoList, ...res.records]
|
|
this.payPages = res.pages
|
|
// this.projects.forEach(projectItem => {
|
|
// projectItem.adcdName = this.formatAdcd(projectItem)
|
|
// projectItem.projectTypeName = this.projectTypeFormat(projectItem)
|
|
// })
|
|
uni.hideLoading()
|
|
})
|
|
},
|
|
|
|
handleItemExpand(isExpand, index) {
|
|
this.sourceFundsList[index].isExpand = !isExpand
|
|
},
|
|
handleAddPassDown() {
|
|
// 跳转到新增项目页面
|
|
this.$tab.navigateTo(`/pages/capital/passdown/edit?id=${this.projectId}`);
|
|
},
|
|
handleDeletePassDown() {},
|
|
handlePayment(contract) {
|
|
// 跳转到资金支付页面
|
|
this.$tab.navigateTo(`/pages/capital/payment/list?id=${this.projectId}&contractId=${contract.id}§ionName=${contract.sectionName}&contractName=${contract.contractName}&contractNumber=${contract.contractNumber}`)
|
|
},
|
|
handleUpdatePassDown(item) {
|
|
this.$tab.navigateTo(`/pages/capital/passdown/edit?id=${this.projectId}§ionId=${item.id}`)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.tab-content {
|
|
// padding: 16px 20px;
|
|
.base-info-box {
|
|
padding: 64px 20px 16px;
|
|
}
|
|
.capital-execute-box {
|
|
padding: 162px 20px 96px;
|
|
.cc-project-list {
|
|
padding: 0;
|
|
}
|
|
}
|
|
.capital-pay-box {
|
|
padding: 114px 20px 96px;
|
|
.cc-project-list {
|
|
padding: 0;
|
|
}
|
|
}
|
|
}
|
|
</style>
|