This commit is contained in:
zmj 2024-01-15 00:51:03 +08:00
parent dce022f174
commit be9fefb9dc
15 changed files with 3190 additions and 1035 deletions

View File

@ -1,118 +1,116 @@
<template>
<div class="flex pl-4 app-tabs bg-body">
<div class="flex-1 min-w-0 menu">
<div
v-for="(item,index) in tabsLists"
class="tab-pan"
:class="{act:(currentRoute==item.path)}"
>
<span v-show="currentRoute==item.path" class="dot"></span>
<span @click="handleChanges(item.fullPath)">{{ item.title }}</span>
<el-icon @click="delTab(item.fullPath)">
<Close />
</el-icon>
</div>
<div class="flex pl-4 app-tabs bg-body">
<div class="flex-1 min-w-0 menu">
<div v-for="(item, index) in tabsLists" class="tab-pan" :class="{ act: (currentRoute == item.path) }">
<span v-show="currentRoute == item.path" class="dot"></span>
<span @click="handleChanges(item.fullPath)">{{ item.title }}</span>
<el-icon @click="delTab(item.fullPath)">
<Close />
</el-icon>
</div>
<el-dropdown @command="handleCommand">
<span class="flex items-center px-3">
<icon :size="16" name="el-icon-arrow-down" />
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="closeCurrent">关闭当前</el-dropdown-item>
<el-dropdown-item command="closeOther">关闭其他</el-dropdown-item>
<el-dropdown-item command="closeAll">关闭全部</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</template>
<el-dropdown @command="handleCommand">
<span class="flex items-center px-3">
<icon :size="16" name="el-icon-arrow-down" />
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="closeCurrent">关闭当前</el-dropdown-item>
<el-dropdown-item command="closeOther">关闭其他</el-dropdown-item>
<el-dropdown-item command="closeAll">关闭全部</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</template>
<script setup lang="ts">
import useMultipleTabs from "@/hooks/useMultipleTabs";
import { useWatchRoute } from "@/hooks/useWatchRoute";
import useTabsStore, { getRouteParams } from "@/stores/modules/multipleTabs";
const router = useRouter();
const route = useRoute();
const tabsStore = useTabsStore();
const {
removeOtherTab,
addTab,
removeAllTab,
removeTab,
tabsLists,
currentTab,
} = useMultipleTabs();
useWatchRoute(() => {
addTab();
});
const handleChange = (fullPath: any) => {
const tabItem = tabsStore.tasMap[fullPath];
router.push(getRouteParams(tabItem));
};
const handleChanges = (fullPath: any) => {
const tabItem = tabsStore.tasMap[fullPath];
router.push(getRouteParams(tabItem));
};
const delTab = (fullPath, index) => {
removeTab(fullPath);
if (fullPath.includes(route.path)) {
handleChanges(tabsLists.value[index].fullPath);
}
};
const currentRoute = ref("");
watch(
() => route.path,
(newCount, oldCount) => {
currentRoute.value = newCount;
console.log(currentRoute);
},
{
immediate: true,
deep: true,
}
);
const handleCommand = (command: any) => {
switch (command) {
case "closeCurrent":
removeTab();
break;
case "closeOther":
removeOtherTab();
break;
case "closeAll":
removeAllTab();
break;
}
};
</script>
<style lang="scss" scoped>
.menu {
display: flex;
flex-wrap: wrap;
<script setup lang="ts">
import useMultipleTabs from "@/hooks/useMultipleTabs";
import { useWatchRoute } from "@/hooks/useWatchRoute";
import useTabsStore, { getRouteParams } from "@/stores/modules/multipleTabs";
const router = useRouter();
const route = useRoute();
const tabsStore = useTabsStore();
const {
removeOtherTab,
addTab,
removeAllTab,
removeTab,
tabsLists,
currentTab,
} = useMultipleTabs();
useWatchRoute(() => {
addTab();
});
const handleChange = (fullPath: any) => {
const tabItem = tabsStore.tasMap[fullPath];
router.push(getRouteParams(tabItem));
};
const handleChanges = (fullPath: any) => {
const tabItem = tabsStore.tasMap[fullPath];
router.push(getRouteParams(tabItem));
};
const delTab = (fullPath, index) => {
removeTab(fullPath);
if (fullPath.includes(route.path)) {
handleChanges(tabsLists.value[index].fullPath);
}
.tab-pan {
padding: 5px 20px;
cursor: pointer;
margin-bottom: 10px;
display: flex;
align-items: center;
};
const currentRoute = ref("");
watch(
() => route.path,
(newCount, oldCount) => {
currentRoute.value = newCount;
},
{
immediate: true,
deep: true,
}
.act {
background-color: #edefff;
color: rgb(128, 142, 255);
);
const handleCommand = (command: any) => {
switch (command) {
case "closeCurrent":
removeTab();
break;
case "closeOther":
removeOtherTab();
break;
case "closeAll":
removeAllTab();
break;
}
.dot {
display: inline-block;
width: 5px;
height: 5px;
background-color: #4a5dff;
border-radius: 5px;
margin-right: 5px;
// font-size: 30px;
}
</style>
};
</script>
<style lang="scss" scoped>
.menu {
display: flex;
flex-wrap: wrap;
}
.tab-pan {
padding: 5px 20px;
cursor: pointer;
margin-bottom: 10px;
display: flex;
align-items: center;
}
.act {
background-color: #edefff;
color: rgb(128, 142, 255);
}
.dot {
display: inline-block;
width: 5px;
height: 5px;
background-color: #4a5dff;
border-radius: 5px;
margin-right: 5px;
// font-size: 30px;
}
</style>

2030
src/views/project/aaaa.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -12,10 +12,10 @@
<el-table-column label="项目把握度" prop='project_assurance_text' />
</el-table>
</div>
<!-- <div style="margin: 20px 0;">
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
@current-change="handleCurrentChange1" />
</div>
<div class="tit">客户需求</div>
@ -45,8 +45,8 @@
@size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
</div>
<div class="tit">解决方案</div> -->
<!-- <div>
<div class="tit">解决方案</div>
<div>
<el-table :data="tableData3" stripe style="width: 100%">
<el-table-column label="解决方案主题" prop='customer_demand_name' width="180" />
<el-table-column label="提交时间" prop='submission_time' width="180" />
@ -65,8 +65,8 @@
</template>
</el-table-column>
</el-table>
</div> -->
<!-- <div style="margin: 20px 0;">
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total2"
@size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
@ -129,7 +129,7 @@
<el-pagination v-model:current-page="pager5.page_no" v-model:page-size="pager5.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total4"
@size-change="handleSizeChange5" @current-change="handleCurrentChange5" />
</div> -->
</div>
</template>
@ -144,37 +144,50 @@ import { apiProjectEstimateLists } from '@/api/project_estimate'
import { apiCompetitorLists } from '@/api/competitor'
const props = defineProps({
project_id: Number
})
const tableData1 = ref([])
const tableData2 = ref([])
const tableData3 = ref([])
const tableData4 = ref([])
const tableData5 = ref([])
const total = ref(0)
const total1 = ref(0)
const total2 = ref(0)
const total3 = ref(0)
const total4 = ref(0)
const pager1 = reactive({
page_size: 10,
page_no: 1,
project_id: ""
project_id: props.project_id
})
const pager2 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager3 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager4 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
// const pager2 = reactive({
// page_size: 10,
// page_no: 1,
// project_id: ""
// })
// const pager3 = reactive({
// page_size: 10,
// page_no: 1,
// project_id: ""
// })
// const pager4 = reactive({
// page_size: 10,
// page_no: 1,
// project_id: ""
// })
const pager5 = reactive({
page_size: 10,
page_no: 1,
project_id: ""
project_id: props.project_id
})
@ -195,36 +208,35 @@ const demandList = () => {
})
}
// const handleSizeChange1 = (val: number) => {
// // pager1.page_size = val
// // followUpLists()
// }
//
// const solutionLists = () => {
// apiCustomerDemandSolutionLists(pager5).then((res) => {
// tableData3.value = res.lists
// total2.value = res.count
const solutionLists = () => {
apiCustomerDemandSolutionLists(pager5).then((res) => {
tableData3.value = res.lists
total2.value = res.count
// })
// }
})
}
//
// const estimateLists = () => {
// apiProjectEstimateLists(pager4).then((res) => {
// tableData4.value = res.lists
// total3.value = res.count
// })
// }
const estimateLists = () => {
apiProjectEstimateLists(pager4).then((res) => {
tableData4.value = res.lists
total3.value = res.count
})
}
//
// const competitorLists = () => {
// apiCompetitorLists(pager5).then((res) => {
// tableData5.value = res.lists
// total4.value = res.count
// })
// }
const competitorLists = () => {
apiCompetitorLists(pager5).then((res) => {
tableData5.value = res.lists
total4.value = res.count
})
}
// const handleSizeChange1 = (val: number) => {
// pager1.page_size = val
// followUpLists()
// }
// const handleSizeChange2 = (val: number) => {
// pager2.page_size = val
// demandList()
@ -243,17 +255,16 @@ const demandList = () => {
// }
// //
// const demandList = () => {
// apiCustomerDemandLists(pager5).then((res) => {
// tableData1.value = res.lists
// total1.value = res.count
// })
// }
followUpLists()
// demandList()
// competitorLists()
// solutionLists()
// estimateLists()
</script>
demandList()
competitorLists()
solutionLists()
estimateLists()
</script>
<style lang="scss">
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
</style>

View File

@ -0,0 +1,36 @@
<template>
<myTable :baseData="baseData"></myTable>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { subpackagdetailLists } from '@/api/project_subpackage_budget_detail'
const props = defineProps({
project_id: Number
})
const baseData = reactive({
fetchFun: subpackagdetailLists,
tit: "竞争对手",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '工作类型', prop: 'work_type' },
{ label: '工作内容', prop: 'work_content' },
{ label: '项目特征', prop: 'project_features' },
{ label: '单位', prop: 'unit' },
{ label: '预算工作量', prop: 'num' },
{ label: '单价', prop: 'price' },
{ label: '金额', prop: 'amount' },
{ label: '已分包量', prop: 'has_subcontract_num' },
{ label: '剩余工作量', prop: 'residue_num' },
]
})
</script>

View File

@ -1,11 +1,36 @@
<template></template>
<template>
<myTable :baseData="baseData"></myTable>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { subpackagdetailLists } from '@/api/project_subpackage_budget_detail'
const props = defineProps({
// formData: Object
project_id: Number
})
const baseData = reactive({
fetchFun: subpackagdetailLists,
tit: "竞争对手",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '工作类型', prop: 'work_type' },
{ label: '工作内容', prop: 'work_content' },
{ label: '项目特征', prop: 'project_features' },
{ label: '单位', prop: 'unit' },
{ label: '预算工作量', prop: 'num' },
{ label: '单价', prop: 'price' },
{ label: '金额', prop: 'amount' },
{ label: '已分包量', prop: 'has_subcontract_num' },
{ label: '剩余工作量', prop: 'residue_num' },
]
})
</script>

View File

@ -0,0 +1,44 @@
<template>
<myTable :baseData="baseData"></myTable>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { subpackagdetailLists } from '@/api/project_subpackage_budget_detail'
const props = defineProps({
project_id: Number
})
const baseData = reactive({
fetchFun: subpackagdetailLists,
tit: "竞争对手",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '工作类型', prop: 'work_type' },
{ label: '工作内容', prop: 'work_content' },
{ label: '项目特征', prop: 'project_features' },
{ label: '单位', prop: 'unit' },
{ label: '预算工作量', prop: 'num' },
{ label: '单价', prop: 'price' },
{ label: '金额', prop: 'amount' },
{ label: '已分包量', prop: 'has_subcontract_num' },
{ label: '剩余工作量', prop: 'residue_num' },
]
})
</script>

View File

@ -0,0 +1,99 @@
<template>
<div class='tit'>主合同</div>
<div>
<el-table :data="tableData19" stripe style="width: 100%">
<el-table-column label="合同编号" prop='contract_name' width="180" />
<el-table-column label="合同名称" prop='contract_code' width="180" />
<el-table-column label="合同类型" prop='contract_type_text' />
<el-table-column label="负责人" prop='business_director_name' />
<el-table-column label="签约日期" prop='contract_date' />
<el-table-column label="合同金额" prop='amount' />
<el-table-column label="洽商金额" prop='negotiation_amount' />
<el-table-column label="实际合同金额" prop='reality_contract_amount' />
<el-table-column label="已回款" prop='returned_amount' />
<el-table-column label="未回款" prop='not_returned_amount' />
<el-table-column label="已开票" prop='invoicing_amount' />
<el-table-column label="未开票" prop='not_invoicing_amount' />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager19.page_no" v-model:page-size="pager19.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total18"
@size-change="handleSizeChange19" @current-change="handleCurrentChange19" />
</div>
<div class='tit' style="margin: 20px 0;">合同洽商</div>
<div>
<el-table :data="tableData20" stripe style="width: 100%">
<el-table-column label="洽商编号" prop='negotiation_no' width="180" />
<el-table-column label="洽商单名称" prop='negotiation_name' width="180" />
<el-table-column label="合同编号" prop='contract_code' />
<el-table-column label="洽商类别" prop='negotiation_type' />
<el-table-column label="签约日期" prop='contract_date' />
<el-table-column label="业务负责人" prop='business_director' />
<el-table-column label="洽商金额" prop='negotiation_amount' />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager20.page_no" v-model:page-size="pager20.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total19"
@size-change="handleSizeChange20" @current-change="handleCurrentChange20" />
</div>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import { apiContractLists } from '@/api/contract'
import { apiContractNegotiationLists } from '@/api/contract_negotiation'
const props = defineProps({
project_id: Number
})
const tableData19 = ref([])
const tableData20 = ref([])
const total18 = ref(0)
const total19 = ref(0)
const total20 = ref(0)
const pager19 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager20 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
//
const contractLists = () => {
apiContractLists(pager19).then((res) => {
tableData19.value = res.lists
total18.value = res.count
})
}
//
const contcractNegotiationLists = () => {
apiContractNegotiationLists(pager20).then((res) => {
tableData20.value = res.lists
total19.value = res.count
})
}
contractLists()
contcractNegotiationLists()
</script>
<style >
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
</style>

View File

@ -0,0 +1,187 @@
<template>
<el-tabs v-model="active" class="demo-tabs">
<el-tab-pane label="项目人员" name="first-1">
<myTable :baseData="baseData" v-if="active == 'first-1'"></myTable>
</el-tab-pane>
<el-tab-pane label="劳动合同" name="first-2">
<!-- <myTable :baseData="baseData1" v-if="active == 'first-2'"></myTable> -->
<el-table :data="tableData13" stripe style="width: 100%">
<el-table-column label="姓名" prop='project_name' width="180" />
<el-table-column label="身份证号" prop='person_idcard' width="180" />
<el-table-column label="合同状态" prop='contract_status_text' />
<el-table-column label="合同类别" prop='contract_type_text' />
<el-table-column label="合同名称" prop='contract_title_text' />
<el-table-column label="合同签定日期" prop='signing_date' />
<el-table-column label="起始时间" prop='start_date' />
<el-table-column label="终止时间" prop='end_date' />
<el-table-column label="备注" prop='remark' />
<el-table-column label="合同附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="保险记录" name="first-3">
<myTable :baseData="baseData1" v-if="active == 'first-3'"></myTable>
</el-tab-pane>
<el-tab-pane label="项目考勤" name="first-4">
<myTable :baseData="baseData2" v-if="active == 'first-4'"></myTable>
</el-tab-pane>
<el-tab-pane label="考勤明细" name="first-5">
<myTable :baseData="baseData3" v-if="active == 'first-5'"></myTable>
</el-tab-pane>
<el-tab-pane label="工资付款" name="first-6">
<myTable :baseData="baseData4" v-if="active == 'first-6'"></myTable>
</el-tab-pane>
</el-tabs>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { projectpersonnelLists } from '@/api/project_personnel'
import { projectlaborcontractLists } from '@/api/project_labor_contract'
import { insurancemanagementLists } from '@/api/project_insurance_management'
import { attendanceRecordLists } from '@/api/project_attendance_record'
import { attendancedetailLists } from '@/api/project_attendance_detail'
import { projectsalaryDetailLists } from '@/api/project_salary_detail'
const props = defineProps({
project_id: Number
})
const baseData = reactive({
fetchFun: projectpersonnelLists,
tit: "",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '姓名', prop: 'name' },
{ label: '身份证号', prop: 'idcard' },
{ label: '手机号', prop: 'mobile' },
{ label: '工种', prop: 'work_type_text' },
{ label: '人工单价', prop: 'unit_price' },
{ label: '每日生活费', prop: 'price' },
{ label: '期初收入', prop: 'opening_income' },
{ label: '日结收入', prop: 'daily_income' },
{ label: '完工量收入', prop: 'work_income' },
{ label: '总收入', prop: 'total_income' },
{ label: '总支出', prop: 'pay_out' },
{ label: '余额', prop: 'balance' },
]
})
const baseData1 = reactive({
fetchFun: insurancemanagementLists,
tit: "",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '姓名', prop: 'project_name' },
{ label: '身份证号', prop: 'person_idcard' },
{ label: '投保日期', prop: 'insurance_date' },
{ label: '到期日期', prop: 'due_date' },
{ label: '保险种类', prop: 'type_text' },
{ label: '保单号', prop: 'insurance_no' },
{ label: '投保金额(万元)', prop: 'insured_amount' },
{ label: '保险公司', prop: 'insurance_company' },
]
})
const baseData2 = reactive({
fetchFun: attendanceRecordLists,
tit: "",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '日记工单号', prop: 'attendance_code' },
{ label: '日期', prop: 'attendance_date' },
{ label: '出勤人数', prop: 'competitor_contacts_phone' },
{ label: '记工数量', prop: 'work_record_num_total' },
{ label: '日工资合计', prop: 'daily_salary_total' },
{ label: '日生活费合计', prop: 'daily_living_total' },
{ label: '日补贴合计', prop: 'daily_subsidy_total' },
{ label: '日其它合计', prop: 'daily_other_total' },
{ label: '日收入合计', prop: 'daily_income_total' },
{ label: '备注', prop: 'remark' },
]
})
const baseData3 = reactive({
fetchFun: attendancedetailLists,
tit: "",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '日记工单号', prop: 'attendance_code' },
{ label: '日期', prop: 'attendance_date' },
{ label: '姓名', prop: 'person_name' },
{ label: '身份证号', prop: 'person_idcard' },
{ label: '工种', prop: 'work_type_text' },
{ label: '上班时间', prop: 'work_start_time' },
{ label: '下班时间', prop: 'work_end_time' },
{ label: '记工数量', prop: 'work_record_num' },
{ label: '日工资', prop: 'daily_salary' },
{ label: '日生活费', prop: 'daily_living' },
{ label: '日补贴', prop: 'daily_subsidy' },
{ label: '日其它', prop: 'daily_other' },
{ label: '日收入', prop: 'daily_income' },
{ label: '备注', prop: 'remark' },
]
})
const baseData4 = reactive({
fetchFun: projectsalaryDetailLists,
tit: "",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '工资付款单号', prop: 'payment_code' },
{ label: '日期', prop: 'apply_date' },
{ label: '姓名', prop: 'person_name' },
{ label: '身份证号', prop: 'person_idcard' },
{ label: '工种', prop: 'person_work_type_text' },
{ label: '总收入', prop: 'total_income' },
{ label: '总支出', prop: 'total_pay_out' },
{ label: '未发放', prop: 'balance' },
{ label: '本次付款金额', prop: 'apply_amount' },
{ label: '备注', prop: 'remark' },
]
})
const pager13 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const tableData13 = ref("")
const laborcontractLists = () => {
projectlaborcontractLists(pager13).then((res) => {
tableData13.value = res.lists
})
}
const active = ref('first-1')
laborcontractLists()
</script>

View File

@ -0,0 +1,39 @@
<template>
<div class="tit" v-if="baseData.tit">{{ baseData.tit }}</div>
<el-table :data="pager.lists" style="width: 100%">
<el-table-column :label="item.label" :prop='item.prop' width="180" v-for="(item, index) in baseData.columnList"
:key="index" />
</el-table>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</template>
<script setup>
import { ref, reactive, defineProps, toRaw } from "vue"
import { usePaging } from '@/hooks/usePaging'
const props = defineProps({
baseData: Object,
})
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: props.baseData.fetchFun,
params: props.baseData.queryParams || ""
})
getLists()
</script>
<style lang="scss" scoped>
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -0,0 +1,62 @@
<template>
<myTable :baseData="baseData"></myTable>
</template>
<!-- <div>
<el-table :data="tableData26" stripe style="width: 100%">
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="contract_name" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type" show-overflow-tooltip />
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
<el-table-column label="已付款金额" prop="has_pay_amount" show-overflow-tooltip />
<el-table-column label="未付款金额" prop="not_pay_amount" show-overflow-tooltip />
<el-table-column label="已开票金额" prop="invoice_amount" show-overflow-tooltip />
<el-table-column label="未开票金额" prop="not_invoice_amount" show-overflow-tooltip />
<el-table-column label="已入库数量" prop="has_storage_num" show-overflow-tooltip />
<el-table-column label="未入库数量" prop="not_storage_num" show-overflow-tooltip />
<el-table-column label="数量" prop="num" show-overflow-tooltip />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager26.page_no" v-model:page-size="pager26.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total25" @size-change="handleSizeChange26"
@current-change="handleCurrentChange26" />
</div> -->
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { apiProcurementContractLists } from '@/api/procurement_contract'
const props = defineProps({
project_id: Number
})
const baseData = reactive({
fetchFun: apiProcurementContractLists,
tit: "采购合同",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '合同编号', prop: 'contract_no' },
{ label: '供应商名称', prop: 'contract_name' },
{ label: '合同类型', prop: 'contract_type' },
{ label: '签订日期', prop: 'signing_date' },
{ label: '合同金额', prop: 'contract_amount' },
{ label: '已付款金额', prop: 'has_pay_amount' },
{ label: '未付款金额', prop: 'not_pay_amount' },
{ label: '已开票金额', prop: 'invoice_amount' },
{ label: '未开票金额', prop: 'not_invoice_amount' },
{ label: '已入库数量', prop: 'has_storage_num' },
{ label: '未入库数量', prop: 'not_storage_num' },
{ label: '数量', prop: 'num' },
]
})
</script>
<style ></style>

View File

@ -0,0 +1,64 @@
<template>
<myTable :baseData="baseData"></myTable>
<myTable :baseData="baseData1"></myTable>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { apiSubcontractingContractLists } from '@/api/subcontracting_contract'
import { apinegotiationLists } from '@/api/subcontractor'
const props = defineProps({
project_id: Number
})
const baseData1 = reactive({
fetchFun: apinegotiationLists,
tit: "分包洽商",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '洽商编号', prop: 'negotiation_no' },
{ label: '合同编号', prop: 'contract_no' },
{ label: '洽商单名称', prop: 'negotiation_name' },
{ label: '项目名称', prop: 'project_name' },
{ label: '项目编号', prop: 'project_code' },
{ label: '供应商', prop: 'supplier_name' },
{ label: '洽商类别', prop: 'negotiation_type_text' },
{ label: '洽商报价金额', prop: 'warranty_amount' },
{ label: '洽商质保金额', prop: 'negotiation_amount' },
]
})
const baseData = reactive({
fetchFun: apiSubcontractingContractLists,
tit: "分包合同",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '项目名称', prop: 'project_name' },
{ label: '合同编号', prop: 'contract_no' },
{ label: '合同名称', prop: 'contract_name' },
{ label: '供应商名称', prop: 'supplier_name' },
{ label: '合同类型', prop: 'contract_type' },
{ label: '合同金额', prop: 'contract_amount' },
{ label: '洽商金额', prop: 'negotiation_amount' },
{ label: '不含税金额', prop: 'excluding_tax_amount' },
{ label: '实际合同金额', prop: 'reality_contract_amount' },
{ label: '已付款金额', prop: 'has_pay_amount' },
{ label: '已开票金额', prop: 'invoice_amount' },
{ label: '未开票金额', prop: 'not_invoice_amount' },
{ label: '已退款金额', prop: 'refund_amount' },
{ label: '结算差异', prop: 'settlement_difference' },
]
})
</script>

View File

@ -0,0 +1,268 @@
<template>
<div class="tit">投标决策</div>
<div>
<el-table :data="tableData6" stripe style="width: 100%">
<el-table-column label="流程编号" prop='code' width="180" />
<el-table-column label="项目估算(万元)" prop='project_estimation' width="180" />
<el-table-column label="资金来源" prop='bidding_project_fund_source' />
<el-table-column label="投标时间" prop='bidding_time' />
<el-table-column label="招标方式" prop='bid_type' />
<el-table-column label="有无保证金" prop='is_margin' />
<el-table-column label="保证金金额" prop='margin_amount' />
<el-table-column label="开标日期" prop='bid_opening_date' />
<el-table-column label="项目把握度" prop='project_assurance' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager6.page_no" v-model:page-size="pager6.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total5"
@size-change="handleSizeChange6" @current-change="handleCurrentChange6" />
</div>
<div class="tit">购买标书</div>
<div>
<el-table :data="tableData7" stripe style="width: 100%">
<el-table-column label="流程编号" prop='code' width="180" />
<el-table-column label="投标公司名称" prop='bid_company_name' width="180" />
<el-table-column label="招标公司名称" prop='invite_tenders_company_name' />
<el-table-column label="标书编号" prop='bid_document_no' />
<el-table-column label="购买人员" prop='buyer' />
<el-table-column label="购买标书金额" prop='amount' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager7.page_no" v-model:page-size="pager7.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total6"
@size-change="handleSizeChange7" @current-change="handleCurrentChange7" />
</div>
<div class="tit">标书审查</div>
<div>
<el-table :data="tableData8" stripe style="width: 100%">
<el-table-column label="流程编号" prop='code' width="180" />
<el-table-column label="标书编号" prop='bid_document_no' width="180" />
<el-table-column label="购买人员" prop='buyer' />
<el-table-column label="投标公司名称" prop='bid_company_name' />
<el-table-column label="投标时间" prop='bidding_time' />
<el-table-column label="开标日期" prop='bid_opening_date' />
<el-table-column label="总金额" prop='total_amount' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager8.page_no" v-model:page-size="pager8.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total7"
@size-change="handleSizeChange8" @current-change="handleCurrentChange8" />
</div>
<div class="tit">投标结果</div>
<div>
<el-table :data="tableData9" stripe style="width: 100%">
<el-table-column label="投标编号" prop='bid_document_examination_code' width="180" />
<el-table-column label="投标时间" prop='bidding_time' width="180" />
<el-table-column label="开标日期" prop='bid_opening_date' />
<el-table-column label="是否中标" prop='is_successful_text' width="180" />
<el-table-column label="中标单位" prop='bidder_company' width="180" />
<el-table-column label="中标金额" prop='bidder_amount' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager9.page_no" v-model:page-size="pager9.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total8"
@size-change="handleSizeChang9" @current-change="handleCurrentChange9" />
</div>
<div class="tit">投标保证金</div>
<div>
<el-table :data="tableData10" stripe style="width: 100%">
<el-table-column label="流程编号" prop='bidding_decision_code' width="180" />
<el-table-column label="投标时间" prop='bidding_time' width="180" />
<el-table-column label="预计退还时间" prop='refund_date' />
<el-table-column label="申请人" prop='applier' />
<el-table-column label="保证金金额 " prop='margin_amount' />
<el-table-column label="已退金额" prop='refund_amount' />
<el-table-column label="未退金额" prop='not_refund_amount' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager10.page_no" v-model:page-size="pager10.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total9"
@size-change="handleSizeChange10" @current-change="handleCurrentChange10" />
</div>
<div class="tit">退投标保证金</div>
<div>
<el-table :data="tableData11" stripe style="width: 100%">
<el-table-column label="投标时间" prop='bidding_time' width="180" />
<el-table-column label="退款日期" prop='refund_date' width="180" />
<el-table-column label="账户编码" prop='bank_account_info.account_sn' />
<el-table-column label="开户银行" prop='bank_account_info.deposit_bank' />
<el-table-column label="退款金额" prop='refund_amount' />
<el-table-column label="客户名称" prop='custom_name' />
<el-table-column label="创建日期" prop='create_time' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager11.page_no" v-model:page-size="pager11.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total10"
@size-change="handleSizeChange11" @current-change="handleCurrentChange11" />
</div>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import { apiBidBiddingDecisionLists } from '@/api/bid_bidding_decision'
import { apiBidBuyBiddingDocumentLists } from '@/api/bid_buy_bidding_document'
import { apiBidDocumentExaminationLists } from '@/api/bid_document_examination'
import { apiBidResultLists } from '@/api/bid_result'
import { bidapplyLists } from '@/api/bidbbond'
import { bidrefundLists } from '@/api/refundbidDeposit'
const props = defineProps({
project_id: Number
})
const total5 = ref(0)
const total6 = ref(0)
const total7 = ref(0)
const total8 = ref(0)
const total9 = ref(0)
const total10 = ref(0)
const total11 = ref(0)
const tableData6 = ref([])
const tableData7 = ref([])
const tableData8 = ref([])
const tableData9 = ref([])
const tableData10 = ref([])
const tableData11 = ref([])
const pager6 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager7 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager8 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager9 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager10 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
const pager11 = reactive({
page_size: 10,
page_no: 1,
project_id: props.project_id
})
// const handleSizeChange6 = (val: number) => {
// pager6.page_size = val
// decisionLists()
// }
// const handleSizeChange7 = (val: number) => {
// pager7.page_size = val
// buydocumentLists()
// }
// const handleSizeChange8 = (val: number) => {
// pager8.page_size = val
// examinationLists()
// }
// const handleSizeChange9 = (val: number) => {
// pager9.page_size = val
// bidResultLists()
// }
// const handleSizeChange10 = (val: number) => {
// pager10.page_size = val
// applyLists()
// }
// const handleSizeChange11 = (val: number) => {
// pager11.page_size = val
// refundLists()
// }
//
const decisionLists = () => {
apiBidBiddingDecisionLists(pager6).then((res) => {
tableData6.value = res.lists
total5.value = res.count
})
}
//
const buydocumentLists = () => {
apiBidBuyBiddingDocumentLists(pager7).then((res) => {
tableData7.value = res.lists
total6.value = res.count
})
}
//
const examinationLists = () => {
apiBidDocumentExaminationLists(pager8).then((res) => {
tableData8.value = res.lists
total7.value = res.count
})
}
//
const bidResultLists = () => {
apiBidResultLists(pager9).then((res) => {
tableData9.value = res.lists
total8.value = res.count
})
}
//
const applyLists = () => {
bidapplyLists(pager10).then((res) => {
tableData10.value = res.lists
total9.value = res.count
})
}
//退
const refundLists = () => {
bidrefundLists(pager11).then((res) => {
tableData11.value = res.lists
total10.value = res.count
})
}
decisionLists()
buydocumentLists()
examinationLists()
applyLists()
bidResultLists()
refundLists()
</script>
<style >
.tit {
font-size: 1.2em;
margin-bottom: 10px;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -119,7 +119,7 @@
删除
</el-button>
<el-button v-perms="['project.project/detail']" link @click="handledetail(row)">
详情
详情22
</el-button>
</template>
</el-table-column>