diff --git a/src/main/java/com/gxwebsoft/yxe/controller/YxeVisitListController.java b/src/main/java/com/gxwebsoft/yxe/controller/YxeVisitListController.java
index 93773ef..3dbbc0e 100644
--- a/src/main/java/com/gxwebsoft/yxe/controller/YxeVisitListController.java
+++ b/src/main/java/com/gxwebsoft/yxe/controller/YxeVisitListController.java
@@ -142,6 +142,9 @@ public class YxeVisitListController extends BaseController {
headers.add("提交人手机号");
headers.add("用户分组");
headers.add("拜访人员");
+ headers.add("拜访类型");
+ headers.add("拜访日期");
+ headers.add("自填拜访人姓名");
headers.add("沟通内容");
headers.add("小结");
headers.add("位置");
@@ -165,6 +168,9 @@ public class YxeVisitListController extends BaseController {
rowValues.add(getUserPhone(user));
rowValues.add(user == null ? "" : user.getUserGroup());
rowValues.add(item.getName());
+ rowValues.add(item.getVisitType());
+ rowValues.add(item.getVisitDate());
+ rowValues.add(item.getSubmitterName());
rowValues.add(item.getContent());
rowValues.add(item.getSummary());
rowValues.add(item.getLocation());
diff --git a/src/main/java/com/gxwebsoft/yxe/entity/YxeVisitList.java b/src/main/java/com/gxwebsoft/yxe/entity/YxeVisitList.java
index 95a07f6..9e675a0 100644
--- a/src/main/java/com/gxwebsoft/yxe/entity/YxeVisitList.java
+++ b/src/main/java/com/gxwebsoft/yxe/entity/YxeVisitList.java
@@ -39,6 +39,15 @@ public class YxeVisitList implements Serializable {
@ApiModelProperty(value = "拜访人员")
private String name;
+ @ApiModelProperty(value = "拜访对象类型: 门店/门店经理/其他")
+ private String visitType;
+
+ @ApiModelProperty(value = "拜访日期")
+ private String visitDate;
+
+ @ApiModelProperty(value = "提交人姓名(拜访人自填, 可与账号姓名不同)")
+ private String submitterName;
+
@ApiModelProperty(value = "沟通内容")
private String content;
diff --git a/src/main/java/com/gxwebsoft/yxe/mapper/xml/YxeVisitListMapper.xml b/src/main/java/com/gxwebsoft/yxe/mapper/xml/YxeVisitListMapper.xml
index 8922a1e..ef700cc 100644
--- a/src/main/java/com/gxwebsoft/yxe/mapper/xml/YxeVisitListMapper.xml
+++ b/src/main/java/com/gxwebsoft/yxe/mapper/xml/YxeVisitListMapper.xml
@@ -40,6 +40,15 @@
AND a.name LIKE CONCAT('%', #{param.name}, '%')
+
+ AND a.visit_type LIKE CONCAT('%', #{param.visitType}, '%')
+
+
+ AND a.visit_date LIKE CONCAT('%', #{param.visitDate}, '%')
+
+
+ AND a.submitter_name LIKE CONCAT('%', #{param.submitterName}, '%')
+
AND a.content LIKE CONCAT('%', #{param.content}, '%')
diff --git a/src/main/java/com/gxwebsoft/yxe/param/YxeVisitListParam.java b/src/main/java/com/gxwebsoft/yxe/param/YxeVisitListParam.java
index 995eb01..1d4d8c8 100644
--- a/src/main/java/com/gxwebsoft/yxe/param/YxeVisitListParam.java
+++ b/src/main/java/com/gxwebsoft/yxe/param/YxeVisitListParam.java
@@ -54,6 +54,15 @@ public class YxeVisitListParam extends BaseParam {
@ApiModelProperty(value = "拜访人员")
private String name;
+ @ApiModelProperty(value = "拜访对象类型: 门店/门店经理/其他")
+ private String visitType;
+
+ @ApiModelProperty(value = "拜访日期")
+ private String visitDate;
+
+ @ApiModelProperty(value = "提交人姓名")
+ private String submitterName;
+
@ApiModelProperty(value = "沟通内容")
private String content;
diff --git a/yxe_visit_list_add_visit_form_fields_2026-10-11.sql b/yxe_visit_list_add_visit_form_fields_2026-10-11.sql
new file mode 100644
index 0000000..5c329c2
--- /dev/null
+++ b/yxe_visit_list_add_visit_form_fields_2026-10-11.sql
@@ -0,0 +1,63 @@
+-- 用途:yxe_visit_list 表新增客户拜访表单字段(拜访对象类型、拜访日期、提交人姓名)
+-- 日期:2026-10-11
+-- 背景:小程序 pages/visit/index 按「客户拜访」新原型重构为多卡片表单:
+-- 1) 新增「拜访对象 - 类型」(门店 / 门店经理 / 其他);
+-- 2) 新增「拜访信息 - 拜访日期」,默认当天;
+-- 3) 新增「我的信息 - 姓名」,进页面自动带出账号 real_name,仍允许修改,
+-- 因此与 sys_user.real_name 可能不一致,需要独立字段留痕。
+-- 三项均为本次新增,历史记录该字段为空(前端展示为 "-")。
+-- 影响:ALTER 语句本身 0 行;已有历史数据新增列为 NULL,不做回填。
+-- 性质:幂等,可重复执行(通过 information_schema 判断列是否存在后再 ADD)
+-- 配套代码:
+-- yxe-java YxeVisitList.java / YxeVisitListParam.java / YxeVisitListMapper.xml
+-- / YxeVisitListController.java(导出表头)
+-- yxe-mp pages/visit/index.vue
+-- yxe-admin src/api/yxe/yxeVisitList/model、列表列、详情、编辑弹窗
+
+-- 执行前核对(应为 0 行,即三列均不存在)
+SELECT COLUMN_NAME
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE()
+ AND TABLE_NAME = 'yxe_visit_list'
+ AND COLUMN_NAME IN ('visit_type', 'visit_date', 'submitter_name');
+
+-- 变更:按列分别判断,已存在则跳过
+SET @db := DATABASE();
+
+SET @sql := IF(
+ (SELECT COUNT(*) FROM information_schema.COLUMNS
+ WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'yxe_visit_list' AND COLUMN_NAME = 'visit_type') = 0,
+ 'ALTER TABLE `yxe_visit_list` ADD COLUMN `visit_type` varchar(16) DEFAULT NULL COMMENT ''拜访对象类型: 门店/门店经理/其他'' AFTER `name`',
+ 'SELECT ''visit_type already exists'' AS skipped'
+);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+
+SET @sql := IF(
+ (SELECT COUNT(*) FROM information_schema.COLUMNS
+ WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'yxe_visit_list' AND COLUMN_NAME = 'visit_date') = 0,
+ 'ALTER TABLE `yxe_visit_list` ADD COLUMN `visit_date` varchar(32) DEFAULT NULL COMMENT ''拜访日期'' AFTER `visit_type`',
+ 'SELECT ''visit_date already exists'' AS skipped'
+);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+
+SET @sql := IF(
+ (SELECT COUNT(*) FROM information_schema.COLUMNS
+ WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'yxe_visit_list' AND COLUMN_NAME = 'submitter_name') = 0,
+ 'ALTER TABLE `yxe_visit_list` ADD COLUMN `submitter_name` varchar(64) DEFAULT NULL COMMENT ''提交人姓名(拜访人自填)'' AFTER `visit_date`',
+ 'SELECT ''submitter_name already exists'' AS skipped'
+);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+
+-- 执行后核对(应为 3 行,且类型/注释符合预期)
+SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_COMMENT, ORDINAL_POSITION
+FROM information_schema.COLUMNS
+WHERE TABLE_SCHEMA = DATABASE()
+ AND TABLE_NAME = 'yxe_visit_list'
+ AND COLUMN_NAME IN ('visit_type', 'visit_date', 'submitter_name')
+ORDER BY ORDINAL_POSITION;