zouyu
2026-01-16 b2ee80ea7ca9c86180a0afee220303e3e0616e60
src/views/productionManagement/productionCosting/index.vue
@@ -1,182 +1,165 @@
<template>
   <div class="app-container">
      <div class="search_form">
         <div>
            <span class="search_title">生产日期:</span>
            <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
                                    placeholder="请选择" clearable @change="changeDaterange" />
            <span class="search_title ml10">生产人:</span>
            <el-input
               v-model="searchForm.customerName"
               style="width: 240px"
               placeholder="请输入"
               @change="handleQuery"
               clearable
               prefix-icon="Search"
            />
            <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
            >搜索</el-button
            >
         </div>
         <div>
            <el-button @click="handleOut">导出</el-button>
         </div>
      </div>
      <div class="table_list">
         <PIMTable
            rowKey="id"
            :column="tableColumn"
            :tableData="tableData"
            :page="page"
            :tableLoading="tableLoading"
            @pagination="pagination"
         ></PIMTable>
      </div>
   </div>
  <div class="app-container">
    <div class="search_form">
      <div>
        <span class="search_title">生产日期:</span>
        <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
                        placeholder="请选择" clearable @change="changeDaterange" />
        <span class="search_title ml10">生产人:</span>
        <el-input
            v-model="searchForm.schedulingUserName"
            style="width: 240px"
            placeholder="请输入"
            @change="handleQuery"
            clearable
            prefix-icon="Search"
        />
        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
        >搜索</el-button
        >
      </div>
      <div>
        <el-button @click="handleOut">导出</el-button>
      </div>
    </div>
    <div class="table_list">
      <PIMTable
          rowKey="id"
          :column="tableColumn"
          :tableData="tableData"
          :page="page"
          :tableLoading="tableLoading"
          @pagination="pagination"
      ></PIMTable>
    </div>
  </div>
</template>
<script setup>
import {onMounted, ref} from "vue";
import {
   listCustomer,
  listCustomer,
} from "@/api/basicData/customerFile.js";
import { ElMessageBox } from "element-plus";
import dayjs from "dayjs";
import {productionAccountingListPage} from "@/api/productionManagement/productionCosting.js";
const { proxy } = getCurrentInstance();
const tableColumn = ref([
   {
      label: "生产日期",
      prop: "customerName",
      width: 120,
   },
   {
      label: "生产人",
      prop: "customerName",
      width: 120,
   },
   {
      label: "合同号",
      prop: "taxpayerIdentificationNumber",
      width: 220,
   },
   {
      label: "客户合同号",
      prop: "addressPhone",
      width: 250,
   },
   {
      label: "客户名称",
      prop: "contactPerson",
   },
   {
      label: "项目名称",
      prop: "contactPhone",
      width:150
   },
   {
      label: "产品大类",
      prop: "basicBankAccount",
      width: 220,
   },
   {
      label: "规格型号",
      prop: "bankAccount",
      width: 220,
   },
   {
      label: "单位",
      prop: "bankCode",
      width:220
   },
   {
      label: "工序",
      prop: "maintainer",
   },
   {
      label: "生产数量",
      prop: "maintenanceTime",
      width: 100,
   },
   {
      label: "工时定额",
      prop: "maintenanceTime",
      width: 100,
   },
   {
      label: "工资",
      prop: "maintenanceTime",
      width: 100,
   },
  {
    label: "生产日期",
    prop: "schedulingDate",
    width: 120,
  },
  {
    label: "生产人",
    prop: "schedulingUserName",
    width: 90,
  },
  {
    label: "产品大类",
    prop: "productCategory",
    width: 160,
  },
  {
    label: "规格型号",
    prop: "specificationModel",
    width: 160,
  },
  {
    label: "单位",
    prop: "unit",
  },
  {
    label: "工序",
    prop: "process",
  },
  {
    label: "生产数量",
    prop: "finishedNum",
    width: 100,
  },
  {
    label: "工时定额",
    prop: "workHours",
    width: 100,
  },
  {
    label: "工资",
    prop: "wages",
    width: 100,
  },
]);
const tableData = ref([]);
const tableLoading = ref(false);
const page = reactive({
   current: 1,
   size: 100,
   total: 0,
  current: 1,
  size: 100,
  total: 0,
});
const data = reactive({
   searchForm: {
      customerName: "",
      entryDate: [
         dayjs().format("YYYY-MM-DD"),
         dayjs().add(1, "day").format("YYYY-MM-DD"),
      ], // 录入日期
      entryDateStart: dayjs().format("YYYY-MM-DD"),
      entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"),
   },
  searchForm: {
    schedulingUserName: "",
    entryDate: [
      dayjs().format("YYYY-MM-DD"),
      dayjs().add(1, "day").format("YYYY-MM-DD"),
    ], // 录入日期
    entryDateStart: dayjs().format("YYYY-MM-DD"),
    entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"),
  },
});
const { searchForm } = toRefs(data);
// 查询列表
/** 搜索按钮操作 */
const handleQuery = () => {
   page.current = 1;
   getList();
  page.current = 1;
  getList();
};
const pagination = (obj) => {
   page.current = obj.page;
   page.size = obj.limit;
   getList();
  page.current = obj.page;
  page.size = obj.limit;
  getList();
};
const changeDaterange = (value) => {
   if (value) {
      searchForm.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
      searchForm.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
   } else {
      searchForm.entryDateStart = undefined;
      searchForm.entryDateEnd = undefined;
   }
   handleQuery();
  if (value) {
    searchForm.value.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
    searchForm.value.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
  } else {
    searchForm.value.entryDateStart = undefined;
    searchForm.value.entryDateEnd = undefined;
  }
  handleQuery();
};
const getList = () => {
   tableLoading.value = true;
   listCustomer({ ...searchForm.value, ...page }).then((res) => {
      tableLoading.value = false;
      tableData.value = res.records;
      page.total = res.total;
   });
  tableLoading.value = true;
  const params = { ...searchForm.value, ...page };
  params.entryDate = undefined
  productionAccountingListPage(params).then((res) => {
    tableLoading.value = false;
    tableData.value = res.data.records;
    page.total = res.data.total;
  });
};
// 导出
const handleOut = () => {
   ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
   })
      .then(() => {
         proxy.download("/basic/customer/export", {}, "生产核算.xlsx");
      })
      .catch(() => {
         proxy.$modal.msg("已取消");
      });
  ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
      .then(() => {
        proxy.download("/basic/customer/export", {}, "生产核算.xlsx");
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
};
onMounted(() => {
   getList();
  getList();
});
</script>