diff --git a/src/api/contractManage/contract.js b/src/api/contractManage/contract.js new file mode 100644 index 0000000..15c2043 --- /dev/null +++ b/src/api/contractManage/contract.js @@ -0,0 +1,38 @@ +import request from '@/utils/request' + +// 合同管理 - 查询列表 +export function listContractAPI(query) { + return request({ + url: '/contract/getContractList', + method: 'GET', + params: query, + }) +} + +// 合同管理 - 新增 +export function addContractAPI(data) { + return request({ + url: '/contract/addContract', + method: 'POST', + data, + }) +} + +// 合同管理 - 修改 +export function updateContractAPI(data) { + return request({ + url: '/contract/updateContract', + method: 'POST', + data, + }) +} + +// 合同管理 - 删除 +export function delContractAPI(data) { + return request({ + url: '/contract/delContract', + method: 'POST', + data, + }) +} + diff --git a/src/api/settlementManage/settlement.js b/src/api/settlementManage/settlement.js new file mode 100644 index 0000000..885731e --- /dev/null +++ b/src/api/settlementManage/settlement.js @@ -0,0 +1,77 @@ +import request from '@/utils/request' + +// 结算管理 - 查询列表 +export function listSettlementAPI(query) { + return request({ + url: '/settlement/getSettlementList', + method: 'GET', + params: query, + }) +} + +// 结算管理 - 查询详情 +export function getSettlementDetailAPI(settlementId) { + return request({ + url: `/settlement/getSettlementDetail`, + method: 'GET', + params: { + settlementId, + }, + }) +} + +// 结算管理 - 新增 +export function addSettlementAPI(data) { + return request({ + url: '/settlement/addSettlement', + method: 'POST', + data, + }) +} + +// 结算管理 - 修改 +export function updateSettlementAPI(data) { + return request({ + url: '/settlement/updateSettlement', + method: 'POST', + data, + }) +} + +// 结算管理 - 删除 +export function delSettlementAPI(data) { + return request({ + url: '/settlement/delSettlement', + method: 'POST', + data, + }) +} + +// 结算管理 - 获取合同下拉列表 +export function getContractSelectAPI(query) { + return request({ + url: '/contract/getContractListAll', + method: 'GET', + params: query, + }) +} + +// 结算管理 - 获取计划列表(用于选择计划弹框) +export function getPlanListForSelectAPI(query) { + return request({ + url: '/settlement/getMonthPlanSelect', + method: 'GET', + params: query, + }) +} + +// 结算管理 - 下载统计表 +export function downloadSettlementStatisticAPI(query) { + return request({ + url: '/settlement/downloadStatistic', + method: 'GET', + params: query, + responseType: 'blob', + }) +} + diff --git a/src/router/index.js b/src/router/index.js index f40e626..b7b75c6 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -117,6 +117,22 @@ export const constantRoutes = [ }, ], }, + { + path: '/settlement/settlementEdit', + component: Layout, + hidden: true, + children: [ + { + path: 'index', + component: () => import('@/views/settlementManage/edit.vue'), + name: 'SettlementEdit', + meta: { + title: '结算管理', + activeMenu: '/settlement', // 保持左侧高亮在列表菜单 + }, + }, + ], + }, ] // 动态路由,基于用户权限动态去加载 diff --git a/src/views/contractManage/components/addAndEditForm.vue b/src/views/contractManage/components/addAndEditForm.vue new file mode 100644 index 0000000..95471fe --- /dev/null +++ b/src/views/contractManage/components/addAndEditForm.vue @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 保存 + + + + + + + diff --git a/src/views/contractManage/config.js b/src/views/contractManage/config.js new file mode 100644 index 0000000..b0fadab --- /dev/null +++ b/src/views/contractManage/config.js @@ -0,0 +1,54 @@ +import { reactive } from 'vue' + +export default { + formColumns: [ + { + type: 'input', + prop: 'inspectionStationName', + placeholder: '请输入运检站名称', + }, + { + type: 'input', + prop: 'contractName', + placeholder: '请输入合同名称', + }, + ], + tableColumns: [ + { + prop: 'inspectionStationName', + label: '运检站', + }, + { + prop: 'contractPeriod', + label: '合同承揽时间', + }, + { + prop: 'contractName', + label: '合同名称', + }, + { + prop: 'contractCode', + label: '合同编号', + }, + { + prop: 'contractStatus', + label: '合同状态', + slot: 'contractStatus', // 使用插槽显示字典值 + }, + { + prop: 'remark', + label: '备注', + width: '200', + showOverflowTooltip: true, + }, + ], + + dialogConfig: reactive({ + outerVisible: false, + outerTitle: '新建合同', + outerWidth: '720px', + minHeight: '400px', + maxHeight: '80vh', + }), +} + diff --git a/src/views/contractManage/index.vue b/src/views/contractManage/index.vue new file mode 100644 index 0000000..b033852 --- /dev/null +++ b/src/views/contractManage/index.vue @@ -0,0 +1,191 @@ + + + + + + + 新建 + + + + + + + + + + + + + + + + + + diff --git a/src/views/settlementManage/components/PlanSelectDialog.vue b/src/views/settlementManage/components/PlanSelectDialog.vue new file mode 100644 index 0000000..969b9ad --- /dev/null +++ b/src/views/settlementManage/components/PlanSelectDialog.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + 查询 + 重置 + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + diff --git a/src/views/settlementManage/config.js b/src/views/settlementManage/config.js new file mode 100644 index 0000000..5fc214b --- /dev/null +++ b/src/views/settlementManage/config.js @@ -0,0 +1,124 @@ +import { reactive } from 'vue' + +export default { + formColumns: [ + { + type: 'select', + prop: 'contractId', + placeholder: '请输入所属合同', + options: [], // 动态从字典获取 + }, + { + type: 'input', + prop: 'contractCode', + placeholder: '请输入合同编号', + }, + { + type: 'input', + prop: 'projectSettlementName', + placeholder: '请输入项目结算名称', + }, + { + type: 'select', + prop: 'settlementStatus', + placeholder: '请选择合同或项目状态', + options: [], // 动态从字典获取 + }, + ], + tableColumns: [ + { + prop: 'inspectionStationName', + label: '运检站', + width: '140', + }, + { + prop: 'contractCode', + label: '合同编号', + width: '140', + }, + { + prop: 'contractName', + label: '所属合同', + width: '140', + }, + { + prop: 'projectSettlementName', + label: '项目结算名称', + width: '140', + }, + { + prop: 'planCount', + label: '执行计划数量', + formatter: (row) => { + return row.executionPlanList.length || '' + }, + }, + { + prop: 'estimatedAmount', + label: '合同预估金额(万元)', + width: '140', + formatter: (row) => { + return row.estimatedAmount ? (row.estimatedAmount / 10000 / 100).toFixed(2) : '0.00' + }, + width: '140', + }, + { + prop: 'contractStatus', + label: '合同或项目状态', + slot: 'contractStatus', // 使用插槽显示字典值 + width: '140', + }, + { + prop: 'settlementBatch', + label: '结算批次', + width: '140', + }, + { + prop: 'settlementPayment', + label: '结算款-价', + formatter: (row) => { + // 金额从分转换为元,保留2位小数 + return row.settlementPayment ? (row.settlementPayment / 100).toFixed(2) : '0.00' + }, + width: '140', + }, + { + prop: 'settlementTax', + label: '结算款-税', + formatter: (row) => { + return row.settlementTax ? (row.settlementTax / 100).toFixed(2) : '0.00' + }, + width: '140', + }, + { + prop: 'approvedSettlement', + label: '审定结算-价', + formatter: (row) => { + return row.approvedSettlement ? (row.approvedSettlement / 100).toFixed(2) : '0.00' + }, + width: '140', + }, + { + prop: 'approvedSettlementTax', + label: '审定结算-税', + formatter: (row) => { + return row.approvedSettlementTax ? (row.approvedSettlementTax / 100).toFixed(2) : '0.00' + }, + width: '140', + }, + { + prop: 'settlementDataNumber', + label: '结算资料编号', + width: '140', + }, + ], + + dialogConfig: reactive({ + outerVisible: false, + outerTitle: '新建结算', + outerWidth: '720px', + minHeight: '400px', + maxHeight: '80vh', + }), +} + diff --git a/src/views/settlementManage/edit.vue b/src/views/settlementManage/edit.vue new file mode 100644 index 0000000..25a08b2 --- /dev/null +++ b/src/views/settlementManage/edit.vue @@ -0,0 +1,1033 @@ + + + + + + + + 结算信息 + + + + + + + + + + + + + + + + + + + + + + + + 元 + + + + + + + + + + + + + + + + + + + + + + + + + 选择计划 + + + + + + + + + + + + + + + + 元 + + + {{ + row.subcontractorPersonnelCost + ? (row.subcontractorPersonnelCost / 100).toFixed(2) + : '0.00' + }} + 元 + + + {{ row.errors.subcontractorPersonnelCost }} + + + + + + + 元 + + + {{ + row.subcontractorVehicleCost + ? (row.subcontractorVehicleCost / 100).toFixed(2) + : '0.00' + }} + 元 + + + {{ row.errors.subcontractorVehicleCost }} + + + + + + 删除 + + + + + + + + + + + + 价 + + + + + + + 税 + + + + + + + + + + 价 + + + + + + + 税 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/settlementManage/index.vue b/src/views/settlementManage/index.vue new file mode 100644 index 0000000..6485616 --- /dev/null +++ b/src/views/settlementManage/index.vue @@ -0,0 +1,185 @@ + + + + + + + 新建 + 下载统计表 + + + + + + + + + + + +