|
|
@@ -1,28 +1,35 @@
|
|
|
<template>
|
|
|
<CommonTable ref="commonTableRef" :tableOptions="tableConfig"> </CommonTable>
|
|
|
+ <CompositionCost ref="CompositionCostRef"></CompositionCost>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="jsx">
|
|
|
- import { ref } from 'vue';
|
|
|
+ import { ref, onMounted } from 'vue';
|
|
|
import { useRouter } from 'vue-router';
|
|
|
import { TABLE_ID_CONST } from '/@/constants/support/table-id-const';
|
|
|
import useDict from '/@/utils/dict-util';
|
|
|
+ import CompositionCost from './components/compositionCost.vue';
|
|
|
+ import { reportApi } from '/@/api/project/report-api';
|
|
|
+
|
|
|
await useDict.init(['MATE_DELIVERY_STATUS']);
|
|
|
|
|
|
const commonTableRef = ref(null);
|
|
|
+ const CompositionCostRef = ref();
|
|
|
+ const summaryList = ref(null);
|
|
|
+ const router = useRouter();
|
|
|
+
|
|
|
const tableConfig = ref({
|
|
|
url: '/supports/delivery/day/report/summary/list',
|
|
|
// 设置网络请求方式为GET
|
|
|
requestMethod: 'GET',
|
|
|
- scroll: { x: 'true' },
|
|
|
- tableId: TABLE_ID_CONST.TEAMWORK.PROJECT_MANAGE.Task_LIST,
|
|
|
- tableAttrs: {},
|
|
|
+ scroll: { x: 1200 },
|
|
|
+ // tableId: TABLE_ID_CONST.TEAMWORK.PROJECT_MANAGE.Task_LIST,
|
|
|
showIndexColumn: true,
|
|
|
search: [
|
|
|
{
|
|
|
label: '提报日期',
|
|
|
field: 'submitDate',
|
|
|
- type: 'date',
|
|
|
+ type: 'dateMonth',
|
|
|
},
|
|
|
],
|
|
|
columns: [
|
|
|
@@ -30,41 +37,42 @@
|
|
|
title: '星期',
|
|
|
dataIndex: 'weekCn',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 80,
|
|
|
},
|
|
|
{
|
|
|
title: '提报日期',
|
|
|
dataIndex: 'submitDate',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 120,
|
|
|
},
|
|
|
{
|
|
|
title: '总工时',
|
|
|
dataIndex: 'totalWorkDays',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 80,
|
|
|
},
|
|
|
{
|
|
|
title: '任务类工时',
|
|
|
dataIndex: 'normalSubmitDays',
|
|
|
align: 'center',
|
|
|
- width: '90px',
|
|
|
+ width: 90,
|
|
|
},
|
|
|
{
|
|
|
title: '非任务类工时',
|
|
|
dataIndex: 'abnormalSubmitDays',
|
|
|
align: 'center',
|
|
|
- width: '90px',
|
|
|
+ width: 120,
|
|
|
},
|
|
|
{
|
|
|
title: '驻场人数',
|
|
|
dataIndex: 'siteCount',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 80,
|
|
|
},
|
|
|
{
|
|
|
title: '驻场情况',
|
|
|
dataIndex: 'residentSituation',
|
|
|
+ align: 'center',
|
|
|
width: 300,
|
|
|
ellipsis: true,
|
|
|
},
|
|
|
@@ -72,40 +80,127 @@
|
|
|
title: '提报人数',
|
|
|
dataIndex: 'submitCount',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 80,
|
|
|
},
|
|
|
{
|
|
|
title: '在岗人数',
|
|
|
dataIndex: 'dutyCount',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 80,
|
|
|
},
|
|
|
{
|
|
|
title: '请假情况',
|
|
|
dataIndex: 'leaveSituation',
|
|
|
align: 'center',
|
|
|
- width: '100px',
|
|
|
+ width: '140px',
|
|
|
},
|
|
|
{
|
|
|
title: '需提报人数',
|
|
|
dataIndex: 'requireSubmitCount',
|
|
|
align: 'center',
|
|
|
- width: '80px',
|
|
|
+ width: 110,
|
|
|
},
|
|
|
{
|
|
|
title: '未提报人员',
|
|
|
dataIndex: 'unSubmitStaff',
|
|
|
align: 'center',
|
|
|
width: '100px',
|
|
|
+ ellipsis: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ dataIndex: 'action',
|
|
|
+ fixed: 'right',
|
|
|
+ align: 'center',
|
|
|
+ width: 150,
|
|
|
+ customRender: ({ text, record, index, column }) => {
|
|
|
+ return (
|
|
|
+ <div class='smart-table-operate'>
|
|
|
+ <a-button type='link' onClick={() => CompositionCostRef.value.showModal(record)}>
|
|
|
+ 成本构成
|
|
|
+ </a-button>
|
|
|
+ <a-button
|
|
|
+ type='link'
|
|
|
+ onClick={() =>
|
|
|
+ router.push({
|
|
|
+ path: '/project/report-manage/person-rank',
|
|
|
+ query: {
|
|
|
+ date: record.submitDate,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ }
|
|
|
+ >
|
|
|
+ 人员排名
|
|
|
+ </a-button>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ },
|
|
|
},
|
|
|
],
|
|
|
+ renderTopSlot() {
|
|
|
+ return (
|
|
|
+ <div style={{ display: 'flex' }}>
|
|
|
+ <div style={{ display: 'flex', alignItems: 'center' }}>
|
|
|
+ <div>
|
|
|
+ <span>薪资成本:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#318586' }}>¥{summaryList.value?.salaryCost || 0}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>驻场补贴:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#00569b' }}>¥{summaryList.value?.residentFixedSubsidy || 0}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>办公场所租金:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#00569b' }}>¥{summaryList.value?.rent || 0}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>费用报销:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#ffad2a' }}>¥{summaryList.value?.costExpense || 0}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>杰成类预计产值:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#2B69F8' }}>¥{summaryList.value?.jecnExpectOutput}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>奥哲类预计产值:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#2B69F8' }}>¥{summaryList.value?.authineExpectOutput}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>船务类预计产值:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#2B69F8' }}>¥{summaryList.value?.seaconExpectOutput}</span>
|
|
|
+ </div>
|
|
|
+ <span style={{ margin: '0 10px' }}> | </span>
|
|
|
+ <div>
|
|
|
+ <span>预计利润:</span>
|
|
|
+ <span style={{ fontWeight: 'bold', color: '#69b259' }}>¥{summaryList.value?.profitAmount}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ },
|
|
|
beforeFetch({ params }) {
|
|
|
+ querySummaryInfo(params.submitDate);
|
|
|
return {
|
|
|
...params,
|
|
|
};
|
|
|
},
|
|
|
- // afterFetch({ data }) {},
|
|
|
+ // afterFetch(data) {},
|
|
|
});
|
|
|
+ onMounted(() => {
|
|
|
+ querySummaryInfo();
|
|
|
+ });
|
|
|
+ function querySummaryInfo(data = '') {
|
|
|
+ reportApi.querySummaryInfo(data).then((res) => {
|
|
|
+ summaryList.value = res.data;
|
|
|
+ console.log('summaryList', summaryList);
|
|
|
+ });
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
@@ -117,7 +212,7 @@
|
|
|
height: 27px !important;
|
|
|
font-size: 11px !important;
|
|
|
}
|
|
|
- :deep(.ant-table-column[data-key='index']) {
|
|
|
- width: 60px !important;
|
|
|
- }
|
|
|
+ // :deep(.ant-table-column[data-key='index']) {
|
|
|
+ // width: 60px !important;
|
|
|
+ // }
|
|
|
</style>
|