Commit af9dddcd authored by 张伯涛's avatar 张伯涛

结算管理和变更签证管理详情页

parent 64c15153
import { ProjectParams, ProjectListGetResultModel, ProjectModel } from '@/api/project/model/projectModel';
import {
ProjectParams,
ProjectListGetResultModel,
ProjectModel,
} from '@/api/project/model/projectModel';
import { defHttp } from '@/utils/http/axios';
enum Api {
//分页查询变更记录
GetList = '/pro/change-visa/page',
//根据id查询详情
GetDetail = '/pro/change-visa/find-byid',
//新增
Add = '/pro/change-visa/add',
//修改
Update = '/pro/change-visa/update',
//删除 一个、
DeleteOne = '/pro/change-visa/del-id',
// http://58.223.177.48:8088/pro/change-visa/del-id
//分页查询变更记录
GetList = '/pro/change-visa/page',
changeSignatureGetList = 'pro/reportCenter/change-visa/list',
//根据id查询详情
GetDetail = '/pro/change-visa/find-byid',
//新增
Add = '/pro/change-visa/add',
//修改
Update = '/pro/change-visa/update',
//删除 一个、
DeleteOne = '/pro/change-visa/del-id',
// http://58.223.177.48:8088/pro/change-visa/del-id
//审核
Audit = '/pro/change-visa/byId-examine',
//http://58.223.177.48:8088/pro/change-visa/byId-examine
//批量删除
DeleteList = '/pro/change-visa/delete-id',
//审核
Audit = '/pro/change-visa/byId-examine',
//http://58.223.177.48:8088/pro/change-visa/byId-examine
//批量删除
DeleteList = '/pro/change-visa/delete-id',
// 判断季度选是否已存在
CheckQuarter = '/pro/change-visa/is-change',
CheckQuarter = '/pro/change-visa/is-change',
}
export const getSettlementManageList = (params?: ProjectParams) =>
defHttp.post<ProjectModel>({ url: Api.GetList, data: params });
defHttp.post<ProjectModel>({ url: Api.GetList, data: params });
export const getChangeSignatureList = (params?: ProjectParams) =>
defHttp.post<ProjectModel>({ url: Api.changeSignatureGetList, data: params });
// 根据id 查询详情
export const getItem = (params?: any) =>
defHttp.get<ProjectModel>({
url: Api.GetDetail,
params,
});
defHttp.get<ProjectModel>({
url: Api.GetDetail,
params,
});
/**
* @description: 新增
*/
export const addItem = (params?: any) =>
defHttp.post<ProjectModel>({
url: Api.Add,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
defHttp.post<ProjectModel>({
url: Api.Add,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
/**
* @description: 修改
*/
export const updateItem = (params?: any) => {
return defHttp.put<ProjectModel>({
url: Api.Update,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
return defHttp.put<ProjectModel>({
url: Api.Update,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
};
//审核接口
export const auditItem = (params?: any) =>
defHttp.get<ProjectModel>(
{
url: Api.Audit,
params,
});
defHttp.get<ProjectModel>({
url: Api.Audit,
params,
});
/**
* 批量删除
*/
export const deleteList = (params?: any) =>
defHttp.delete<ProjectModel>(
{
url: Api.DeleteList,
params,
});
defHttp.delete<ProjectModel>({
url: Api.DeleteList,
params,
});
/**
* 删除一个
*/
export const deleteOne = (params?: any) =>
defHttp.delete<ProjectModel>(
{
url: Api.DeleteOne,
params,
});
defHttp.delete<ProjectModel>({
url: Api.DeleteOne,
params,
});
export const checkQuarter = (params?: any) =>
defHttp.get<ProjectModel>(
{
url: Api.CheckQuarter,
params,
});
defHttp.get<ProjectModel>({
url: Api.CheckQuarter,
params,
});
<template>
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record, index }">
<template v-if="column.key === 'serialNumber'">
{{ index + 1 }}
</template>
<template v-if="column.key === 'tenderYear'">
{{ record.tenderYear + '年' + record.biddingQuarter + '季度' }}
</template>
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '查看详情',
onClick: handleDetail.bind(null, record, 1),
ifShow: (_action) => {
return record.completionResult == '1';
<div>
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record, index }">
<template v-if="column.key === 'serialNumber'">
{{ index + 1 }}
</template>
<template v-if="column.key === 'tenderYear'">
{{ record.tenderYear + '年' + record.biddingQuarter + '季度' }}
</template>
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '查看详情',
onClick: handleDetail.bind(null, record, true),
},
},
]"
/>
]"
/>
</template>
</template>
</template>
</BasicTable>
</BasicTable>
<change-signature-drawer @register="registerDrawer" @success="handleSuccess" />
</div>
</template>
<script lang="ts" setup>
import { changeSignatureColumns, searchFormSchema } from './data';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { getSettlementManageList } from '@/api/changeSignatrue/changeSignatrue';
import { getChangeSignatureList } from '@/api/changeSignatrue/changeSignatrue';
import { inject } from 'vue';
import { router } from '@/router';
import { Tag } from 'ant-design-vue';
import { useDrawer } from '@/components/Drawer';
import ChangeSignatureDrawer from '@/views/project/tabs/drawer/changeSignatureDrawer.vue';
const [registerDrawer, { openDrawer }] = useDrawer();
let detailId = inject('detailId');
console.log('detailId', detailId);
const [registerTable, { reload }] = useTable({
api: getSettlementManageList,
api: getChangeSignatureList,
columns: changeSignatureColumns,
formConfig: {
labelWidth: 120,
......@@ -54,13 +59,11 @@
fixed: undefined,
},
});
function handleDetail(record: Recordable, disabled: number) {
router.push({
path: '/changeSignature/edit',
query: {
id: record.id,
disabled: String(disabled),
},
async function handleDetail(record: Recordable, disabled: boolean) {
openDrawer(true, {
record,
isUpdate: true,
disabled,
});
}
</script>
......@@ -755,7 +755,7 @@ export const settlementManagementColumns = [
},
{
title: '立项投资额(万元)',
dataIndex: 'uniqueProjectCount',
dataIndex: 'projectInvestment',
width: 140,
},
{
......@@ -765,7 +765,7 @@ export const settlementManagementColumns = [
},
{
title: '招标方式',
dataIndex: 'updateBy',
dataIndex: 'biddingMethod',
width: 140,
},
{
......@@ -825,7 +825,7 @@ export const settlementManagementColumns = [
},
{
title: '结算审定金额(元)',
dataIndex: 'auditTime',
dataIndex: 'sumOfMoney',
width: 140,
},
{
......@@ -840,7 +840,7 @@ export const settlementManagementColumns = [
},
{
title: '备注',
dataIndex: 'auditTime',
dataIndex: 'remark',
width: 140,
},
];
......@@ -852,63 +852,58 @@ export const changeSignatureColumns = [
width: 200,
},
{
title: '项目数量',
dataIndex: 'uniqueProjectCount',
width: 180,
},
{
title: '合同名称',
dataIndex: 'companyName',
title: '项合同名称',
dataIndex: 'contractName',
width: 180,
},
{
title: '合同金额',
dataIndex: 'updateBy',
dataIndex: 'contractAmount',
width: 180,
},
{
title: '合同累计签证、变更金额(含本次)(元)',
dataIndex: 'updateTime',
dataIndex: 'changeAmount',
width: 180,
},
{
title: '累计变更签证金额占合同金额比例',
dataIndex: 'status',
dataIndex: 'amountRatio',
width: 180,
},
{
title: '变更编号',
dataIndex: 'auditor',
dataIndex: 'changeNumber',
width: 180,
},
{
title: '变更类型',
dataIndex: 'auditTime',
dataIndex: 'changeType',
width: 180,
},
{
title: '责任方',
dataIndex: 'auditTime',
dataIndex: 'responsibleParty',
width: 180,
},
{
title: '变更内容',
dataIndex: 'auditTime',
dataIndex: 'changeContent',
width: 180,
},
{
title: '预估变更金额(元)',
dataIndex: 'auditTime',
dataIndex: 'visaAmount',
width: 180,
},
{
title: '预估变更金额占合同金额比例',
dataIndex: 'auditTime',
dataIndex: 'contractValueRatio',
width: 180,
},
{
title: '签证编号',
dataIndex: 'auditTime',
dataIndex: 'visaNumber',
width: 180,
},
];
......
<template>
<BasicDrawer
v-bind="$attrs"
@register="registerDrawer"
showFooter
:title="getTitle"
width="700px"
@ok="handleSubmit"
>
<BasicForm ref="formElRef" @register="registerForm" />
</BasicDrawer>
</template>
<script lang="ts" setup>
import { onMounted, ref, unref } from 'vue';
import { BasicForm, useForm, FormActionType } from '@/components/Form';
import { changeSignatureDrawer } from '../drawer/drawerData';
import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
const isUpdate = ref(true);
const formElRef = ref<Nullable<FormActionType>>(null);
const [registerForm, { resetFields, setFieldsValue }] = useForm({
labelWidth: 90,
baseColProps: { span: 24 },
schemas: changeSignatureDrawer,
showActionButtonGroup: false,
});
onMounted(async () => {});
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
resetFields();
setDrawerProps({ confirmLoading: false });
if (data.disabled == true) {
getTitle.value = '查看变更签证管理';
const formEl = unref(formElRef);
if (!formEl) return;
await formEl.setProps({
disabled: true,
});
}
if (unref(isUpdate)) {
setFieldsValue({
...data.record,
});
}
});
const getTitle = ref('');
async function handleSubmit() {
closeDrawer();
}
</script>
import { FormSchema } from '@/components/Table';
//结算管理详情抽屉
export const settlementDrawer: FormSchema[] = [
{
label: '填报周期',
field: 'yearQuarter',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '立项投资额(万元)',
field: 'projectInvestment',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '资金来源',
field: 'fundingSource',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '招标方式',
field: 'biddingMethod',
labelWidth: '140px',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '建委招标',
value: '1',
},
{
label: '平台招标',
value: '2',
},
{
label: '邀标比选',
value: '3',
},
{
label: '直接委托',
value: '4',
},
{
label: '评分定离',
value: '5',
},
],
},
},
{
label: '合同类型',
field: 'contracYpe',
labelWidth: '140px',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '施工',
value: '1',
},
{
label: '监理',
value: '2',
},
{
label: '设计',
value: '3',
},
{
label: '图审',
value: '4',
},
],
},
},
{
label: '合同名称',
field: 'contractName',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '甲方单位名称',
field: 'firstPartyName',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '乙方单位名称',
field: 'secondPartyName',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '合同形式',
field: 'formOfContract',
labelWidth: '140px',
required: true,
component: 'Select',
componentProps: {
options: [
{
label: '固定总价',
value: '1',
},
{
label: '固定单价',
value: '2',
},
{
label: '费率',
value: '3',
},
{
label: '其他',
value: '4',
},
],
},
},
{
label: '合同签订时间',
field: 'contractSigningTime',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '竣工时间',
field: 'closingTime',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '结算完成时间',
field: 'closingTimeDatetime',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '合同金额(元)',
field: 'contractAmount',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '签证、变更金额(元)',
field: 'submittedForSettlement',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '结算报送金额(元)',
field: 'superContractScale',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '结算审定金额(元)',
field: 'sumOfMoney',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '结算审核金额超合同额比例',
field: 'proportionContractAmount',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '会议纪要',
field: 'meetingMinutes',
labelWidth: '140px',
required: true,
component: 'Input',
},
{
label: '备注',
field: 'remark',
labelWidth: '140px',
required: true,
component: 'Input',
},
];
//变更签证管理详情抽屉
export const changeSignatureDrawer: FormSchema[] = [
{
label: '填报周期',
field: 'yearQuarter',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '项合同名称',
field: 'contractName',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '合同金额',
field: 'contractAmount',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '合同累计签证、变更金额(含本次)(元)',
field: 'changeAmount',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '累计变更签证金额占合同金额比例',
field: 'amountRatio',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '变更编号',
field: 'changeNumber',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '变更类型',
field: 'changeType',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '责任方',
field: 'responsibleParty',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '变更内容',
field: 'changeContent',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '预估变更金额(元)',
field: 'visaAmount',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '预估变更金额占合同金额比例',
field: 'contractValueRatio',
labelWidth: '280px',
required: true,
component: 'Input',
},
{
label: '签证编号',
field: 'visaNumber',
labelWidth: '280px',
required: true,
component: 'Input',
},
];
<template>
<BasicDrawer
v-bind="$attrs"
@register="registerDrawer"
showFooter
:title="getTitle"
width="700px"
@ok="handleSubmit"
>
<BasicForm ref="formElRef" @register="registerForm" />
</BasicDrawer>
</template>
<script lang="ts" setup>
import { onMounted, ref, unref } from 'vue';
import { BasicForm, useForm, FormActionType } from '@/components/Form';
import { settlementDrawer } from '../drawer/drawerData';
import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
const isUpdate = ref(true);
const formElRef = ref<Nullable<FormActionType>>(null);
const [registerForm, { resetFields, setFieldsValue }] = useForm({
labelWidth: 90,
baseColProps: { span: 24 },
schemas: settlementDrawer,
showActionButtonGroup: false,
});
onMounted(async () => {});
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
resetFields();
setDrawerProps({ confirmLoading: false });
if (data.disabled == true) {
getTitle.value = '查看结算管理';
const formEl = unref(formElRef);
if (!formEl) return;
await formEl.setProps({
disabled: true,
});
}
if (unref(isUpdate)) {
setFieldsValue({
...data.record,
});
}
});
const getTitle = ref('');
async function handleSubmit() {
closeDrawer();
}
</script>
<!--结算管理-->
<template>
<div>
<BasicTable @register="registerTable">
<template #bodyCell="{ column, record, index }">
<template v-if="column.key === 'serialNumber'">
......@@ -13,18 +14,19 @@
:actions="[
{
label: '查看详情',
onClick: handleDetail.bind(null, record, 1),
ifShow: (_action) => {
return record.completionResult == '1';
},
onClick: handleDetail.bind(null, record, true),
},
]"
/>
</template>
</template>
</BasicTable>
<settlement-drawer @register="registerDrawer" @success="handleSuccess"></settlement-drawer>
</div>
</template>
<script lang="ts" setup>
import {useDrawer} from "@/components/Drawer";
import SettlementDrawer from "@/views/project/tabs/drawer/settlementDrawer.vue";
import { settlementManagementColumns, searchFormSchema } from './data';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { getSettlementManageList } from '@/api/project/settlementManage';
......@@ -33,6 +35,7 @@
import { Tag } from 'ant-design-vue';
let detailId = inject('detailId');
console.log('detailId', detailId);
const [registerDrawer, { openDrawer }] = useDrawer();
const [registerTable, { reload }] = useTable({
api: getSettlementManageList,
columns: settlementManagementColumns,
......@@ -55,13 +58,11 @@
fixed: undefined,
},
});
function handleDetail(record: Recordable, disabled: number) {
router.push({
path: '/settlementManagement/edit',
query: {
id: record.id,
disabled: String(disabled),
},
async function handleDetail(record: Recordable, disabled: boolean) {
openDrawer(true, {
record,
isUpdate: true,
disabled,
});
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment