huminmin
2026-06-24 6e6d9506aa6b97299b1d5ebd2a40ca7797b6d754
src/views/index.vue
@@ -113,40 +113,42 @@
          <div class="panel-title-row">
            <div class="panel-title">生产订单进度</div>
            <el-radio-group v-model="orderFilter" size="small">
              <el-radio-button label="all">全部({{ orderProgressMeta.total }})</el-radio-button>
              <el-radio-button label="waiting">待开始({{ orderProgressMeta.waitingCount }})</el-radio-button>
              <el-radio-button label="inProgress">进行中({{ orderProgressMeta.inProgressCount }})</el-radio-button>
              <el-radio-button label="completed">已完成({{ orderProgressMeta.completedCount }})</el-radio-button>
              <el-radio-button label="paused">已暂停({{ orderProgressMeta.pausedCount }})</el-radio-button>
              <el-radio-button :value="'all'">全部({{ orderProgressMeta.total }})</el-radio-button>
              <el-radio-button :value="'waiting'">待开始({{ orderProgressMeta.waitingCount }})</el-radio-button>
              <el-radio-button :value="'inProgress'">进行中({{ orderProgressMeta.inProgressCount }})</el-radio-button>
              <el-radio-button :value="'completed'">已完成({{ orderProgressMeta.completedCount }})</el-radio-button>
              <el-radio-button :value="'paused'">已暂停({{ orderProgressMeta.pausedCount }})</el-radio-button>
            </el-radio-group>
          </div>
          <el-table :data="filteredOrders" stripe>
            <el-table-column prop="orderNo" label="订单编号" min-width="150" />
            <el-table-column prop="productName" label="产品名称" min-width="120" />
            <el-table-column prop="planQty" label="计划数量" min-width="90" />
            <el-table-column prop="completedQty" label="已完成" min-width="90" />
            <el-table-column label="完成率" min-width="180">
              <template #default="{ row }">
                <div class="table-progress">
                  <el-progress
                      :stroke-width="8"
                      :percentage="row.completionRate"
                      :show-text="false"
                      status="success"
                  />
                  <span>{{ row.completionRate }}%</span>
                </div>
              </template>
            </el-table-column>
            <el-table-column prop="deliveryDate" label="交期" min-width="110" />
            <el-table-column label="状态" min-width="90">
              <template #default="{ row }">
                <el-tag :type="getOrderStatusType(row.status)" effect="light">
                  {{ row.statusLabel || getOrderStatusText(row.status) }}
                </el-tag>
              </template>
            </el-table-column>
          </el-table>
          <div class="order-table-wrap">
            <el-table :data="filteredOrders" stripe max-height="440">
              <el-table-column prop="orderNo" label="订单编号" min-width="150" />
              <el-table-column prop="productName" label="产品名称" min-width="120" />
              <el-table-column prop="planQty" label="计划数量" min-width="90" />
              <el-table-column prop="completedQty" label="已完成" min-width="90" />
              <el-table-column label="完成率" min-width="180">
                <template #default="{ row }">
                  <div class="table-progress">
                    <el-progress
                        :stroke-width="8"
                        :percentage="row.completionRate"
                        :show-text="false"
                        status="success"
                    />
                    <span>{{ row.completionRate }}%</span>
                  </div>
                </template>
              </el-table-column>
              <el-table-column prop="deliveryDate" label="交期" min-width="110" />
              <el-table-column label="状态" min-width="90">
                <template #default="{ row }">
                  <el-tag :type="getOrderStatusType(row.status)" effect="light">
                    {{ row.statusLabel || getOrderStatusText(row.status) }}
                  </el-tag>
                </template>
              </el-table-column>
            </el-table>
          </div>
        </div>
        <div v-if="visiblePanels.contract" class="cockpit-panel contract-panel">
@@ -320,7 +322,7 @@
      <div class="process-selection-wrapper">
        <el-checkbox-group v-model="tempProcessIds">
          <div class="process-grid">
            <el-checkbox v-for="item in processOptions" :key="item.id" :label="item.id" border>
            <el-checkbox v-for="item in processOptions" :key="item.id" :value="item.id" border>
              {{ item.name }}
            </el-checkbox>
          </div>
@@ -1232,8 +1234,8 @@
    const res = await productionOrderProgress({
      status: orderFilter.value,
      tab: orderFilter.value,
      pageNum: 1,
      pageSize: 10,
      pageNum: -1,
      pageSize: -1,
    });
    const data = res?.data || {};
    const statusValue = normalizeOrderFilter(data.status, orderFilter.value);
@@ -1307,9 +1309,12 @@
const statisticsReceivable = async () => {
  const res = await statisticsReceivablePayable({ type: 1 });
  const data = res?.data || {};
  const payableMoney = Number(data.payableMoney ?? 0);
  const receivableMoney = Number(data.receivableMoney ?? 0);
  barSeries.value[0].data = [
    { value: res.data.payableMoney, itemStyle: { color: barColors2[0] } },
    { value: res.data.receivableMoney, itemStyle: { color: barColors2[1] } },
    { value: payableMoney, itemStyle: { color: barColors2[0] } },
    { value: receivableMoney, itemStyle: { color: barColors2[1] } },
  ];
};
@@ -1319,15 +1324,16 @@
  barSeries1.value[0].data = [];
  barSeries1.value[1].data = [];
  barSeries1.value[2].data = [];
  (res.data.item || []).forEach((item) => {
  const data = res.data || {};
  (data.item || []).forEach((item) => {
    xAxis1.value[0].data.push(item.date);
    barSeries1.value[0].data.push(item.supplierNum);
    barSeries1.value[1].data.push(item.processNum);
    barSeries1.value[2].data.push(item.factoryNum);
  });
  qualityStatisticsObject.value.supplierNum = res.data.supplierNum;
  qualityStatisticsObject.value.processNum = res.data.processNum;
  qualityStatisticsObject.value.factoryNum = res.data.factoryNum;
  qualityStatisticsObject.value.supplierNum = data.supplierNum || 0;
  qualityStatisticsObject.value.processNum = data.processNum || 0;
  qualityStatisticsObject.value.factoryNum = data.factoryNum || 0;
};
const getAmountHalfYearNum = async () => {
@@ -2190,6 +2196,13 @@
.order-panel {
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.order-table-wrap {
  flex: 1;
  min-height: 0;
}
.quick-panel {