广丰卷烟厂数采质量分析系统
zhuguifei
7 天以前 6990c6f4934e6062b07f1fa9471c2b98d4077729
ruoyi-plus-soybean/src/views/analy/output-analy/index.vue
@@ -76,123 +76,124 @@
const { columns, columnChecks, data, getData, loading, scrollX } = useNaiveTable({
  api: () => fetchGetRollerSampleDataList(searchParams.value),
  transform: (response: any) => response.data || [],
  columns: () => ([
    {
      key: 'index',
      title: '序号',
      align: 'center',
      width: 64,
      render: (_: Api.Qa.RollerData, index: number) => index + 1
    },
    {
      key: 'time',
      title: '时间',
      align: 'center',
      minWidth: 160
    },
    {
      key: 'equNo',
      title: '设备',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => equNoMap[row.equNo] || row.equNo
    },
    {
      key: 'shift',
      title: '班次',
      align: 'center',
      minWidth: 80,
      render: (row: Api.Qa.RollerData) => <NTag type="info">{shiftMap[row.shift] || row.shift}</NTag>
    },
    {
      key: 'qty',
      title: '卷接机产量(千支)',
      align: 'center',
      minWidth: 100,
      render: (row: Api.Qa.RollerData) => Number(row.qty ?? 0).toFixed(1)
    },
    {
      key: 'qtyBox',
      title: '卷接机产量(箱)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        const v = Number(row.qty ?? 0) / 50;
        return v.toFixed(1);
  columns: () =>
    [
      {
        key: 'index',
        title: '序号',
        align: 'center',
        width: 64,
        render: (_: Api.Qa.RollerData, index: number) => index + 1
      },
      {
        key: 'time',
        title: '时间',
        align: 'center',
        minWidth: 160
      },
      {
        key: 'equNo',
        title: '设备',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => equNoMap[row.equNo] || row.equNo
      },
      {
        key: 'shift',
        title: '班次',
        align: 'center',
        minWidth: 80,
        render: (row: Api.Qa.RollerData) => <NTag type="info">{shiftMap[row.shift] || row.shift}</NTag>
      },
      {
        key: 'qty',
        title: '卷接机产量(千支)',
        align: 'center',
        minWidth: 100,
        render: (row: Api.Qa.RollerData) => Number(row.qty ?? 0).toFixed(1)
      },
      {
        key: 'qtyBox',
        title: '卷接机产量(箱)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          const v = Number(row.qty ?? 0) / 50;
          return v.toFixed(1);
        }
      },
      {
        key: 'tsQtyTiao',
        title: '提升机产量(条)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          if (row.tsQty === null || row.tsQty === undefined) return '-';
          return Number(row.tsQty).toFixed(1);
        }
      },
      {
        key: 'tsQtyBox',
        title: '提升机产量(箱)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          if (row.tsQty === null || row.tsQty === undefined) return '-';
          const v = Number(row.tsQty) / 250;
          return v.toFixed(1);
        }
      },
      {
        key: 'packerQty',
        title: '包装机产量(小包)',
        align: 'center',
        minWidth: 140,
        render: (row: Api.Qa.RollerData) => {
          if (row.packerQty === null || row.packerQty === undefined) return '-';
          return Number(row.packerQty).toFixed(1);
        }
      },
      {
        key: 'packerQtyBox',
        title: '包装机产量(箱)',
        align: 'center',
        minWidth: 120,
        render: (row: Api.Qa.RollerData) => {
          if (row.packerQty === null || row.packerQty === undefined) return '-';
          const v = Number(row.packerQty) / 10 / 250;
          return v.toFixed(1);
        }
      },
      {
        key: 'lvbangVal',
        title: '滤棒消耗(支)',
        align: 'center',
        minWidth: 140,
        render: (row: Api.Qa.RollerData) => Number(row.lvbangVal ?? 0).toFixed(1)
      },
      {
        key: 'lvbangWan',
        title: '滤棒消耗(万支)',
        align: 'center',
        minWidth: 140,
        render: (row: Api.Qa.RollerData) => {
          const v = Number(row.lvbangVal ?? 0) / 10000;
          return v.toFixed(1);
        }
      },
      {
        key: 'danhao',
        title: '滤棒单耗(万支/箱)',
        align: 'center',
        minWidth: 180,
        render: (row: Api.Qa.RollerData) => {
          const qtyBox = Number(row.qty ?? 0) / 50;
          if (!qtyBox) return '-';
          const v = Number(row.lvbangVal ?? 0) / 10000 / qtyBox;
          return v.toFixed(1);
        }
      }
    },
    {
      key: 'tsQtyTiao',
      title: '提升机产量(条)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        if (row.tsQty === null || row.tsQty === undefined) return '-';
        return Number(row.tsQty).toFixed(1);
      }
    },
    {
      key: 'tsQtyBox',
      title: '提升机产量(箱)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        if (row.tsQty === null || row.tsQty === undefined) return '-';
        const v = Number(row.tsQty) / 250;
        return v.toFixed(1);
      }
    },
    {
      key: 'packerQty',
      title: '包装机产量(小包)',
      align: 'center',
      minWidth: 140,
      render: (row: Api.Qa.RollerData) => {
        if (row.packerQty === null || row.packerQty === undefined) return '-';
        return Number(row.packerQty).toFixed(1);
      }
    },
    {
      key: 'packerQtyBox',
      title: '包装机产量(箱)',
      align: 'center',
      minWidth: 120,
      render: (row: Api.Qa.RollerData) => {
        if (row.packerQty === null || row.packerQty === undefined) return '-';
        const v = Number(row.packerQty) / 10 / 250;
        return v.toFixed(1);
      }
    },
    {
      key: 'lvbangVal',
      title: '滤棒消耗(支)',
      align: 'center',
      minWidth: 140,
      render: (row: Api.Qa.RollerData) => Number(row.lvbangVal ?? 0).toFixed(1)
    },
    {
      key: 'lvbangWan',
      title: '滤棒消耗(万支)',
      align: 'center',
      minWidth: 140,
      render: (row: Api.Qa.RollerData) => {
        const v = Number(row.lvbangVal ?? 0) / 10000;
        return v.toFixed(1);
      }
    },
    {
      key: 'danhao',
      title: '滤棒单耗(万支/箱)',
      align: 'center',
      minWidth: 180,
      render: (row: Api.Qa.RollerData) => {
        const qtyBox = Number(row.qty ?? 0) / 50;
        if (!qtyBox) return '-';
        const v = (Number(row.lvbangVal ?? 0) / 10000) / qtyBox;
        return v.toFixed(1);
      }
    }
  ] as any)
    ] as any
});
async function handleExport() {
@@ -202,18 +203,15 @@
<template>
  <div class="h-full min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
    <RollerDataSearch
      v-model:model="searchParams"
      @search="getData"
    />
    <RollerDataSearch v-model:model="searchParams" @search="getData" />
    <NCard
            v-if="!showTable"
            title="卷接机分析趋势图"
            :bordered="false"
            size="small"
            class="sm:flex-1-hidden card-wrapper flex flex-col"
            content-style="flex: 1; min-height: 0; overflow: hidden;"
          >
      v-if="!showTable"
      title="卷接机分析趋势图"
      :bordered="false"
      size="small"
      class="flex flex-col card-wrapper sm:flex-1-hidden"
      content-style="flex: 1; min-height: 0; overflow: hidden;"
    >
      <template #header-extra>
        <NButton size="small" @click="showTable = true">
          <template #icon>
@@ -224,13 +222,7 @@
      </template>
      <RollerDataLineChart :data="(data as any)" class="h-full" />
    </NCard>
    <NCard
      v-else
      title="数据详情"
      :bordered="false"
      size="small"
      class="sm:flex-1-hidden card-wrapper"
    >
    <NCard v-else title="数据详情" :bordered="false" size="small" class="card-wrapper sm:flex-1-hidden">
      <template #header-extra>
        <TableHeaderOperation
          v-model:columns="columnChecks"