@@ -238,4 +219,4 @@ onUnmounted(() => {
height: 60%;
}
}
-
+
\ No newline at end of file
diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue
index 325df42..8df1317 100644
--- a/src/views/largeScreen/components/leftPage.vue
+++ b/src/views/largeScreen/components/leftPage.vue
@@ -2,41 +2,34 @@
-
-
+
-
+
-
+
+ progressColor="rgba(255, 147, 42, 1)" />
+
+
+
-
+
- 收入合同
-
+ 收入合同
+
支出合同
@@ -56,7 +49,7 @@ import EchartBox from '@/components/EchartBox/index.vue';
import { incomePay, expensesPay, incomeAnalyze, expensesAnalyze } from '@/api/largeScreen/index';
// 初始化数据容器
-const incomeData = ref({ planAmount: '0.00', actualAmount: '0.00' }); // 收入相关数据(应收/收款)
+const incomeData = ref({ planAmount: '0.00', actualAmount: '0.00' }); // 收入相关数据(应收/收款)
const expensesData = ref({ planAmount: '0.00', actualAmount: '0.00' }); // 支出相关数据(应付/付款)
const pieOption = ref({}); // 环形图配置
const activeChart = ref('income'); // 当前激活的图表类型:income-收入合同,expenses-支出合同
@@ -202,8 +195,8 @@ const generatePieOption = (data) => {
{
name: '合同数量',
type: 'pie',
- radius: ['45%', '65%'],
- center: ['50%', '60%'],
+ radius: ['30%', '60%'],
+ center: ['50%', '80%'],
data: [], // 空数据,避免显示圆环
itemStyle: { borderColor: '#000', borderWidth: 1 },
// 中心显示“加载中”提示
@@ -309,18 +302,21 @@ onMounted(async () => {
.leftPage {
width: 100%;
height: 100%;
+
.kpi_box {
margin-bottom: 10px;
}
+
.contract_box {
- height: 35vh;
+ height: 33vh;
display: flex;
flex-direction: column; // 按钮区和图表区垂直排列
}
+
.chart-container {
- flex: 1; // 占满剩余高度,确保图表容器足够大
- min-height: 200px; // 最小高度,避免容器过矮
+ height: 28vh;
}
+
.kpi_box,
.contract_box {
padding: 10px;
diff --git a/src/views/largeScreen/components/optionList.ts b/src/views/largeScreen/components/optionList.ts
index 8ed0f51..3c7c900 100644
--- a/src/views/largeScreen/components/optionList.ts
+++ b/src/views/largeScreen/components/optionList.ts
@@ -696,6 +696,7 @@ export const getInventoryOption = () => {
};
export const getBarOptions = (data: any) => {
const option = {
+
legend: {
show: true,
top: '50%',
@@ -714,6 +715,9 @@ export const getBarOptions = (data: any) => {
formatter: '{b0}:{c0}万元',
textStyle: {
color: '#fff'
+ },
+ axisPointer: {
+ type: 'shadow' // 默认为直线,可选为:'line' | 'shadow',
}
// borderColor: 'rgba(252, 217, 18, 1)'
},
diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue
index 605173c..f9e9bfd 100644
--- a/src/views/largeScreen/components/rightPage.vue
+++ b/src/views/largeScreen/components/rightPage.vue
@@ -45,7 +45,7 @@ import TitleComponent from './TitleComponent.vue';
import EchartBox from '@/components/EchartBox/index.vue';
import { getLineOption, getBarOptions } from './optionList';
import ProgressComponent from './ProgressComponent.vue';
-import { monthMoney, monthCash, cashTotal } from '@/api/largeScreen';
+import { monthMoney, monthCash, cashTotal } from '@/api/largeScreen/index';
const lineOption = ref();
const barOption = ref();
@@ -90,6 +90,8 @@ const getTurnoverList = async () => {
expenses
]
};
+ console.log(barData);
+
barOption.value = getBarOptions(barData);
};
const getTotalAmonunt = async () => {
diff --git a/src/views/patch/index.vue b/src/views/patch/index.vue
index 149aea8..1aaa708 100644
--- a/src/views/patch/index.vue
+++ b/src/views/patch/index.vue
@@ -1,7 +1,8 @@
-
+
@@ -21,10 +22,12 @@
- 新增
+ 新增
- 导出
+ 导出
@@ -56,10 +59,10 @@
+ :class="[Number(scope.row.taskStatus) === 0 ? 'text-warning' : Number(scope.row.taskStatus) === 1 ? 'text-success' : 'text-danger']">
{{
- Number(scope.row.taskStatus) === 0 ? '未完成' : Number(scope.row.taskStatus) === 1 ? '已完成' : `未知状态(${scope.row.taskStatus})`
+ Number(scope.row.taskStatus) === 0 ? '未完成' : Number(scope.row.taskStatus) === 1 ? '已完成' :
+ `未知状态(${scope.row.taskStatus})`
}}
@@ -71,13 +74,15 @@
-->
-
+
-
+
新增进度
@@ -94,37 +99,28 @@
-
+
-
+
-
+
-
+
-
+
@@ -139,13 +135,15 @@
-
+
-
+
已自动关联当前选中项目
@@ -154,14 +152,17 @@
-
+
-
+
-
+
@@ -243,7 +244,7 @@ interface ProgressDetail {
updateTime?: string;
projectId?: string | number;
}
-interface ProgressForm extends Omit {}
+interface ProgressForm extends Omit { }
// 4. 获取组件实例
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@@ -631,7 +632,9 @@ const handleProgressInput = () => {
const handleExport = () => {
proxy?.download('patch/patch/export', { ...queryParams.value }, `任务列表_${new Date().getTime()}.xlsx`);
};
-
+onMounted(() => {
+ getList();
+});
// 监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
@@ -651,13 +654,16 @@ onUnmounted(() => {
.mb-4 {
margin-bottom: 16px;
}
+
.el-table .small-padding .cell {
padding: 0 5px;
}
+
.el-table .fixed-width {
width: 120px !important;
}
-.el-table-column .el-button--text + .el-button--text {
+
+.el-table-column .el-button--text+.el-button--text {
margin-left: 10px;
}
From cff2ce34f107f4b3ec76b7e458b6fe144f60257d Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Fri, 22 Aug 2025 19:14:27 +0800
Subject: [PATCH 13/41] =?UTF-8?q?refactor(largeScreen):=20=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E7=8E=B0=E9=87=91=E6=B5=81=E6=8A=A5=E8=A1=A8=E6=A0=B7?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 调整 legend 位置和样式
- 优化 tooltip 内容和格式
- 调整图表布局和样式
---
.../largeScreen/components/optionList.ts | 30 ++++++++++++-------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/src/views/largeScreen/components/optionList.ts b/src/views/largeScreen/components/optionList.ts
index 3c7c900..0daec3b 100644
--- a/src/views/largeScreen/components/optionList.ts
+++ b/src/views/largeScreen/components/optionList.ts
@@ -696,23 +696,29 @@ export const getInventoryOption = () => {
};
export const getBarOptions = (data: any) => {
const option = {
-
- legend: {
- show: true,
- top: '50%',
- },
backgroundColor: '',
grid: {
left: '8%',
- top: '4%',
+ top: '10%', // 顶部留一点空间给 legend
bottom: '8%',
right: '2%'
},
+ legend: {
+ data: ['现金流入', '现金流出'], // 与 series.name 对应
+ top: '0%',
+ textStyle: { color: '#fff', fontSize: 12 }
+ },
tooltip: {
show: true,
backgroundColor: '',
trigger: 'axis',
- formatter: '{b0}:{c0}万元',
+ // formatter: '{b0}:{c0}万元',
+ formatter: (params: any) => {
+ // params 是数组,对应每条柱子
+ return params
+ .map((p: any) => `${p.seriesName}:${p.value} 万元`)
+ .join(' ');
+ },
textStyle: {
color: '#fff'
},
@@ -788,6 +794,7 @@ export const getBarOptions = (data: any) => {
// ],
series: [
{
+ name: '现金流入',
type: 'bar',
data: data.value[0],
// stack: '合并',
@@ -826,6 +833,7 @@ export const getBarOptions = (data: any) => {
}
},
{
+ name: '现金流出',
type: 'bar',
data: data.value[1],
// stack: '合并',
@@ -859,8 +867,8 @@ export const getBarOptions = (data: any) => {
formatter: '{c}',
position: 'top',
color: '#fff',
- fontSize: 10
- // padding: 5
+ fontSize: 10,
+ padding: 5
}
}
]
@@ -888,7 +896,9 @@ export const getBarOptions2 = (data: any) => {
}
},
tooltip: {
- trigger: 'item'
+ trigger: 'item',
+ show: true
+
},
legend: {
top: '5%',
From 72577614aaa555c17e752f37b42880c9e69c782a Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Fri, 22 Aug 2025 19:32:49 +0800
Subject: [PATCH 14/41] =?UTF-8?q?feat(incomeContract):=20=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E6=9F=A5=E7=9C=8B=E6=89=BF=E5=8C=85=E5=86=85=E5=AE=B9?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E8=B0=83=E6=95=B4=E6=93=8D=E4=BD=9C?=
=?UTF-8?q?=E5=88=97=E5=AE=BD=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在操作列中添加"查看承包内容"按钮
- 调整操作列宽度为200,以适应新增的按钮
---
src/views/ctr/incomeContract/index.vue | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue
index 05b8802..d79aaa8 100644
--- a/src/views/ctr/incomeContract/index.vue
+++ b/src/views/ctr/incomeContract/index.vue
@@ -69,7 +69,7 @@
-
+
+
+ 查看承包内容
+
查看附件列表
+
From 92d8c52b181b9672e93a9eec36dacd6d8ec22569 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Fri, 22 Aug 2025 19:43:55 +0800
Subject: [PATCH 15/41] =?UTF-8?q?feat(ctr):=20=E8=B0=83=E6=95=B4=E5=90=88?=
=?UTF-8?q?=E5=90=8C=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在费用合同列表中添加预付款比例、尾款比例、质保金比例、付款比例等列
- 修改收入合同列表中承包内容查看按钮,改为详情按钮
- 更新招标信息选择时的数据绑定逻辑
---
src/views/ctr/expensesContract/index.vue | 5 +++++
src/views/ctr/incomeContract/index.vue | 7 ++++---
src/views/ctr/index.vue | 5 +++--
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/views/ctr/expensesContract/index.vue b/src/views/ctr/expensesContract/index.vue
index db921b6..6ad4a81 100644
--- a/src/views/ctr/expensesContract/index.vue
+++ b/src/views/ctr/expensesContract/index.vue
@@ -18,6 +18,7 @@
+
@@ -68,6 +69,10 @@
+
+
+
+
diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue
index d79aaa8..ee2d04e 100644
--- a/src/views/ctr/incomeContract/index.vue
+++ b/src/views/ctr/incomeContract/index.vue
@@ -79,9 +79,9 @@
-->
-
- 查看承包内容
-
+
查看附件列表
@@ -292,6 +292,7 @@ const handleShowFileList = async (row: IncomeContractVO) => {
});
}
+
onMounted(() => {
getList();
});
diff --git a/src/views/ctr/index.vue b/src/views/ctr/index.vue
index a016a40..0412f38 100644
--- a/src/views/ctr/index.vue
+++ b/src/views/ctr/index.vue
@@ -371,9 +371,10 @@ const handleChoose = async () => {
const handleChooseData = (row) => {
form.value.tenderId = row.id;
form.value.name = row.name;
- form.value.contractPrice = row.contractPrice;
+ // form.value.contractPrice = row.contractPrice;
form.value.content = row.content;
- form.value.winningBidder = row.winningBidder;
+ form.value.contractSupplier = row.winningBidder;
+ form.value.amount = row.contractPrice;
dialogVisible.value = false;
};
watch(form, (val) => {
From d45bce2ef8f8a8f06647231609c27845cfb23ee1 Mon Sep 17 00:00:00 2001
From: taoge1020
Date: Fri, 22 Aug 2025 19:48:09 +0800
Subject: [PATCH 16/41] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 2 +-
src/api/materials/materialsUseRecord/index.ts | 70 +++
src/api/materials/materialsUseRecord/types.ts | 111 ++++
src/assets/styles/ruoyi.scss | 11 +
.../biddingManagemen/appointment/index.vue | 4 +-
.../biddingManagemen/biddingLimit/index.vue | 8 +-
.../listOfWinningBids/index copy 2.vue | 524 ++++++++++++++++++
.../listOfWinningBids/index copy.vue | 344 ------------
.../listOfWinningBids/index.vue | 456 ++++++++-------
.../materialIssue/index.vue | 14 +-
.../materialIssue/word/index.vue | 36 +-
.../materials/materialsUseRecord/index.vue | 327 +++++++++++
src/views/progress/plan/index.vue | 2 +-
13 files changed, 1346 insertions(+), 563 deletions(-)
create mode 100644 src/api/materials/materialsUseRecord/index.ts
create mode 100644 src/api/materials/materialsUseRecord/types.ts
create mode 100644 src/views/biddingManagemen/listOfWinningBids/index copy 2.vue
delete mode 100644 src/views/biddingManagemen/listOfWinningBids/index copy.vue
create mode 100644 src/views/materials/materialsUseRecord/index.vue
diff --git a/.env.development b/.env.development
index b59befd..d905b86 100644
--- a/.env.development
+++ b/.env.development
@@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台
VITE_APP_ENV = 'development'
# 开发环境
-VITE_APP_BASE_API = 'http://192.168.110.180:8899'
+VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 无人机接口地址
diff --git a/src/api/materials/materialsUseRecord/index.ts b/src/api/materials/materialsUseRecord/index.ts
new file mode 100644
index 0000000..177b5b2
--- /dev/null
+++ b/src/api/materials/materialsUseRecord/index.ts
@@ -0,0 +1,70 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { MaterialsUseRecordVO, MaterialsUseRecordForm, MaterialsUseRecordQuery } from '@/api/materials/materialsUseRecord/types';
+
+/**
+ * 查询材料使用登记列表
+ * @param query
+ * @returns {*}
+ */
+
+export const listMaterialsUseInventory = (query?: MaterialsUseRecordQuery): AxiosPromise => {
+ return request({
+ url: '/materials/materialsInventory/list',
+ method: 'get',
+ params: query
+ });
+};
+export const listMaterialsUseRecord = (query?: MaterialsUseRecordQuery): AxiosPromise => {
+ return request({
+ url: '/materials/materialsUseRecord/list',
+ method: 'get',
+ params: query
+ });
+};
+
+/**
+ * 查询材料使用登记详细
+ * @param id
+ */
+export const getMaterialsUseRecord = (id: string | number): AxiosPromise => {
+ return request({
+ url: '/materials/materialsUseRecord/' + id,
+ method: 'get'
+ });
+};
+
+/**
+ * 新增材料使用登记
+ * @param data
+ */
+export const addMaterialsUseRecord = (data: MaterialsUseRecordForm) => {
+ return request({
+ url: '/materials/materialsUseRecord',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 修改材料使用登记
+ * @param data
+ */
+export const updateMaterialsUseRecord = (data: MaterialsUseRecordForm) => {
+ return request({
+ url: '/materials/materialsUseRecord',
+ method: 'put',
+ data: data
+ });
+};
+
+/**
+ * 删除材料使用登记
+ * @param id
+ */
+export const delMaterialsUseRecord = (id: string | number | Array) => {
+ return request({
+ url: '/materials/materialsUseRecord/' + id,
+ method: 'delete'
+ });
+};
diff --git a/src/api/materials/materialsUseRecord/types.ts b/src/api/materials/materialsUseRecord/types.ts
new file mode 100644
index 0000000..697f347
--- /dev/null
+++ b/src/api/materials/materialsUseRecord/types.ts
@@ -0,0 +1,111 @@
+export interface MaterialsUseRecordVO {
+ /**
+ * 主键ID
+ */
+ id: string | number;
+
+ /**
+ * 项目ID
+ */
+ projectId: string | number;
+
+ /**
+ * 库存ID
+ */
+ inventoryId: string | number;
+
+ /**
+ * 使用部位
+ */
+ usePart: string;
+
+ /**
+ * 使用数量
+ */
+ useNumber: number;
+
+ /**
+ * 剩余量
+ */
+ residueNumber: string | number;
+
+ /**
+ * 备注
+ */
+ remark: string;
+
+}
+
+export interface MaterialsUseRecordForm extends BaseEntity {
+ /**
+ * 主键ID
+ */
+ id?: string | number;
+
+ /**
+ * 项目ID
+ */
+ projectId?: string | number;
+
+ /**
+ * 库存ID
+ */
+ inventoryId?: string | number;
+
+ /**
+ * 使用部位
+ */
+ usePart?: string;
+
+ /**
+ * 使用数量
+ */
+ useNumber?: number;
+
+ /**
+ * 剩余量
+ */
+ residueNumber?: string | number;
+
+ /**
+ * 备注
+ */
+ remark?: string;
+
+}
+
+export interface MaterialsUseRecordQuery extends PageQuery {
+
+ /**
+ * 项目ID
+ */
+ projectId?: string | number;
+
+ /**
+ * 库存ID
+ */
+ inventoryId?: string | number;
+
+ /**
+ * 使用部位
+ */
+ usePart?: string;
+
+ /**
+ * 使用数量
+ */
+ useNumber?: number;
+
+ /**
+ * 剩余量
+ */
+ residueNumber?: string | number;
+
+ /**
+ * 日期范围参数
+ */
+ params?: any;
+}
+
+
+
diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss
index d2ecb24..d9409ed 100644
--- a/src/assets/styles/ruoyi.scss
+++ b/src/assets/styles/ruoyi.scss
@@ -288,3 +288,14 @@ h6 {
.top-right-btn {
margin-left: auto;
}
+
+.text-two-lines {
+ display: -webkit-box; /* 触发弹性盒模型 */
+ -webkit-box-orient: vertical; /* 垂直排列文本行 */
+ -webkit-line-clamp: 2; /* 限制显示2行 */
+ /* 3. 超出部分处理 */
+ overflow: hidden; /* 隐藏超出容器的内容 */
+ text-overflow: ellipsis; /* 超出部分显示省略号 */
+ /* 可选:优化文本间距 */
+ line-height: 1.5; /* 行高,控制两行的垂直间距 */
+}
diff --git a/src/views/biddingManagemen/appointment/index.vue b/src/views/biddingManagemen/appointment/index.vue
index 7c45599..ce519ad 100644
--- a/src/views/biddingManagemen/appointment/index.vue
+++ b/src/views/biddingManagemen/appointment/index.vue
@@ -58,7 +58,7 @@ import type { ComponentInternalInstance } from 'vue';
import { useUserStoreHook } from '@/store/modules/user';
import { ElMessage, ElLoading } from 'element-plus';
import { biddingGetUser, AddbiddingUser, biddingUserList } from '@/api/bidding/appointment';
-
+import { getProject } from '@/api/project/project';
// 获取当前实例
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
// 获取用户 store
@@ -68,7 +68,7 @@ const currentProject = computed(() => userStore.selectedProject);
// 专业字典数据
const { des_user_major } = toRefs(proxy?.useDict('des_user_major'));
const isDisabled = ref(false);
-
+const projectInfo = ref({}); //项目信息
// 表单数据
const form = reactive({
id: null,
diff --git a/src/views/biddingManagemen/biddingLimit/index.vue b/src/views/biddingManagemen/biddingLimit/index.vue
index 79b4d4f..ce13de3 100644
--- a/src/views/biddingManagemen/biddingLimit/index.vue
+++ b/src/views/biddingManagemen/biddingLimit/index.vue
@@ -16,7 +16,7 @@
{{ isExpandAll ? '一键收起' : '一键展开' }}
-
+
导出excel
@@ -78,7 +78,7 @@
{{ scope.row.price }}
-
+
diff --git a/src/views/biddingManagemen/listOfWinningBids/index copy 2.vue b/src/views/biddingManagemen/listOfWinningBids/index copy 2.vue
new file mode 100644
index 0000000..1e7356c
--- /dev/null
+++ b/src/views/biddingManagemen/listOfWinningBids/index copy 2.vue
@@ -0,0 +1,524 @@
+
+
+
+
+
+
+
+
+
{{ currentProject.name }}
+
+
+
+ 负责人:
+ {{ projectInfo.principal || '-' }}
+
+
+ 负责人电话:
+ {{ projectInfo.principalPhone || '-' }}
+
+
+ 项目类型:
+ {{ getDictLabel(project_type, projectInfo.projectType) || '-' }}
+
+
+ 项目阶段:
+ {{ getDictLabel(project_stage, projectInfo.projectStage) || '-' }}
+
+
+ 开工时间:
+ {{ projectInfo.onStreamTime || '-' }}
+
+
+ 经纬度:
+ {{ projectInfo.lng || '-' }},{{ projectInfo.lat || '-' }}
+
+
+ 项目地址:
+ {{ projectInfo.projectSite || '-' }}
+
+
+ 计划容量(M):
+ {{ projectInfo.plan || '-' }}
+
+
+ 实际容量(M):
+ {{ projectInfo.actual || '-' }}
+
+
+ 设计总量(M):
+ {{ projectInfo.designTotal || '-' }}
+
+
+ 备注:
+ {{ projectInfo.remark || '-' }}
+
+
+
+
+
+ 点击编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认提交
+
+ 重置
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/biddingManagemen/listOfWinningBids/index copy.vue b/src/views/biddingManagemen/listOfWinningBids/index copy.vue
deleted file mode 100644
index cd2f39a..0000000
--- a/src/views/biddingManagemen/listOfWinningBids/index copy.vue
+++ /dev/null
@@ -1,344 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
-
-
-
-
-
-
- 新增
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 修改
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/biddingManagemen/listOfWinningBids/index.vue b/src/views/biddingManagemen/listOfWinningBids/index.vue
index f2c7700..a7f7b43 100644
--- a/src/views/biddingManagemen/listOfWinningBids/index.vue
+++ b/src/views/biddingManagemen/listOfWinningBids/index.vue
@@ -2,18 +2,66 @@
-
+
-
-
-
{{ currentProject.name }}
-
-
- 点击编辑
-
+
+
+
{{ currentProject.name }}
+
+
+
+ 负责人:
+ {{ projectInfo.principal || '-' }}
+
+
+ 负责人电话:
+ {{ projectInfo.principalPhone || '-' }}
+
+
+ 项目类型:
+ {{ getDictLabel(project_type, projectInfo.projectType) || '-' }}
+
+
+ 项目阶段:
+ {{ getDictLabel(project_stage, projectInfo.projectStage) || '-' }}
+
+
+ 开工时间:
+ {{ projectInfo.onStreamTime || '-' }}
+
+
+ 经纬度:
+ {{ projectInfo.lng || '-' }},{{ projectInfo.lat || '-' }}
+
+
+ 项目地址:
+ {{ projectInfo.projectSite || '-' }}
+
+
+ 计划容量(M):
+ {{ projectInfo.plan || '-' }}
+
+
+ 实际容量(M):
+ {{ projectInfo.actual || '-' }}
+
+
+ 设计总量(M):
+ {{ projectInfo.designTotal || '-' }}
+
+
+ 备注:
+ {{ projectInfo.remark || '-' }}
+
+
+
+ 点击编辑
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 是
- 否
+
+
+ 中标
+ 未中标
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -142,125 +117,154 @@
diff --git a/src/views/materials/materialsEquipment/materialIssue/index.vue b/src/views/materials/materialsEquipment/materialIssue/index.vue
index c0c360f..b4ae57e 100644
--- a/src/views/materials/materialsEquipment/materialIssue/index.vue
+++ b/src/views/materials/materialsEquipment/materialIssue/index.vue
@@ -140,7 +140,7 @@
@@ -149,7 +149,7 @@
@@ -158,7 +158,7 @@
@@ -167,7 +167,7 @@
@@ -176,7 +176,7 @@
@@ -185,7 +185,7 @@
@@ -193,7 +193,7 @@
-
+
diff --git a/src/views/materials/materialsEquipment/materialIssue/word/index.vue b/src/views/materials/materialsEquipment/materialIssue/word/index.vue
index 4cfb5d9..7298339 100644
--- a/src/views/materials/materialsEquipment/materialIssue/word/index.vue
+++ b/src/views/materials/materialsEquipment/materialIssue/word/index.vue
@@ -54,31 +54,32 @@
- 序号
- 名称
- 规格
- 单位
- 库存
- 领取
- 剩余
- 备注
+
+ 序号
+ 名称
+ 规格
+ 单位
+ 库存
+ 领取
+ 剩余
+ 备注
- {{ i + 1 }}
- {{ item.name }}
- {{ item.specification }}
- {{ item.unit }}
- {{ item.stockQuantity }}
- {{ item.issuedQuantity }}
- {{ item.remainingQuantity }}
- {{ item.remark }}
+ {{ i + 1 }}
+ {{ item.name }}
+ {{ item.specification }}
+ {{ item.unit }}
+ {{ item.stockQuantity }}
+ {{ item.issuedQuantity }}
+ {{ item.remainingQuantity }}
+ {{ item.remark }}
-
+
缺陷情况:
{{ formData.defectDescription }}
@@ -296,5 +297,6 @@ tbody {
box-shadow: 0px 0px 10px #ddd;
padding: 20px;
position: relative;
+ /* overflow: auto; */
}
diff --git a/src/views/materials/materialsUseRecord/index.vue b/src/views/materials/materialsUseRecord/index.vue
new file mode 100644
index 0000000..c4a7866
--- /dev/null
+++ b/src/views/materials/materialsUseRecord/index.vue
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加登记
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/progress/plan/index.vue b/src/views/progress/plan/index.vue
index 2f22b3f..822c6cb 100644
--- a/src/views/progress/plan/index.vue
+++ b/src/views/progress/plan/index.vue
@@ -288,7 +288,7 @@ const getList = async () => {
matrixOptions.value = matrixList;
queryParams.value.matrixId = matrixList[0].children[0].matrixId;
} catch (error) {
- proxy?.$modal.msgError('获取方阵失败');
+ // proxy?.$modal.msgError('获取方阵失败');
}
}
}
From 9584ab4baaee4475868e5a21c3f06fbef73bc95a Mon Sep 17 00:00:00 2001
From: Teo <2642673902@qq.com>
Date: Fri, 22 Aug 2025 19:53:14 +0800
Subject: [PATCH 17/41] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 5 +-
src/api/progress/progressCategory/index.ts | 9 +
src/utils/request.ts | 4 +-
src/views/progress/progressCategory/index.vue | 21 +-
src/views/tender/bidd/index.vue | 19 +-
src/views/tender/bidd/indexEdit.vue | 358 ++++++++++++++++++
src/views/tender/plan/index.vue | 3 +-
7 files changed, 408 insertions(+), 11 deletions(-)
create mode 100644 src/views/tender/bidd/indexEdit.vue
diff --git a/.env.development b/.env.development
index 4b01d87..97d3ec6 100644
--- a/.env.development
+++ b/.env.development
@@ -6,14 +6,15 @@ VITE_APP_ENV = 'development'
# 开发环境
# 李陈杰 209
-VITE_APP_BASE_API = 'http://192.168.110.209:8899'
+# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 曾涛
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
# 罗成
# VITE_APP_BASE_API = 'http://192.168.110.213:8899'
# 朱银
# VITE_APP_BASE_API = 'http://192.168.110.149:8899'
-# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
+#屈展航
+VITE_APP_BASE_API = 'http://192.168.110.210:8899'
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 无人机接口地址
diff --git a/src/api/progress/progressCategory/index.ts b/src/api/progress/progressCategory/index.ts
index d525264..ed4bb07 100644
--- a/src/api/progress/progressCategory/index.ts
+++ b/src/api/progress/progressCategory/index.ts
@@ -61,3 +61,12 @@ export const delProgressCategory = (id: string | number | Array
method: 'delete'
});
};
+
+//下载
+export const downloadProgressCategory = (data) => {
+ return request({
+ url: '/progress/progressCategory/export',
+ method: 'post',
+ data
+ });
+};
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 288b711..266d4be 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -176,7 +176,7 @@ service.interceptors.response.use(
}
);
// 通用下载方法
-export function download(url: string, params: any, fileName: string) {
+export function download(url: string, params: any, fileName: string, isHeader) {
downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' });
// prettier-ignore
return service.post(url, params, {
@@ -186,7 +186,7 @@ export function download(url: string, params: any, fileName: string) {
return tansParams(params);
}
],
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
+ headers: isHeader?{}:{ 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob'
}).then(async (resp: any) => {
const isLogin = blobValidate(resp);
diff --git a/src/views/progress/progressCategory/index.vue b/src/views/progress/progressCategory/index.vue
index bb8b8db..3af2da8 100644
--- a/src/views/progress/progressCategory/index.vue
+++ b/src/views/progress/progressCategory/index.vue
@@ -8,6 +8,7 @@
新增
+
+ 导出
+
展开/折叠
@@ -144,10 +148,12 @@ import {
getProgressCategory,
delProgressCategory,
addProgressCategory,
- updateProgressCategory
+ updateProgressCategory,
+ downloadProgressCategory
} from '@/api/progress/progressCategory';
import { ProgressCategoryVO, ProgressCategoryQuery, ProgressCategoryForm } from '@/api/progress/progressCategory/types';
import { useUserStoreHook } from '@/store/modules/user';
+import { download } from '@/utils/request';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { progress_unit_type, progress_work_type } = toRefs(proxy?.useDict('progress_unit_type', 'progress_work_type'));
@@ -161,7 +167,7 @@ type ProgressCategoryOption = {
name: string;
children?: ProgressCategoryOption[];
};
-
+const treeRef = ref();
const matrixOptions = ref([]);
const progressCategoryList = ref([]);
@@ -236,6 +242,7 @@ const data = reactive>({
});
const { queryParams, form, rules } = toRefs(data);
+const matrixIdList = ref([]);
/** 查询分项工程单价列表 */
const getList = async () => {
@@ -252,7 +259,6 @@ const getList = async () => {
});
if (!matrixValue.value) matrixValue.value = matrixList[0].id;
matrixOptions.value = matrixList;
- console.log('🚀 ~ getList ~ matrixList:', matrixList);
queryParams.value.matrixId = matrixList[0].children[0].matrixId;
form.value.projectId = matrixList[0].projectId;
form.value.matrixId = matrixList[0].children[0].matrixId;
@@ -300,9 +306,7 @@ const reset = () => {
const handleChange = (value: number) => {
form.value.matrixId = value[1];
form.value.projectId = value[0];
-
queryParams.value.matrixId = value[1];
-
getList();
};
@@ -361,6 +365,13 @@ const handleUpdate = async (row: ProgressCategoryVO) => {
dialog.title = '修改分项工程单价';
};
+const handleExport = async () => {
+ const ids = treeRef.value.getCheckedNodes()[0].pathNodes[0].childrenData.map((item) => item.matrixId);
+ const res = await downloadProgressCategory({ ids });
+ download('/progress/progressCategory/export', { ids }, '方阵.xlsx', true);
+ // window.open(res.data);
+};
+
/** 提交按钮 */
const submitForm = () => {
progressCategoryFormRef.value?.validate(async (valid: boolean) => {
diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue
index 8df76ed..e476fe7 100644
--- a/src/views/tender/bidd/index.vue
+++ b/src/views/tender/bidd/index.vue
@@ -37,6 +37,9 @@
导出excel
+
+ 审核
+
@@ -104,6 +107,8 @@ const queryForm = ref({
sheet: ''
});
+const versionsData = ref({});
+
const activeTab = ref('2');
const sheets = ref([]);
const options = ref([]);
@@ -118,7 +123,8 @@ const handleTabChange = (tab: string) => {
getVersionNums();
};
//切换版本
-const changeVersions = () => {
+const changeVersions = (value) => {
+ versionsData.value = options.value.find((item) => item.versions == value);
getSheetName();
};
//切换表格
@@ -148,6 +154,8 @@ const getVersionNums = async () => {
options.value = res.data;
if (res.data.length > 0) {
queryForm.value.versions = res.data[0].versions;
+ versionsData.value = options.value.find((item) => item.versions == queryForm.value.versions);
+ console.log('🚀 ~ changeVersions ~ versionsData.value:', versionsData.value);
getSheetName();
} else {
queryForm.value.versions = '';
@@ -261,6 +269,15 @@ const handleSave = (row: any) => {
loading.value = false;
}
};
+
+/** 审核按钮操作 */
+const handleAudit = async () => {
+ proxy?.$tab.openPage('/approval/tenderPlan/indexEdit', '审核招标一览', {
+ id: queryForm.value.versions,
+ type: 'update'
+ });
+};
+
//监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
diff --git a/src/views/tender/bidd/indexEdit.vue b/src/views/tender/bidd/indexEdit.vue
new file mode 100644
index 0000000..e92d56a
--- /dev/null
+++ b/src/views/tender/bidd/indexEdit.vue
@@ -0,0 +1,358 @@
+
+
+
+
+
+
+
+
+
+
+
施工产值
+
+
+
+
+
+
+
+
+
+ (scope.row.unitPrice = val)"
+ :precision="2"
+ :step="0.1"
+ :controls="false"
+ v-if="scope.row.quantity && scope.row.quantity != 0"
+ />
+
+
+
+
+ {{ scope.row.price }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue
index 7fd28de..01b093b 100644
--- a/src/views/tender/plan/index.vue
+++ b/src/views/tender/plan/index.vue
@@ -94,6 +94,7 @@
v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']"
>详情
+
userStore.selectedProject);
const tabList = ref([]);
From 1405857f555d4e313d92c42e6b70b9836bc6aa2e Mon Sep 17 00:00:00 2001
From: dhr <2216804034@qq.com>
Date: Fri, 22 Aug 2025 19:53:59 +0800
Subject: [PATCH 18/41] 0822
---
src/views/largeScreen/components/leftPage.vue | 5 +++--
src/views/patch/index.vue | 4 +++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue
index 325df42..2f33222 100644
--- a/src/views/largeScreen/components/leftPage.vue
+++ b/src/views/largeScreen/components/leftPage.vue
@@ -202,8 +202,9 @@ const generatePieOption = (data) => {
{
name: '合同数量',
type: 'pie',
- radius: ['45%', '65%'],
- center: ['50%', '60%'],
+
+ radius: ['30%', '60%'],
+ center: ['30%', '60%'],
data: [], // 空数据,避免显示圆环
itemStyle: { borderColor: '#000', borderWidth: 1 },
// 中心显示“加载中”提示
diff --git a/src/views/patch/index.vue b/src/views/patch/index.vue
index 149aea8..c7caebf 100644
--- a/src/views/patch/index.vue
+++ b/src/views/patch/index.vue
@@ -631,7 +631,9 @@ const handleProgressInput = () => {
const handleExport = () => {
proxy?.download('patch/patch/export', { ...queryParams.value }, `任务列表_${new Date().getTime()}.xlsx`);
};
-
+onMounted(() => {
+ getList();
+});
// 监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
From 169f5ae376bfcdafdb7ffcaea1af0a3f18c84b43 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Fri, 22 Aug 2025 21:08:56 +0800
Subject: [PATCH 19/41] =?UTF-8?q?feat(ctr):=20=E4=BC=98=E5=8C=96=E5=90=88?=
=?UTF-8?q?=E5=90=8C=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 优化富文本编辑器组件,增加占位符功能
- 在费用合同和收入合同列表中添加支付方式列
- 增加合同内容详情对话框,用于查看分包内容
- 在收入合同列表中添加修改合同功能
- 根据合同类型动态显示承包内容或合同内容
---
src/components/Editor/index.vue | 49 +++--
src/views/ctr/expensesContract/index.vue | 33 ++-
src/views/ctr/incomeContract/index.vue | 49 ++++-
src/views/ctr/index.vue | 5 +-
src/views/ctr/update/index.vue | 246 +++++++++++++++++++++++
5 files changed, 352 insertions(+), 30 deletions(-)
create mode 100644 src/views/ctr/update/index.vue
diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue
index ba70fbb..2b569d0 100644
--- a/src/components/Editor/index.vue
+++ b/src/components/Editor/index.vue
@@ -1,28 +1,14 @@
-
+
- $emit('update:modelValue', content)"
- />
+ $emit('update:modelValue', content)" />
@@ -47,7 +33,9 @@ const props = defineProps({
/* 上传文件大小限制(MB) */
fileSize: propTypes.number.def(5),
/* 类型(base64格式、url格式) */
- type: propTypes.string.def('url')
+ type: propTypes.string.def('url'),
+ /* 占位符 */
+ placeholder: propTypes.string.def('请输入内容'),
});
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@@ -90,7 +78,7 @@ const options = ref({
}
}
},
- placeholder: '请输入内容',
+ placeholder: props.placeholder,
readOnly: props.readOnly
});
@@ -166,77 +154,96 @@ const handleUploadError = (err: any) => {
.editor-img-uploader {
display: none;
}
+
.editor,
.ql-toolbar {
white-space: pre-wrap !important;
line-height: normal !important;
}
+
.quill-img {
display: none;
}
+
.ql-snow .ql-tooltip[data-mode='link']::before {
content: '请输入链接地址:';
}
+
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0;
content: '保存';
padding-right: 0;
}
+
.ql-snow .ql-tooltip[data-mode='video']::before {
content: '请输入视频地址:';
}
+
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: '14px';
}
+
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before {
content: '10px';
}
+
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before {
content: '18px';
}
+
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before {
content: '32px';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: '文本';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before {
content: '标题1';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before {
content: '标题2';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before {
content: '标题3';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before {
content: '标题4';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before {
content: '标题5';
}
+
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before {
content: '标题6';
}
+
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
content: '标准字体';
}
+
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before {
content: '衬线字体';
}
+
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before {
content: '等宽字体';
diff --git a/src/views/ctr/expensesContract/index.vue b/src/views/ctr/expensesContract/index.vue
index 6ad4a81..91cb795 100644
--- a/src/views/ctr/expensesContract/index.vue
+++ b/src/views/ctr/expensesContract/index.vue
@@ -60,12 +60,18 @@
-
+
+
+
+ 月结算
+ 形象节点
+
+
@@ -85,9 +91,13 @@
-->
-
+
+
+ 查看分包内容
+
+
查看附件列表
-
+
@@ -128,7 +138,17 @@
+
+
+
+
+
+
@@ -156,6 +176,8 @@ const userStore = useUserStore();
const queryFormRef = ref();
const expensesContractFormRef = ref();
const currentProject = computed(() => userStore.selectedProject);
+const detailContent = ref('');
+const detailVisible = ref(false); // 控制承包内容详情对话框的显示
const dialog = reactive({
visible: false,
@@ -299,7 +321,10 @@ const handleShowFileList = async (row: ExpensesContractVO) => {
});
}
-
+const handleShowDetail = (data) => {
+ detailContent.value = data.contractedContent
+ detailVisible.value = true;
+}
onMounted(() => {
getList();
});
diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue
index ee2d04e..af3991a 100644
--- a/src/views/ctr/incomeContract/index.vue
+++ b/src/views/ctr/incomeContract/index.vue
@@ -61,6 +61,12 @@
+
+
+ 月结算
+ 形象节点
+
+
@@ -82,10 +88,17 @@
-
- 查看附件列表
-
+
+ 修改合同
+
+
+ 查看分包内容
+
+
+ 查看附件列表
+
@@ -123,6 +136,17 @@
+
+
+
+
+
+
+
@@ -131,9 +155,12 @@ import { listIncomeContract, getIncomeContract, delIncomeContract, addIncomeCont
import { IncomeContractVO, IncomeContractQuery, IncomeContractForm } from '@/api/ctr/incomeContract/types';
import FileList from '@/components/FileList/index.vue';
import useUserStore from '@/store/modules/user';
+import { useRouter } from 'vue-router'
+
const { proxy } = getCurrentInstance();
const userStore = useUserStore();
const currentProject = computed(() => userStore.selectedProject);
+const router = useRouter();
const { expenses_contract_type, income_contract_type } = toRefs(
proxy?.useDict('income_contract_type', 'expenses_contract_type')
@@ -154,7 +181,8 @@ const dialog = reactive({
visible: false,
title: ''
});
-
+const detailVisible = ref(false); // 控制承包内容详情对话框的显示
+const detailContent = ref('');
const initFormData: IncomeContractForm = {
id: undefined,
projectId: undefined,
@@ -292,7 +320,20 @@ const handleShowFileList = async (row: IncomeContractVO) => {
});
}
+const handleEdit = (row: IncomeContractVO) => {
+ // console.log(router);
+ router.push({
+ path: "/ctr/update",
+ query: {
+ id: row.id,
+ }
+ })
+}
+const handleShowDetail = (data) => {
+ detailContent.value = data.contractedContent
+ detailVisible.value = true;
+}
onMounted(() => {
getList();
});
diff --git a/src/views/ctr/index.vue b/src/views/ctr/index.vue
index 0412f38..25b464d 100644
--- a/src/views/ctr/index.vue
+++ b/src/views/ctr/index.vue
@@ -33,7 +33,10 @@
-
+
+
+
+
diff --git a/src/views/ctr/update/index.vue b/src/views/ctr/update/index.vue
new file mode 100644
index 0000000..13be196
--- /dev/null
+++ b/src/views/ctr/update/index.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+
+
+ 修改收入合同
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 下一步
+
+
+
+ 修改收入合同
+
+
+
+ 月结算
+ 形象节点
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上一步
+ 提交
+
+
+
+
+
+
+
+
+
From 340954167fc9be327372504760fb2b9d1748c377 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Fri, 22 Aug 2025 21:19:19 +0800
Subject: [PATCH 20/41] =?UTF-8?q?refactor(ctr):=20=E8=B0=83=E6=95=B4?=
=?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E7=9A=84?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=92=8C=E8=AF=A6=E6=83=85?=
=?UTF-8?q?=E6=A0=87=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 注释掉费用合同和收入合同页面的"合同金额"查询条件
- 修改费用合同页面的"分包内容详情"标题为"合同内容详情"
- 修改收入合同页面的"承包内容详情"标题为"合同内容详情"
- 调整收入合同页面"查看分包内容"按钮文字为"查看合同内容"
---
src/views/ctr/expensesContract/index.vue | 6 +++---
src/views/ctr/incomeContract/index.vue | 8 ++++----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/views/ctr/expensesContract/index.vue b/src/views/ctr/expensesContract/index.vue
index 91cb795..141c854 100644
--- a/src/views/ctr/expensesContract/index.vue
+++ b/src/views/ctr/expensesContract/index.vue
@@ -15,9 +15,9 @@
-
+
搜索
重置
@@ -93,7 +93,7 @@
v-if="scope.row.isUpdate">修改合同
- 查看分包内容
+ 查看合同内容
@@ -136,7 +136,7 @@
-
+
From 31963f69c3978add0c4be30d83ca499b3f122938 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Fri, 22 Aug 2025 22:24:10 +0800
Subject: [PATCH 21/41] =?UTF-8?q?feat(ctr):=20=E4=BC=98=E5=8C=96=E5=90=88?=
=?UTF-8?q?=E5=90=8C=E6=8F=90=E4=BA=A4=E6=B5=81=E7=A8=8B=E5=B9=B6=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E6=9B=B4=E6=96=B0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修改合同提交成功后的步骤重置逻辑,根据合同类型跳转到不同页面
- 更新合同信息页面,添加批量导出功能
- 优化合同信息获取逻辑,提高页面加载速度
---
src/views/ctr/index.vue | 7 ++-
src/views/ctr/update/index.vue | 98 +++++++++++++++++++++++++++++++---
2 files changed, 96 insertions(+), 9 deletions(-)
diff --git a/src/views/ctr/index.vue b/src/views/ctr/index.vue
index 25b464d..29f1463 100644
--- a/src/views/ctr/index.vue
+++ b/src/views/ctr/index.vue
@@ -319,7 +319,12 @@ const submitForm = async () => {
}
resetForm();
ElMessage.success('合同提交成功');
- active.value = 0; // 重置步骤
+ // active.value = 0; // 重置步骤
+ if (contract_type.value === 'income') {
+ proxy.$router.push('/ctr/incomeContract');
+ } else {
+ proxy.$router.push('/ctr/expensesContract');
+ }
} else {
ElMessage.error('请填写完整的付款信息');
}
diff --git a/src/views/ctr/update/index.vue b/src/views/ctr/update/index.vue
index 13be196..c6aa4d8 100644
--- a/src/views/ctr/update/index.vue
+++ b/src/views/ctr/update/index.vue
@@ -220,14 +220,96 @@ const handleChoose = async () => {
}
onMounted(async () => {
- const id = route.query.id;
- if (id) {
- const { data } = await getIncomeContract(id);
- form.value.id = data.id;
- form.value.contractOwner = data.contractOwner
- } else {
- router.push('/ctr/incomeContract');
- }
+ // const id = route.query.id;
+ // if (id) {
+ // const { data } = await getIncomeContract(id);
+ // form.value.id = data.id;
+ // form.value.contractOwner = data.contractOwner
+ // } else {
+ // router.push('/ctr/incomeContract');
+ // }
+
+ proxy?.download(
+ '/progress/progressCategory/export',
+ {
+ "ids": [
+ "1951552037761114114",
+ "1951552037811445761",
+ "1951552037811445762",
+ "1951552037811445763",
+ "1951552037811445764",
+ "1951552037811445765",
+ "1951552037811445766",
+ "1951552037811445767",
+ "1951552037865971713",
+ "1951552037865971714",
+ "1951552037865971715",
+ "1951552037865971716",
+ "1951552037865971717",
+ "1951552037865971718",
+ "1951552037865971719",
+ "1951552037865971720",
+ "1951552037865971721",
+ "1951552037865971722",
+ "1951552037865971723",
+ "1951552037865971724",
+ "1951552037865971725",
+ "1951552037924691969",
+ "1951552037924691970",
+ "1951552037924691971",
+ "1951552037924691972",
+ "1951552037924691973",
+ "1951552037924691974",
+ "1951552037924691975",
+ "1951552037924691976",
+ "1951552037924691977",
+ "1951552037962440706",
+ "1951552037962440707",
+ "1951552037962440708",
+ "1951552037962440709",
+ "1951552037962440710",
+ "1951552037962440711",
+ "1951552037962440712",
+ "1951552038004383745",
+ "1951552038004383746",
+ "1951552038004383747",
+ "1951552038004383748",
+ "1951552038004383749",
+ "1951552038004383750",
+ "1951552038004383751",
+ "1951552038004383752",
+ "1951552038004383753",
+ "1951552038004383754",
+ "1951552038058909698",
+ "1951552038058909699",
+ "1951552038058909700",
+ "1951552038058909701",
+ "1951552038058909702",
+ "1951552038058909703",
+ "1951552038058909704",
+ "1951552038096658434",
+ "1951552038096658435",
+ "1951552038096658436",
+ "1951552038096658437",
+ "1951552038096658438",
+ "1951552038096658439",
+ "1951552038096658440",
+ "1951552038096658441",
+ "1951552038096658442",
+ "1951552038096658443",
+ "1951552038096658444",
+ "1951552038146990081",
+ "1951552038146990082",
+ "1951552038146990083",
+ "1951552038146990084",
+ "1951552038146990085",
+ "1951552038188933122",
+ "1951552038188933123",
+ "1951552038188933124"
+ ]
+ },
+ `1.xlsx`
+ );
})
diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue
index 8df76ed..540b9c8 100644
--- a/src/views/tender/bidd/index.vue
+++ b/src/views/tender/bidd/index.vue
@@ -27,7 +27,7 @@
class="upload-demo"
:http-request="importExcel"
:show-file-list="false"
- v-hasPermi="['tender:billofquantitiesLimitList:importExcelFile']"
+ v-hasPermi="['tender:tenderPlanLimitList:importExcelFile']"
>
导入excel
@@ -35,7 +35,7 @@
- 导出excel
+ 导出excel
@@ -70,7 +70,7 @@
size="small"
@click="handleSave(scope.row)"
v-if="scope.row.quantity && scope.row.quantity != 0"
- v-hasPermi="['tender:billofquantitiesLimitList:edit']"
+ v-hasPermi="['tender:tenderPlanLimitList:edit']"
>确定
diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue
index c378eea..4cf702f 100644
--- a/src/views/tender/plan/index.vue
+++ b/src/views/tender/plan/index.vue
@@ -14,7 +14,7 @@
搜索
重置
- 新增
+ 新增
@@ -26,11 +26,10 @@
+
- 查看文件
+ 查看文件
@@ -52,6 +51,7 @@
value-format="YYYY-MM-DD"
placeholder="选择时间"
:disabled="scope.row.bidStatus == 1"
+ v-hasPermi="['tender:biddingPlan:edit']"
/>
@@ -69,6 +69,7 @@
:step="1"
:controls="false"
:disabled="scope.row.bidStatus == 1"
+ v-hasPermi="['tender:biddingPlan:edit']"
/>
@@ -80,7 +81,7 @@
link
icon="FolderOpened"
@click="handleSave(scope.row)"
- v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
+ v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']"
:disabled="scope.row.bidStatus == 1"
>招标上传
@@ -89,7 +90,7 @@
link
icon="FolderOpened"
@click="handleWinTheBid(scope.row)"
- v-hasPermi="['tender:segmentedIndicatorPlanning:edit']"
+ v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']"
:disabled="scope.row.bidStatus == 1"
>中标上传
@@ -102,7 +103,7 @@
icon="View"
@click="handleDetail(scope.row)"
:disabled="scope.row.bidStatus == 1"
- v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']"
+ v-hasPermi="['tender:biddingPlan:getMore']"
>详情
删除
确定
@@ -232,7 +233,15 @@
查看
- 删除
+ 删除
From 5258b37d07521fb0faf2da5af59fc6a4b5856424 Mon Sep 17 00:00:00 2001
From: taoge1020
Date: Fri, 22 Aug 2025 22:52:29 +0800
Subject: [PATCH 23/41] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 2 +-
src/components/FileUpload/index.vue | 60 ++++--
.../biddingManagemen/biddingLimit/index.vue | 4 +-
.../listOfWinningBids/index.vue | 191 +++++++++++++++---
4 files changed, 206 insertions(+), 51 deletions(-)
diff --git a/.env.development b/.env.development
index d905b86..6e07116 100644
--- a/.env.development
+++ b/.env.development
@@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台
VITE_APP_ENV = 'development'
# 开发环境
-VITE_APP_BASE_API = 'http://192.168.110.209:8899'
+VITE_APP_BASE_API = 'http://192.168.110.149:8899'
# 无人机接口地址
diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue
index 8bfd847..5011b9d 100644
--- a/src/components/FileUpload/index.vue
+++ b/src/components/FileUpload/index.vue
@@ -1,11 +1,28 @@
-
+
@@ -24,10 +41,14 @@
的文件
-
-
+
+
{{ getFileName(file.name) }}
@@ -180,13 +201,16 @@ watch(
},
{ deep: true, immediate: true }
);
-watch(() => props.defaultFileList, () => {
- if (props.defaultFileList.length === 0) return;
- props.defaultFileList.forEach((item: any) => {
- fileList.value.push(item);
- });
-
-}, { deep: true, immediate: true });
+watch(
+ () => props.defaultFileList,
+ () => {
+ if (props.defaultFileList.length === 0) return;
+ props.defaultFileList.forEach((item: any) => {
+ fileList.value.push(item);
+ });
+ },
+ { deep: true, immediate: true }
+);
// 上传前校检格式和大小
const handleBeforeUpload = (file: any) => {
// 校检文件类型
@@ -424,7 +448,7 @@ defineExpose({ submitUpload });
}
}
- >span {
+ > span {
width: 100%;
}
}
diff --git a/src/views/biddingManagemen/biddingLimit/index.vue b/src/views/biddingManagemen/biddingLimit/index.vue
index ea9359d..ce13de3 100644
--- a/src/views/biddingManagemen/biddingLimit/index.vue
+++ b/src/views/biddingManagemen/biddingLimit/index.vue
@@ -32,7 +32,7 @@
导出excel
-
+
diff --git a/src/views/biddingManagemen/listOfWinningBids/index.vue b/src/views/biddingManagemen/listOfWinningBids/index.vue
index a7f7b43..9ea8b22 100644
--- a/src/views/biddingManagemen/listOfWinningBids/index.vue
+++ b/src/views/biddingManagemen/listOfWinningBids/index.vue
@@ -89,8 +89,106 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -122,14 +220,20 @@ import { ListOfWinningBidsForm } from '@/api/bidding/listOfWinningBids/types';
import { useUserStoreHook } from '@/store/modules/user';
import { ElFormInstance, ElMessage } from 'element-plus';
import { getProject, updateProject } from '@/api/project/project';
-
+import { globalHeaders } from '@/utils/request';
+import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
+import { genFileId } from 'element-plus';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { project_type, project_stage } = toRefs(proxy?.useDict('project_type', 'project_stage'));
-
+const headers = ref(globalHeaders());
+const fileList = ref([]);
// 用户状态管理与当前项目
const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject);
-
+// const realUploadUrl = computed(() => {
+// const search = new URLSearchParams().toString();
+// return search ? `${baseUrl}${props.uploadUrl}?${search}` : `${baseUrl}${props.uploadUrl}`;
+// });
// 项目信息(仅展示,非表单编辑)
const projectInfo = reactive({
principal: undefined,
@@ -151,17 +255,29 @@ const projectInfo = reactive({
const listOfWinningBidsFormRef = ref();
const buttonLoading = ref(false);
const isDisabled = ref(false);
-
-// 表单初始数据
+const fileObj = ref({
+ bidFile: undefined,
+ bidFileName: undefined
+});
+// 表单初始数据(新增招标相关参数)
const initFormData = {
id: undefined,
projectId: currentProject.value?.id,
whetherBid: '1', // 是否中标:0=中标,1=未中标
bidPrice: undefined, // 中标价(人民币)
- bidFile: undefined // 中标通知书
+ bidFileId: undefined, // 中标通知书
+ biddingAgency: undefined, //招标代理机构
+ tenderer: undefined, //招标人
+ biddingDeadline: undefined, //投标截止时间
+ bidopeningTime: undefined, //开标时间
+ projectOverview: undefined, //项目概况
+ constructionsite: undefined, //建设地点
+ planDuration: undefined, //计划工期
+ answeringDeadlineTime: undefined, //答疑截止时间
+ clarifyDeadlineTime: undefined //澄清截止时间
};
-// 表单数据与验证规则(核心:是否中标/中标价/中标通知书均设为必填)
+// 表单数据与验证规则(核心:是否中标/中标价/中标通知书均设为必填,新增参数添加基础验证)
const data = reactive({
form: { ...initFormData } as ListOfWinningBidsForm,
rules: {
@@ -187,7 +303,7 @@ const data = reactive({
}
],
// 中标通知书:仅中标时必填
- bidFile: [
+ bidFileId: [
{
required: true,
message: '请上传中标通知书',
@@ -199,7 +315,25 @@ const data = reactive({
callback();
}
}
- ]
+ ],
+ // 招标代理机构:必填
+ biddingAgency: [{ required: true, message: '请输入招标代理机构', trigger: 'blur' }],
+ // 招标人:必填
+ tenderer: [{ required: true, message: '请输入招标人', trigger: 'blur' }],
+ // 投标截止时间:必填
+ biddingDeadline: [{ required: true, message: '请选择投标截止时间', trigger: 'change' }],
+ // 开标时间:必填
+ bidopeningTime: [{ required: true, message: '请选择开标时间', trigger: 'change' }],
+ // 项目概况:必填
+ projectOverview: [{ required: true, message: '请输入项目概况', trigger: 'blur' }],
+ // 建设地点:必填
+ constructionsite: [{ required: true, message: '请输入建设地点', trigger: 'blur' }],
+ // 计划工期:必填
+ planDuration: [{ required: true, message: '请输入计划工期', trigger: 'blur' }],
+ // 答疑截止时间:必填
+ answeringDeadlineTime: [{ required: true, message: '请选择答疑截止时间', trigger: 'change' }],
+ // 澄清截止时间:必填
+ clarifyDeadlineTime: [{ required: true, message: '请选择澄清截止时间', trigger: 'change' }]
} as Record
});
@@ -213,7 +347,18 @@ const getDictLabel = (dictList: any[], value: any) => {
const dictItem = dictList.find((item) => item.value === value);
return dictItem ? dictItem.label : '';
};
+const handleUploadSuccess = (val) => {
+ fileObj.value.bidFile = val.url;
+ fileObj.value.bidFileName = val.fileName;
+};
+const upload = ref();
+const handleExceed: UploadProps['onExceed'] = (files) => {
+ upload.value!.clearFiles();
+ const file = files[0] as UploadRawFile;
+ file.uid = genFileId();
+ upload.value!.handleStart(file);
+};
/**
* 初始化中标数据(根据项目ID查询已有记录)
*/
@@ -221,6 +366,7 @@ const initData = async () => {
try {
if (currentProject.value?.id) {
const res = await listListOfWinningBids({ projectId: currentProject.value.id });
+ console.log(res);
if (res.code === 200) {
resetForm();
if (res.data) {
@@ -240,7 +386,7 @@ const initData = async () => {
/**
* 提交表单(含项目信息更新+中标信息提交)
*/
-const submitForm = () => {
+const submitForm = async () => {
listOfWinningBidsFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
@@ -248,26 +394,10 @@ const submitForm = () => {
// 1. 同步项目ID和名称
form.value.projectId = currentProject.value?.id;
form.value.projectName = projectInfo.projectName;
-
- // 2. 更新项目基础信息(若有变更)
- if (currentProject.value?.id) {
- await updateProject({ id: currentProject.value.id, ...projectInfo });
- }
-
- // 3. 提交中标信息(新增/编辑)
- const isEdit = !!form.value.id;
- if (isEdit) {
- await updateListOfWinningBids(form.value);
- } else {
- await addListOfWinningBids(form.value);
- }
-
+ await addListOfWinningBids({ ...form.value, ...projectInfo });
// 4. 提交成功后切换为查看状态
isDisabled.value = true;
- ElMessage.success(isEdit ? '编辑成功' : '提交成功');
- } catch (error) {
- ElMessage.error('提交失败,请重试');
- console.error('提交表单失败:', error);
+ ElMessage.success('提交成功');
} finally {
buttonLoading.value = false;
}
@@ -282,6 +412,7 @@ const getProjectDetail = async () => {
try {
if (currentProject.value?.id) {
const res = await getProject(currentProject.value.id);
+
Object.assign(projectInfo, res.data);
}
} catch (error) {
From ea56d292ecb3972f242817ec7a52216aeed870c5 Mon Sep 17 00:00:00 2001
From: Teo <2642673902@qq.com>
Date: Fri, 22 Aug 2025 22:57:45 +0800
Subject: [PATCH 24/41] =?UTF-8?q?=E6=8B=9B=E6=A0=87=E4=B8=80=E8=A7=88?=
=?UTF-8?q?=E5=AE=A1=E6=A0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 4 +-
src/api/tender/index.ts | 9 ++
src/utils/request.ts | 17 ++--
src/views/progress/progressCategory/index.vue | 12 ++-
src/views/tender/bidd/index.vue | 8 +-
src/views/tender/bidd/indexEdit.vue | 90 ++++++++++++-------
6 files changed, 93 insertions(+), 47 deletions(-)
diff --git a/.env.development b/.env.development
index 97d3ec6..7203b00 100644
--- a/.env.development
+++ b/.env.development
@@ -12,9 +12,9 @@ VITE_APP_ENV = 'development'
# 罗成
# VITE_APP_BASE_API = 'http://192.168.110.213:8899'
# 朱银
-# VITE_APP_BASE_API = 'http://192.168.110.149:8899'
+VITE_APP_BASE_API = 'http://192.168.110.149:8899'
#屈展航
-VITE_APP_BASE_API = 'http://192.168.110.210:8899'
+# VITE_APP_BASE_API = 'http://192.168.110.210:8899'
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 无人机接口地址
diff --git a/src/api/tender/index.ts b/src/api/tender/index.ts
index 4c367c5..fd5a8ec 100644
--- a/src/api/tender/index.ts
+++ b/src/api/tender/index.ts
@@ -113,3 +113,12 @@ export const getUnitList = (query: any): AxiosPromise => {
params: query
});
};
+
+//获取审核状态
+export const getApproval = (id) => {
+ return request({
+ url: '/tender/tenderPlanLimitList/getVersionDetail',
+ method: 'get',
+ params: { versions: id }
+ });
+};
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 266d4be..0ff507c 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -176,22 +176,26 @@ service.interceptors.response.use(
}
);
// 通用下载方法
-export function download(url: string, params: any, fileName: string, isHeader) {
+export function download(url: string, params: any, fileName: string, isHeader?: boolean) {
downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' });
// prettier-ignore
- return service.post(url, params, {
+ let data={
transformRequest: [
(params: any) => {
return tansParams(params);
}
],
- headers: isHeader?{}:{ 'Content-Type': 'application/x-www-form-urlencoded' },
+ headers: isHeader?{'Content-Type': 'application/json'}:{ 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob'
- }).then(async (resp: any) => {
+ }
+ if (isHeader) delete data.transformRequest;
+ return service
+ .post(url, params, data as any)
+ .then(async (resp: any) => {
const isLogin = blobValidate(resp);
if (isLogin) {
- console.log("🚀 ~ download ~ resp:", resp)
+ console.log('🚀 ~ download ~ resp:', resp);
const blob = new Blob([resp]);
FileSaver.saveAs(blob, fileName);
} else {
@@ -201,7 +205,8 @@ export function download(url: string, params: any, fileName: string, isHeader) {
ElMessage.error(errMsg);
}
downloadLoadingInstance.close();
- }).catch((r: any) => {
+ })
+ .catch((r: any) => {
console.error(r);
ElMessage.error('下载文件出现错误,请联系管理员!');
downloadLoadingInstance.close();
diff --git a/src/views/progress/progressCategory/index.vue b/src/views/progress/progressCategory/index.vue
index 3af2da8..affd541 100644
--- a/src/views/progress/progressCategory/index.vue
+++ b/src/views/progress/progressCategory/index.vue
@@ -153,7 +153,6 @@ import {
} from '@/api/progress/progressCategory';
import { ProgressCategoryVO, ProgressCategoryQuery, ProgressCategoryForm } from '@/api/progress/progressCategory/types';
import { useUserStoreHook } from '@/store/modules/user';
-import { download } from '@/utils/request';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { progress_unit_type, progress_work_type } = toRefs(proxy?.useDict('progress_unit_type', 'progress_work_type'));
@@ -367,9 +366,14 @@ const handleUpdate = async (row: ProgressCategoryVO) => {
const handleExport = async () => {
const ids = treeRef.value.getCheckedNodes()[0].pathNodes[0].childrenData.map((item) => item.matrixId);
- const res = await downloadProgressCategory({ ids });
- download('/progress/progressCategory/export', { ids }, '方阵.xlsx', true);
- // window.open(res.data);
+ proxy?.download(
+ '/progress/progressCategory/export',
+ {
+ ids: ids
+ },
+ `qualityInspection_${new Date().getTime()}.xlsx`,
+ true
+ );
};
/** 提交按钮 */
diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue
index e476fe7..b0a7cab 100644
--- a/src/views/tender/bidd/index.vue
+++ b/src/views/tender/bidd/index.vue
@@ -107,7 +107,7 @@ const queryForm = ref({
sheet: ''
});
-const versionsData = ref({});
+const versionsData = ref({});
const activeTab = ref('2');
const sheets = ref([]);
@@ -272,9 +272,11 @@ const handleSave = (row: any) => {
/** 审核按钮操作 */
const handleAudit = async () => {
- proxy?.$tab.openPage('/approval/tenderPlan/indexEdit', '审核招标一览', {
+ proxy?.$tab.openPage('/approval/tenderBidd/indexEdit', '审核招标一览', {
id: queryForm.value.versions,
- type: 'update'
+ type: 'update',
+ activeTab: activeTab.value,
+ status: versionsData.value.status
});
};
diff --git a/src/views/tender/bidd/indexEdit.vue b/src/views/tender/bidd/indexEdit.vue
index e92d56a..1a0b993 100644
--- a/src/views/tender/bidd/indexEdit.vue
+++ b/src/views/tender/bidd/indexEdit.vue
@@ -9,14 +9,14 @@
@handleApprovalRecord="handleApprovalRecord"
:buttonLoading="buttonLoading"
:id="form.id"
- :status="form.auditStatus"
+ :status="form.status"
:pageType="routeParams.type"
/>
-
施工产值
+ 招标一览
@@ -24,18 +24,7 @@
-
-
- (scope.row.unitPrice = val)"
- :precision="2"
- :step="0.1"
- :controls="false"
- v-if="scope.row.quantity && scope.row.quantity != 0"
- />
-
-
+
{{ scope.row.price }}
@@ -90,6 +79,8 @@ const { design_change_reason_type } = toRefs(proxy?.useDict('design_change_
import { getKnowledgeDocument } from '@/api/design/technicalStandard';
import { getConstructionValue } from '@/api/out/constructionValue';
import { workScheduleListDetail } from '@/api/progress/plan';
+import { sheetList } from '@/api/contract';
+import { getApproval, getTableList } from '@/api/tender';
// 获取用户 store
const userStore = useUserStoreHook();
// 从 store 中获取项目列表和当前选中的项目
@@ -111,11 +102,15 @@ const approvalRecordRef = ref>();
//按钮组件
const flowCodeOptions = [
{
- value: currentProject.value?.id + '_constructionValue',
- label: '施工产值审批'
+ value: currentProject.value?.id + '_bLimitEquipmentList',
+ label: '招标一览审批'
}
];
-
+const sheets = ref([]);
+const queryForm = ref({
+ versions: '',
+ sheet: ''
+});
const leaveFormRef = ref();
const dialog = reactive({
visible: false,
@@ -133,17 +128,10 @@ const taskVariables = ref>({});
const initFormData = {
id: undefined,
projectId: currentProject.value?.id,
- matrixName: undefined,
- progressCategoryName: undefined,
- artificialNum: undefined,
- planNum: undefined,
- planDate: undefined,
- uavNum: undefined,
- confirmNum: undefined,
- outValue: undefined,
- reportDate: undefined,
- reportDateId: undefined,
- auditStatus: undefined
+ versions: undefined,
+ sheet: undefined,
+ type: undefined,
+ status: undefined
};
const data = reactive({
form: { ...initFormData },
@@ -164,12 +152,43 @@ const reset = () => {
};
/** 获取详情 */
-const getInfo = () => {
+const getInfo = async () => {
loading.value = true;
buttonLoading.value = false;
nextTick(async () => {
- const res = await getConstructionValue(routeParams.value.id);
- Object.assign(form.value, res.data);
+ try {
+ const params = {
+ projectId: currentProject.value?.id,
+ versions: form.value.versions
+ };
+ const res = await sheetList(params);
+ if (res.code == 200) {
+ sheets.value = res.data;
+ if (res.data.length > 0) {
+ queryForm.value.sheet = res.data[0];
+ } else {
+ queryForm.value.sheet = '';
+ }
+ try {
+ const res = await getTableList(form.value);
+ if (res.code == 200) {
+ tableData.value = res.data;
+ }
+ } catch (error) {
+ console.log(error);
+ }
+ }
+ } catch (error) {
+ console.log(error);
+ }
+ getApproval(form.value.versions).then((res) => {
+ form.value.status = res.data.status;
+ });
+ if (routeParams.value.type === 'approval') {
+ form.value.id = routeParams.value.id;
+ } else {
+ form.value.id = routeParams.value.id + '_' + routeParams.value.activeTab;
+ }
loading.value = false;
buttonLoading.value = false;
});
@@ -227,7 +246,7 @@ const submit = async (status, data) => {
proxy.$tab.closePage(proxy.$route);
proxy.$router.go(-1);
} else {
- if ((form.value.auditStatus === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') {
+ if ((form.value.status === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') {
flowCode.value = flowCodeOptions[0].value;
dialogVisible.visible = true;
return;
@@ -247,6 +266,13 @@ onMounted(() => {
reset();
loading.value = false;
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
+ if (routeParams.value.type === 'approval') {
+ form.value.versions = routeParams.value.id.split('_')[0];
+ form.value.type = routeParams.value.id.split('_')[1];
+ } else {
+ form.value.versions = routeParams.value.id;
+ form.value.type = routeParams.value.activeTab;
+ }
getInfo();
}
});
From 38dd85de64e0fefdfaf04a03908ca7c94aed47e6 Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Fri, 22 Aug 2025 22:57:59 +0800
Subject: [PATCH 25/41] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/contract/limitPrice/index.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/views/contract/limitPrice/index.vue b/src/views/contract/limitPrice/index.vue
index 090e53a..604b920 100644
--- a/src/views/contract/limitPrice/index.vue
+++ b/src/views/contract/limitPrice/index.vue
@@ -286,6 +286,7 @@ const clickApprovalSheet = () => {
};
onUnmounted(() => {
listeningProject();
+ console.log(11111111);
});
onMounted(() => {
getVersionNums();
From b4113bdf2ac847b03399fc45d116e38982774967 Mon Sep 17 00:00:00 2001
From: taoge1020
Date: Fri, 22 Aug 2025 23:16:19 +0800
Subject: [PATCH 26/41] =?UTF-8?q?=E9=99=90=E4=BB=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 2 +-
src/views/contract/division/index.vue | 2 +-
src/views/contract/limitPrice/index.vue | 14 +-
src/views/contract/limitPrice/indexEdit.vue | 369 ++++++++++++++++++++
4 files changed, 384 insertions(+), 3 deletions(-)
create mode 100644 src/views/contract/limitPrice/indexEdit.vue
diff --git a/.env.development b/.env.development
index b7dcd4d..1976a38 100644
--- a/.env.development
+++ b/.env.development
@@ -8,7 +8,7 @@ VITE_APP_ENV = 'development'
#朱银
# VITE_APP_BASE_API = 'http://192.168.110.149:8899'
#曾涛
-VITE_APP_BASE_API = 'http://192.168.110.180:8899'
+VITE_APP_BASE_API = 'http://192.168.110.149:8899'
# 无人机接口地址
diff --git a/src/views/contract/division/index.vue b/src/views/contract/division/index.vue
index 57e007c..f78dd09 100644
--- a/src/views/contract/division/index.vue
+++ b/src/views/contract/division/index.vue
@@ -37,7 +37,7 @@
>详情
修改 确定
删除
导出excel
+
+ 审核
+
+
+ 查看流程
+
@@ -131,7 +137,12 @@ const getVersionNums = async () => {
}
};
//选择版本号
-const changeVersions = () => {
+const changeVersions = (val) => {
+ options.value.forEach((item) => {
+ if (item.versions == val) {
+ reviewStatus.value = item.status;
+ }
+ });
getSheetName();
};
@@ -283,6 +294,7 @@ const clickApprovalSheet = () => {
};
onUnmounted(() => {
listeningProject();
+ console.log(11111111);
});
onMounted(() => {
getVersionNums();
diff --git a/src/views/contract/limitPrice/indexEdit.vue b/src/views/contract/limitPrice/indexEdit.vue
new file mode 100644
index 0000000..d4e32da
--- /dev/null
+++ b/src/views/contract/limitPrice/indexEdit.vue
@@ -0,0 +1,369 @@
+
+
+
+
+
+
+
+
+
+
+
合同限价审核
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.price }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From bb512fe0f3b0fac94f86d1062d5b06dc4a0c2653 Mon Sep 17 00:00:00 2001
From: Teo <2642673902@qq.com>
Date: Fri, 22 Aug 2025 23:27:17 +0800
Subject: [PATCH 27/41] =?UTF-8?q?=E5=AE=A1=E6=A0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/tender/bidd/index.vue | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue
index b0a7cab..c5d9bcd 100644
--- a/src/views/tender/bidd/index.vue
+++ b/src/views/tender/bidd/index.vue
@@ -38,7 +38,8 @@
导出excel
- 审核
+ 审核
+ 查看流程
@@ -58,6 +59,7 @@
:step="0.1"
:controls="false"
v-if="scope.row.quantity && scope.row.quantity != 0"
+ :disabled="versionsData.status != 'draft'"
/>
@@ -271,10 +273,10 @@ const handleSave = (row: any) => {
};
/** 审核按钮操作 */
-const handleAudit = async () => {
+const handleAudit = async (type) => {
proxy?.$tab.openPage('/approval/tenderBidd/indexEdit', '审核招标一览', {
id: queryForm.value.versions,
- type: 'update',
+ type,
activeTab: activeTab.value,
status: versionsData.value.status
});
From 7e15764ba58aae8c9015e86a0ad81f0a952a30f3 Mon Sep 17 00:00:00 2001
From: Teo <2642673902@qq.com>
Date: Fri, 22 Aug 2025 23:30:48 +0800
Subject: [PATCH 28/41] =?UTF-8?q?=E5=90=88=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.env.development b/.env.development
index 7203b00..97d3ec6 100644
--- a/.env.development
+++ b/.env.development
@@ -12,9 +12,9 @@ VITE_APP_ENV = 'development'
# 罗成
# VITE_APP_BASE_API = 'http://192.168.110.213:8899'
# 朱银
-VITE_APP_BASE_API = 'http://192.168.110.149:8899'
+# VITE_APP_BASE_API = 'http://192.168.110.149:8899'
#屈展航
-# VITE_APP_BASE_API = 'http://192.168.110.210:8899'
+VITE_APP_BASE_API = 'http://192.168.110.210:8899'
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 无人机接口地址
From 31c21c7bb5c666df7bebf593968b0ab27494ca0a Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Sat, 23 Aug 2025 03:30:54 +0800
Subject: [PATCH 29/41] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/out/outDesignTable/index.vue | 103 ++++++++------
src/views/out/outDesignTableVS/index.vue | 165 +++++++++++------------
2 files changed, 139 insertions(+), 129 deletions(-)
diff --git a/src/views/out/outDesignTable/index.vue b/src/views/out/outDesignTable/index.vue
index dff39c3..ae8a4f0 100644
--- a/src/views/out/outDesignTable/index.vue
+++ b/src/views/out/outDesignTable/index.vue
@@ -1,44 +1,54 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -66,8 +76,23 @@ const data = reactive({
month: undefined
}
});
-
+const activeTab = ref('1');
const { queryParams } = toRefs(data);
+const tabList = [
+ {
+ value: '1',
+ label: '对甲采购设计报表'
+ },
+ {
+ value: '2',
+ label: '对乙采购设计报表'
+ }
+];
+const handleTabChange = (tab) => {
+ activeTab.value = tab;
+ data.queryParams.valueType = '1';
+ data.queryParams.month = '';
+};
/** 查询项目总产值分配列表 */
const getList = async () => {
diff --git a/src/views/out/outDesignTableVS/index.vue b/src/views/out/outDesignTableVS/index.vue
index eb4b502..13b6b18 100644
--- a/src/views/out/outDesignTableVS/index.vue
+++ b/src/views/out/outDesignTableVS/index.vue
@@ -1,7 +1,7 @@
-
-
+
+
@@ -9,7 +9,8 @@
-
+
+
@@ -18,68 +19,74 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 联查分包结算
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 联查分包结算
+
+
+
+
+
+
+
-
+
+
From dbb649d1cee790f680f91b4fe52275c1d278071a Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Sat, 23 Aug 2025 04:36:12 +0800
Subject: [PATCH 30/41] =?UTF-8?q?=E4=BA=A7=E5=80=BC=E8=AE=A1=E5=88=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/materials/batchPlan/index.ts | 10 +
src/api/out/monthPlan/index.ts | 23 ++
src/api/out/purchase/index.ts | 24 ++
.../constructionSchedulePlan/index.ts | 10 +
src/views/materials/batchPlan/index.vue | 117 ++++-----
src/views/out/constructionValue/index.vue | 240 ++++++++----------
src/views/out/purchase/comm/purchPage.vue | 180 +++++++++++++
src/views/out/purchase/index.vue | 28 ++
.../constructionSchedulePlan/index.vue | 102 ++++----
src/views/system/dept/index.vue | 58 ++---
10 files changed, 518 insertions(+), 274 deletions(-)
create mode 100644 src/api/out/purchase/index.ts
create mode 100644 src/views/out/purchase/comm/purchPage.vue
create mode 100644 src/views/out/purchase/index.vue
diff --git a/src/api/materials/batchPlan/index.ts b/src/api/materials/batchPlan/index.ts
index 8633eee..0866153 100644
--- a/src/api/materials/batchPlan/index.ts
+++ b/src/api/materials/batchPlan/index.ts
@@ -143,3 +143,13 @@ export const getDictList = (query: any): AxiosPromise => {
params: query
});
};
+/**
+ * 获取到物资状态为已完成的版本
+ */
+export const obtainTheVersion = (query: any) => {
+ return request({
+ url: '/cailiaoshebei/mrpBase/obtainTheVersion',
+ method: 'get',
+ params: query
+ });
+};
diff --git a/src/api/out/monthPlan/index.ts b/src/api/out/monthPlan/index.ts
index b902124..48f376f 100644
--- a/src/api/out/monthPlan/index.ts
+++ b/src/api/out/monthPlan/index.ts
@@ -98,3 +98,26 @@ export const getMonthInfo = (query): AxiosPromise => {
params: query
});
};
+/**
+ * 修改采购完工产值对甲
+
+ * @param id
+ */
+export const purchaseValueAup = (query) => {
+ return request({
+ url: '/out/monthPlan/purchaseValueAup',
+ method: 'get',
+ params: query
+ });
+};
+/**
+ * 采购完工产值对甲
+ * @param id
+ */
+export const purchaseValueA = (query) => {
+ return request({
+ url: '/out/monthPlan/purchaseValueA',
+ method: 'get',
+ params: query
+ });
+};
\ No newline at end of file
diff --git a/src/api/out/purchase/index.ts b/src/api/out/purchase/index.ts
new file mode 100644
index 0000000..410a1cd
--- /dev/null
+++ b/src/api/out/purchase/index.ts
@@ -0,0 +1,24 @@
+import request from '@/utils/request';
+/**
+ * 修改采购完工产值对甲
+
+ * @param id
+ */
+export const purchaseValueAup = (query) => {
+ return request({
+ url: '/out/monthPlan/purchaseValueAup',
+ method: 'get',
+ params: query
+ });
+};
+/**
+ * 采购完工产值对甲
+ * @param id
+ */
+export const purchaseValueA = (query) => {
+ return request({
+ url: '/out/monthPlan/purchaseValueA',
+ method: 'get',
+ params: query
+ });
+};
\ No newline at end of file
diff --git a/src/api/progress/constructionSchedulePlan/index.ts b/src/api/progress/constructionSchedulePlan/index.ts
index 3a7352d..fec34f8 100644
--- a/src/api/progress/constructionSchedulePlan/index.ts
+++ b/src/api/progress/constructionSchedulePlan/index.ts
@@ -61,3 +61,13 @@ export const delConstructionSchedulePlan = (id: string | number | Array) => {
+ return request({
+ url: '/project/project/projectStructure/' + id,
+ method: 'get'
+ });
+};
diff --git a/src/views/materials/batchPlan/index.vue b/src/views/materials/batchPlan/index.vue
index fb9ae9b..d29a31b 100644
--- a/src/views/materials/batchPlan/index.vue
+++ b/src/views/materials/batchPlan/index.vue
@@ -6,43 +6,20 @@
- 新增
- 删除
+ 新增
+ 删除
-
-
+
+
{{ node.label }}
@@ -50,14 +27,8 @@
-
+
@@ -65,14 +36,12 @@
- 修改
+ 修改
- 审核
+ 审核
@@ -90,19 +59,14 @@
-
+
-
+
基础信息
@@ -113,7 +77,8 @@
-
+
@@ -125,10 +90,21 @@
主要信息
+
+
+
+ selectNameVersion(val, scope.row)">
+
+
+
+
+
-
- selectName(val, scope.row)">
+ selectName(val, scope.row)">
@@ -155,7 +131,8 @@
-
+
@@ -188,7 +165,7 @@ import {
listBatch,
getBatch,
delBatch,
- listSelectCailiaoshebei,
+ listSelectCailiaoshebei, obtainTheVersion,
getDictList
} from '@/api/materials/batchPlan';
import { CailiaoshebeiVO, CailiaoshebeiQuery, CailiaoshebeiForm } from '@/api/materials/batchPlan/types';
@@ -271,6 +248,7 @@ const data = reactive({
const batchNumber = ref('');
const { queryParams, form, rules } = toRefs(data);
const nameList = ref([]);
+const versionList = ref([]);
/** 查询物资-材料设备列表 */
const getList = async (type?: string) => {
loading.value = true;
@@ -480,15 +458,26 @@ const handleAudit = async () => {
});
};
-const getNameList = () => {
- getDictList({ projectId: currentProject.value?.id }).then((res) => {
+const getNameList = (versions) => {
+ getDictList({ projectId: currentProject.value?.id, versions }).then((res) => {
nameList.value = res.data;
});
};
+// 获取版本号
+const getVersion = () => {
+ obtainTheVersion({ projectId: currentProject.value?.id }).then((res) => {
+ versionList.value = res.data;
+ });
+};
+const selectNameVersion = (val, row) => {
+ row.suppliespriceId = undefined;
+ getNameList(val);
+};
onMounted(() => {
getList();
- getNameList();
+ // getNameList();
+ getVersion();
});
//监听项目id刷新数据
diff --git a/src/views/out/constructionValue/index.vue b/src/views/out/constructionValue/index.vue
index ff6efb9..5d49049 100644
--- a/src/views/out/constructionValue/index.vue
+++ b/src/views/out/constructionValue/index.vue
@@ -1,135 +1,119 @@
-
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
-
-
-
-
- 新增
-
-
- 删除
-
-
-
-
+
+
+
+
+ 新增
+
+
+ 删除
+
+
+
+
-
-
-
-
-
- {{ parseTime(scope.row.reportDate, '{y}-{m}-{d}') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 修改
- 删除
- 审核
-
-
-
+
+
+
+
+
+ {{ parseTime(scope.row.reportDate, '{y}-{m}-{d}') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+ 审核
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/views/out/purchase/index.vue b/src/views/out/purchase/index.vue
new file mode 100644
index 0000000..46e410e
--- /dev/null
+++ b/src/views/out/purchase/index.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/src/views/progress/constructionSchedulePlan/index.vue b/src/views/progress/constructionSchedulePlan/index.vue
index 732b3e7..7109158 100644
--- a/src/views/progress/constructionSchedulePlan/index.vue
+++ b/src/views/progress/constructionSchedulePlan/index.vue
@@ -1,6 +1,7 @@
-
+
@@ -9,7 +10,8 @@
-
+
@@ -25,7 +27,8 @@
- 新增
+ 新增
展开/折叠
@@ -33,17 +36,12 @@
-
+
-
+
{{ parseTime(scope.row.planStartDate, '{y}-{m}-{d}') }}
@@ -73,19 +71,16 @@
-
+
-
+
-
+
@@ -95,48 +90,39 @@
-
+
-
+
+
-
+
-
+
-
+
-
+
-
+
@@ -159,7 +145,7 @@ import {
getConstructionSchedulePlan,
delConstructionSchedulePlan,
addConstructionSchedulePlan,
- updateConstructionSchedulePlan
+ updateConstructionSchedulePlan, getProjectStructure
} from '@/api/progress/constructionSchedulePlan';
import {
ConstructionSchedulePlanVO,
@@ -181,6 +167,7 @@ const currentProject = computed(() => userStore.selectedProject);
const { project_construction_status } = toRefs(proxy?.useDict('project_construction_status'));
const constructionSchedulePlanList = ref([]);
+const ProjectStructureList = ref([]);
const constructionSchedulePlanOptions = ref([]);
const buttonLoading = ref(false);
const showSearch = ref(true);
@@ -196,7 +183,7 @@ const dialog = reactive({
title: ''
});
-const initFormData: ConstructionSchedulePlanForm = {
+const initFormData = {
id: undefined,
projectId: currentProject.value?.id,
parentId: undefined,
@@ -207,7 +194,9 @@ const initFormData: ConstructionSchedulePlanForm = {
practicalStartDate: undefined,
practicalEndDate: undefined,
status: undefined,
- remark: undefined
+ remark: undefined,
+ projectStructureName: undefined
+
};
const data = reactive>({
@@ -236,13 +225,21 @@ const getList = async () => {
loading.value = true;
const res = await listConstructionSchedulePlan(queryParams.value);
const data = proxy?.handleTree(res.data, 'id', 'parentId');
- console.log('🚀 ~ getList ~ data:', data);
-
if (data) {
constructionSchedulePlanList.value = data;
loading.value = false;
}
};
+/** 查询施工进度计划列表 */
+const getProjectStructureList = async () => {
+ const res = await getProjectStructure(currentProject.value?.id);
+ ProjectStructureList.value = [res.data];
+ console.log(ProjectStructureList.value);
+};
+/** 查询施工进度计划列表 */
+const handleCheckChange = (val) => {
+ form.value.projectStructureName = val.name;
+};
/** 查询施工进度计划下拉树结构 */
const getTreeselect = async () => {
@@ -343,6 +340,7 @@ const handleDelete = async (row: ConstructionSchedulePlanVO) => {
};
onMounted(() => {
+ getProjectStructureList();
getList();
});
diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
index 82bf50f..c9d9247 100644
--- a/src/views/system/dept/index.vue
+++ b/src/views/system/dept/index.vue
@@ -1,6 +1,7 @@
-
+
@@ -8,11 +9,13 @@
-
+
-
+
@@ -28,7 +31,8 @@
- 新增
+ 新增
+
展开/折叠
@@ -37,14 +41,8 @@
-
+
@@ -66,13 +64,16 @@
-
+
-
-
+
+
-
+
@@ -84,14 +85,9 @@
-
+
@@ -112,7 +108,8 @@
-
+
@@ -129,7 +126,8 @@
- {{ dict.label }}
+ {{ dict.label
+ }}
@@ -140,14 +138,14 @@
-
+
-
+
@@ -339,10 +337,10 @@ const handleUpdate = async (row: DeptVO) => {
};
const changeProject = async (val: any) => {
- if (val == '3' && (!projectList.value || !projectList.value.length)) {
+ if (val == '4' && (!projectList.value || !projectList.value.length)) {
const res = await getDeptList();
projectList.value = res.data;
- } else if (val == '4' && (!contractorList.value || !contractorList.value.length)) {
+ } else if (val == '5' && (!contractorList.value || !contractorList.value.length)) {
const res = await optionProjectSelect(form.value.rowProjectId);
contractorList.value = res;
}
From 73772f036f1830ff317e184a2109fdbc0fd16148 Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Sat, 23 Aug 2025 06:28:18 +0800
Subject: [PATCH 31/41] =?UTF-8?q?=E6=8A=95=E6=A0=87=E6=88=90=E6=9C=AC?=
=?UTF-8?q?=E6=A0=B8=E7=AE=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/out/outDesignTableVS/index.ts | 16 +
.../biddingLimit/indexEdit.vue | 35 +-
src/views/contract/bidCost/index.vue | 301 +++++++++++++++
src/views/contract/bidCost/indexEdit.vue | 343 ++++++++++++++++++
src/views/contract/limitPrice/index.vue | 2 +
src/views/out/outDesignTable/index.vue | 2 +-
src/views/out/outDesignTableVS/index.vue | 84 ++++-
src/views/out/outTable/index.vue | 22 +-
8 files changed, 773 insertions(+), 32 deletions(-)
create mode 100644 src/views/contract/bidCost/index.vue
create mode 100644 src/views/contract/bidCost/indexEdit.vue
diff --git a/src/api/out/outDesignTableVS/index.ts b/src/api/out/outDesignTableVS/index.ts
index 788d797..9385a1d 100644
--- a/src/api/out/outDesignTableVS/index.ts
+++ b/src/api/out/outDesignTableVS/index.ts
@@ -7,3 +7,19 @@ export function listOutTable(query: any) {
params: query
});
}
+// 对甲产值和对乙产值
+export function comparisonOfOutputValue(query: any) {
+ return request({
+ url: '/out/table/outCompare',
+ method: 'get',
+ params: query
+ });
+}
+// 对甲结算和对乙结算
+export function comparisonOfSettlementValue(query: any) {
+ return request({
+ url: '/out/table/comparisonOfOwnerAndSub',
+ method: 'get',
+ params: query
+ });
+}
diff --git a/src/views/biddingManagemen/biddingLimit/indexEdit.vue b/src/views/biddingManagemen/biddingLimit/indexEdit.vue
index 450d058..fee3dd1 100644
--- a/src/views/biddingManagemen/biddingLimit/indexEdit.vue
+++ b/src/views/biddingManagemen/biddingLimit/indexEdit.vue
@@ -70,7 +70,7 @@ import ApprovalButton from '@/components/Process/approvalButton.vue';
import { StartProcessBo } from '@/api/workflow/workflowCommon/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
import { useUserStoreHook } from '@/store/modules/user';
-import { getVersionDetail } from '@/api/bidding/biddingLimit';
+import { getVersionDetail, sheetList } from '@/api/bidding/biddingLimit';
// 获取用户 store
const userStore = useUserStoreHook();
@@ -82,8 +82,8 @@ const loading = ref(true);
const routeParams = ref>({});
const flowCodeOptions = [
{
- value: currentProject.value?.id + '_costAccounting',
- label: '成本核算清单审批'
+ value: currentProject.value?.id + '_biddingLimitList',
+ label: '投标一览审核'
}
];
@@ -151,11 +151,25 @@ const getInfo = () => {
nextTick(async () => {
const res = await getVersionDetail(routeParams.value.id);
Object.assign(form.value, res.data);
+ getSheetName(res.data.versions);
loading.value = false;
buttonLoading.value = false;
});
};
-
+//获取表名
+const getSheetName = async (versions) => {
+ const params = {
+ projectId: currentProject.value?.id,
+ versions
+ };
+ const res = await sheetList(params);
+ if (res.code == 200) {
+ sheets.value = res.data;
+ if (res.data.length > 0) {
+ sheets.value = res.data;
+ }
+ }
+};
/** 提交按钮 */
const submitForm = (status1: string) => {
status.value = status1;
@@ -171,7 +185,7 @@ const submitFlow = async () => {
const handleStartWorkFlow = async (data: LeaveForm) => {
try {
submitFormData.value.flowCode = flowCode.value;
- submitFormData.value.businessId = data.id;
+ submitFormData.value.businessId = data.versions + '_abc';
//流程变量
taskVariables.value = {
// leave4/5 使用的流程变量
@@ -189,7 +203,7 @@ const handleStartWorkFlow = async (data: LeaveForm) => {
};
//审批记录
const handleApprovalRecord = () => {
- approvalRecordRef.value.init(form.value.id);
+ approvalRecordRef.value.init(form.value.versions + '_abc');
};
//提交回调
const submitCallback = async () => {
@@ -227,13 +241,10 @@ onMounted(() => {
nextTick(async () => {
reset();
routeParams.value = proxy.$route.query;
- sheets.value = routeParams.value.sheets;
- versions.value = routeParams.value.versions;
- Object.assign(form.value, versions.value);
loading.value = false;
- if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
- getInfo();
- }
+ // if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
+ getInfo();
+ // }
});
});
diff --git a/src/views/contract/bidCost/index.vue b/src/views/contract/bidCost/index.vue
new file mode 100644
index 0000000..8a6297b
--- /dev/null
+++ b/src/views/contract/bidCost/index.vue
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ isExpandAll ? '一键收起' : '一键展开' }}
+
+
+
+
+ 导入excel
+
+
+
+
+ 导出excel
+
+
+ 审核
+
+
+ 查看流程
+
+
+
+
+
+
+
+
+
+
+
+
+ (scope.row.unitPrice = val)"
+ :precision="2"
+ :step="0.1"
+ :controls="false"
+ v-if="scope.row.quantity && scope.row.quantity != 0"
+ />
+
+
+
+
+ {{ scope.row.price }}
+
+
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/contract/bidCost/indexEdit.vue b/src/views/contract/bidCost/indexEdit.vue
new file mode 100644
index 0000000..f97c080
--- /dev/null
+++ b/src/views/contract/bidCost/indexEdit.vue
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
成本核算清单
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/contract/limitPrice/index.vue b/src/views/contract/limitPrice/index.vue
index f64b797..55230b6 100644
--- a/src/views/contract/limitPrice/index.vue
+++ b/src/views/contract/limitPrice/index.vue
@@ -53,6 +53,7 @@
(scope.row.unitPrice = val)"
:precision="2"
@@ -72,6 +73,7 @@
{
activeTab.value = tab;
data.queryParams.valueType = '1';
- data.queryParams.month = '';
+ // data.queryParams.month = '';
};
/** 查询项目总产值分配列表 */
diff --git a/src/views/out/outDesignTableVS/index.vue b/src/views/out/outDesignTableVS/index.vue
index 13b6b18..318d654 100644
--- a/src/views/out/outDesignTableVS/index.vue
+++ b/src/views/out/outDesignTableVS/index.vue
@@ -20,17 +20,43 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
import { useUserStoreHook } from '@/store/modules/user';
+import { listOutTable, comparisonOfOutputValue, comparisonOfSettlementValue } from '@/api/out/outDesignTableVS/index';
+
+import { dayjs } from 'element-plus';
const userStore = useUserStoreHook();
const currentProject = computed(() => userStore.selectedProject);
const activeTab = ref('1');
const queryParams = ref({
month: '',
- valueType: '1',
-
+ valueType: '2',
pageNum: 1,
pageSize: 10
});
@@ -63,15 +91,15 @@ const loading = ref(false);
const tabList = [
{
- value: '1',
+ value: '2',
label: '对乙产值和对乙结算'
},
{
- value: '2',
- label: '对甲产值和对乙结算'
+ value: '3',
+ label: '对甲结算和对乙结算'
},
{
- value: '3',
+ value: '1',
label: '对甲产值和对甲结算'
},
{
@@ -83,8 +111,6 @@ const tabList = [
//切换表单
const handleTabChange = (tab) => {
activeTab.value = tab;
- queryParams.value.month = '';
- queryParams.value.valueType = '';
handleQuery();
};
@@ -99,7 +125,6 @@ const handleQuery = () => {
const resetQuery = () => {
queryParams.value.month = '';
queryParams.value.valueType = '';
-
handleQuery();
};
// 获取列表
@@ -107,11 +132,36 @@ const getList = async () => {
const params = {
...queryParams.value,
projectId: currentProject.value?.id,
- activeTab: activeTab.value
+ type: activeTab.value
};
- console.log(params);
+ if (activeTab.value == '4') {
+ comparisonOfOutputValue(params).then((res) => {
+ if (res.code == 200) {
+ tableData.value = res.rows;
+ total.value = res.total;
+ }
+ });
+ } else if (activeTab.value == '3') {
+ comparisonOfSettlementValue(params).then((res) => {
+ if (res.code == 200) {
+ tableData.value = res.rows;
+ total.value = res.total;
+ }
+ });
+ } else {
+ const res = await listOutTable(params);
+ if (res.code == 200) {
+ tableData.value = res.rows;
+ total.value = res.total;
+ }
+ }
};
const handleEdit = (row: any) => {};
+onMounted(() => {
+ const currentMonthString = ref(dayjs().format('YYYY-MM'));
+ queryParams.value.month = currentMonthString.value;
+ getList();
+});
diff --git a/src/views/out/outTable/index.vue b/src/views/out/outTable/index.vue
index 7b2510e..b0463db 100644
--- a/src/views/out/outTable/index.vue
+++ b/src/views/out/outTable/index.vue
@@ -45,6 +45,8 @@
From cfb6085bbf7db487396e6d7b4e7fb80460033200 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Sat, 23 Aug 2025 06:31:22 +0800
Subject: [PATCH 32/41] =?UTF-8?q?=E4=BA=A7=E5=80=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/materials/batchPlan/index.ts | 7 +++++++
src/views/materials/batchPlan/index.vue | 4 ++--
src/views/out/purchase/comm/purchPage.vue | 11 ++++++-----
src/views/out/purchase/index.vue | 8 ++++++--
4 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/api/materials/batchPlan/index.ts b/src/api/materials/batchPlan/index.ts
index 0866153..c9231af 100644
--- a/src/api/materials/batchPlan/index.ts
+++ b/src/api/materials/batchPlan/index.ts
@@ -143,6 +143,13 @@ export const getDictList = (query: any): AxiosPromise => {
params: query
});
};
+export const coryEngineeringList = (query: any): AxiosPromise => {
+ return request({
+ url: '/cailiaoshebei/mrpBase/coryEngineeringList',
+ method: 'get',
+ params: query
+ });
+};
/**
* 获取到物资状态为已完成的版本
*/
diff --git a/src/views/materials/batchPlan/index.vue b/src/views/materials/batchPlan/index.vue
index d29a31b..bac3df0 100644
--- a/src/views/materials/batchPlan/index.vue
+++ b/src/views/materials/batchPlan/index.vue
@@ -166,7 +166,7 @@ import {
getBatch,
delBatch,
listSelectCailiaoshebei, obtainTheVersion,
- getDictList
+ getDictList, coryEngineeringList
} from '@/api/materials/batchPlan';
import { CailiaoshebeiVO, CailiaoshebeiQuery, CailiaoshebeiForm } from '@/api/materials/batchPlan/types';
import { useUserStoreHook } from '@/store/modules/user';
@@ -459,7 +459,7 @@ const handleAudit = async () => {
};
const getNameList = (versions) => {
- getDictList({ projectId: currentProject.value?.id, versions }).then((res) => {
+ coryEngineeringList({ projectId: currentProject.value?.id, versions }).then((res) => {
nameList.value = res.data;
});
};
diff --git a/src/views/out/purchase/comm/purchPage.vue b/src/views/out/purchase/comm/purchPage.vue
index fe29bfa..52dc92c 100644
--- a/src/views/out/purchase/comm/purchPage.vue
+++ b/src/views/out/purchase/comm/purchPage.vue
@@ -6,8 +6,8 @@
-
-
+
+
@@ -50,7 +50,7 @@ import { useUserStoreHook } from '@/store/modules/user';
const userStore = useUserStoreHook();
// 从 store 中获取项目列表和当前选中的项目
const currentProject = computed(() => userStore.selectedProject);
-const monthPlanList = ref([]);
+const monthPlanList = ref([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
@@ -107,7 +107,9 @@ const getList = async (type?) => {
}
loading.value = true;
const res = await purchaseValueA({ projectId: currentProject.value?.id, type: queryParams.value.type });
- monthPlanList.value = res.rows;
+ monthPlanList.value = res.data;
+ console.log(monthPlanList.value);
+
total.value = res.total;
loading.value = false;
};
@@ -146,7 +148,6 @@ const submitForm = () => {
if (valid) {
buttonLoading.value = true;
form.value.isDesign = true;
-
if (form.value.id) {
await purchaseValueAup(form.value).finally(() => (buttonLoading.value = false));
}
diff --git a/src/views/out/purchase/index.vue b/src/views/out/purchase/index.vue
index 46e410e..eba6578 100644
--- a/src/views/out/purchase/index.vue
+++ b/src/views/out/purchase/index.vue
@@ -14,13 +14,17 @@
diff --git a/src/views/design/drawing/indexEdit.vue b/src/views/design/drawing/indexEdit.vue
index 76c3b5b..0f5489d 100644
--- a/src/views/design/drawing/indexEdit.vue
+++ b/src/views/design/drawing/indexEdit.vue
@@ -88,12 +88,16 @@ const buttonLoading = ref(false);
const loading = ref(true);
//路由参数
const routeParams = ref>({});
-const flowCodeOptions = [
+const flowCodeOptions = ref([
{
value: currentProject.value?.id + '_designchanged',
label: '变更图纸审批'
+ },
+ {
+ value: currentProject.value?.id + '_moneydesignchanged',
+ label: '资金设计变更审批'
}
-];
+]);
const flowCode = ref('');
const status = ref('');
@@ -129,6 +133,7 @@ const initFormData = {
fileUrl: undefined,
fileType: undefined,
fileSuffix: undefined,
+ costEstimation: undefined,
originalName: undefined,
remark: undefined,
fileId: undefined
@@ -144,6 +149,7 @@ const data = reactive({
fileSuffix: undefined,
fileStatus: undefined,
originalName: undefined,
+ costEstimation: undefined,
newest: undefined,
params: {}
},
@@ -182,8 +188,13 @@ const getInfo = () => {
loading.value = true;
buttonLoading.value = false;
nextTick(async () => {
- const res = await getDesignChange(routeParams.value.id);
+ var id = routeParams.value.id;
+ if (routeParams.value.type === 'approval') {
+ id = routeParams.value.id.split('_')[0];
+ }
+ const res = await getDesignChange(id);
Object.assign(form.value, res.data);
+ if (res.data.costEstimation) form.value.status = res.data.auditStatus;
loading.value = false;
buttonLoading.value = false;
});
@@ -248,6 +259,8 @@ const approvalVerifyOpen = async () => {
// 图纸上传成功之后 开始提交
const submit = async (status, data) => {
form.value = data;
+ form.value.id = routeParams.value.type == 'add' ? form.value.id + '_' : form.value.id.split('_')[0];
+ form.value.status = data.auditStatus ? data.auditStatus : data.status;
if (status === 'draft') {
buttonLoading.value = false;
proxy?.$modal.msgSuccess('暂存成功');
@@ -255,7 +268,13 @@ const submit = async (status, data) => {
proxy.$router.go(-1);
} else {
if ((form.value.status === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') {
- flowCode.value = flowCodeOptions[0].value;
+ if (form.value.costEstimation == '0') {
+ flowCodeOptions.value = [flowCodeOptions.value[0]];
+ } else {
+ console.log('🚀 ~ submit ~ flowCodeOptions.value:', flowCodeOptions.value[1]);
+ flowCodeOptions.value = [flowCodeOptions.value[1]];
+ }
+ flowCode.value = flowCodeOptions.value[0].value;
dialogVisible.visible = true;
return;
}
@@ -275,6 +294,8 @@ onMounted(() => {
loading.value = false;
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
getInfo();
+ } else {
+ form.value.costEstimation = routeParams.value.costEstimation;
}
});
});
diff --git a/src/views/design/drawingreview/detailForm.vue b/src/views/design/drawingreview/detailForm.vue
index 2862788..efa1fe1 100644
--- a/src/views/design/drawingreview/detailForm.vue
+++ b/src/views/design/drawingreview/detailForm.vue
@@ -277,11 +277,11 @@ const submit = async (businessId, cb) => {
cb();
formData.subprojectName = subProjectMap.get(formData.subprojectId);
formData.drawingreviewId = businessId;
- const res = await drawingreviewReceipts(formData);
- if (res.code === 200) {
- // // 提交成功处理逻辑
- // console.log('提交成功');
- }
+ // const res = await drawingreviewReceipts(formData);
+ // if (res.code === 200) {
+ // 提交成功处理逻辑
+ // console.log('提交成功');
+ // }
};
onMounted(() => {
getSubProject();
diff --git a/src/views/progress/progressCategory/index.vue b/src/views/progress/progressCategory/index.vue
index 48594c2..224b281 100644
--- a/src/views/progress/progressCategory/index.vue
+++ b/src/views/progress/progressCategory/index.vue
@@ -31,7 +31,18 @@
新增
- 导出
+
+ 导入
+
+
+
+ 导出
展开/折叠
@@ -48,7 +59,7 @@
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
-
+
@@ -60,17 +71,27 @@
{{ row.parentId == 0 ? '' : row.unit }}
-
+
- {{ row.parentId == 0 ? '' : row.unitPrice }}
+ {{ row.parentId == 0 ? '' : row.ownerPrice }}
-
+
- {{ row.parentId == 0 ? '' : row.outputValue }}
+ {{ row.parentId == 0 ? '' : row.constructionPrice }}
-
+
+
+ {{ row.parentId == 0 ? '' : row.ownerOutputValue }}
+
+
+
+
+ {{ row.parentId == 0 ? '' : row.constructionOutputValue }}
+
+
+
{{ row.parentId == 0 ? '' : row.total }}
@@ -91,7 +112,7 @@
-
+
+
+
+
+
+
+
-
-
-
@@ -175,7 +199,7 @@ const buttonLoading = ref(false);
const showSearch = ref(true);
const isExpandAll = ref(true);
const loading = ref(false);
-
+const file = ref();
const queryFormRef = ref();
const progressCategoryFormRef = ref();
const progressCategoryTableRef = ref();
@@ -194,6 +218,8 @@ const initFormData: ProgressCategoryForm = {
name: undefined,
unitType: undefined,
unit: undefined,
+ constructionPrice: undefined,
+ ownerPrice: undefined,
unitPrice: undefined,
outputValue: undefined,
total: undefined,
@@ -236,7 +262,9 @@ const data = reactive>({
unitPrice: [{ required: true, message: '综合单价不能为空', trigger: 'blur' }],
outputValue: [{ required: true, message: '产值金额不能为空', trigger: 'blur' }],
isDelay: [{ required: true, message: '是否超期不能为空', trigger: 'blur' }],
- status: [{ required: true, message: '完成状态不能为空', trigger: 'change' }]
+ status: [{ required: true, message: '完成状态不能为空', trigger: 'change' }],
+ constructionPrice: [{ required: true, message: '综合单价(分包)不能为空', trigger: 'change' }],
+ ownerPrice: [{ required: true, message: '综合单价(业主)不能为空', trigger: 'change' }]
}
});
@@ -276,6 +304,11 @@ const getList = async () => {
}
};
+const handleSuccess = () => {
+ console.log(111);
+ proxy.$modal.msgSuccess('操作成功');
+};
+
/** 查询分项工程单价下拉树结构 */
const getTreeselect = async () => {
const res = await listProgressCategory(queryParams.value);
@@ -366,12 +399,13 @@ const handleUpdate = async (row: ProgressCategoryVO) => {
const handleExport = async () => {
const ids = treeRef.value.getCheckedNodes()[0].pathNodes[0].childrenData.map((item) => item.matrixId);
+ const fileName = treeRef.value.getCheckedNodes()[0].pathNodes[0].label;
proxy?.download(
'/progress/progressCategory/export',
{
ids: ids
},
- `qualityInspection_${new Date().getTime()}.xlsx`,
+ `${fileName}分项工程单价导入.xlsx`,
true
);
};
From 2b339df606d44c70fe5b6b202b56f0876cf0ca94 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Sat, 23 Aug 2025 06:39:03 +0800
Subject: [PATCH 34/41] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 2 +-
src/views/out/constructionValue/index.vue | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.env.development b/.env.development
index 3ba1f21..b7dcd4d 100644
--- a/.env.development
+++ b/.env.development
@@ -8,7 +8,7 @@ VITE_APP_ENV = 'development'
#朱银
# VITE_APP_BASE_API = 'http://192.168.110.149:8899'
#曾涛
-VITE_APP_BASE_API = 'http://192.168.110.171:8899'
+VITE_APP_BASE_API = 'http://192.168.110.180:8899'
# 无人机接口地址
diff --git a/src/views/out/constructionValue/index.vue b/src/views/out/constructionValue/index.vue
index 5d49049..82af6af 100644
--- a/src/views/out/constructionValue/index.vue
+++ b/src/views/out/constructionValue/index.vue
@@ -47,7 +47,8 @@
-
+
+
From b256eb83f0b0b8ca2311676e58f729e4e0ee0bb8 Mon Sep 17 00:00:00 2001
From: Teo <2642673902@qq.com>
Date: Sat, 23 Aug 2025 08:57:52 +0800
Subject: [PATCH 35/41] =?UTF-8?q?=E4=BA=A7=E5=80=BC=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 4 ++--
src/views/design/designChange/indexEdit.vue | 2 +-
src/views/design/drawingreview/detailForm.vue | 10 +++++-----
src/views/out/monthPlan/indexEdit.vue | 16 ++++++++++++----
4 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/.env.development b/.env.development
index 4c056ae..500d6b0 100644
--- a/.env.development
+++ b/.env.development
@@ -6,9 +6,9 @@ VITE_APP_ENV = 'development'
# 开发环境
# 李陈杰 209
-# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
+VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 曾涛
-VITE_APP_BASE_API = 'http://192.168.110.180:8899'
+# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
# 罗成
# VITE_APP_BASE_API = 'http://192.168.110.213:8899'
# 朱银
diff --git a/src/views/design/designChange/indexEdit.vue b/src/views/design/designChange/indexEdit.vue
index 2519ac5..1f01649 100644
--- a/src/views/design/designChange/indexEdit.vue
+++ b/src/views/design/designChange/indexEdit.vue
@@ -215,7 +215,7 @@ const routeParams = ref>({});
const flowCodeOptions = [
{
value: currentProject.value?.id + '_designchangeddoc',
- label: '变更图纸审批'
+ label: '设计变更下发审批'
}
];
diff --git a/src/views/design/drawingreview/detailForm.vue b/src/views/design/drawingreview/detailForm.vue
index efa1fe1..54c1a48 100644
--- a/src/views/design/drawingreview/detailForm.vue
+++ b/src/views/design/drawingreview/detailForm.vue
@@ -276,12 +276,12 @@ const submit = async (businessId, cb) => {
await formRef.value?.validate();
cb();
formData.subprojectName = subProjectMap.get(formData.subprojectId);
- formData.drawingreviewId = businessId;
- // const res = await drawingreviewReceipts(formData);
- // if (res.code === 200) {
+ formData.drawingreviewId = businessId.split("_")[0];
+ const res = await drawingreviewReceipts(formData);
+ if (res.code === 200) {
// 提交成功处理逻辑
- // console.log('提交成功');
- // }
+ console.log('提交成功');
+ }
};
onMounted(() => {
getSubProject();
diff --git a/src/views/out/monthPlan/indexEdit.vue b/src/views/out/monthPlan/indexEdit.vue
index dc05a7d..708f793 100644
--- a/src/views/out/monthPlan/indexEdit.vue
+++ b/src/views/out/monthPlan/indexEdit.vue
@@ -25,29 +25,37 @@
:disabled="routeParams.type === 'view' || form.status == 'waiting'"
:model="form"
:rules="rules"
- label-width="120px"
+ label-width="80px"
class="space-y-4"
>
-
+
-
+
-
+
+
+
+
+
+
+
+
+
From 0ea88f33b8cbe732d56b5511b5a348ac5e402592 Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Sat, 23 Aug 2025 08:58:20 +0800
Subject: [PATCH 36/41] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/design/designChange/indexEdit.vue | 125 ++++++------------
src/views/design/drawingreview/detailForm.vue | 39 +++---
src/views/design/received/index.vue | 108 ++++++---------
src/views/materials/batchPlan/indexEdit.vue | 40 ++----
.../materialReceive/index.vue | 101 ++++++--------
.../usageMaterials/purchase/index.vue | 89 ++++---------
src/views/out/designCompletion/index.vue | 40 +++---
7 files changed, 212 insertions(+), 330 deletions(-)
diff --git a/src/views/design/designChange/indexEdit.vue b/src/views/design/designChange/indexEdit.vue
index 2519ac5..a834692 100644
--- a/src/views/design/designChange/indexEdit.vue
+++ b/src/views/design/designChange/indexEdit.vue
@@ -3,30 +3,19 @@
-
+
-
+
变更图纸信息
-
+
@@ -36,27 +25,14 @@
-
+
-
-
-
+
+
+
@@ -69,16 +45,16 @@
-
-
+
+
-
+
+
@@ -86,8 +62,7 @@
原图保留,部分修改
原图保留,补充设计
-
+
@@ -95,20 +70,17 @@
{{ dict.fileName }}
-
+
-
+
重大设计变更
一般设计变更
-
+
@@ -116,15 +88,14 @@
建设单位送原施工图审查机构审查、建设主管部分备案后交付实施
建设单位确认后交付实施
-
+
-
+
+
-
+
@@ -132,27 +103,23 @@
{{ dict.label }}
-
+
-
+
+
-
+
+
-
+
-
-
+
+
@@ -162,14 +129,8 @@
-
+
请选择要启动的流程:
@@ -178,12 +139,10 @@
@@ -215,7 +174,7 @@ const routeParams = ref>({});
const flowCodeOptions = [
{
value: currentProject.value?.id + '_designchangeddoc',
- label: '变更图纸审批'
+ label: '设计变更下发审批'
}
];
diff --git a/src/views/design/drawingreview/detailForm.vue b/src/views/design/drawingreview/detailForm.vue
index efa1fe1..b836c41 100644
--- a/src/views/design/drawingreview/detailForm.vue
+++ b/src/views/design/drawingreview/detailForm.vue
@@ -81,13 +81,8 @@
-->
-
+
@@ -102,7 +97,8 @@
-->
-
+
@@ -117,7 +113,8 @@
-->
-
+
@@ -275,13 +272,25 @@ const submit = async (businessId, cb) => {
// 先验证表单
await formRef.value?.validate();
cb();
+ // 加载中
+ ElLoading.service({
+ lock: true,
+ text: '提交中...',
+ background: 'rgba(0, 0, 0, 0.7)'
+ });
+
formData.subprojectName = subProjectMap.get(formData.subprojectId);
- formData.drawingreviewId = businessId;
- // const res = await drawingreviewReceipts(formData);
- // if (res.code === 200) {
- // 提交成功处理逻辑
- // console.log('提交成功');
- // }
+ // formData.drawingreviewId = businessId;
+ console.log(businessId);
+ // businessId 设置 如果有下滑线去掉后面及下划线
+ formData.drawingreviewId = businessId.replace(/_/g, '');
+ const res = await drawingreviewReceipts(formData);
+ if (res.code === 200) {
+ // 提交成功处理逻辑
+ console.log('提交成功');
+ }
+ // 关闭
+ ElLoading.service().close();
};
onMounted(() => {
getSubProject();
diff --git a/src/views/design/received/index.vue b/src/views/design/received/index.vue
index 304c2e1..4abb9a6 100644
--- a/src/views/design/received/index.vue
+++ b/src/views/design/received/index.vue
@@ -1,6 +1,7 @@
-
+
收集资料清单
@@ -15,23 +16,15 @@
-
+
-
+ :rules="{ required: true, message: '请选择专业', trigger: 'change' }">
@@ -49,32 +42,25 @@
资料文件清单
- 添加资料
+ 添加资料
+
-
+
资料 {{ index + 1 }}
-
+
删除
-
-
+
+
@@ -85,39 +71,16 @@
- 确认提交
- 审核
- 重新发起审核
- 查看流程
- 导出
+ 确认提交
+ 审核
+ 重新发起审核
+ 查看流程
+ 导出
@@ -130,13 +93,15 @@ import { useUserStoreHook } from '@/store/modules/user';
import { ElMessage, ElLoading } from 'element-plus';
import { systemUserList } from '@/api/design/appointment';
import { collectBatch, byProjectId, exportWord } from '@/api/design/received';
+import { getUser } from '@/api/system/user';
+// 用户状态管理
// 获取用户 store
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const userStore = useUserStoreHook();
// 从 store 中获取当前选中的项目
const currentProject = computed(() => userStore.selectedProject);
const { des_user_major } = toRefs
(proxy?.useDict('des_user_major'));
-
+const userId = computed(() => userStore.userId);
// 表单引用
const mainFormRef = ref();
// 用户列表
@@ -314,12 +279,27 @@ const onView = () => {
}
});
};
+/** 获取当前用户详情 */
+const getUserDetail = async () => {
+ try {
+ const res = await getUser(userId.value);
+ // userInfo.value = res.data.user;
+ form.userId = res.data.user.userId;
+ form.phone = res.data.user.phonenumber;
+ form.email = res.data.user.email;
+ } catch (err) {
+ ElMessage.error('获取用户信息失败');
+ }
+};
+
// 页面挂载时初始化数据
onMounted(() => {
// 可以在这里添加初始化逻辑
+ getUserDetail();
getDeptAllUser(userStore.deptId).then(() => {
byProjectIdAll();
});
+
});
const onLoad = async () => {
// 导出接口
diff --git a/src/views/materials/batchPlan/indexEdit.vue b/src/views/materials/batchPlan/indexEdit.vue
index b5656a6..8e3a50d 100644
--- a/src/views/materials/batchPlan/indexEdit.vue
+++ b/src/views/materials/batchPlan/indexEdit.vue
@@ -3,18 +3,13 @@
-
+
-
+
物资设备批次需求计划
@@ -25,7 +20,8 @@
-
+
@@ -54,14 +50,8 @@
-
+
请选择要启动的流程:
@@ -70,12 +60,10 @@
@@ -123,7 +111,7 @@ const approvalRecordRef = ref>();
const flowCodeOptions = [
{
value: currentProject.value?.id + '_mrp',
- label: '物资供应总计划审批'
+ label: '物资需求计划审核'
}
];
diff --git a/src/views/materials/materialsEquipment/materialReceive/index.vue b/src/views/materials/materialsEquipment/materialReceive/index.vue
index 6e14b99..ab997cf 100644
--- a/src/views/materials/materialsEquipment/materialReceive/index.vue
+++ b/src/views/materials/materialsEquipment/materialReceive/index.vue
@@ -1,6 +1,7 @@
-
+
@@ -11,7 +12,8 @@
-
+
@@ -23,9 +25,11 @@
- 搜索
+ 搜索
- 重置
+ 重置
@@ -36,18 +40,12 @@
- 新增
+ 新增
- 删除
+ 删除
@@ -70,24 +68,21 @@
-
+
-
+
-
+
@@ -106,11 +101,10 @@
-
-
+
+
@@ -122,8 +116,7 @@
-
+
@@ -146,53 +139,38 @@
-
+
-
+
-
+
-
+
-
+
-
+
*自动计算(数量-验收数量)
@@ -232,12 +210,13 @@
- 注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件
+ 注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件
-
+
{{ dict.label }}
@@ -246,9 +225,7 @@
{{ dict.label }}
-->
-
+
diff --git a/src/views/materials/usageMaterials/purchase/index.vue b/src/views/materials/usageMaterials/purchase/index.vue
index f8e60ea..84d24cb 100644
--- a/src/views/materials/usageMaterials/purchase/index.vue
+++ b/src/views/materials/usageMaterials/purchase/index.vue
@@ -1,37 +1,25 @@
-
+
新增
-
+
刷新
-
-
+ :row-class-name="tableRowClassName">
+
+
+
@@ -55,49 +43,25 @@
-
-
-
-
+
+
+
+
-
+
-
+
@@ -141,12 +105,8 @@
-
+
@@ -159,7 +119,8 @@
-
+
diff --git a/src/views/out/designCompletion/index.vue b/src/views/out/designCompletion/index.vue
index efc5e82..ecdb6ab 100644
--- a/src/views/out/designCompletion/index.vue
+++ b/src/views/out/designCompletion/index.vue
@@ -1,11 +1,19 @@
-
+
-
+
+
+
+
+
+
+
搜索
@@ -22,13 +30,18 @@
-
+
+
+ 对甲
+ 对乙
+
+
@@ -41,15 +54,16 @@
- 编辑
+ 编辑
- 审核
+ 审核
-
+
@@ -60,14 +74,8 @@
-
+
From 0d180e63f2d798931fac2e06c362bbb457c24d4c Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Sat, 23 Aug 2025 09:13:54 +0800
Subject: [PATCH 37/41] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 2 +-
src/api/materials/materialIssue/index.ts | 7 ++++
.../materialIssue/index.vue | 40 +++++++++++++++++--
3 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/.env.development b/.env.development
index 4c056ae..ad42896 100644
--- a/.env.development
+++ b/.env.development
@@ -8,7 +8,7 @@ VITE_APP_ENV = 'development'
# 李陈杰 209
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 曾涛
-VITE_APP_BASE_API = 'http://192.168.110.180:8899'
+VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 罗成
# VITE_APP_BASE_API = 'http://192.168.110.213:8899'
# 朱银
diff --git a/src/api/materials/materialIssue/index.ts b/src/api/materials/materialIssue/index.ts
index 31e8076..a366fa6 100644
--- a/src/api/materials/materialIssue/index.ts
+++ b/src/api/materials/materialIssue/index.ts
@@ -61,3 +61,10 @@ export const delMaterialIssue = (id: string | number | Array) =
method: 'delete'
});
};
+//获取一起名称
+export const getMaterialName = (id: any) => {
+ return request({
+ url: '/materials/materials/inventoryNumber/' + id,
+ method: 'get'
+ });
+};
diff --git a/src/views/materials/materialsEquipment/materialIssue/index.vue b/src/views/materials/materialsEquipment/materialIssue/index.vue
index b4ae57e..f957414 100644
--- a/src/views/materials/materialsEquipment/materialIssue/index.vue
+++ b/src/views/materials/materialsEquipment/materialIssue/index.vue
@@ -140,11 +140,13 @@
-
+ getNameChange(value, index, item)">
+
+
@@ -249,7 +251,15 @@