chenhj
4 天以前 e61eb3be4fc933c67cbe3a1a9d08d41ac2d26a1b
src/views/productionManagement/productionOrder/index.vue
@@ -1,24 +1,25 @@
<!-- 生产订单 -->
<template>
  <div class="app-container">
    <div class="search_form">
      <el-form :model="searchForm"
               :inline="true">
        <el-form-item label="客户名称:">
        <!-- <el-form-item label="客户名称:">
          <el-input v-model="searchForm.customerName"
                    placeholder="请输入"
                    clearable
                    prefix-icon="Search"
                    style="width: 160px;"
                    @change="handleQuery" />
        </el-form-item>
        <el-form-item label="合同号:">
        </el-form-item> -->
        <!-- <el-form-item label="合同号:">
          <el-input v-model="searchForm.salesContractNo"
                    placeholder="请输入"
                    clearable
                    prefix-icon="Search"
                    style="width: 160px;"
                    @change="handleQuery" />
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="产品名称:">
          <el-input v-model="searchForm.productCategory"
                    placeholder="请输入"
@@ -41,6 +42,8 @@
        </el-form-item>
      </el-form>
      <div>
        <el-button type="primary" @click="isShowNewModal = true">新增</el-button>
        <el-button type="danger" @click="handleDelete">删除</el-button>
        <el-button @click="handleOut">导出</el-button>
      </div>
    </div>
@@ -51,13 +54,17 @@
                :page="page"
                :tableLoading="tableLoading"
                :row-class-name="tableRowClassName"
                :isSelection="true"
                @selection-change="handleSelectionChange"
                @pagination="pagination">
        <template #completionStatus="{ row }">
          <el-progress
            :percentage="toProgressPercentage(row?.completionStatus)"
            :color="progressColor(toProgressPercentage(row?.completionStatus))"
            :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''"
          />
          <div class="progress-link" @click="goProductionDetail(row)">
            <el-progress
              :percentage="toProgressPercentage(row?.completionStatus)"
              :color="progressColor(toProgressPercentage(row?.completionStatus))"
              :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''"
            />
          </div>
        </template>
      </PIMTable>
    </div>
@@ -86,6 +93,10 @@
        </span>
      </template>
    </el-dialog>
    <new-product-order v-if="isShowNewModal"
                         v-model:visible="isShowNewModal"
                         @completed="handleQuery" />
  </div>
</template>
@@ -98,29 +109,54 @@
    productOrderListPage,
    listProcessRoute,
    bindingRoute,
    listProcessBom,
    listProcessBom, delProductOrder,
  } from "@/api/productionManagement/productionOrder.js";
  import { listMain as getOrderProcessRouteMain } from "@/api/productionManagement/productProcessRoute.js";
  import {fileDel} from "@/api/financialManagement/revenueManagement.js";
  import PIMTable from "@/components/PIMTable/PIMTable.vue";
  const NewProductOrder = defineAsyncComponent(() => import("@/views/productionManagement/productionOrder/New.vue"));
  const { proxy } = getCurrentInstance();
  const { priority_type } = proxy.useDict("priority_type");
  const router = useRouter();
  const isShowNewModal = ref(false);
  const tableColumn = ref([
    {
      label: "优先级",
      prop: "priority",
      width: '100px',
      dataType: "tag",
      formatData: val => proxy.selectDictLabel(priority_type.value, val),
      formatType: val => {
        const v = Number(val);
        if (v === 0) return "danger";   // 红色
        if (v === 1) return "warning";  // 黄色
        if (v === 2) return "success";  // 绿色
        return "";
      },
    },
    {
      label: "生产批号",
      prop: "lotNo",
      width: '120px',
    },
    {
      label: "生产订单号",
      prop: "npsNo",
      width: '120px',
    },
    {
      label: "销售合同号",
      prop: "salesContractNo",
      width: '150px',
    },
    {
      label: "客户名称",
      prop: "customerName",
      width: '200px',
    },
    // {
    //   label: "销售合同号",
    //   prop: "salesContractNo",
    //   width: '150px',
    // },
    // {
    //   label: "客户名称",
    //   prop: "customerName",
    //   width: '200px',
    // },
    {
      label: "产品名称",
      prop: "productCategory",
@@ -179,6 +215,7 @@
        {
          name: "工艺路线",
          type: "text",
          showHide: row => row.processRouteCode,
          clickFun: row => {
            showRouteItemModal(row);
          },
@@ -208,6 +245,7 @@
    size: 100,
    total: 0,
  });
  const selectedRows = ref([]);
  const data = reactive({
    searchForm: {
@@ -239,13 +277,18 @@
  // 添加表行类名方法
  const tableRowClassName = ({ row }) => {
    switch (row.deliveryDaysDiff) {
      case 15:
        return 'yellow'
      case 10:
        return 'red'
      case 2:
        return 'purple'
    if (!row.deliveryDate) return '';
    if (row.isFh) return '';
    const diff = row.deliveryDaysDiff;
    if (diff === 15) {
      return 'yellow';
    } else if (diff === 10) {
      return 'pink';
    } else if (diff === 2) {
      return 'purple';
    } else if (diff < 2) {
      return 'red';
    }
  };
@@ -382,6 +425,47 @@
    });
  };
  const goProductionDetail = (row) => {
    if (!row) return;
    router.push({
      path: "/productionManagement/productionOrder/detail",
      query: {
        orderId: row.id,
        npsNo: row.npsNo || "",
        lotNo: row.lotNo || "",
        productCategory: row.productCategory || "",
        specificationModel: row.specificationModel || "",
      },
    });
  };
  // 表格选择数据
  const handleSelectionChange = (selection) => {
    selectedRows.value = selection;
  };
  const handleDelete = () => {
    let ids = [];
    if (selectedRows.value.length > 0) {
      ids = selectedRows.value.map((item) => item.id);
    } else {
      proxy.$modal.msgWarning("请选择数据");
      return;
    }
    ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "导出", {
      confirmButtonText: "确认",
      cancelButtonText: "取消",
      type: "warning",
    }).then(() => {
      delProductOrder(ids).then((res) => {
        proxy.$modal.msgSuccess("删除成功");
        getList();
      });
    }).catch(() => {
      proxy.$modal.msg("已取消");
    });
  };
  // 导出
  const handleOut = () => {
    ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", {
@@ -410,14 +494,22 @@
}
::v-deep .yellow {
  background-color: #e8b183;
  background-color: #FAF0DE;
}
::v-deep .pink {
  background-color: #FAE1DE;
}
::v-deep .red {
  background-color: #e35050;
  background-color: #f80202;
}
::v-deep .purple{
  background-color: #c484dd;
  background-color: #F4DEFA;
}
.progress-link {
  cursor: pointer;
}
</style>