选择或修改当前角色信息
@@ -34,7 +34,7 @@
-
关联项目角色分配
+
关联项目角色分配
请从左侧选择项目进行角色分配
- 确 定
- 取 消
+ 取 消
+ 保存角色信息
@@ -328,10 +328,12 @@ defineExpose({ open });
From 03ec2223aa2db0dbd3adb20c3019172a3b6343fc Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Fri, 5 Sep 2025 22:17:25 +0800
Subject: [PATCH 06/26] =?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 | 4 +-
src/api/materials/materialOutbound/index.ts | 27 +++
src/api/materials/materialsUseRecord/types.ts | 15 +-
.../materialOutbound/component/outbound.vue | 90 ++++++++
.../materials/materialOutbound/index.vue | 148 +++++++++++++
.../materials/materialsUseRecord/index.vue | 207 +++++++++++-------
6 files changed, 398 insertions(+), 93 deletions(-)
create mode 100644 src/api/materials/materialOutbound/index.ts
create mode 100644 src/views/materials/materialOutbound/component/outbound.vue
create mode 100644 src/views/materials/materialOutbound/index.vue
diff --git a/.env.development b/.env.development
index 9419bae..4a809a3 100644
--- a/.env.development
+++ b/.env.development
@@ -6,13 +6,13 @@ 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.188: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.171:8899'
diff --git a/src/api/materials/materialOutbound/index.ts b/src/api/materials/materialOutbound/index.ts
new file mode 100644
index 0000000..ca53c82
--- /dev/null
+++ b/src/api/materials/materialOutbound/index.ts
@@ -0,0 +1,27 @@
+import request from '@/utils/request';
+
+//获取出库材料得列表
+export const outboundMaterials = (query?: any) => {
+ return request({
+ url: '/materials/materials/listRelevancy',
+ method: 'get',
+ params: query
+ });
+};
+//新增出库
+export const addOutbound = (data?: any) => {
+ return request({
+ url: '/materials/materialsInventory',
+ method: 'post',
+ data
+ });
+};
+
+//获取材料列表
+export const getMaterialsList = (query?: any) => {
+ return request({
+ url: '/materials/materials/list',
+ method: 'get',
+ params: query
+ });
+};
diff --git a/src/api/materials/materialsUseRecord/types.ts b/src/api/materials/materialsUseRecord/types.ts
index 697f347..19df92b 100644
--- a/src/api/materials/materialsUseRecord/types.ts
+++ b/src/api/materials/materialsUseRecord/types.ts
@@ -33,7 +33,6 @@ export interface MaterialsUseRecordVO {
* 备注
*/
remark: string;
-
}
export interface MaterialsUseRecordForm extends BaseEntity {
@@ -71,11 +70,9 @@ export interface MaterialsUseRecordForm extends BaseEntity {
* 备注
*/
remark?: string;
-
}
export interface MaterialsUseRecordQuery extends PageQuery {
-
/**
* 项目ID
*/
@@ -101,11 +98,9 @@ export interface MaterialsUseRecordQuery extends PageQuery {
*/
residueNumber?: string | number;
- /**
- * 日期范围参数
- */
- params?: any;
+ /**
+ * 日期范围参数
+ */
+ params?: any;
+ materialsId?: string | number;
}
-
-
-
diff --git a/src/views/materials/materialOutbound/component/outbound.vue b/src/views/materials/materialOutbound/component/outbound.vue
new file mode 100644
index 0000000..c182cee
--- /dev/null
+++ b/src/views/materials/materialOutbound/component/outbound.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+ {{ scope.row.residue }}
+
+
+
+
+
+ {{ scope.row.number }}
+
+
+
+
+
+ {{ scope.row.recipient }}
+
+
+
+
+
+ {{ scope.row.shipper }}
+
+
+
+
+
+ {{ scope.row.operator }}
+
+
+
+
+
+ 确认
+
+
+
+
+
+
+
diff --git a/src/views/materials/materialOutbound/index.vue b/src/views/materials/materialOutbound/index.vue
new file mode 100644
index 0000000..91a54e3
--- /dev/null
+++ b/src/views/materials/materialOutbound/index.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+ {
+ // 阻止点击行时自动展开
+ if (column.property) event.stopPropagation();
+ }
+ "
+ :preserve-expanded-content="true"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增出库
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/materials/materialsUseRecord/index.vue b/src/views/materials/materialsUseRecord/index.vue
index 494f0a7..a8da5f4 100644
--- a/src/views/materials/materialsUseRecord/index.vue
+++ b/src/views/materials/materialsUseRecord/index.vue
@@ -1,84 +1,101 @@
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 删除
-
-
-
-
-
handleChildPagination(props.row.id, page, limit)"
- />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
- 添加登记
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
handleChildPagination(props.row.id, page, limit)"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加登记
+
+
+
+
+
+
+
+
@@ -115,7 +132,7 @@ import { MaterialsUseRecordVO, MaterialsUseRecordQuery, MaterialsUseRecordForm }
import { getCurrentInstance, ComponentInternalInstance, onMounted, ref, reactive, toRefs, computed, watch, WatchStopHandle } from 'vue';
import { ElFormInstance, ElTable } from 'element-plus';
import useUserStore from '@/store/modules/user';
-import { get } from 'lodash';
+import { getMaterialsList } from '@/api/materials/materialOutbound';
// 类型定义补充
interface DialogOption {
@@ -183,7 +200,8 @@ const data = reactive({
projectId: currentProject.value?.id,
outPut: 1,
materialsName: undefined,
- usePart: undefined
+ usePart: undefined,
+ materialsId: ''
} as MaterialsUseRecordQuery & {
outPut?: number;
materialsName?: string;
@@ -199,6 +217,32 @@ const data = reactive({
const { form, rules } = toRefs(data);
const queryParams = ref({ ...data.queryParams });
+const TreeData: any = ref([]);
+//获取材料列表
+const getMaterialsListData = async () => {
+ const res = await getMaterialsList({ projectId: currentProject.value?.id, pageNum: 1, pageSize: 999 });
+ if (res.code === 200) {
+ // 将数据转换为树形结构
+ TreeData.value = res.rows.map((item) => ({
+ ...item,
+ label: item.materialsName + '_' + item.createTime,
+ children: []
+ }));
+ queryParams.value.materialsId = TreeData.value[0].id;
+ getList();
+ }
+};
+
+const handleNodeClick = (data: any) => {
+ console.log(data);
+ queryParams.value.materialsId = data.id;
+ getList();
+};
+
+const defaultProps = {
+ children: 'children',
+ label: 'label'
+};
// ------------------------------ 子列表状态工具函数 ------------------------------
/** 获取或初始化指定父行的子列表状态 */
@@ -420,6 +464,7 @@ onUnmounted(() => {
// 页面挂载时加载数据
onMounted(() => {
- getList();
+ // getList();
+ getMaterialsListData();
});
From 3d501323387973935aee101e48dec285d2b1f851 Mon Sep 17 00:00:00 2001
From: dhr <2216804034@qq.com>
Date: Sat, 6 Sep 2025 13:21:10 +0800
Subject: [PATCH 07/26] 0906
---
.env.development | 2 +-
absolute/path/to/index.vue | 1 +
.../landTransfer/landTransferLedger/index.ts | 23 +
.../landTransfer/landTransferLedger/types.ts | 24 +-
src/views/equipment/index.vue | 28 +-
.../landTransferLedger/index.vue | 935 ++++++++++++++++--
6 files changed, 892 insertions(+), 121 deletions(-)
create mode 100644 absolute/path/to/index.vue
diff --git a/.env.development b/.env.development
index 764306d..faff5a9 100644
--- a/.env.development
+++ b/.env.development
@@ -6,7 +6,7 @@ VITE_APP_ENV = 'development'
# 开发环境
# 李陈杰 209
-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.180:8899'
# 罗成
diff --git a/absolute/path/to/index.vue b/absolute/path/to/index.vue
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/absolute/path/to/index.vue
@@ -0,0 +1 @@
+
diff --git a/src/api/system/landTransfer/landTransferLedger/index.ts b/src/api/system/landTransfer/landTransferLedger/index.ts
index fbd949e..bd397a1 100644
--- a/src/api/system/landTransfer/landTransferLedger/index.ts
+++ b/src/api/system/landTransfer/landTransferLedger/index.ts
@@ -79,3 +79,26 @@ export const landTransferLedgerCount = (id: string | number | Array {
+ return request({
+ url: '/land/landTransferLedger/children/add',
+ method: 'post',
+ data: data
+ });
+};
+
+export const listSonLandTransferLedger = (query) => {
+ return request({
+ url: '/land/landTransferLedger/children/list',
+ method: 'get',
+ params: query
+ });
+};
+// api/yourApiModule.js
+export const listallCountValue = (projectId) => {
+ return request({
+ url: '/land/landTransferLedger/allCountValue/' + projectId,
+ method: 'get'
+ });
+};
diff --git a/src/api/system/landTransfer/landTransferLedger/types.ts b/src/api/system/landTransfer/landTransferLedger/types.ts
index 75487d0..59daeb4 100644
--- a/src/api/system/landTransfer/landTransferLedger/types.ts
+++ b/src/api/system/landTransfer/landTransferLedger/types.ts
@@ -4,6 +4,11 @@ export interface LandTransferLedgerVO {
*/
id: string | number;
+ /**
+ * 父级ID
+ */
+ parentId: string | number;
+
/**
* 项目ID
*/
@@ -83,7 +88,6 @@ export interface LandTransferLedgerVO {
* 下一步策略
*/
nextStrategy: string;
-
}
export interface LandTransferLedgerForm extends BaseEntity {
@@ -92,6 +96,11 @@ export interface LandTransferLedgerForm extends BaseEntity {
*/
id?: string | number;
+ /**
+ * 父级ID
+ */
+ parentId: string | number;
+
/**
* 项目ID
*/
@@ -171,11 +180,9 @@ export interface LandTransferLedgerForm extends BaseEntity {
* 下一步策略
*/
nextStrategy?: string;
-
}
export interface LandTransferLedgerQuery extends PageQuery {
-
/**
* 项目ID
*/
@@ -256,11 +263,8 @@ export interface LandTransferLedgerQuery extends PageQuery {
*/
nextStrategy?: string;
- /**
- * 日期范围参数
- */
- params?: any;
+ /**
+ * 日期范围参数
+ */
+ params?: any;
}
-
-
-
diff --git a/src/views/equipment/index.vue b/src/views/equipment/index.vue
index 22fab09..8d9444f 100644
--- a/src/views/equipment/index.vue
+++ b/src/views/equipment/index.vue
@@ -42,11 +42,6 @@
{{ viewAllButtonText }}
-
-
- GPS定位
-
-
@@ -68,17 +63,7 @@
-
-
-
- {{ scope.row.deviceName || '-' }}
-
-
-
+
@@ -110,6 +95,13 @@
>
+
+
+
+
+
+
+
@@ -240,7 +232,7 @@ const projectList = ref([]);
const projectLoading = ref(false);
const userLoading = ref(false);
const viewAllButtonText = computed(() => {
- return queryParams.value.type === 1 ? '查看未绑定设备' : '查看已绑定设备';
+ return queryParams.value.type === 1 ? '查看未绑定项目设备' : '查看已绑定项目设备';
});
// 对话框相关
@@ -473,7 +465,7 @@ const handleViewAll = () => {
getList();
};
-const handleGoToEmptyPage = () => {
+const handleGoToEmptyPage = (userId: any) => {
router.push({
path: './equipmentGPS'
});
diff --git a/src/views/project/landTransfer/BusinessLedger/landTransferLedger/index.vue b/src/views/project/landTransfer/BusinessLedger/landTransferLedger/index.vue
index 28839b3..bc9baa1 100644
--- a/src/views/project/landTransfer/BusinessLedger/landTransferLedger/index.vue
+++ b/src/views/project/landTransfer/BusinessLedger/landTransferLedger/index.vue
@@ -4,7 +4,7 @@
设计面积
- {{ detailInfo.designArea }} 亩
+ {{ detailInfo.areaSum }} 亩
@@ -13,7 +13,7 @@
已流转面积
- {{ detailInfo.transferAea }} 亩
+ {{ detailInfo.transferAreaSum }} 亩
@@ -22,7 +22,7 @@
租金
- {{ detailInfo.landRent / 1000 }} 万元
+ {{ detailInfo.rentSum / 1000 }} 万元
@@ -42,6 +42,7 @@
+
@@ -74,18 +75,23 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {{ scope.row.transferArea && scope.row.designArea ? ((scope.row.transferArea / scope.row.designArea) * 100).toFixed(2) : '0.00' }}
+
+
+
+
+
+
-
- 编辑
+
+
+ 查看子项
删除
@@ -95,111 +101,411 @@
-
-
+
+
+
+
+
+
+
+
+ 设计面积
+ {{ sonSummaryInfo.parentDesignArea }} 亩
+
+
+
+
+
+
+
+ 已流转面积
+ {{ sonSummaryInfo.totalTransferArea }} 亩
+
+
+
+
+
+
+
+ 不流转面积
+ {{ sonSummaryInfo.totalNonTransferArea }} 亩
+
+
+
+
+
+
+
+ 未流转面积
+ {{ sonSummaryInfo.remainingArea }} 亩
+
+
+
+
+
+
+
+
+
+ 新增子项
+
+
+
+
+
+
+
已流转
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
不流转
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
未流转子项
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ sonForm.areaValue && sonForm.transferStatus == '1' ? `提示:已流转面积不能超过设计面积 ${sonForm.designArea} 亩` : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ sonForm.areaValue && sonForm.transferStatus == '2' ? `提示:不流转面积不能超过设计面积 ${sonForm.designArea} 亩` : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
-
+
-
+
+
-
+
+
-
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
+
-
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
@@ -222,8 +528,11 @@ import {
getLandTransferLedger,
delLandTransferLedger,
addLandTransferLedger,
- updateLandTransferLedger,
- landTransferLedgerCount
+ landTransferLedgerCount,
+ listallCountValue,
+ // 新增子项相关接口
+ listSonLandTransferLedger,
+ addSonLandTransferLedger
} from '@/api/system/landTransfer/landTransferLedger';
import { listEnterRoad } from '@/api/system/landTransfer/enterRoad';
import { LandTransferLedgerVO, LandTransferLedgerQuery, LandTransferLedgerForm } from '@/api/system/landTransfer/landTransferLedger/types';
@@ -231,6 +540,7 @@ import { useUserStoreHook } from '@/store/modules/user';
import { listLandBlock } from '@/api/system/landTransfer/landBlock';
import { getCurrentInstance, ComponentInternalInstance, watch, onUnmounted, onMounted } from 'vue';
import { ElFormInstance } from 'element-plus';
+import { area } from '@turf/turf';
// 类型定义补充
interface DialogOption {
@@ -263,14 +573,47 @@ const enterRoadList = ref([]);
// 字典数据
const { land_type, land_transfer_status } = toRefs(proxy?.useDict('land_type', 'land_transfer_status'));
+// 主项弹窗配置
const dialog = reactive({
visible: false,
title: ''
});
+// 子项相关状态
+const sonDialog = reactive({
+ visible: false,
+ title: '子项列表'
+});
+
+const sonFormDialog = reactive({
+ visible: false,
+ title: '新增子项'
+});
+
+const sonLandTransferLedgerList = ref([]);
+const sonLoading = ref(false);
+const sonTotal = ref(0);
+const sonIds = ref>([]);
+const sonButtonLoading = ref(false);
+const sonLandTransferLedgerFormRef = ref();
+
+// 当前父项ID,用于子项操作
+const currentParentId = ref(undefined);
+
+// 子项查询参数
+const sonQueryParams = reactive({
+ pageNum: 1,
+ pageSize: 10,
+ projectId: currentProject.value?.id,
+ parentId: undefined,
+ params: {},
+ listType: 2 // 标识为子项列表
+});
+
// 表单初始数据
const initFormData: LandTransferLedgerForm = {
id: undefined,
+ parentId: undefined,
projectId: currentProject.value?.id,
landType: undefined,
landBlockId: undefined,
@@ -316,10 +659,9 @@ const data = reactive>
issueSummary: undefined,
nextStrategy: undefined,
params: {},
- listType: 1
+ listType: 1 // 标识为主项列表
},
rules: {
- id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }],
projectId: [{ required: true, message: '项目ID不能为空', trigger: 'blur' }],
landType: [{ required: true, message: '土地类型不能为空', trigger: 'change' }],
transferRatio: [
@@ -355,10 +697,86 @@ const data = reactive>
}
});
+// 子项表单数据
+const sonForm = reactive({ ...initFormData });
+
+// 子项表单验证规则(与主项相同)
+
+// 根据transferStatus分类的子项列表
+const sonTransferLedgerList0 = computed(() => sonLandTransferLedgerList.value.filter((item) => item.transferStatus === '0'));
+
+const sonTransferLedgerList1 = computed(() => sonLandTransferLedgerList.value.filter((item) => item.transferStatus === '1'));
+
+const sonTransferLedgerList2 = computed(() => sonLandTransferLedgerList.value.filter((item) => item.transferStatus === '2'));
+
+// 当前父项完整数据
+const currentParentItem = ref(null);
+
+// 子项列表统计信息
+const sonSummaryInfo = computed(() => {
+ // 1. 计算子项已流转面积总和(使用areaValue字段,当transferStatus为1时)
+ const totalTransferArea = sonTransferLedgerList1.value.reduce((sum, item) => {
+ return sum + (parseFloat(item.areaValue || '0') || 0);
+ }, 0);
+
+ // 2. 计算子项不流转面积总和(使用areaValue字段,当transferStatus为2时)
+ const totalNonTransferArea = sonTransferLedgerList2.value.reduce((sum, item) => {
+ return sum + (parseFloat(item.areaValue || '0') || 0);
+ }, 0);
+
+ // 3. 获取父项设计面积
+ const parentDesignArea = parseFloat(currentParentItem.value?.designArea || '0') || 0;
+
+ // 4. 计算未流转面积
+ const remainingArea = Math.max(0, parentDesignArea - totalTransferArea - totalNonTransferArea);
+
+ return {
+ parentDesignArea,
+ totalTransferArea,
+ totalNonTransferArea,
+ remainingArea
+ };
+});
+
+// 最近选择的父项数据,用于新增弹窗预填充
+const lastSelectedParent = ref(null);
+const sonRules = {
+ projectId: [{ required: true, message: '项目ID不能为空', trigger: 'blur' }],
+ landType: [{ required: true, message: '土地类型不能为空', trigger: 'change' }],
+ transferRatio: [
+ {
+ required: true,
+ message: '流转比例不能为空',
+ trigger: ['blur', 'change'],
+ validator: (rule, value, callback) => {
+ if (sonForm.transferStatus !== '1') {
+ callback();
+ return;
+ }
+ if (value === undefined || value === null || value === '') {
+ callback(new Error('流转比例不能为空'));
+ } else {
+ callback();
+ }
+ }
+ },
+ {
+ validator: (rule, value, callback) => {
+ if (value < 0 || value > 100) {
+ callback(new Error('流转比例必须在 0-100 之间'));
+ } else {
+ callback();
+ }
+ },
+ trigger: 'blur'
+ }
+ ]
+};
+
const detailInfo = ref({
- transferAea: 0,
- transferRatio: 0,
- landRent: 0
+ areaSum: 0,
+ rentSum: 0,
+ transferAreaSum: 0
});
const { queryParams, form, rules } = toRefs(data);
@@ -374,7 +792,7 @@ const calcTransferRatio = () => {
// 转换为数字(避免字符串计算)
const designArea = Number(form.value.designArea) || 0;
- const transferAea = Number(form.value.transferAea) || 0;
+ const areaValue = Number(form.value.areaValue) || 0;
// 边界处理:设计面积为0时避免报错
if (designArea === 0) {
@@ -383,44 +801,156 @@ const calcTransferRatio = () => {
}
// 核心计算:限制最大100%,保留2位小数
- const ratio = Math.min((transferAea / designArea) * 100, 100);
+ const ratio = Math.min((areaValue / designArea) * 100, 100);
form.value.transferRatio = Number(ratio.toFixed(2));
};
-/** 查询项目土地流转台账列表 */
+/**
+ * 子项自动计算流转比例
+ */
+const calcSonTransferRatio = () => {
+ // 仅已流转状态下计算
+ if (sonForm.transferStatus !== '1') {
+ sonForm.transferRatio = undefined;
+ return;
+ }
+
+ // 转换为数字(避免字符串计算)
+ const designArea = Number(sonForm.designArea) || 0;
+ const areaValue = Number(sonForm.areaValue) || 0;
+
+ // 边界处理:设计面积为0时避免报错
+ if (designArea === 0) {
+ sonForm.transferRatio = 0;
+ return;
+ }
+
+ // 核心计算:限制最大100%,保留2位小数
+ const ratio = Math.min((areaValue / designArea) * 100, 100);
+ sonForm.transferRatio = Number(ratio.toFixed(2));
+};
+
+/** 查询项目土地流转台账列表(主项) */
const getList = async () => {
loading.value = true;
try {
const res = await listLandTransferLedger(queryParams.value);
- landTransferLedgerList.value = res.rows;
- total.value = res.total;
+ console.log('主项接口返回数据:', res);
+ console.log('主项数据赋值前:', landTransferLedgerList.value);
+ landTransferLedgerList.value = res.rows || [];
+ total.value = res.total || 0;
+ console.log('主项数据赋值后:', landTransferLedgerList.value);
} finally {
loading.value = false;
}
};
+/** 查询子项列表 */
+const getSonList = async () => {
+ sonLoading.value = true;
+ try {
+ const res = await listSonLandTransferLedger(sonQueryParams);
+ console.log('子项接口返回数据:', res); // 查看res是否有rows,且rows非空
+ console.log('子项数据赋值前:', sonLandTransferLedgerList.value);
-/** 获取地块统计信息 */
+ // 处理接口返回的数据,添加缺失的显示属性
+ const processedData = (res.data || []).map((item) => ({
+ ...item,
+ // 添加显示所需的属性
+ landTypeName: getLandTypeName(item.landType),
+ landName: getLandBlockName(item.landBlockId),
+ transferStatusName: getTransferStatusName(item.transferStatus)
+ }));
+
+ sonLandTransferLedgerList.value = processedData;
+ sonTotal.value = res.total || 0;
+ console.log('子项数据赋值后:', sonLandTransferLedgerList.value); // 确认数组有数据
+ } finally {
+ sonLoading.value = false;
+ }
+};
+
+/** 根据土地类型值获取名称 */
+const getLandTypeName = (value) => {
+ if (!value) return '';
+ const landTypeItem = land_type?.value?.find((item) => item.value === value);
+ return landTypeItem?.label || '';
+};
+
+/** 根据地块ID获取地块名称 */
+const getLandBlockName = (id) => {
+ if (!id) return '';
+ const landBlockItem = landBlockList.value?.find((item) => item.id === id);
+ return landBlockItem?.landName || '';
+};
+
+/** 根据流转状态值获取名称 */
+const getTransferStatusName = (value) => {
+ if (!value) return '';
+ const statusItem = land_transfer_status?.value?.find((item) => item.value === value);
+ return statusItem?.label || '';
+};
+
+/** 获取地块统计信息 - 调用listallCountValue接口 */
const getLandBlockList = async () => {
try {
- const res = await landTransferLedgerCount(currentProject.value?.id);
- detailInfo.value = res.data;
+ // 获取当前选中的项目ID
+ const projectId = currentProject.value?.id;
+ if (!projectId) {
+ console.error('项目ID不存在,无法获取统计信息');
+ return;
+ }
+
+ // 调用listallCountValue接口,传入projectId参数
+ const res = await listallCountValue(projectId);
+
+ // 映射返回的数据到detailInfo对象,确保与模板中使用的字段一致
+ detailInfo.value = {
+ areaSum: res.data.areaSum,
+ rentSum: res.data.rentSum,
+ transferAreaSum: res.data.transferAreaSum
+ };
} catch (error) {
console.error('获取地块统计信息失败:', error);
}
};
-/** 取消按钮 */
+/** 取消按钮(主项) */
const cancel = () => {
dialog.visible = false;
- reset();
+ resetForm();
};
-/** 表单重置 */
-const reset = () => {
- form.value = { ...initFormData };
+/** 取消按钮(子项) */
+const cancelSonForm = () => {
+ sonFormDialog.visible = false;
+ getLandBlockList(); // 关闭子项时刷新顶部实时信息
+ resetSonForm();
+ getList(); // 关闭子项弹窗时刷新父级列表
+};
+
+/** 关闭子项列表弹窗 */
+const handleCloseSonDialog = () => {
+ sonDialog.visible = false;
+ getList(); // 关闭子项列表时刷新父级列表
+ getLandBlockList(); // 关闭子项时刷新顶部实时信息
+};
+
+/** 表单重置(主项) */
+const resetForm = () => {
+ form.value = { ...initFormData, projectId: currentProject.value?.id };
landTransferLedgerFormRef.value?.resetFields();
};
+/** 表单重置(子项) */
+const resetSonForm = () => {
+ // 不要重新赋值整个对象,而是修改其属性
+ Object.assign(sonForm, {
+ ...initFormData,
+ projectId: currentProject.value?.id,
+ parentId: currentParentId.value
+ });
+ sonLandTransferLedgerFormRef.value?.resetFields();
+};
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
@@ -433,58 +963,114 @@ const resetQuery = () => {
handleQuery();
};
-/** 多选框选中数据 */
+/** 多选框选中数据(主项) */
const handleSelectionChange = (selection: LandTransferLedgerVO[]) => {
ids.value = selection.map((item) => item.id);
single.value = selection.length !== 1;
multiple.value = selection.length === 0;
};
-/** 新增按钮操作 */
+/** 多选框选中数据(子项) */
+const handleSonSelectionChange = (selection: LandTransferLedgerVO[]) => {
+ sonIds.value = selection.map((item) => item.id);
+};
+
+/** 新增主项按钮操作 */
const handleAdd = () => {
- reset();
+ resetForm();
form.value.transferStatus = '0'; // 默认待流转
enterRoadList.value = [];
dialog.title = '添加项目土地流转台账';
dialog.visible = true;
};
-/** 修改按钮操作 */
-const handleUpdate = async (row?: LandTransferLedgerVO) => {
- reset();
- const _id = row?.id || ids.value[0];
- if (!_id) return;
+/** 查看子项按钮操作(打开子项弹窗时) */
+const handleViewSons = async (row: LandTransferLedgerVO) => {
+ if (!row?.id) return;
- try {
- // 获取编辑数据
- const res = await getLandTransferLedger(_id);
- Object.assign(form.value, res.data);
- // 回显地块对应的道路列表
- form.value.landBlockId = row?.landBlockId;
- await getListRoad();
- // 初始化计算流转比例
- calcTransferRatio();
- // 打开弹窗
- dialog.title = '修改项目土地流转台账';
- dialog.visible = true;
- } catch (error) {
- console.error('获取编辑数据失败:', error);
- proxy?.$modal.msgError('加载数据失败,请重试');
- }
+ // 1. 确认父项ID已赋值
+ currentParentId.value = row.id;
+ console.log('当前父项ID:', currentParentId.value); // 确认非空
+
+ // 2. 保存当前父项的完整数据,用于计算统计信息
+ currentParentItem.value = row;
+
+ // 2. 确认项目ID已赋值(从用户store获取)
+ const projectId = currentProject.value?.id;
+ console.log('当前项目ID:', projectId); // 确认非空
+
+ // 3. 设置子项查询参数(必须包含parentId和projectId)
+ sonQueryParams.parentId = currentParentId.value;
+ sonQueryParams.projectId = projectId;
+ sonQueryParams.pageNum = 1; // 重置为第1页,避免分页导致数据不显示
+
+ // 4. 重新加载子项列表
+ await getSonList();
+ sonDialog.visible = true;
};
-/** 提交按钮 */
+/** 新增子项按钮操作 - 从父项继承数据 */
+const handleAddSon = async () => {
+ if (!currentParentId.value) {
+ proxy?.$modal.msgWarning('请先选择父项记录');
+ return;
+ }
+
+ // 1. 查找当前父项的完整数据
+ const parentItem = landTransferLedgerList.value.find((item) => item.id === currentParentId.value);
+
+ if (!parentItem) {
+ proxy?.$modal.msgWarning('未找到父项数据');
+ return;
+ }
+
+ // 2. 重置表单并继承父项数据
+ resetSonForm();
+
+ // 3. 核心:从父项继承基础数据(根据实际业务调整需要继承的字段)
+ Object.assign(sonForm, {
+ // 必传的关联字段
+ parentId: currentParentId.value,
+ projectId: currentProject.value?.id,
+
+ // 继承父项的核心字段(示例,需根据实际接口字段调整)
+ landBlockId: parentItem.landBlockId, // 继承“对应地块”
+ landType: parentItem.landType, // 继承“土地类型”
+ enterRoadId: parentItem.enterRoadId, // 继承“进场道路”
+ designArea: parentItem.designArea, // 继承“设计面积”
+ responsiblePerson: parentItem.responsiblePerson, // 继承“责任人”
+ expectedFinishDate: parentItem.expectedFinishDate, // 继承“预计完成时间”
+
+ // 子项默认值(可覆盖父项或设置新值)
+ transferStatus: '1', // 默认为“已流转”
+ areaValue: 0,
+ transferRatio: 0
+ });
+
+ // 4. 继承后同步加载关联数据(如进场道路列表)
+ await getListRoad();
+
+ // 5. 打开弹窗
+ sonFormDialog.title = '添加子项(继承父项数据)';
+ sonFormDialog.visible = true;
+};
+
+/** 按流转状态新增子项按钮操作 */
+const handleAddSonByStatus = (status: string) => {
+ handleAddSon();
+ // 设置指定的流转状态
+ sonForm.transferStatus = status;
+};
+
+/** 提交主项表单 */
const submitForm = () => {
landTransferLedgerFormRef.value?.validate(async (valid: boolean) => {
if (!valid) return;
buttonLoading.value = true;
try {
- if (form.value.id) {
- await updateLandTransferLedger(form.value);
- } else {
- await addLandTransferLedger(form.value);
- }
+ // 只保留新增功能,移除修改功能
+ await addLandTransferLedger(form.value);
proxy?.$modal.msgSuccess('操作成功');
dialog.visible = false;
await getList();
@@ -498,7 +1084,65 @@ const submitForm = () => {
});
};
-/** 删除按钮操作 */
+/** 提交子项表单 */
+const submitSonForm = () => {
+ sonLandTransferLedgerFormRef.value?.validate(async (valid: boolean) => {
+ if (!valid) return;
+
+ // 面积校验:已流转面积和不流转面积总和不能超过设计面积
+ try {
+ // 1. 获取当前父项的设计面积
+ const parentDesignArea = parseFloat(currentParentItem.value?.designArea || '0');
+ if (parentDesignArea <= 0) {
+ proxy?.$modal.msgWarning('父项设计面积未设置或无效');
+ return;
+ }
+
+ // 2. 获取当前子项的面积
+ const currentArea = parseFloat(sonForm.areaValue || '0');
+ if (currentArea <= 0) {
+ proxy?.$modal.msgWarning('请输入有效的面积值');
+ return;
+ }
+
+ // 3. 计算当前所有子项的面积总和(排除当前正在编辑的记录)
+ let totalExistingArea = 0;
+ if (sonLandTransferLedgerList.value && sonLandTransferLedgerList.value.length > 0) {
+ totalExistingArea = sonLandTransferLedgerList.value.reduce((sum, item) => {
+ return sum + (parseFloat(item.areaValue || '0') || 0);
+ }, 0);
+ }
+
+ // 4. 计算总面积(现有面积 + 当前子项面积)
+ const totalArea = totalExistingArea + currentArea;
+
+ // 5. 校验总面积是否超过设计面积
+ if (totalArea > parentDesignArea) {
+ proxy?.$modal.msgError(`面积总和 ${totalArea} 亩超过了设计面积 ${parentDesignArea} 亩,请调整面积值`);
+ return;
+ }
+ } catch (error) {
+ console.error('面积校验失败:', error);
+ proxy?.$modal.msgError('面积校验失败,请重试');
+ return;
+ }
+
+ sonButtonLoading.value = true;
+ try {
+ await addSonLandTransferLedger(sonForm);
+ proxy?.$modal.msgSuccess('子项添加成功');
+ sonFormDialog.visible = false;
+ await getSonList(); // 刷新子项列表
+ } catch (error) {
+ proxy?.$modal.msgError('操作失败,请重试');
+ console.error('提交子项表单失败:', error);
+ } finally {
+ sonButtonLoading.value = false;
+ }
+ });
+};
+
+/** 删除主项按钮操作 */
const handleDelete = async (row?: LandTransferLedgerVO) => {
const _ids = row?.id || ids.value;
if (!_ids.length) return;
@@ -542,11 +1186,14 @@ const getListLand = async () => {
/** 查询进场道路列表(按地块筛选) */
const getListRoad = async () => {
try {
+ // 优先使用子项表单的地块ID,否则使用主项表单的
+ const landBlockId = sonForm.landBlockId || form.value.landBlockId;
+
const res = await listEnterRoad({
pageNum: 1,
pageSize: 10000,
projectId: currentProject.value?.id,
- landBlockId: form.value.landBlockId
+ landBlockId
});
enterRoadList.value = res.rows;
} catch (error) {
@@ -554,16 +1201,17 @@ const getListRoad = async () => {
}
};
-/** 监听项目切换,刷新数据 */
+// 监听项目切换时,重置主项查询参数
const listeningProject = watch(
() => currentProject.value?.id,
async (newId) => {
if (newId) {
- queryParams.value.projectId = newId;
+ queryParams.value.projectId = newId; // 确保项目ID赋值
+ queryParams.value.pageNum = 1; // 重置页码
await Promise.all([getLandBlockList(), getListLand(), getList()]);
}
},
- { immediate: true } // 初始加载时触发
+ { immediate: true }
);
/** 组件卸载时清理监听 */
@@ -608,4 +1256,107 @@ onMounted(() => {
}
}
}
+
+// 子项列表统计展示区域美化样式
+.summary-box {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ margin: 20px 0;
+ padding: 15px;
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
+ border-radius: 12px;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
+
+ // 响应式布局
+ @media (max-width: 768px) {
+ flex-wrap: wrap;
+ > .summary-item {
+ width: calc(50% - 10px) !important;
+ margin-bottom: 15px;
+ }
+ }
+}
+
+.summary-item {
+ flex: 1;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20px 15px;
+ background: white;
+ margin: 0 8px;
+ border-radius: 10px;
+ border: 1px solid #e1e5e9;
+ transition: all 0.3s ease;
+
+ &:first-child {
+ margin-left: 0;
+ }
+
+ &:last-child {
+ margin-right: 0;
+ }
+
+ &:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 6px 20px rgba(49, 118, 255, 0.15);
+ border-color: #3176ff;
+ }
+}
+
+.summary-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.summary-label {
+ font-size: 14px;
+ color: #666;
+ margin-bottom: 8px;
+ font-weight: 500;
+}
+
+.summary-value {
+ font-size: 24px;
+ color: #333;
+ font-weight: bold;
+ transition: color 0.3s ease;
+}
+
+// 不同类型数据的特殊样式
+.design-area .summary-value {
+ color: #3176ff;
+}
+
+.transfer-area .summary-value {
+ color: #52c41a;
+}
+
+.non-transfer-area .summary-value {
+ color: #ff6b6b;
+}
+
+.remaining-area .summary-value {
+ color: #fa8c16;
+}
+
+.summary-icon {
+ transition: transform 0.3s ease;
+}
+
+.summary-item:hover .summary-icon {
+ transform: scale(1.1);
+}
+
+// 调整弹窗表单样式,适应竖向排列
+.el-dialog__body {
+ max-height: 70vh;
+ overflow-y: auto;
+ padding: 20px;
+}
+
+.el-form-item {
+ margin-bottom: 15px;
+}
From b4dadc415d906f5fa81caa8611f84536d70f22c2 Mon Sep 17 00:00:00 2001
From: taoge1020
Date: Sat, 6 Sep 2025 14:41:47 +0800
Subject: [PATCH 08/26] =?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/api/out/monthPlan/index.ts | 4 ++--
src/views/out/monthPlan/index.vue | 11 ++++++++---
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/api/out/monthPlan/index.ts b/src/api/out/monthPlan/index.ts
index 48f376f..cf59628 100644
--- a/src/api/out/monthPlan/index.ts
+++ b/src/api/out/monthPlan/index.ts
@@ -8,7 +8,7 @@ import { MonthPlanVO, MonthPlanForm, MonthPlanQuery } from '@/api/out/monthPlan/
* @returns {*}
*/
-export const listMonthPlan = (query?: MonthPlanQuery): AxiosPromise => {
+export const listMonthPlan = (query?: any) => {
return request({
url: '/out/monthPlan/list',
method: 'get',
@@ -120,4 +120,4 @@ export const purchaseValueA = (query) => {
method: 'get',
params: query
});
-};
\ No newline at end of file
+};
diff --git a/src/views/out/monthPlan/index.vue b/src/views/out/monthPlan/index.vue
index f06a95e..eca4424 100644
--- a/src/views/out/monthPlan/index.vue
+++ b/src/views/out/monthPlan/index.vue
@@ -14,6 +14,7 @@
+
@@ -102,7 +103,7 @@
diff --git a/src/views/materials/materialsUseRecord/index.vue b/src/views/materials/materialsUseRecord/index.vue
index a8da5f4..73f3263 100644
--- a/src/views/materials/materialsUseRecord/index.vue
+++ b/src/views/materials/materialsUseRecord/index.vue
@@ -1,13 +1,13 @@
-
+
-
+
From 52342e6623de4698a3dad4695d692d6e988e9e7a Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Sat, 6 Sep 2025 18:18:31 +0800
Subject: [PATCH 14/26] =?UTF-8?q?=E4=BF=AE=E6=94=B99.06bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 2 +-
src/views/contract/division/index.vue | 16 ++++++++++++----
.../formalitiesAreConsolidated/index.vue | 2 +-
.../formalities/listOfFormalities/index.vue | 11 +++++++++--
src/views/tender/bidd/index.vue | 6 +++---
src/views/tender/plan/index.vue | 8 +++++---
6 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/.env.development b/.env.development
index 4a809a3..aae7043 100644
--- a/.env.development
+++ b/.env.development
@@ -6,7 +6,7 @@ VITE_APP_ENV = 'development'
# 开发环境
# 李陈杰 209
-VITE_APP_BASE_API = 'http://192.168.110.209:8899'
+VITE_APP_BASE_API = 'http://192.168.110.149:8899'
# 曾涛
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
# 罗成
diff --git a/src/views/contract/division/index.vue b/src/views/contract/division/index.vue
index b8e6768..1d3149c 100644
--- a/src/views/contract/division/index.vue
+++ b/src/views/contract/division/index.vue
@@ -29,7 +29,13 @@
*计划招标时间
-
+
@@ -143,9 +149,11 @@
(scope.row.selectNum ? Number(scope.row.selectNum) : 0) ==
0
? ''
- : (scope.row.quantity ? Number(scope.row.quantity) : 0) -
- (scope.row.selectNum ? Number(scope.row.selectNum) : 0) -
- (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
+ : (
+ (scope.row.quantity ? Number(scope.row.quantity) : 0) -
+ (scope.row.selectNum ? Number(scope.row.selectNum) : 0) -
+ (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
+ ).toFixed(2)
}}
diff --git a/src/views/formalities/formalitiesAreConsolidated/index.vue b/src/views/formalities/formalitiesAreConsolidated/index.vue
index 834f4cd..0d0a822 100644
--- a/src/views/formalities/formalitiesAreConsolidated/index.vue
+++ b/src/views/formalities/formalitiesAreConsolidated/index.vue
@@ -172,7 +172,7 @@
-
+
删除
diff --git a/src/views/formalities/listOfFormalities/index.vue b/src/views/formalities/listOfFormalities/index.vue
index 5bcd5b9..ed712fc 100644
--- a/src/views/formalities/listOfFormalities/index.vue
+++ b/src/views/formalities/listOfFormalities/index.vue
@@ -31,13 +31,20 @@
-
-
+
+
diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue
index 1bf3b61..99baf53 100644
--- a/src/views/tender/bidd/index.vue
+++ b/src/views/tender/bidd/index.vue
@@ -59,8 +59,8 @@
-
-
+
+
@@ -92,7 +92,7 @@
{{ scope.row.price != 0 ? Number(scope.row.price).toFixed(2) : null }}
-
+
{{ scope.row.taxRate !== false ? scope.row.taxRate : '' }}
diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue
index ba71c3a..1ff7736 100644
--- a/src/views/tender/plan/index.vue
+++ b/src/views/tender/plan/index.vue
@@ -198,9 +198,11 @@
? activeTab == 2
? 0
: ''
- : (scope.row.quantity ? Number(scope.row.quantity) : 0) -
- (scope.row.selectNum ? Number(scope.row.selectNum) : 0) -
- (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
+ : (
+ (scope.row.quantity ? Number(scope.row.quantity) : 0) -
+ (scope.row.selectNum ? Number(scope.row.selectNum) : 0) -
+ (scope.row.useQuantity ? Number(scope.row.useQuantity) : 0)
+ ).toFixed(2)
}}
From e71ec5b9c1a1a250e8d4efaadc28a7d767ff376c Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Sat, 6 Sep 2025 18:23:14 +0800
Subject: [PATCH 15/26] =?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 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.env.development b/.env.development
index aae7043..4a809a3 100644
--- a/.env.development
+++ b/.env.development
@@ -6,7 +6,7 @@ VITE_APP_ENV = 'development'
# 开发环境
# 李陈杰 209
-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.180:8899'
# 罗成
From b412e847d48a1d7cb63731801c33b6984957bc58 Mon Sep 17 00:00:00 2001
From: ljx <15723110242@139.com>
Date: Sat, 6 Sep 2025 18:24:12 +0800
Subject: [PATCH 16/26] =?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 | 1 -
1 file changed, 1 deletion(-)
diff --git a/.env.development b/.env.development
index 1a58681..4a809a3 100644
--- a/.env.development
+++ b/.env.development
@@ -5,7 +5,6 @@ VITE_APP_TITLE = 煤科建管平台
VITE_APP_ENV = 'development'
# 开发环境
-VITE_APP_BASE_API = 'http://192.168.110.149:8899'
# 李陈杰 209
VITE_APP_BASE_API = 'http://192.168.110.209:8899'
# 曾涛
From 5101dc7657326a1258fb72d08aa089e3a807124c Mon Sep 17 00:00:00 2001
From: tcy <1193318383@qq.com>
Date: Sat, 6 Sep 2025 18:26:17 +0800
Subject: [PATCH 17/26] =?UTF-8?q?fix(ctr):=20=E4=BF=AE=E5=A4=8D=E6=94=B6?=
=?UTF-8?q?=E5=85=A5=E5=90=88=E5=90=8C=E7=B1=BB=E5=9E=8B=E5=88=87=E6=8D=A2?=
=?UTF-8?q?=E5=90=8E=E6=9C=AA=E9=87=8D=E7=BD=AE=E5=90=88=E5=90=8C=E7=B1=BB?=
=?UTF-8?q?=E5=9E=8B=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在切换收入合同类型时,确保合同类型被正确重置
- 优化了模板中的代码格式,提高了可读性
---
src/views/ctr/index.vue | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/src/views/ctr/index.vue b/src/views/ctr/index.vue
index 96f5c49..98b913d 100644
--- a/src/views/ctr/index.vue
+++ b/src/views/ctr/index.vue
@@ -24,7 +24,8 @@
-
+
@@ -37,17 +38,15 @@
-
+
-
+
@@ -61,35 +60,36 @@
-
+
- 选择招标
+ 选择招标
-
+
+ v-model="form.amount" placeholder="请输入合同金额" disabled />
-
+
@@ -208,7 +208,7 @@ const payRatioComputed = computed({
return total;
},
// 只读
- set: () => {}
+ set: () => { }
});
const checkContractType = (type) => {
contract_type.value = type;
@@ -280,7 +280,6 @@ const resetForm = () => {
};
fileList.value = [];
tempFileList.value = [];
- contract_type.value = '';
setTimeout(() => {
localStorage.removeItem('tempContractForm');
}, 0);
@@ -399,6 +398,7 @@ const getInfoByProjectIdList = async () => {
form.value.contractOwner = res.data.planDuration;
};
onMounted(() => {
+ contract_type.value = '';
getInfoByProjectIdList();
const tempForm = localStorage.getItem('tempContractForm');
From 4fa4c754f931dce481d9b4b70c8f5499bd5f7d7a Mon Sep 17 00:00:00 2001
From: dhr <2216804034@qq.com>
Date: Sat, 6 Sep 2025 18:51:05 +0800
Subject: [PATCH 18/26] 0906
---
src/views/equipment/equipmentGPS.vue | 81 +++-
src/views/equipment/index.js | 392 ++++++++++++++++++
src/views/equipment/index.vue | 135 +++---
.../BasicData/landBlock/index.vue | 4 +-
.../landTransferLedger/index.vue | 10 +-
5 files changed, 555 insertions(+), 67 deletions(-)
create mode 100644 src/views/equipment/index.js
diff --git a/src/views/equipment/equipmentGPS.vue b/src/views/equipment/equipmentGPS.vue
index 35290b8..8a24dea 100644
--- a/src/views/equipment/equipmentGPS.vue
+++ b/src/views/equipment/equipmentGPS.vue
@@ -1,17 +1,63 @@
-
From 4a9a0c4214ef03efcd571e0e520848643765ee4c Mon Sep 17 00:00:00 2001
From: Teo <2642673902@qq.com>
Date: Mon, 8 Sep 2025 10:23:39 +0800
Subject: [PATCH 23/26] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BB=BB=E5=91=BD=E4=BF=AE=E5=A4=8Dui?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/design/appointment/index.vue | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/views/design/appointment/index.vue b/src/views/design/appointment/index.vue
index 6adfa28..89cce9e 100644
--- a/src/views/design/appointment/index.vue
+++ b/src/views/design/appointment/index.vue
@@ -343,13 +343,17 @@
type="primary"
size="large"
v-hasPermi="['design:user:batch']"
+ icon="Check"
@click="submitForm"
class="px-8 py-2.5 transition-all duration-300 transform hover:scale-105 bg-blue-500 hover:bg-blue-600 text-white font-medium"
- >
- 确认提交
+ >确认提交
-
- 重置
+ 重置
From cf2b80577023580951aa2eee36dfe36a0e28e80d Mon Sep 17 00:00:00 2001
From: taoge1020
Date: Mon, 8 Sep 2025 20:00:59 +0800
Subject: [PATCH 24/26] =?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/safety/questionBank/index.ts | 12 +-
src/api/safety/questionUserAnswer/index.ts | 14 +-
src/api/safety/questionsCategory/index.ts | 10 +-
src/api/safety/questionsConfig/index.ts | 4 +-
src/components/TopNav/index.vue | 2 -
src/layout/components/Sidebar/SidebarItem.vue | 10 +-
src/views/design/received/index.vue | 4 +-
.../formalities/listOfFormalities/index.vue | 17 +-
src/views/safety/questionBank/index.vue | 40 +-
src/views/safety/questionUserAnswer/index.vue | 59 +--
src/views/safety/questionsCategory/index.vue | 31 +-
src/views/safety/questionsConfig/index.vue | 457 +++++++-----------
src/views/system/user/comm/editInfo.vue | 10 +-
src/views/system/user/comm/roleInfo.vue | 12 +
src/views/system/user/index.vue | 32 +-
16 files changed, 292 insertions(+), 424 deletions(-)
diff --git a/.env.development b/.env.development
index 595e335..24a087f 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.149:8899'
+VITE_APP_BASE_API = 'http://192.168.110.180:8899'
# 李陈杰 209
# 曾涛
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
diff --git a/src/api/safety/questionBank/index.ts b/src/api/safety/questionBank/index.ts
index 7427f9f..540ba08 100644
--- a/src/api/safety/questionBank/index.ts
+++ b/src/api/safety/questionBank/index.ts
@@ -1,6 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
-import { QuestionBankVO, QuestionBankForm, QuestionBankQuery } from '@/api/safety/questionBank/types';
+import { QuestionBankVO, QuestionBankForm, QuestionBankQuery } from '@/api/safety/wgzQuestionBank/types';
/**
* 查询题库列表
@@ -10,7 +10,7 @@ import { QuestionBankVO, QuestionBankForm, QuestionBankQuery } from '@/api/safet
export const listQuestionBank = (query?: QuestionBankQuery): AxiosPromise => {
return request({
- url: '/safety/questionBank/list',
+ url: '/safety/wgzQuestionBank/list',
method: 'get',
params: query
});
@@ -22,7 +22,7 @@ export const listQuestionBank = (query?: QuestionBankQuery): AxiosPromise => {
return request({
- url: '/safety/questionBank/' + id,
+ url: '/safety/wgzQuestionBank/' + id,
method: 'get'
});
};
@@ -33,7 +33,7 @@ export const getQuestionBank = (id: string | number): AxiosPromise {
return request({
- url: '/safety/questionBank',
+ url: '/safety/wgzQuestionBank',
method: 'post',
data: data
});
@@ -45,7 +45,7 @@ export const addQuestionBank = (data: QuestionBankForm) => {
*/
export const updateQuestionBank = (data: QuestionBankForm) => {
return request({
- url: '/safety/questionBank',
+ url: '/safety/wgzQuestionBank',
method: 'put',
data: data
});
@@ -57,7 +57,7 @@ export const updateQuestionBank = (data: QuestionBankForm) => {
*/
export const delQuestionBank = (id: string | number | Array) => {
return request({
- url: '/safety/questionBank/' + id,
+ url: '/safety/wgzQuestionBank/' + id,
method: 'delete'
});
};
diff --git a/src/api/safety/questionUserAnswer/index.ts b/src/api/safety/questionUserAnswer/index.ts
index 430d505..de3d40c 100644
--- a/src/api/safety/questionUserAnswer/index.ts
+++ b/src/api/safety/questionUserAnswer/index.ts
@@ -1,6 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
-import { QuestionUserAnswerVO, QuestionUserAnswerForm, QuestionUserAnswerQuery } from '@/api/safety/questionUserAnswer/types';
+import { QuestionUserAnswerVO, QuestionUserAnswerForm, QuestionUserAnswerQuery } from '@/api/safety/wgzQuestionSave/types';
/**
* 查询用户试卷存储列表
@@ -10,7 +10,7 @@ import { QuestionUserAnswerVO, QuestionUserAnswerForm, QuestionUserAnswerQuery }
export const listQuestionUserAnswer = (query?: QuestionUserAnswerQuery): AxiosPromise => {
return request({
- url: '/safety/questionUserAnswer/list',
+ url: '/safety/wgzQuestionSave/list',
method: 'get',
params: query
});
@@ -22,7 +22,7 @@ export const listQuestionUserAnswer = (query?: QuestionUserAnswerQuery): AxiosPr
*/
export const getQuestionUserAnswer = (id: string | number): AxiosPromise => {
return request({
- url: '/safety/questionUserAnswer/' + id,
+ url: '/safety/wgzQuestionSave/' + id,
method: 'get'
});
};
@@ -33,7 +33,7 @@ export const getQuestionUserAnswer = (id: string | number): AxiosPromise {
return request({
- url: '/safety/questionUserAnswer',
+ url: '/safety/wgzQuestionSave',
method: 'post',
data: data
});
@@ -45,7 +45,7 @@ export const addQuestionUserAnswer = (data: QuestionUserAnswerForm) => {
*/
export const updateQuestionUserAnswer = (data: QuestionUserAnswerForm) => {
return request({
- url: '/safety/questionUserAnswer',
+ url: '/safety/wgzQuestionSave',
method: 'put',
data: data
});
@@ -57,7 +57,7 @@ export const updateQuestionUserAnswer = (data: QuestionUserAnswerForm) => {
*/
export const delQuestionUserAnswer = (id: string | number | Array) => {
return request({
- url: '/safety/questionUserAnswer/' + id,
+ url: '/safety/wgzQuestionSave/' + id,
method: 'delete'
});
};
@@ -68,7 +68,7 @@ export const delQuestionUserAnswer = (id: string | number | Array {
return request({
- url: '/safety/questionUserAnswer/upload/zip',
+ url: '/safety/wgzQuestionSave/upload/zip',
method: 'post',
data: data
});
diff --git a/src/api/safety/questionsCategory/index.ts b/src/api/safety/questionsCategory/index.ts
index a69e77d..06d3cad 100644
--- a/src/api/safety/questionsCategory/index.ts
+++ b/src/api/safety/questionsCategory/index.ts
@@ -10,7 +10,7 @@ import { QuestionsCategoryVO, QuestionsCategoryForm, QuestionsCategoryQuery } fr
export const listQuestionsCategory = (query?: QuestionsCategoryQuery): AxiosPromise => {
return request({
- url: '/safety/questionsCategory/list',
+ url: '/safety/wzgQuestionCategory/list',
method: 'get',
params: query
});
@@ -22,7 +22,7 @@ export const listQuestionsCategory = (query?: QuestionsCategoryQuery): AxiosProm
*/
export const getQuestionsCategory = (id: string | number): AxiosPromise => {
return request({
- url: '/safety/questionsCategory/' + id,
+ url: '/safety/wzgQuestionCategory' + id,
method: 'get'
});
};
@@ -33,7 +33,7 @@ export const getQuestionsCategory = (id: string | number): AxiosPromise {
return request({
- url: '/safety/questionsCategory',
+ url: '/safety/wzgQuestionCategory',
method: 'post',
data: data
});
@@ -45,7 +45,7 @@ export const addQuestionsCategory = (data: QuestionsCategoryForm) => {
*/
export const updateQuestionsCategory = (data: QuestionsCategoryForm) => {
return request({
- url: '/safety/questionsCategory',
+ url: '/safety/wzgQuestionCategory',
method: 'put',
data: data
});
@@ -57,7 +57,7 @@ export const updateQuestionsCategory = (data: QuestionsCategoryForm) => {
*/
export const delQuestionsCategory = (id: string | number | Array) => {
return request({
- url: '/safety/questionsCategory/' + id,
+ url: '/safety/wzgQuestionCategory' + id,
method: 'delete'
});
};
diff --git a/src/api/safety/questionsConfig/index.ts b/src/api/safety/questionsConfig/index.ts
index 3c613ec..4969332 100644
--- a/src/api/safety/questionsConfig/index.ts
+++ b/src/api/safety/questionsConfig/index.ts
@@ -22,7 +22,7 @@ export const listQuestionsConfig = (query?: QuestionsConfigQuery): AxiosPromise<
*/
export const getQuestionsConfig = (id: string | number): AxiosPromise => {
return request({
- url: '/safety/questionsConfig/' + id,
+ url: '/safety/wzgQuestionsConfiguration/' + id,
method: 'get'
});
};
@@ -45,7 +45,7 @@ export const addQuestionsConfig = (data: QuestionsConfigForm) => {
*/
export const updateQuestionsConfig = (data: QuestionsConfigForm) => {
return request({
- url: '/safety/questionsConfig',
+ url: '/safety/wzgQuestionsConfiguration',
method: 'put',
data: data
});
diff --git a/src/components/TopNav/index.vue b/src/components/TopNav/index.vue
index 32357e3..39c3a6e 100644
--- a/src/components/TopNav/index.vue
+++ b/src/components/TopNav/index.vue
@@ -170,8 +170,6 @@ onMounted(() => {
//分页
const getWaitingList = () => {
pageByTaskWait({ pageNum: 1, pageSize: 10 }).then((resp) => {
- console.log(resp);
-
total.value = resp.total;
});
};
diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue
index 3fd0fd8..21f7710 100644
--- a/src/layout/components/Sidebar/SidebarItem.vue
+++ b/src/layout/components/Sidebar/SidebarItem.vue
@@ -17,7 +17,7 @@
-
+ {{ total }}
{
- if (onlyOneChild.value.meta?.title == '我的待办') {
+ if (onlyOneChild.value.meta?.title == '我的待办' || props.item.meta?.title == '我的任务') {
getWaitingList();
}
- if (onlyOneChild.value.meta?.title == '我的抄送') {
+ if (onlyOneChild.value.meta?.title == '我的抄送') {
getChaoList();
}
});
@@ -130,9 +130,7 @@ const hasTitle = (title: string | undefined): string => {
watch(
() => noticeStore.state.value.notices,
(newVal) => {
- if (onlyOneChild.value.meta?.title == '我的待办') {
- console.log(121212121);
-
+ if (onlyOneChild.value.meta?.title == '我的待办' || props.item.meta?.title == '我的任务') {
let time = setTimeout(() => {
getWaitingList();
clearTimeout(time);
diff --git a/src/views/design/received/index.vue b/src/views/design/received/index.vue
index 3dfa5ef..cb81327 100644
--- a/src/views/design/received/index.vue
+++ b/src/views/design/received/index.vue
@@ -62,13 +62,13 @@
:accept="'.xlsx,.xls'"
:limit="1"
>
- 导入文件
+ 导入文件
diff --git a/src/views/formalities/listOfFormalities/index.vue b/src/views/formalities/listOfFormalities/index.vue
index 24c2bac..ed712fc 100644
--- a/src/views/formalities/listOfFormalities/index.vue
+++ b/src/views/formalities/listOfFormalities/index.vue
@@ -1,9 +1,7 @@
-
+
-
+
@@ -23,12 +21,12 @@
- 新增
+ 新增
- 确认
+ 确认
@@ -44,8 +42,7 @@
-
+
diff --git a/src/views/safety/questionBank/index.vue b/src/views/safety/questionBank/index.vue
index 7198a85..9ee98c4 100644
--- a/src/views/safety/questionBank/index.vue
+++ b/src/views/safety/questionBank/index.vue
@@ -14,15 +14,6 @@
-
-
-
-
-
-
-
-
-
搜索
重置
@@ -38,32 +29,18 @@
新增
-
- 修改
-
-
-
- 删除
-
-
-
- 导出
-
-
-
-
-
+
+
+
-
+
@@ -73,16 +50,11 @@
-
-
-
-
-
-
+ 修改
+ 删除
-
diff --git a/src/views/safety/questionUserAnswer/index.vue b/src/views/safety/questionUserAnswer/index.vue
index d60fd4f..b9f151b 100644
--- a/src/views/safety/questionUserAnswer/index.vue
+++ b/src/views/safety/questionUserAnswer/index.vue
@@ -1,7 +1,6 @@
-
+
@@ -31,23 +30,27 @@
注:上传压缩包内的文件夹名称需设置为【姓名-身份证-满分-得分-及格分】,
例如:小明-5130112333654X-100-59-60
- 上传线下安全考试
+ 上传线下安全考试
- 批量下载试卷
+ 批量下载试卷
-
-
+
@@ -59,21 +62,19 @@
-
-
+
+ 下载试卷
-
+
@@ -196,35 +197,15 @@ const handleSelectionChange = (selection: QuestionUserAnswerVO[]) => {
multiple.value = !selection.length;
};
-/** 修改按钮操作 */
-// const handleUpdate = async (row?: QuestionUserAnswerVO) => {
-// reset();
-// const _id = row?.id || ids.value[0];
-// const res = await getQuestionUserAnswer(_id);
-// Object.assign(form.value, res.data);
-// dialog.visible = true;
-// dialog.title = '修改用户试卷存储';
-// };
-
/** 批量下载按钮操作 */
const handleDownload = async () => {
const _ids = ids.value;
- await downLoadOss({ idList: _ids }, '/safety/questionUserAnswer/exportFile', '安全考试.zip');
+ await downLoadOss({ idList: _ids }, '/safety/wgzQuestionSave/exportFile', '安全考试.zip');
};
/** 下载单个按钮操作 */
const downloadOssOne = async (row?: QuestionUserAnswerVO) => {
await download.oss(row?.file);
};
-
-// const fileWatch = watch(
-// () => filePath.value,
-// (nid, oid) => {
-// uploadQuestionUserAnswer({ file: filePath.value, projectId: currentProject.value?.id }).then((res) => {
-// console.log(res);
-// });
-// }
-// );
-
//监听项目id刷新数据
const listeningProject = watch(
() => currentProject.value?.id,
diff --git a/src/views/safety/questionsCategory/index.vue b/src/views/safety/questionsCategory/index.vue
index e46f30c..d96e8eb 100644
--- a/src/views/safety/questionsCategory/index.vue
+++ b/src/views/safety/questionsCategory/index.vue
@@ -22,38 +22,21 @@
新增
-
- 修改
-
-
- 删除
-
-
-
+
-
-
-
-
-
-
+ 修改
+ 删除
diff --git a/src/views/safety/questionsConfig/index.vue b/src/views/safety/questionsConfig/index.vue
index 669ca3a..282c309 100644
--- a/src/views/safety/questionsConfig/index.vue
+++ b/src/views/safety/questionsConfig/index.vue
@@ -1,309 +1,220 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
+
+
+
-
-
-
-
-
- 新增
+
+
+
+
+
+
+
-
- 修改
-
+
+
+
+
+
-
- 删除
-
+
+
+
+
+
+
-
- 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ 保存配置
+
+
+
+
diff --git a/src/views/system/user/comm/editInfo.vue b/src/views/system/user/comm/editInfo.vue
index 1e8b39d..7168cee 100644
--- a/src/views/system/user/comm/editInfo.vue
+++ b/src/views/system/user/comm/editInfo.vue
@@ -192,12 +192,12 @@ async function handleDeptChange(value: number | string) {
];
}
-const submitForm = () => {
+const submitForm = (cb) => {
userFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
- form.value.userId ? await api.updateUser(form.value) : await api.addUser(form.value);
- proxy?.$modal.msgSuccess('操作成功');
- proxy?.$emit('submit', false);
+ // form.value.userId ? await api.updateUser(form.value) : await api.addUser(form.value);
+ // proxy?.$modal.msgSuccess('操作成功');
+ cb();
}
});
};
@@ -243,7 +243,7 @@ const getInfoForm = () => {
onMounted(() => {
getDeptTree();
});
-defineExpose({ open, getInfoForm });
+defineExpose({ open, getInfoForm, submitForm });