tuqin
2026-09-24 dc3fc550fe292043cc452dc9aeb0c8a1eeab3b30
src/views/basicData/product/index.vue
@@ -9,6 +9,9 @@
                  @clear="searchFilter"
                  clearable
                  prefix-icon="Search" />
        <span style="margin-left: 12px">
          <ImportExcel @uploadSuccess="handleImportSuccess" />
        </span>
        <el-button v-if="false"
                   type="primary"
                   @click="openProDia('addOne')"
@@ -72,13 +75,15 @@
                   @click="openModelDia('add')">
          新增规格型号
        </el-button>
        <ImportExcel :product-id="currentId"
                     @uploadSuccess="getModelList" />
        <el-button type="danger"
                   @click="handleDelete"
                   style="margin-left: 10px"
                   plain>
          删除
        </el-button>
        <el-button @click="handleExportModels"
                   style="margin-left: 10px">
          导出
        </el-button>
      </div>
      <PIMTable rowKey="id"
@@ -104,8 +109,10 @@
            <el-form-item label="产品名称:"
                          prop="productName">
              <el-input v-model="form.productName"
                        type="textarea"
                        resize="vertical"
                        placeholder="请输入产品名称"
                        maxlength="20"
                        maxlength="50"
                        show-word-limit
                        clearable
                        @keydown.enter.prevent />
@@ -132,17 +139,15 @@
               :rules="modelRules"
               ref="modelFormRef">
        <el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="产品编号:"
                            prop="productCode">
                <el-input v-model="modelForm.productCode"
                          placeholder="请输入产品编号"
                          clearable
                          @keydown.enter.prevent />
              </el-form-item>
            </el-col>
          </el-row>
          <el-col :span="24">
            <el-form-item label="产品编号:"
                          prop="productCode">
              <el-input v-model="modelForm.productCode"
                        placeholder="请输入产品编号"
                        clearable
                        @keydown.enter.prevent />
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="规格型号:"
                          prop="model">
@@ -335,7 +340,7 @@
    rules: {
      productName: [
        { required: true, message: "请输入", trigger: "blur" },
        { max: 20, message: "产品名称不能超过20个字符", trigger: "blur" },
        { max: 50, message: "产品名称不能超过50个字符", trigger: "blur" },
      ],
    },
    modelForm: {
@@ -536,6 +541,13 @@
      tableLoading.value = false;
    });
  };
  // 导入完成后刷新产品树与右侧规格列表
  const handleImportSuccess = () => {
    getProductTreeList();
    if (currentId.value) {
      getModelList();
    }
  };
  // 删除规格型号
  const handleDelete = () => {
    let ids = [];
@@ -565,6 +577,19 @@
        proxy.$modal.msg("已取消");
      });
  };
  // 导出当前产品的规格型号
  const handleExportModels = () => {
    if (!currentId.value) {
      proxy.$modal.msgWarning("请先选择产品");
      return;
    }
    proxy.download(
      "/basic/product/exportModel",
      { id: currentId.value },
      "产品规格型号.xlsx"
    );
  };
  const debounce = (fn, delay = 300) => {
    let timer;
    return (...args) => {