gongchunyi
8 小时以前 967ca126479ea5ca51726cdad1e6275571d4d3bc
src/views/basicData/customerFile/index.vue
@@ -16,14 +16,12 @@
                       @click="handleDeleteRegion">删除</el-button>
          </div>
        </div>
        <div class="left-search">
          <el-input v-model="regionKeyword"
                    placeholder="查询地区"
                    clearable
                    :prefix-icon="Search" />
        </div>
        <div class="left-list">
          <el-skeleton v-if="regionsLoading"
                       :rows="8"
@@ -46,46 +44,45 @@
          </template>
        </div>
      </div>
      <div class="right-panel">
        <div class="toolbar-card">
          <div class="search_form right-search-form">
          <div class="search-fields">
            <span class="search_title">客户名称:</span>
            <el-input v-model="searchForm.customerName"
                      style="width: 240px;margin-right: 10px"
                      placeholder="请输入"
                      @change="handleQuery"
                      clearable
                      :prefix-icon="Search" />
            <span class="search_title">客户分类:</span>
            <el-select v-model="searchForm.customerType"
                       placeholder="请选择"
                       style="width: 240px"
                       clearable
                       @change="handleQuery">
              <el-option label="零售客户"
                         value="零售客户" />
              <el-option label="进销商客户"
                         value="进销商客户" />
            </el-select>
            <el-button type="primary"
                       @click="handleQuery"
                       style="margin-left: 10px">搜索</el-button>
          </div>
          <div class="toolbar-divider"></div>
          <div class="action-buttons">
            <el-button type="primary"
                       @click="openForm('add')">新增客户</el-button>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="info"
                       plain
                       icon="Upload"
                       @click="handleImport">导入</el-button>
            <el-button type="danger"
                       plain
                       @click="handleDelete">删除</el-button>
          </div>
            <div class="search-fields">
              <span class="search_title">客户名称:</span>
              <el-input v-model="searchForm.customerName"
                        style="width: 240px;margin-right: 10px"
                        placeholder="请输入"
                        @change="handleQuery"
                        clearable
                        :prefix-icon="Search" />
              <span class="search_title">客户分类:</span>
              <el-select v-model="searchForm.customerType"
                         placeholder="请选择"
                         style="width: 240px"
                         clearable
                         @change="handleQuery">
                <el-option label="零售客户"
                           value="零售客户" />
                <el-option label="进销商客户"
                           value="进销商客户" />
              </el-select>
              <el-button type="primary"
                         @click="handleQuery"
                         style="margin-left: 10px">搜索</el-button>
            </div>
            <div class="toolbar-divider"></div>
            <div class="action-buttons">
              <el-button type="primary"
                         @click="openForm('add')">新增客户</el-button>
              <el-button @click="handleOut">导出</el-button>
              <el-button type="info"
                         plain
                         icon="Upload"
                         @click="handleImport">导入</el-button>
              <el-button type="danger"
                         plain
                         @click="handleDelete">删除</el-button>
            </div>
          </div>
        </div>
        <div class="table_list table-card">
@@ -100,7 +97,6 @@
        </div>
      </div>
    </div>
    <el-dialog v-model="addRegionDialogVisible"
               title="新增地区"
               width="420px"
@@ -115,7 +111,8 @@
                       filterable
                       placeholder="不选则为顶级地区" />
        </el-form-item>
        <el-form-item label="地区名称">
        <el-form-item label="地区名称"
                      required>
          <el-input v-model="addRegionForm.regionsName"
                    placeholder="请输入"
                    clearable />
@@ -326,6 +323,7 @@
    <!-- 用户导入对话框 -->
    <el-dialog :title="upload.title"
               v-model="upload.open"
               @close="onClose"
               width="400px"
               append-to-body>
      <el-upload ref="uploadRef"
@@ -458,7 +456,7 @@
              </div>
            </el-col>
          </el-row>
          <el-row :gutter="20">
          <el-row :gutter="20">
            <el-col :span="12">
              <div class="info-item">
                <span class="info-label">维护时间:</span>
@@ -483,7 +481,15 @@
</template>
<script setup>
  import { onMounted, ref, reactive, getCurrentInstance, toRefs, computed, watch } from "vue";
  import {
    onMounted,
    ref,
    reactive,
    getCurrentInstance,
    toRefs,
    computed,
    watch,
  } from "vue";
  import { Search } from "@element-plus/icons-vue";
  import {
    addCustomer,
@@ -676,13 +682,13 @@
        //     openReminderDialog(row);
        //   },
        // },
            {
               name: "详情",
               type: "text",
               clickFun: row => {
                  openDetailDialog(row);
               },
            },
        {
          name: "详情",
          type: "text",
          clickFun: row => {
            openDetailDialog(row);
          },
        },
      ],
    },
  ]);
@@ -735,22 +741,13 @@
    },
    rules: {
      customerName: [{ required: true, message: "请输入", trigger: "blur" }],
      taxpayerIdentificationNumber: [
        { required: true, message: "请输入", trigger: "blur" },
      ],
      companyAddress: [{ required: true, message: "请输入", trigger: "blur" }],
      regions: [{ required: true, message: "请选择客户地区", trigger: "change" }],
      companyPhone: [{ required: true, message: "请输入", trigger: "blur" }],
      // contactPerson: [{ required: true, message: "请输入", trigger: "blur" }],
      // contactPhone: [{ required: true, message: "请输入", trigger: "blur" }],
      maintainer: [{ required: false, message: "请选择", trigger: "change" }],
      maintenanceTime: [
        { required: false, message: "请选择", trigger: "change" },
      ],
      basicBankAccount: [{ required: true, message: "请输入", trigger: "blur" }],
      bankAccount: [{ required: true, message: "请输入", trigger: "blur" }],
      bankCode: [{ required: true, message: "请输入", trigger: "blur" }],
      customerType: [{ required: true, message: "请选择", trigger: "change" }],
    },
  });
  const upload = reactive({
@@ -821,7 +818,11 @@
  const addRegionDialogVisible = ref(false);
  const editRegionDialogVisible = ref(false);
  const addRegionForm = reactive({ parentPath: [], regionsName: "" });
  const editRegionForm = reactive({ id: undefined, parentId: 0, regionsName: "" });
  const editRegionForm = reactive({
    id: undefined,
    parentId: 0,
    regionsName: "",
  });
  const regionTreeProps = { label: "label", children: "children" };
  const regionCascaderProps = {
    value: "id",
@@ -853,6 +854,10 @@
      regionsName: item.regionsName || item.label || "",
      children: normalizeRegionTree(item.children || []),
    }));
  };
  const onClose = () => {
    upload.open = false;
    proxy.$refs["uploadRef"].clearFiles();
  };
  const fetchRegions = async () => {
@@ -917,7 +922,9 @@
    editRegionForm.id = selectedRegionNode.value.id;
    editRegionForm.parentId = selectedRegionNode.value.parentId || 0;
    editRegionForm.regionsName =
      selectedRegionNode.value.regionsName || selectedRegionNode.value.label || "";
      selectedRegionNode.value.regionsName ||
      selectedRegionNode.value.label ||
      "";
    editRegionDialogVisible.value = true;
  };
  const closeEditRegionDialog = () => {
@@ -975,7 +982,11 @@
      if ((item.regionsName || item.label) === targetName) {
        return currentPath;
      }
      const childResult = findRegionPathByName(item.children || [], targetName, currentPath);
      const childResult = findRegionPathByName(
        item.children || [],
        targetName,
        currentPath
      );
      if (childResult.length) return childResult;
    }
    return [];
@@ -987,7 +998,11 @@
      if (String(item.id) === String(targetId)) {
        return currentPath;
      }
      const childResult = findRegionPathById(item.children || [], targetId, currentPath);
      const childResult = findRegionPathById(
        item.children || [],
        targetId,
        currentPath
      );
      if (childResult.length) return childResult;
    }
    return [];
@@ -1063,7 +1078,10 @@
      getCustomer(row.id).then(res => {
        form.value = { ...res.data };
        const regionIdForEdit = form.value.regionsId || form.value.regionsld;
        formRegionPath.value = findRegionPathById(regionTreeData.value, regionIdForEdit);
        formRegionPath.value = findRegionPathById(
          regionTreeData.value,
          regionIdForEdit
        );
        if (!formRegionPath.value.length) {
          formRegionPath.value = findRegionPathByName(
            regionTreeData.value,
@@ -1075,10 +1093,12 @@
            ? formRegionPath.value[formRegionPath.value.length - 1]
            : "";
        if (selectedRegionId && !form.value.regions) {
          form.value.regions = regionNodeMap.value.get(selectedRegionId)?.regionsName || "";
          form.value.regions =
            regionNodeMap.value.get(selectedRegionId)?.regionsName || "";
        }
        form.value.regionsId = form.value.regionsId || selectedRegionId;
        form.value.regionsld = form.value.regionsld || form.value.regionsId || selectedRegionId;
        form.value.regionsld =
          form.value.regionsld || form.value.regionsId || selectedRegionId;
        formYYs.value.contactList = res.data.contactPerson
          .split(",")
          .map((item, index) => {
@@ -1115,7 +1135,8 @@
      .map(item => item.contactPhone)
      .join(",");
    if (!form.value.regionsId && formRegionPath.value.length) {
      form.value.regionsId = formRegionPath.value[formRegionPath.value.length - 1];
      form.value.regionsId =
        formRegionPath.value[formRegionPath.value.length - 1];
    }
    form.value.regionsld = form.value.regionsId || "";
    addCustomer(form.value).then(res => {
@@ -1133,7 +1154,8 @@
      .map(item => item.contactPhone)
      .join(",");
    if (!form.value.regionsId && formRegionPath.value.length) {
      form.value.regionsId = formRegionPath.value[formRegionPath.value.length - 1];
      form.value.regionsId =
        formRegionPath.value[formRegionPath.value.length - 1];
    }
    form.value.regionsld = form.value.regionsId || "";
    updateCustomer(form.value).then(res => {
@@ -1309,7 +1331,13 @@
  .toolbar-divider {
    width: 1px;
    align-self: stretch;
    background: linear-gradient(to bottom, transparent, #e4e7ed 15%, #e4e7ed 85%, transparent);
    background: linear-gradient(
      to bottom,
      transparent,
      #e4e7ed 15%,
      #e4e7ed 85%,
      transparent
    );
  }
  .action-buttons {