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.
180 lines
6.2 KiB
180 lines
6.2 KiB
<template>
|
|
<!-- 自定义表单 -->
|
|
<BasicModal
|
|
v-bind="$attrs"
|
|
@register="registerModal"
|
|
title="项目汇总详情"
|
|
width="1700px"
|
|
:showOkBtn="false"
|
|
:showCancelBtn="false"
|
|
>
|
|
<BasicTable @register="registerTable" @fetch-success="fetchSuccess">
|
|
<template #action="{ record }">
|
|
<TableAction :actions="getTableAction(record)" />
|
|
</template>
|
|
<template #toolbar>
|
|
<div class="text-base font-bold">单位:(万元)</div>
|
|
</template>
|
|
<template #headerTop>
|
|
项目当前所处阶段
|
|
<div class="container mx-auto mt-4 mb-4 h-20">
|
|
<div class="grid grid-cols-5 gap-4 h-full">
|
|
<div class="bg-[#1890FF] opacity-100 h-full">
|
|
<div class="grid grid-cols-4 gap-1 h-full">
|
|
<div class="col-span-3 mt-4 ml-4 text-white">项目申报阶段</div>
|
|
<div
|
|
class="col-span-1 flex justify-center items-center text-white text-4xl font-bold"
|
|
>{{ countStage[0].value }}</div
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="bg-[#1890FF] opacity-90 h-full">
|
|
<div class="grid grid-cols-4 gap-1 h-full">
|
|
<div class="col-span-3 mt-4 ml-4 text-white">项目立项阶段</div>
|
|
<div
|
|
class="col-span-1 flex justify-center items-center text-white text-4xl font-bold"
|
|
>{{ countStage[1].value }}</div
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="bg-[#1890FF] opacity-85 h-full">
|
|
<div class="grid grid-cols-4 gap-1 h-full">
|
|
<div class="col-span-3 mt-4 ml-4 text-white">项目采购阶段</div>
|
|
<div
|
|
class="col-span-1 flex justify-center items-center text-white text-4xl font-bold"
|
|
>{{ countStage[2].value }}</div
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="bg-[#1890FF] opacity-80 h-full">
|
|
<div class="grid grid-cols-4 gap-1 h-full">
|
|
<div class="col-span-3 mt-4 ml-4 text-white">项目建设阶段</div>
|
|
<div
|
|
class="col-span-1 flex justify-center items-center text-white text-4xl font-bold"
|
|
>{{ countStage[3].value }}</div
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="bg-[#1890FF] opacity-70 h-full">
|
|
<div class="grid grid-cols-4 gap-1 h-full">
|
|
<div class="col-span-3 mt-4 ml-4 text-white">项目验收阶段</div>
|
|
<div
|
|
class="col-span-1 flex justify-center items-center text-white text-4xl font-bold"
|
|
>{{ countStage[5].value }}</div
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</BasicTable>
|
|
</BasicModal>
|
|
<BasicModal
|
|
@register="registeruploadFile"
|
|
title="查看进度"
|
|
width="1200px"
|
|
:showOkBtn="false"
|
|
:showCancelBtn="false"
|
|
>
|
|
<showtu :res="showtuList" />
|
|
</BasicModal>
|
|
<SetWanCheng @register="registerwancheng"></SetWanCheng>
|
|
|
|
</template>
|
|
<script lang="ts" name="addAndModify" setup>
|
|
import { ref, onMounted } from 'vue';
|
|
import { ActionItem, BasicTable, TableAction, useTable } from '@/components/Table';
|
|
import { useModalInner, BasicModal } from '@/components/Modal';
|
|
import {
|
|
detailColumn,
|
|
searchFormSchemacengji,
|
|
searchFormSchemarenwu,
|
|
} from '@/views/projectSummary/planSummary/planSummary.data';
|
|
import {
|
|
getProjectDetailPage,
|
|
getCountStage,
|
|
} from '@/views/projectSummary/planSummary/planSummary.api';
|
|
import { queryPlanInfoMainTimeline } from '@/views/projectLib/projectPlan/projectPlan.api';
|
|
import showtu from '@/views/projectLib/projectPlan/showtu.vue';
|
|
import { useModal } from '@/components/Modal';
|
|
import { isShowByRoles } from '@/views/projectLib/projectInfo/projectInfo.api';
|
|
import SetWanCheng from './SetWanCheng.vue';
|
|
const [registeruploadFile, { openModal: openPlanFile, closeModal: closePlanFile }] = useModal(); //文件上传和查看
|
|
const [registerwancheng, { openModal }] = useModal();
|
|
let fatherData = ref<any>();
|
|
let showtuList = ref<Array<Object>>();
|
|
|
|
const emit = defineEmits(['close']);
|
|
let pageType = ref<string>('renwu');
|
|
let countStage = ref<any>([
|
|
{ value: 0 },
|
|
{ value: 0 },
|
|
{ value: 0 },
|
|
{ value: 0 },
|
|
{ value: 0 },
|
|
{ value: 0 },
|
|
]);
|
|
const [registerModal, { closeModal }] = useModalInner(init);
|
|
async function init(data) {
|
|
fatherData.value=data;
|
|
pageType.value = data.pageType;
|
|
console.log('pageType', data.pageType);
|
|
if (data.pageType == 'cengji') {
|
|
setProps({ formConfig: { schemas: searchFormSchemacengji } });
|
|
getForm().setFieldsValue(data.form);
|
|
} else {
|
|
setProps({ formConfig: { schemas: searchFormSchemarenwu } });
|
|
getForm().setFieldsValue(data.form);
|
|
}
|
|
// countStage.value=await getCountStage()
|
|
console.log('countStage', countStage.value);
|
|
}
|
|
const [registerTable, { getForm, setProps }] = useTable({
|
|
api: getProjectDetailPage,
|
|
columns: detailColumn,
|
|
showIndexColumn: false,
|
|
useSearchForm: true,
|
|
actionColumn: {
|
|
width: 140,
|
|
title: '操作',
|
|
dataIndex: 'action',
|
|
slots: { customRender: 'action' },
|
|
},
|
|
//表单查询项设置
|
|
formConfig: {
|
|
schemas: searchFormSchemacengji,
|
|
},
|
|
});
|
|
function getTableAction(record): ActionItem[] {
|
|
return [
|
|
{
|
|
label: '查看进度',
|
|
onClick: handlejindu.bind(null, record),
|
|
ifShow: () => {
|
|
if (record.projectStage == '项目申报阶段') {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
},
|
|
},
|
|
];
|
|
}
|
|
async function fetchSuccess() {
|
|
let formdata = await getForm().getFieldsValue();
|
|
countStage.value = await getCountStage(formdata);
|
|
console.log('afterFetch', formdata);
|
|
}
|
|
async function handlejindu(record) {
|
|
showtuList.value = await queryPlanInfoMainTimeline({ projectid: record.id });
|
|
openPlanFile(true);
|
|
}
|
|
function setWancheng() {
|
|
openModal(true,fatherData.value);
|
|
}
|
|
function dialogVisible() {
|
|
closeModal();
|
|
emit('close');
|
|
}
|
|
</script>
|
|
<style></style>
|
|
|