gaoluyang
2026-05-18 da57fbd8e7fa021614fb32502fb1520ea4e34e1e
src/views/basicData/customerFile/index.vue
@@ -27,6 +27,9 @@
      <div>
        <el-button type="primary"
                   @click="openForm('add')">新增客户</el-button>
        <el-button type="primary"
                   plain
                   @click="back">流入公海</el-button>
        <el-button @click="handleOut">导出</el-button>
        <el-button type="info"
                   plain
@@ -133,20 +136,23 @@
            </el-form-item>
          </el-col>
        </el-row>
        <!-- 联系人列表 -->
        <el-row :gutter="30"
                v-for="(contact, index) in formYYs.contactList"
                v-for="(contact, index) in form.contactList"
                :key="index">
          <el-col :span="12">
            <el-form-item label="联系人:"
                          prop="contactPerson">
            <el-form-item :label="index === 0 ? '联系人:' : ''"
                          :prop="'contactList.' + index + '.contactPerson'"
                          :rules="{ required: true, message: '请输入联系人', trigger: 'blur' }">
              <el-input v-model="contact.contactPerson"
                        placeholder="请输入"
                        clearable />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="联系电话:"
                          prop="contactPhone">
            <el-form-item :label="index === 0 ? '联系电话:' : ''"
                          :prop="'contactList.' + index + '.contactPhone'"
                          :rules="{ required: true, message: '请输入联系电话', trigger: 'blur' }">
              <div style="display: flex; align-items: center;width: 100%;">
                <el-input v-model="contact.contactPhone"
                          placeholder="请输入"
@@ -154,7 +160,8 @@
                <el-button @click="removeContact(index)"
                           type="danger"
                           circle
                           style="margin-left: 5px;">
                           style="margin-left: 5px;"
                           :disabled="form.contactList.length <= 1">
                  <el-icon>
                    <Close />
                  </el-icon>
@@ -164,7 +171,9 @@
          </el-col>
        </el-row>
        <el-button @click="addNewContact"
                   style="margin-bottom: 10px;">+ 新增联系人</el-button>
                   style="margin-bottom: 10px;"
                   type="primary"
                   plain>+ 新增联系人</el-button>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="维护人:"
@@ -430,6 +439,7 @@
              </div>
            </el-col>
          </el-row>
          <!-- 联系人信息已迁移到联系人管理页面
          <el-row :gutter="20">
            <el-col :span="12">
              <div class="info-item">
@@ -444,6 +454,7 @@
              </div>
            </el-col>
          </el-row>
          -->
          <el-row :gutter="20">
            <el-col :span="12">
              <div class="info-item">
@@ -619,7 +630,7 @@
    addReturnVisit,
    getReturnVisit,
  } from "@/api/basicData/customerFile.js";
  import {listCustomer, getCustomer, addCustomer, updateCustomer, delCustomer} from "@/api/basicData/customer.js";
  import {listCustomer, getCustomer, addCustomer, updateCustomer, delCustomer, backCustomer} from "@/api/basicData/customer.js";
  import { ElMessageBox } from "element-plus";
  import { userListNoPage } from "@/api/system/user.js";
  import useUserStore from "@/store/modules/user";
@@ -861,6 +872,12 @@
      companyPhone: "",
      contactPerson: "",
      contactPhone: "",
      contactList: [
        {
          contactPerson: "",
          contactPhone: "",
        },
      ],
      maintainer: "",
      maintenanceTime: "",
      basicBankAccount: "",
@@ -948,15 +965,15 @@
  });
  const { searchForm, form, rules } = toRefs(data);
  const addNewContact = () => {
    formYYs.value.contactList.push({
    form.value.contactList.push({
      contactPerson: "",
      contactPhone: "",
    });
  };
  const removeContact = index => {
    if (formYYs.value.contactList.length > 1) {
      formYYs.value.contactList.splice(index, 1);
    if (form.value.contactList.length > 1) {
      form.value.contactList.splice(index, 1);
    }
  };
  // 查询列表
@@ -1001,7 +1018,7 @@
    operationType.value = type;
    form.value = {};
    form.value.maintainer = userStore.nickName;
    formYYs.value.contactList = [
    form.value.contactList = [
      {
        contactPerson: "",
        contactPhone: "",
@@ -1015,14 +1032,19 @@
    if (type === "edit") {
      getCustomer(row.id).then(res => {
        form.value = { ...res.data };
        formYYs.value.contactList = res.data.contactPerson
          .split(",")
          .map((item, index) => {
            return {
              contactPerson: item,
              contactPhone: res.data.contactPhone.split(",")[index],
            };
          });
        // 优先使用后端返回的contactList数组,如果没有则使用逗号分隔的字符串转换
        if (res.data.contactList && res.data.contactList.length > 0) {
          form.value.contactList = res.data.contactList;
        } else if (res.data.contactPerson) {
          form.value.contactList = res.data.contactPerson
            .split(",")
            .map((item, index) => {
              return {
                contactPerson: item,
                contactPhone: res.data.contactPhone ? res.data.contactPhone.split(",")[index] : "",
              };
            });
        }
      });
    }
    dialogFormVisible.value = true;
@@ -1041,13 +1063,13 @@
  };
  // 提交新增
  const submitAdd = () => {
    if (formYYs.value.contactList.length < 1) {
    if (form.value.contactList.length < 1) {
      return proxy.$modal.msgWarning("请至少添加一个联系人");
    }
    form.value.contactPerson = formYYs.value.contactList
    form.value.contactPerson = form.value.contactList
      .map(item => item.contactPerson)
      .join(",");
    form.value.contactPhone = formYYs.value.contactList
    form.value.contactPhone = form.value.contactList
      .map(item => item.contactPhone)
      .join(",");
    addCustomer(form.value).then(res => {
@@ -1058,10 +1080,10 @@
  };
  // 提交修改
  const submitEdit = () => {
    form.value.contactPerson = formYYs.value.contactList
    form.value.contactPerson = form.value.contactList
      .map(item => item.contactPerson)
      .join(",");
    form.value.contactPhone = formYYs.value.contactList
    form.value.contactPhone = form.value.contactList
      .map(item => item.contactPhone)
      .join(",");
    updateCustomer(form.value).then(res => {
@@ -1126,6 +1148,36 @@
      });
  };
  const back = () => {
    if (selectedRows.value.length === 0) {
      proxy.$modal.msgWarning("请选择数据");
      return;
    }
    const ids = selectedRows.value.map(item => item.id);
    ElMessageBox.confirm("选中的客户将流入公海,是否确认?", "流入公海提示", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
    })
      .then(() => {
        tableLoading.value = true;
        return Promise.all(ids.map(id => backCustomer(id)))
          .then(() => {
            proxy.$modal.msgSuccess("流入公海成功");
            selectedRows.value = [];
            getList();
          })
          .finally(() => {
            tableLoading.value = false;
          });
      })
      .catch(error => {
        if (error === "cancel" || error === "close") {
          proxy.$modal.msg("已取消");
        }
      });
  };
  // 打开回访提醒弹窗
  const openReminderDialog = row => {
    currentCustomerId.value = row.id;