feat: 投资支付功能添加

This commit is contained in:
kun 2023-07-03 11:31:35 +08:00
parent 88b1039620
commit d4b9301358
6 changed files with 452 additions and 63 deletions

View File

@ -68,3 +68,15 @@ export const payGovermentAdd = (params: any) => {
export const paySubItemList = (params: any) => { export const paySubItemList = (params: any) => {
return http.post(BASEURL + `/project/investmentPaymentItem/list`, params); return http.post(BASEURL + `/project/investmentPaymentItem/list`, params);
}; };
// 投资支付子项详细列表(项目端)
export const subItemDetailList = (params: any) => {
return http.post(BASEURL + `/project/investmentPaymentDetail/list`, params);
};
// 投资支付子项列表(政务端)
export const payGovermentSubItemList = (params: any) => {
return http.post(BASEURL + `/gov/investmentPaymentItem/list`, params);
};
// 投资支付子项详细列表(项目端)
export const subGovermentItemDetailList = (params: any) => {
return http.post(BASEURL + `/gov/investmentPaymentDetail/list`, params);
};

View File

@ -646,7 +646,7 @@ const setjindue = () => {
<style scoped lang="scss"> <style scoped lang="scss">
.rigthBottLeft { .rigthBottLeft {
width: 100%; width: 100%;
height: 693px; height: 683px;
background-color: #060f2c; background-color: #060f2c;
border: 1px solid #084b60; border: 1px solid #084b60;
.titlecent { .titlecent {

View File

@ -16,16 +16,17 @@
<div class="scrollTitle"> <div class="scrollTitle">
<div class="item"> <div class="item">
<div class="time">时间</div> <div class="time">时间</div>
<div class="qs">名称</div> <div class="qs">类型</div>
<div class="denjji"> <!-- <div class="denjji">
<div>等级</div> <div>等级</div>
</div> </div> -->
<div class="cent">预警类型</div> <div class="cent">原因</div>
<div class="vaks">预警值</div> <div class="vaks">状态</div>
</div> </div>
</div> </div>
<vue3-seamless-scroll :list="list" class="scroll" :hover="true" :step="0.4" :singleWaitTime="3000" :wheel="true"> <vue3-seamless-scroll :list="list" class="scroll" :hover="true" :step="0.4" :singleWaitTime="3000" :wheel="true">
<div class="item" v-for="(item, index) in list" :key="index"> <div class="item" v-for="(item, index) in list" :key="index">
<div class="time">{{ item.create_time }}</div>
<div class="qs">{{ item.type }}</div> <div class="qs">{{ item.type }}</div>
<div class="cent">{{ item.cause }}</div> <div class="cent">{{ item.cause }}</div>
<!-- <div class="denjji" v-if="item.level == '1'"> <!-- <div class="denjji" v-if="item.level == '1'">
@ -40,7 +41,6 @@
<div style="color: #e51c07">{{ item.level }}</div> <div style="color: #e51c07">{{ item.level }}</div>
<div></div> <div></div>
</div> --> </div> -->
<div class="time">{{ item.create_time }}</div>
<div class="vaks">{{ item.state == 1 ? "已整改" : "待整改" }}</div> <div class="vaks">{{ item.state == 1 ? "已整改" : "待整改" }}</div>
</div> </div>
</vue3-seamless-scroll> </vue3-seamless-scroll>
@ -400,26 +400,28 @@ const settxa = (arr1, arr2) => {
padding: 3px 0; padding: 3px 0;
color: #cfcfcf; color: #cfcfcf;
div { div {
width: 100%; width: 25%;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
div:nth-child(1) { // .time {
width: 110%; // display: flex;
} // justify-content: center;
.time { // }
display: flex; // .qs {
justify-content: center; // display: flex;
} // justify-content: center;
.qs { // }
} // .denjji {
.denjji { // width: 50%;
width: 50%; // }
}
.vaks { // .vaks {
width: 50%; // width: 50%;
} // }
} }
} }
.scrollTitle { .scrollTitle {
@ -439,21 +441,26 @@ const settxa = (arr1, arr2) => {
div { div {
display: flex; display: flex;
justify-content: center; justify-content: center;
width: 100%; width: 25%;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
} }
// div:nth-child(1) { // div:nth-child(1) {
// width: 110%; // width: 110%;
// } // }
.time { // .time {
display: flex; // display: flex;
justify-content: center; // justify-content: center;
} // }
.qs { // .qs {
} // display: flex;
.denjji { // justify-content: center;
width: 50%; // }
} // .denjji {
// width: 50%;
// }
// .vaks { // .vaks {
// width: 50%; // width: 50%;

View File

@ -0,0 +1,304 @@
<template>
<!-- <div class="overview"> -->
<el-dialog class="overview" v-if="visible1" :show-close="false" v-model="visible1" width="90%" @close="visible1 = false">
<template #title>
<div class="title-detail">
<img src="@/assets/images/tableIcon/look.png" alt="" />
<span>查看详情</span>
<el-icon>
<close @click="visible1 = false" />
</el-icon>
</div>
</template>
<div class="detail-table">
<!-- <div class="content-title">整改/复查记录</div> -->
<!-- :span-method="arraySpanMethod" -->
<div class="table">
<el-table
:data="recordData"
class="el-table"
:row-style="{ height: '40px' }"
:header-cell-style="{ textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center', height: '40px' }"
>
<el-table-column prop="id" label="序号"> </el-table-column>
<el-table-column prop="reportContent" label="汇报内容"> </el-table-column>
<el-table-column prop="amount" label="总工程造价(元)"> </el-table-column>
<el-table-column prop="completeAmount" label="本期完成工程造价(元)"> </el-table-column>
<el-table-column prop="lastEndAmount" label="至上期末完成工程造价(元)"> </el-table-column>
<el-table-column prop="nowEndAmount" label="至本期末完成工程造价(元)"> </el-table-column>
<el-table-column prop="scheduleRatio" label="本期完成形象进度(%)"> </el-table-column>
<el-table-column prop="completeScheduleRatio" label="至本期末完成形象进度(%)"> </el-table-column>
<el-table-column align="center" label="操作">
<template #default="scope">
<el-button type="primary" link @click="handleEditItem(scope.row)">
<img src="@/assets/images/tableIcon/updateIcon.png" alt="" class="configureIcon" />
<span>查看</span>
</el-button>
</template>
</el-table-column>
<!-- 表格无数据情况 -->
<template #empty>
<div class="table-empty">
<slot name="empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
</slot>
</div>
</template>
</el-table>
</div>
<div class="operation-btn" v-if="basicData?.state != 4">
<!-- <el-button type="info" style="margin-right: 98px">驳回,请尽快整改</el-button>
<el-button type="primary">整改完成,全部合格</el-button> -->
<!-- <el-button class="btnStyle" type="primary" @click="allSubmit">全部整改完成,提交审核</el-button> -->
</div>
</div>
</el-dialog>
<el-dialog v-model="auditVisible" width="70%">
<div class="sub-table">
<el-table
:data="recordItemData"
class="el-table"
height="100%"
:row-style="{ height: '40px' }"
:header-cell-style="{ textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center', height: '40px' }"
>
<el-table-column prop="id" label="序号"> </el-table-column>
<el-table-column prop="projectName" label="项目名称" />
<el-table-column prop="unit" label="单位" />
<el-table-column label="合同">
<el-table-column prop="contractQuantity" label="工程量"> </el-table-column>
<el-table-column prop="contractUnitPrice" label="单价(元)"> </el-table-column>
<el-table-column prop="contractAmount" label="金额(元)"> </el-table-column>
</el-table-column>
<el-table-column label="至上期末完成">
<el-table-column prop="lastQuantity" label="工程量"> </el-table-column>
<el-table-column prop="lastAmount" label="金额(元)"> </el-table-column>
</el-table-column>
<el-table-column label="本期完成">
<el-table-column prop="nowQuantity" label="工程量"> </el-table-column>
<el-table-column prop="nowAmount" label="金额(元)"> </el-table-column>
</el-table-column>
<el-table-column label="截至本期末累计完成">
<el-table-column prop="endQuantity" label="工程量"> </el-table-column>
<el-table-column prop="endAmount" label="金额(元)"> </el-table-column>
</el-table-column>
<el-table-column prop="remark" label="备注"> </el-table-column>
<!-- 表格无数据情况 -->
<template #empty>
<div class="table-empty">
<slot name="empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
</slot>
</div>
</template>
</el-table>
</div>
</el-dialog>
<!-- </div> -->
</template>
<script lang="ts" setup>
import { onMounted, ref, watch, reactive } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import type { FormInstance, UploadProps } from "element-plus";
import { relativeInfo, timeLineData, submitReform, submitAll } from "@/api/modules/project";
import { payGovermentSubItemList, subGovermentItemDetailList } from "@/api/modules/huizhou";
const baseUrl = import.meta.env.VITE_API_URL;
const props = defineProps({
detailsDialog: Boolean,
relativeId: String
});
const emits = defineEmits(["update:detailsDialog", "confirm"]);
const visible1 = ref(false);
const transformDialog = ref(false); //
const recordData = ref([]); //
const recordItemData = ref([]); //
const recordRowData = ref(); //
const basicData = ref(); //
const reformInfo = ref({
solveBy: "",
solveTime: "",
solveDesc: "",
solveImage: []
});
const getSubItemList = async () => {
const res = await payGovermentSubItemList({ investmentPaymentId: props.relativeId });
if (res) {
recordData.value = res.result;
}
console.log(res, "-------子项数据");
};
const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {
if (rowIndex % 2 === 0) {
if (columnIndex === 0) {
return [1, 8];
}
}
};
//
const handleEditItem = async (row: any) => {
console.log(row);
getSubDetailList(row.id);
auditVisible.value = true;
};
const getSubDetailList = async (id: any) => {
const res = await subGovermentItemDetailList({ itemId: id });
if (res) {
recordItemData.value = res.result;
}
console.log(res, "-------子项详细数据");
};
//
const allSubmit = async () => {
const res = await submitAll({ id: basicData.value.id });
ElMessage.success("提交成功");
};
const auditVisible = ref(false);
// visibleel-dialog
watch(
() => props.detailsDialog,
(n, o) => {
visible1.value = n;
if (n) {
getSubItemList();
} else {
emits("confirm");
}
}
);
// el-dialog@update:visible
watch(visible1, (n, o) => {
emits("update:detailsDialog", n);
});
onMounted(() => {});
</script>
<style lang="scss" scoped>
@mixin fullwidth {
width: -webkit-fill-available;
width: -moz-available;
width: stretch;
}
@mixin flex {
display: flex;
align-items: center;
}
@mixin title {
font-size: 16px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: var(--el-menu-text-color);
border-left: 2px solid #008bff;
padding-left: 5px;
}
.overview {
// background-color: #fff;
:deep(.el-dialog) {
position: relative;
background-color: rgba(9, 64, 95, 0.85);
}
.title-detail {
@include flex;
> img {
width: 16px;
height: 18px;
}
> span {
font-size: 18px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: var(--el-menu-text-color);
margin-left: 5px;
margin-right: auto;
}
:deep(.el-icon) {
cursor: pointer;
color: #a8abb2;
}
}
.detail-table {
height: 391px;
margin-top: 20px;
.content-title {
@include title;
}
.table {
height: 310px;
margin-top: 20px;
:deep(.el-table) {
height: 100%;
}
}
.operation-btn {
display: flex;
align-items: center;
justify-content: center;
margin-top: 20px;
}
}
}
.sub-table {
height: 391px;
}
.test :deep(.el-input__wrapper) {
box-shadow: 0 0 0 0;
}
.test :deep(.el-input__inner) {
text-align: center;
}
:deep(.el-table__empty-text) {
min-height: 200px;
display: flex;
justify-content: center;
align-items: center;
}
:deep() {
td.el-table__cell {
background-color: transparent !important;
border-bottom: 0 !important;
color: var(--el-menu-text-color);
font-size: 16px !important;
border-right: 2px solid #252526;
}
th.el-table__cell {
background-color: transparent;
border-bottom: 0 !important;
border-right: 2px solid #252526;
}
.el-table__inner-wrapper::before {
height: 0px;
}
.el-table--border::before {
width: 0px;
}
.el-table--border .el-table__inner-wrapper::after {
height: 0px;
}
.el-table--border::after {
width: 0px;
}
.el-table__border-left-patch {
width: 0;
}
}
</style>

View File

@ -43,12 +43,12 @@
:isShowSearch="false" :isShowSearch="false"
> >
<template #formButton="scope"> <template #formButton="scope">
<el-button class="btnStyle" @click="handleAddItem()">新增</el-button> <!-- <el-button class="btnStyle" @click="handleAddItem()">新增</el-button> -->
<!-- <el-button class="btnStyle">刷新</el-button> --> <!-- <el-button class="btnStyle">刷新</el-button> -->
</template> </template>
<!-- 表格操作 --> <!-- 表格操作 -->
<template #operation="scope"> <template #operation="{ row }">
<el-button class="btnStyle" type="primary"> <el-button class="btnStyle" type="primary" @click="handleItemDetail(2, row)">
<!-- <img src="@/assets/images/tableIcon/configureIcon.png" alt="" class="configureIcon" /> --> <!-- <img src="@/assets/images/tableIcon/configureIcon.png" alt="" class="configureIcon" /> -->
<span>查看</span> <span>查看</span>
</el-button> </el-button>
@ -65,6 +65,8 @@
> >
</DialogForm> </DialogForm>
</div> </div>
<!-- 投资支付详情 -->
<transformInfo v-model:detailsDialog="detailsDialog" :relativeId="relativeId"></transformInfo>
</div> </div>
</div> </div>
</template> </template>
@ -78,6 +80,7 @@ import {
addAIrecords, addAIrecords,
getAiMonitorDev getAiMonitorDev
} from "@/api/modules/goverment"; } from "@/api/modules/goverment";
import transformInfo from "./components/transformInfo.vue";
import { videoList, videoDataAdd, videoDataEdit, videoDataDelete } from "@/api/modules/enterpriseApi"; import { videoList, videoDataAdd, videoDataEdit, videoDataDelete } from "@/api/modules/enterpriseApi";
import Pagination from "@/components/ProTable/components/Pagination.vue"; import Pagination from "@/components/ProTable/components/Pagination.vue";
import { ElMessage, UploadProps } from "element-plus"; import { ElMessage, UploadProps } from "element-plus";
@ -93,6 +96,9 @@ import DialogForm from "@/components/DialogForm/index.vue";
import { ColumnProps } from "@/components/ProTable/interface"; import { ColumnProps } from "@/components/ProTable/interface";
import { getRealTimePage } from "@/api/modules/project"; import { getRealTimePage } from "@/api/modules/project";
import { payGovermentList, payGovermentAdd } from "@/api/modules/huizhou"; import { payGovermentList, payGovermentAdd } from "@/api/modules/huizhou";
const detailsDialog = ref(false);
const relativeId = ref("");
const pages = ref({ const pages = ref({
pageNo: 1, pageNo: 1,
pageSize: 7, pageSize: 7,
@ -244,6 +250,18 @@ const form = ref({
const proTable = ref(); const proTable = ref();
// snsn // snsn
const searchSn = ref(""); const searchSn = ref("");
const handleItemDetail = (index: number, row: any) => {
console.log(row);
// if (index === 1) {
// title.value = "";
// formData.value = reactive({});
// } else {
// title.value = "";
// formData.value = reactive({ ...row });
// }
relativeId.value = row.id;
detailsDialog.value = true;
};
// //
const handleAddItem = () => { const handleAddItem = () => {
formData.value = reactive({ formData.value = reactive({

View File

@ -37,6 +37,15 @@
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
<!-- 表格无数据情况 -->
<template #empty>
<div class="table-empty">
<slot name="empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
</slot>
</div>
</template>
</el-table> </el-table>
</div> </div>
<div class="operation-btn" v-if="basicData?.state != 4"> <div class="operation-btn" v-if="basicData?.state != 4">
@ -46,43 +55,46 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog v-model="auditVisible" :append-to-body="true"> <el-dialog v-model="auditVisible" width="70%">
<div class="table"> <div class="sub-table">
<el-table <el-table
:data="recordItemData" :data="recordItemData"
class="el-table" class="el-table"
height="100%"
:row-style="{ height: '40px' }" :row-style="{ height: '40px' }"
:header-cell-style="{ textAlign: 'center', height: '40px' }" :header-cell-style="{ textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center', height: '40px' }" :cell-style="{ textAlign: 'center', height: '40px' }"
> >
<el-table-column prop="createByName" label="项目名称" /> <el-table-column prop="id" label="序号"> </el-table-column>
<el-table-column prop="questionDesc" label="单位" /> <el-table-column prop="projectName" label="项目名称" />
<el-table-column prop="unit" label="单位" />
<el-table-column label="合同"> <el-table-column label="合同">
<el-table-column prop="province" label="工程量" width="120"> </el-table-column> <el-table-column prop="contractQuantity" label="工程量"> </el-table-column>
<el-table-column prop="city" label="单价(元)" width="120"> </el-table-column> <el-table-column prop="contractUnitPrice" label="单价(元)"> </el-table-column>
<el-table-column prop="address" label="金额(元)"> </el-table-column> <el-table-column prop="contractAmount" label="金额(元)"> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="至上期末完成"> <el-table-column label="至上期末完成">
<el-table-column prop="province" label="工程量" width="120"> </el-table-column> <el-table-column prop="lastQuantity" label="工程量"> </el-table-column>
<el-table-column prop="address" label="金额(元)"> </el-table-column> <el-table-column prop="lastAmount" label="金额(元)"> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="本期完成"> <el-table-column label="本期完成">
<el-table-column prop="province" label="工程量" width="120"> </el-table-column> <el-table-column prop="nowQuantity" label="工程量"> </el-table-column>
<el-table-column prop="address" label="金额(元)"> </el-table-column> <el-table-column prop="nowAmount" label="金额(元)"> </el-table-column>
</el-table-column> </el-table-column>
<el-table-column label="截至本期末累计完成"> <el-table-column label="截至本期末累计完成">
<el-table-column prop="province" label="工程量" width="120"> </el-table-column> <el-table-column prop="endQuantity" label="工程量"> </el-table-column>
<el-table-column prop="address" label="金额(元)"> </el-table-column> <el-table-column prop="endAmount" label="金额(元)"> </el-table-column>
</el-table-column>
<el-table-column prop="state" label="备注"> </el-table-column>
<el-table-column align="center" width="300" label="操作">
<template #default="scope">
<el-button type="primary" link @click="handleEditItem(scope.row)">
<img src="@/assets/images/tableIcon/updateIcon.png" alt="" class="configureIcon" />
<span>查看</span>
</el-button>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="remark" label="备注"> </el-table-column>
<!-- 表格无数据情况 -->
<template #empty>
<div class="table-empty">
<slot name="empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
</slot>
</div>
</template>
</el-table> </el-table>
</div> </div>
</el-dialog> </el-dialog>
@ -94,7 +106,7 @@ import { onMounted, ref, watch, reactive } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import type { FormInstance, UploadProps } from "element-plus"; import type { FormInstance, UploadProps } from "element-plus";
import { relativeInfo, timeLineData, submitReform, submitAll } from "@/api/modules/project"; import { relativeInfo, timeLineData, submitReform, submitAll } from "@/api/modules/project";
import { paySubItemList } from "@/api/modules/huizhou"; import { paySubItemList, subItemDetailList } from "@/api/modules/huizhou";
const baseUrl = import.meta.env.VITE_API_URL; const baseUrl = import.meta.env.VITE_API_URL;
const props = defineProps({ const props = defineProps({
detailsDialog: Boolean, detailsDialog: Boolean,
@ -130,8 +142,16 @@ const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {
// //
const handleEditItem = async (row: any) => { const handleEditItem = async (row: any) => {
console.log(row); console.log(row);
getSubDetailList(row.id);
auditVisible.value = true; auditVisible.value = true;
}; };
const getSubDetailList = async (id: any) => {
const res = await subItemDetailList({ itemId: id });
if (res) {
recordItemData.value = res.result;
}
console.log(res, "-------子项详细数据");
};
// //
const allSubmit = async () => { const allSubmit = async () => {
const res = await submitAll({ id: basicData.value.id }); const res = await submitAll({ id: basicData.value.id });
@ -233,10 +253,9 @@ onMounted(() => {});
margin-top: 20px; margin-top: 20px;
} }
} }
}
.audit-title { .sub-table {
border-left: 2px solid #0f81ff !important; height: 391px;
}
} }
.test :deep(.el-input__wrapper) { .test :deep(.el-input__wrapper) {
@ -253,4 +272,33 @@ onMounted(() => {});
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
:deep() {
td.el-table__cell {
background-color: transparent !important;
border-bottom: 0 !important;
color: var(--el-menu-text-color);
font-size: 16px !important;
border-right: 2px solid #252526;
}
th.el-table__cell {
background-color: transparent;
border-bottom: 0 !important;
border-right: 2px solid #252526;
}
.el-table__inner-wrapper::before {
height: 0px;
}
.el-table--border::before {
width: 0px;
}
.el-table--border .el-table__inner-wrapper::after {
height: 0px;
}
.el-table--border::after {
width: 0px;
}
.el-table__border-left-patch {
width: 0;
}
}
</style> </style>