zhangwencui
2026-05-29 7de7862e8feaaefdf5e9492867db12013a88e9fc
src/views/inventoryManagement/receiptManagement/Record.vue
@@ -9,26 +9,26 @@
                        value-format="YYYY-MM-DD"
                        format="YYYY-MM-DD"
                        clearable
                        @change="handleQuery"/>
                        @change="handleQuery" />
        <span class="search_title ml10">产品大类:</span>
        <el-input v-model="searchForm.productName"
                  style="width: 240px"
                  placeholder="请输入"
                  clearable/>
                  clearable />
        <span class="search_title ml10">合同号:</span>
        <el-input v-model="searchForm.salesContractNo"
                  style="width: 240px"
                  placeholder="请输入合同号"
                  clearable/>
                  clearable />
        <span class="search_title ml10">来源:</span>
        <el-select v-model="searchForm.recordType"
                  style="width: 240px"
                  placeholder="请选择"
                  clearable>
                   style="width: 240px"
                   placeholder="请选择"
                   clearable>
          <el-option v-for="item in stockRecordTypeOptions"
                     :key="item.value"
                     :label="item.label"
                     :value="item.value"/>
                     :value="item.value" />
        </el-select>
        <el-button type="primary"
                   @click="handleQuery"
@@ -54,40 +54,40 @@
                height="calc(100vh - 18.5em)">
        <el-table-column align="center"
                         type="selection"
                         width="55"/>
                         width="55" />
        <el-table-column align="center"
                         label="序号"
                         type="index"
                         width="60"/>
                         width="60" />
        <el-table-column label="入库批次"
                         prop="inboundBatches"
                         width="280"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="合同号"
                         prop="salesContractNo"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="入库时间"
                         prop="createTime"
                         :formatter="formatTableDateYmd"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="产品大类"
                         prop="productName"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="规格型号"
                         prop="model"
                         show-overflow-tooltip/>
       <el-table-column label="厚度(mm)"
                        prop="thickness"
                        show-overflow-tooltip />
                         show-overflow-tooltip />
        <el-table-column label="厚度(mm)"
                         prop="thickness"
                         show-overflow-tooltip />
        <el-table-column label="单位"
                         prop="unit"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="入库数量"
                         prop="stockInNum"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="入库人"
                         prop="createBy"
                         show-overflow-tooltip/>
                         show-overflow-tooltip />
        <el-table-column label="来源"
                         prop="recordType"
                         show-overflow-tooltip>
@@ -101,170 +101,171 @@
                  layout="total, sizes, prev, pager, next, jumper"
                  :page="page.current"
                  :limit="page.size"
                  @pagination="pageProductChange"/>
                  @pagination="pageProductChange" />
    </div>
  </div>
</template>
<script setup>
import pagination from "@/components/PIMTable/Pagination.vue";
import {
  ref,
  reactive,
  toRefs,
  onMounted,
  getCurrentInstance,
} from "vue";
import {ElMessageBox} from "element-plus";
import {
  getStockInRecordListPage,
  batchDeleteStockInRecords,
} from "@/api/inventoryManagement/stockInRecord.js";
import {
  findAllQualifiedStockInRecordTypeOptions, findAllUnQualifiedStockInRecordTypeOptions,
} from "@/api/basicData/enum.js";
import {parseTime} from "@/utils/ruoyi";
  import pagination from "@/components/PIMTable/Pagination.vue";
  import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
  import { ElMessageBox } from "element-plus";
  import {
    getStockInRecordListPage,
    batchDeleteStockInRecords,
  } from "@/api/inventoryManagement/stockInRecord.js";
  import {
    findAllQualifiedStockInRecordTypeOptions,
    findAllUnQualifiedStockInRecordTypeOptions,
  } from "@/api/basicData/enum.js";
  import { parseTime } from "@/utils/ruoyi";
const {proxy} = getCurrentInstance();
  const { proxy } = getCurrentInstance();
const formatTableDateYmd = (row, column, cellValue) => {
  if (cellValue == null || cellValue === "") {
    return "";
  }
  return parseTime(cellValue, "{y}-{m}-{d}") || "";
};
  const formatTableDateYmd = (row, column, cellValue) => {
    if (cellValue == null || cellValue === "") {
      return "";
    }
    return parseTime(cellValue, "{y}-{m}-{d}") || "";
  };
const props = defineProps({
  type: {
    type: String,
    required: true,
    default: '0'
  }
})
  const props = defineProps({
    type: {
      type: String,
      required: true,
      default: "0",
    },
  });
const tableData = ref([]);
const selectedRows = ref([]);
const tableLoading = ref(false);
// 来源类型选项
const stockRecordTypeOptions = ref([]);
const page = reactive({
  current: 1,
  size: 10,
});
const total = ref(0);
  const tableData = ref([]);
  const selectedRows = ref([]);
  const tableLoading = ref(false);
  // 来源类型选项
  const stockRecordTypeOptions = ref([]);
  const page = reactive({
    current: 1,
    size: 10,
  });
  const total = ref(0);
const data = reactive({
  searchForm: {
    productName: "",
    salesContractNo: "",
    timeStr: "",
    recordType: "",
  },
});
const {searchForm} = toRefs(data);
// 查询列表
/** 搜索按钮操作 */
const handleQuery = () => {
  page.current = 1;
  getList();
};
  const data = reactive({
    searchForm: {
      productName: "",
      salesContractNo: "",
      timeStr: "",
      recordType: "",
    },
  });
  const { searchForm } = toRefs(data);
  // 查询列表
  /** 搜索按钮操作 */
  const handleQuery = () => {
    page.current = 1;
    getList();
  };
const getRecordType = (recordType) => {
  return stockRecordTypeOptions.value.find(item => item.value === recordType)?.label || ''
}
  const getRecordType = recordType => {
    return (
      stockRecordTypeOptions.value.find(item => item.value === recordType)
        ?.label || ""
    );
  };
const pageProductChange = obj => {
  page.current = obj.page;
  page.size = obj.limit;
  getList();
};
  const pageProductChange = obj => {
    page.current = obj.page;
    page.size = obj.limit;
    getList();
  };
const getList = () => {
  tableLoading.value = true;
  const params = {...page, type: props.type};
  params.timeStr = searchForm.value.timeStr;
  params.productName = searchForm.value.productName;
  params.salesContractNo = searchForm.value.salesContractNo;
  params.recordType = searchForm.value.recordType;
  getStockInRecordListPage(params)
  const getList = () => {
    tableLoading.value = true;
    const params = { ...page, type: props.type };
    params.timeStr = searchForm.value.timeStr;
    params.productName = searchForm.value.productName;
    params.salesContractNo = searchForm.value.salesContractNo;
    params.recordType = searchForm.value.recordType;
    getStockInRecordListPage(params)
      .then(res => {
        tableData.value = res.data.records;
        total.value = res.data.total || 0;
      }).finally(() => {
    tableLoading.value = false;
  })
};
// 获取来源类型选项
const fetchStockRecordTypeOptions = () => {
  if (props.type === '0') {
    findAllQualifiedStockInRecordTypeOptions()
        .then(res => {
          stockRecordTypeOptions.value = res.data;
        })
    return
  }
  findAllUnQualifiedStockInRecordTypeOptions()
      .then(res => {
        stockRecordTypeOptions.value = res.data;
      })
}
      .finally(() => {
        tableLoading.value = false;
      });
  };
// 表格选择数据
const handleSelectionChange = selection => {
  selectedRows.value = selection.filter(item => item.id);
};
  // 获取来源类型选项
  const fetchStockRecordTypeOptions = () => {
    if (props.type === "0") {
      findAllQualifiedStockInRecordTypeOptions().then(res => {
        stockRecordTypeOptions.value = res.data;
      });
      return;
    }
    findAllUnQualifiedStockInRecordTypeOptions().then(res => {
      stockRecordTypeOptions.value = res.data;
    });
  };
const expandedRowKeys = ref([]);
  // 表格选择数据
  const handleSelectionChange = selection => {
    selectedRows.value = selection.filter(item => item.id);
  };
// 导出
const handleOut = () => {
  ElMessageBox.confirm("是否确认导出?", "导出", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
  const expandedRowKeys = ref([]);
  // 导出
  const handleOut = () => {
    ElMessageBox.confirm("是否确认导出?", "导出", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
    })
      .then(() => {
        // 根据不同的 tab 类型调用不同的导出接口
        proxy.download("/stockInRecord/exportStockInRecord", {type: props.type}, props.type === '0' ? "合格入库.xlsx" : "不合格入库.xlsx");
        proxy.download(
          "/stockInRecord/exportStockInRecord",
          { type: props.type },
          props.type === "0" ? "合格入库.xlsx" : "不合格入库.xlsx"
        );
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
};
  };
// 删除
const handleDelete = () => {
  if (selectedRows.value.length === 0) {
    proxy.$modal.msgWarning("请选择数据");
    return;
  }
  const ids = selectedRows.value.map(item => item.id);
  // 删除
  const handleDelete = () => {
    if (selectedRows.value.length === 0) {
      proxy.$modal.msgWarning("请选择数据");
      return;
    }
    const ids = selectedRows.value.map(item => item.id);
  ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "删除", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
    ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "删除", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
    })
      .then(() => {
        batchDeleteStockInRecords(ids)
            .then(() => {
              proxy.$modal.msgSuccess("删除成功");
              getList();
            })
            .catch(() => {
              proxy.$modal.msgError("删除失败");
            });
          .then(() => {
            proxy.$modal.msgSuccess("删除成功");
            getList();
          })
          .catch(() => {
            proxy.$modal.msgError("删除失败");
          });
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
};
  };
onMounted(() => {
  getList();
  fetchStockRecordTypeOptions();
});
  onMounted(() => {
    getList();
    fetchStockRecordTypeOptions();
  });
</script>
<style scoped lang="scss"></style>