소스 검색

采购需求-处理增加【确认日期】,确认日期、审批结束日期、需求日期,需要可选日期范围

002390 1 년 전
부모
커밋
4d3384cfd0

+ 13 - 5
src/components/popover-tree-select/multiple.vue

@@ -37,6 +37,15 @@ export default {
       type: Object,
       default: () => ({}),
     },
+    defaultProps: {
+      type: Object,
+      default: () => {
+        return {
+          label: "name",
+          children: "children",
+        };
+      },
+    },
   },
   components: {},
   data() {
@@ -52,10 +61,10 @@ export default {
       data: [],
       selectData: [],
       lastSelectData: [],
-      defaultProps: {
-        label: "name",
-        children: "children",
-      },
+      // defaultProps: {
+      //   label: "name",
+      //   children: "children",
+      // },
     };
   },
   computed: {
@@ -206,7 +215,6 @@ export default {
         <el-button :size="$attrs.size" :loading="loading" @click="hide"
           >取 消</el-button
         >
-        
       </div>
       <el-form
         v-loading="loading"

+ 249 - 0
src/views/purchase/DemandSummary/columns.js

@@ -0,0 +1,249 @@
+export default function useColumns() {
+  const SearchColumns = [
+    {
+      item: {
+        key: "rowStatus",
+        title: "行状态",
+      },
+      attr: {
+        is: "el-select",
+        dictName: "sys_row_status",
+        multiple: true,
+        clearable: true,
+      },
+    },
+    {
+      item: {
+        key: "buyerName",
+        title: "采购员",
+      },
+      attr: {
+        clearable: true,
+        is: "el-popover-select-v2",
+        referName: "CONTACTS_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          buyer: "code",
+          buyerName: "name",
+        },
+      },
+    },
+    {
+      item: {
+        key: "materialClassifyFour",
+        title: "品类",
+      },
+      attr: {
+        clearable: true,
+        is: "el-popover-multiple-tree-select",
+        referName: "MATERIALCLASSIFY_PARAM",
+        defaultProps: {
+          label: function (data, node) {
+            return data.code + " " + data.name;
+          },
+          children: "children",
+        },
+        // dataMapping: {
+        //   materialClassifyFour: 'id',
+        // }
+      },
+    },
+    {
+      item: {
+        width: 100,
+        key: "manufacturer",
+        title: "生产厂家"
+      },
+      attr: {
+        is: "el-input",
+        clearable: true,
+      },
+    },
+    {
+      item: {
+        key: "forecastClassification",
+        title: "预测分类"
+      },
+      attr: {
+        is: "el-select",
+        dictName: "predictive_classify",
+        clearable: true,
+      },
+    },
+    {
+      item: { key: "puManagerAuditorName", title: "审核人" },
+      attr: {
+        is: "el-popover-select-v2",
+        referName: "CONTACTS_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          puManagerAuditor: "code",
+          puManagerAuditorName: "name"
+        },
+      },
+    },
+    {
+      item: {
+        width: 100,
+        key: "registrant",
+        title: "注册人"
+      },
+      attr: {
+        is: "el-input",
+        clearable: true,
+      },
+    },
+    {
+      item: { key: "businessType", title: "业务类型" },
+      attr: {
+        is: "el-select",
+        dictName: "sys_business",
+        clearable: true,
+      },
+    },
+    {
+      item: { key: "billSource", title: "单据来源" },
+      attr: {
+        is: "el-select",
+        dictName: "sys_bill_source",
+        clearable: true,
+      },
+    },
+    {
+      item: { key: "customerName", title: "需求客户" },
+      attr: {
+        is: "el-popover-select-v2",
+        referName: "CUSTOMER_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          customer: "id",
+          customerName: "name"
+        },
+      },
+    },
+    {
+      item: { key: "lastWarehouseName", title: "供应仓库" },
+      attr: {
+        is: "el-popover-select-v2",
+        referName: "WAREHOUSE_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          lastWarehouse: "id",
+          lastWarehouseName: "name"
+        },
+      },
+    },
+    {
+      item: { key: "lastAllocationName", title: "供应库位" },
+      attr: {
+        is: "el-popover-select-v2",
+        referName: "ALLOCATION_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          lastAllocation: "id",
+          lastAllocationName: "name"
+        },
+      },
+    },
+    {
+      item: { key: "materialCodeList", title: "物料编码" },
+      attr: {
+        clearable: true,
+        is: "el-popover-multiple-select-v2",
+        valueKey: "code",
+        referName: "MATERIAL_PARAM",
+      },
+    },
+    {
+      item: { key: "purchaseOrgName", title: "默认采购组织" },
+      attr: {
+        is: "el-popover-select-v2",
+        referName: "ORG_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          purchaseOrg: "id",
+          purchaseOrgName: "name"
+        },
+      },
+    },
+    {
+      item: { key: "demandDateArray", title: "需求日期" },
+      attr: {
+        is: "el-date-picker",
+        type: "daterange",
+        valueFormat: "yyyy-MM-dd",
+        rangeSeparator: "至",
+        startPlaceholder: "开始日期",
+        endPlaceholder: "结束日期",
+
+      },
+    },
+    {
+      item: { key: "code", title: "采购需求单号" },
+      attr: {
+        is: "el-input",
+        clearable: true,
+      },
+    },
+    {
+      item: { key: "approverFinishTimeArray", title: "审批结束日期" },
+      attr: {
+        is: "el-date-picker",
+        type: "daterange",
+        valueFormat: "yyyy-MM-dd",
+        rangeSeparator: "至",
+        startPlaceholder: "开始日期",
+        endPlaceholder: "结束日期",
+
+      },
+    },
+    {
+      item: {
+        key: "isCustomerSpecified",
+        title: "是否客户指定",
+      },
+      attr: {
+        is: "el-select",
+        dictName: "sys_yes_no",
+        clearable: true,
+      },
+    },
+    {
+      item: {
+        key: "isUrgency",
+        title: "是否紧急需求",
+      },
+      attr: {
+        is: "el-select",
+        dictName: "sys_yes_no",
+        clearable: true,
+      },
+    },
+    {
+      item: { key: "additionalSupplierName", title: "补单供应商" },
+      attr: {
+        is: "el-popover-select-v2",
+        referName: "SUPPLIER_PARAM",
+        valueKey: "name",
+        dataMapping: {
+          additionalSupplier: "id",
+          additionalSupplierName: "name"
+        },
+      },
+    },
+    {
+      item: { key: "processTimeArray", title: "确认日期" },
+      attr: {
+        is: "el-date-picker",
+        type: "daterange",
+        valueFormat: "yyyy-MM-dd",
+        rangeSeparator: "至",
+        startPlaceholder: "开始日期",
+        endPlaceholder: "结束日期",
+
+      },
+    },
+  ]
+
+  return { SearchColumns }
+}

+ 14 - 0
src/views/purchase/DemandSummary/dicts.js

@@ -0,0 +1,14 @@
+import { initDicts } from "@/utils/init.js";
+const modules = require.context("./", true, /columns.js$/);
+const columns = [];
+modules.keys().forEach((fileName) => {
+  const data = modules(fileName).default();
+  for (const key in data) {
+    if (key === "TabColumns") {
+      columns.push(...data[key].map((item) => item.TableColumns).flat());
+    } else {
+      columns.push(...data[key]);
+    }
+  }
+});
+export const dicts = initDicts(columns);

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 952 - 278
src/views/purchase/DemandSummary/index.vue


+ 1259 - 0
src/views/purchase/DemandSummary/index_reset.vue

@@ -0,0 +1,1259 @@
+<template>
+  <div id="demandSummary">
+    <div v-if="isList">
+      <el-card style="position: relative">
+        <el-super-search
+          v-model="params"
+          :size="size"
+          :dict="dict"
+          :columns="SearchColumns"
+          @reset="useReset"
+          @submit="getList"
+        ></el-super-search>
+
+        <div class="btn_grooup">
+          <el-button type="primary" size="mini" @click="editList"
+            >编辑</el-button
+          >
+          <el-button
+            type="danger"
+            size="mini"
+            v-if="!lineDisable"
+            @click="cancelEdit"
+            >取消编辑</el-button
+          >
+          <el-button
+            type="success"
+            size="mini"
+            v-if="!lineDisable"
+            @click="saveList"
+            >保存</el-button
+          >
+          <el-button
+            type="primary"
+            size="mini"
+            v-if="lineDisable"
+            @click="confirms"
+            >确认</el-button
+          >
+          <el-button
+            type="primary"
+            size="mini"
+            v-if="lineDisable"
+            @click="cancels"
+            >取消</el-button
+          >
+          <!-- <el-button type="primary" size="mini" v-if="lineDisable" @click="cancelAudit">取消审批</el-button> -->
+          <el-button
+            type="primary"
+            size="mini"
+            v-if="lineDisable"
+            @click="audits"
+            >审核</el-button
+          >
+          <el-button
+            type="primary"
+            size="mini"
+            v-if="lineDisable"
+            @click="closeLine"
+            >行关闭</el-button
+          >
+
+          <el-button
+            size="mini"
+            type="primary"
+            style="margin: 0 10px"
+            v-if="lineDisable"
+            @click="handleCommand"
+          >
+            导出
+          </el-button>
+
+          <!-- <el-button type="primary" size="mini">转请购</el-button> -->
+        </div>
+        <vxe-toolbar ref="xToolbar1" custom> </vxe-toolbar>
+
+        <vxe-table
+          id="toolbar_demo5"
+          :custom-config="{ storage: true, checkMethod: checkColumnMethod }"
+          @resizable-change="resizableChangeEvent"
+          v-loading="loading"
+          :data="tableList"
+          :cell-style="{ borderColor: '#c0c0c0' }"
+          :header-cell-style="{ borderColor: '#c0c0c0' }"
+          class="exporttable"
+          border
+          show-summary
+          show-footer
+          :footer-method="getSummaries"
+          highlight-current-row
+          max-height="620"
+          style="font-size: 12px"
+          :cell-class-name="cellClassName"
+          @checkbox-all="selectAllEvent"
+          @checkbox-change="handleSelectionChange"
+          @cell-dblclick="doubleClick"
+          ref="table"
+          :checkbox-config="{ trigger: 'row', highlight: true, range: true }"
+          :column-config="{ resizable: true }"
+          :sort-config="{ multiple: true, trigger: 'cell' }"
+        >
+          <vxe-column type="checkbox" width="50" />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="序号"
+            type="seq"
+            align="center"
+            width="50px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="行状态"
+            align="center"
+            field="status"
+            width="50px"
+            :formatter="hangStatus"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="最终采购量"
+            align="center"
+            field="finalBuyQty"
+            width="80px"
+          >
+            <template slot-scope="scope">
+              <el-input
+                size="mini"
+                :disabled="scope.row.status !== '1' || lineDisable"
+                v-model="scope.row.finalBuyQty"
+                @change="jilu(scope.$rowIndex)"
+              />
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="关闭数量"
+            align="center"
+            field="closeQty"
+            width="50px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="人工调整数"
+            align="center"
+            field="artificialAdjust"
+            width="50px"
+          >
+            <template slot-scope="scope">
+              {{
+                (scope.row.artificialAdjust =
+                  scope.row.finalBuyQty - scope.row.suggestionPurchase)
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="一级品类"
+            align="center"
+            field="materialClassifyOneName"
+            width="80"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="物料编码"
+            align="center"
+            field="materialCode"
+            width="100px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="品名"
+            align="center"
+            field="materialName"
+            width="100px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="规格"
+            align="center"
+            field="specification"
+            width="100px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="单位"
+            align="center"
+            field="unit"
+            width="50"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="生产厂家/代理人"
+            align="center"
+            field="manufacturer"
+            width="100px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="需求单位数"
+            align="center"
+            field="demandNum"
+            width="50px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="总最终净需求量"
+            align="center"
+            field="netDemandNum"
+            width="80px"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.netDemandNum
+                  ? parseFloat(scope.row.netDemandNum).toFixed(2)
+                  : "0.00"
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="近1月月均需求"
+            align="center"
+            field="evensalesforyear"
+            width="50"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.evensalesforyear
+                  ? parseFloat(scope.row.evensalesforyear).toFixed(2)
+                  : "0.00"
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="近3月月均需求"
+            align="center"
+            field="evensalesforthrmonth"
+            width="50"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.evensalesforthrmonth
+                  ? parseFloat(scope.row.evensalesforthrmonth).toFixed(2)
+                  : "0.00"
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="总月销量"
+            align="center"
+            field="totalMonthlySales"
+            width="50"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.totalMonthlySales
+                  ? parseFloat(scope.row.totalMonthlySales).toFixed(2)
+                  : "0.00"
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="需求可用周期"
+            align="center"
+            field="demandCycle"
+            width="50px"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.demandCycle
+                  ? parseFloat(scope.row.demandCycle).toFixed(1)
+                  : "-"
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="呆滞量"
+            align="center"
+            field="dullQut"
+            width="50px"
+          >
+            <template slot-scope="scope">
+              {{ parseFloat(scope.row.dullQut).toFixed(2) }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="采购周期"
+            align="center"
+            field="buyPeriod"
+            width="50px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="中心公共库存"
+            align="center"
+            field="centralPublicStock"
+            width="50"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="中心仓专属货位"
+            align="center"
+            field="centralWarehouse"
+            width="50"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="各项目仓库存"
+            align="center"
+            field="eachWarehouseStock"
+            width="50"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="电商仓库"
+            align="center"
+            field="commerceWarehouse"
+            width="50"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="区域分仓公共库存"
+            align="center"
+            field="regionPublicStock"
+            width="50"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="采购在途"
+            align="center"
+            field="buyTransit"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="借出在途"
+            align="center"
+            field="lendTransit"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="调拨在途"
+            align="center"
+            field="transferTransit"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="库存总计"
+            align="center"
+            field="stockTotal"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="最小包装量"
+            align="center"
+            field="minPackage"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="最小订货量"
+            align="center"
+            field="minOrder"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="最小批量"
+            align="center"
+            field="minBatch"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="修改原因"
+            align="center"
+            field="modifyReason"
+            width="150px"
+          >
+            <template slot-scope="scope">
+              <el-input
+                size="mini"
+                :disabled="
+                  scope.row.status !== '1' ||
+                  lineDisable ||
+                  scope.row.artificialAdjust == '0'
+                "
+                v-model="scope.row.modifyReason"
+                @change="jilu(scope.$rowIndex)"
+              />
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="建议采购量"
+            align="center"
+            field="suggestionPurchase"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="二级品类"
+            align="center"
+            field="materialClassifyTwoName"
+            width="120px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="三级品类"
+            align="center"
+            field="materialClassifyThreeName"
+            width="120px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="四级品类"
+            align="center"
+            field="materialClassifyFourName"
+            width="120px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="采购员"
+            align="center"
+            field="buyerName"
+            width="150px"
+          >
+            <template slot-scope="scope">
+              <el-input
+                readonly
+                :disabled="scope.row.status !== '1' || lineDisable"
+                size="mini"
+                v-model="scope.row.buyerName"
+              >
+                <el-button
+                  size="mini"
+                  :disabled="scope.row.status !== '1' || lineDisable"
+                  slot="append"
+                  icon="el-icon-more"
+                  @click="
+                    chooseSon(
+                      scope.$rowIndex,
+                      'CONTACTS_PARAM',
+                      true,
+                      '明细采购员'
+                    )
+                  "
+                ></el-button>
+              </el-input>
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="默认采购组织"
+            align="center"
+            field="purchaseOrgName"
+            width="150px"
+          >
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="有效期"
+            align="center"
+            field="validityPeriod"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="有效期单位"
+            align="center"
+            field="validityPeriodUnit"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="业务类型"
+            align="center"
+            field="businessType"
+            :formatter="formatterBusinessType"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="安全库存量"
+            align="center"
+            field="safetyStock"
+            width="80px"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.safetyStock
+                  ? parseFloat(scope.row.safetyStock).toFixed(2)
+                  : "0.00"
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="单据来源"
+            align="center"
+            field="billSource"
+            :formatter="formatterSource"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="注册人"
+            align="center"
+            field="registrant"
+            width="120px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="总需与终采差异"
+            align="center"
+            field="buyDiscrepancy"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="集团预测分类"
+            align="center"
+            field="forecastClassification"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="中心仓占有量"
+            align="center"
+            field="centerBinPossession"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="中心仓可用量"
+            align="center"
+            field="centralWarehouseAvailable"
+            width="80px"
+          />
+          <vxe-column
+            show-header-overflow
+            show-overflow
+            sortable
+            title="采购经理审核人"
+            align="center"
+            field="puManagerAuditor"
+            width="120px"
+          />
+          <vxe-column title="操作" align="center" width="50">
+            <template slot-scope="scope">
+              <el-button type="text" size="mini" @click="check(scope.row)"
+                >查看</el-button
+              >
+            </template>
+          </vxe-column>
+        </vxe-table>
+
+        <pagination
+          :total="page.total"
+          :page.sync="page.pageNum"
+          :limit.sync="page.pageSize"
+          @pagination="getList"
+          style="height: 32px; padding: 0 !important; flex: 1; overflow-x: auto"
+        />
+      </el-card>
+    </div>
+
+    <Add
+      v-model="isList"
+      v-if="!isList"
+      :pageStu="pageStatus"
+      :disable="disable"
+      :row="rowDetail"
+      :query="{ ...params, ...page }"
+      @refresh="search"
+    />
+
+    <Refers ref="refer" @doSubmit="selectionsToInput" :single="true" />
+
+    <TreeRefers ref="tree" @doSubmit="selectionsToInput2" :single="true" />
+
+    <popDialog ref="materialRefer" @doSubmit="selectMaterial" :single="false" />
+  </div>
+</template>
+
+<script>
+import Add from "./add";
+import Refers from "@/components/Refers/refers.vue";
+import TreeRefers from "@/components/Refers/treeRefer.vue";
+import popDialog from "@/components/PopDialog/index.vue";
+import CollapseTransition from "@/components/MyCollapse/collapse.vue";
+// 用于物料参照框数据
+import { getRefer } from "@/api/purchase/basic.js";
+import {
+  getSummaryList,
+  auditSummary,
+  cancelAudits,
+  confirmSummary,
+  cancelSummary,
+  shutDownSummary,
+  editSummaryList,
+  exportList,
+  exportItems,
+} from "@/api/purchase/DemandSummary.js";
+import useColumns from "./columns";
+import { dicts } from "./dicts";
+
+export default {
+  name: "demandSummary",
+  dicts: dicts,
+  components: {
+    Add,
+    CollapseTransition,
+    Refers,
+    TreeRefers,
+    popDialog,
+    ElSuperSearch: () => import("@/components/super-search/index.vue"),
+  },
+  data() {
+    const { SearchColumns } = useColumns();
+    const page = this.$init.page();
+    const params = this.$init.params(SearchColumns);
+    return {
+      params: { ...params, rowStatus: ["1"] },
+      page: page,
+      SearchColumns: SearchColumns,
+      size: "mini",
+      loading: true,
+      hangStatus(row) {
+        switch (row.row.status) {
+          case "0":
+            return "需补货";
+          case "1":
+            return "待计划确认";
+          case "2":
+            return "计划已确认";
+          case "3":
+            return "计划已审核";
+          case "4":
+            return "行关闭";
+          case "5":
+            return "总供应可满足";
+        }
+      },
+      formatterBusinessType(row) {
+        switch (row.row.businessType) {
+          case "ZQBH":
+            return "周期备货";
+          case "FXXQ":
+            return "分销需求";
+          case "TSXQ":
+            return "特殊采购需求";
+          case "BDXQ":
+            return "补单需求";
+          case "JJXQ":
+            return "紧急需求单";
+          case "XPXQ":
+            return "新品需求";
+          case "HZBM":
+            return "合作部门需求";
+        }
+      },
+      formatterSource(row) {
+        switch (row.row.billSource) {
+          case "1":
+            return "手工导入";
+          case "2":
+            return "按客户计算";
+          case "3":
+            return "按仓库计算";
+          case "4":
+            return "手工新增";
+        }
+      },
+      expanded: false,
+      // 页面配置
+      isList: true,
+      // 页面状态
+      pageStatus: "",
+
+      personOptions: [],
+      classOptions: [],
+      deptOptions: [],
+      auditOptions: [],
+      customerOptions: [],
+      lastWarehouseOptions: [],
+      lastAllocationOptions: [],
+      orgOptions: [],
+      supplierOptions: [],
+
+      referCondition: {
+        type: "",
+        isPage: true,
+        title: "",
+      },
+      tableList: [],
+      total: 0,
+      rowDetail: {},
+      disable: false,
+      lineDisable: true,
+      ids: [],
+      allSelection: [],
+      // 子表index
+      tableIndex: null,
+      // referConditionMx: {
+      //   type: '',
+      //   isPage: true,
+      //   title: ''
+      // }
+      // 用于保存临时记录修改行的数组
+      record: [],
+    };
+  },
+  created() {
+    this.$nextTick(() => {
+      // 手动将表格和工具栏进行关联
+      this.$refs.table.connect(this.$refs.xToolbar1);
+      this.getList();
+    });
+  },
+  methods: {
+    checkColumnMethod({ column }) {
+      if (column.property === "role") {
+        return false;
+      }
+      return true;
+    },
+    resizableChangeEvent() {
+      const columns = this.$refs.table.getColumns();
+      const customData = columns.map((column) => {
+        return {
+          width: column.renderWidth,
+        };
+      });
+      // console.log(customData)
+    },
+    // 单元格标红
+    cellClassName({ row, column, rowIndex, columnIndex }) {
+      if (column.title == "需求可用周期" && Number(row.demandCycle) > 1.5) {
+        return "success-row";
+      }
+    },
+    // 指定列合计
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums.push("合计");
+          return;
+        }
+        const values = data.map((item) => Number(item[column.property]));
+        if (
+          column.property === "demandNum" ||
+          column.property === "netDemandNum" ||
+          column.property === "artificialAdjust" ||
+          column.property === "suggestBuyQty" ||
+          column.property === "finalBuyQty"
+        ) {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr);
+            if (!isNaN(value)) {
+              return prev + curr;
+            } else {
+              return prev;
+            }
+          }, 0);
+          sums[index];
+        }
+      });
+      return [sums];
+    },
+    // 搜索
+    search() {
+      this.getList();
+    },
+    useReset() {
+      this.page = this.$init.page();
+      this.params = this.$init.params(SearchColumns);
+      this.getList();
+    },
+    getList() {
+      let { params, page } = this;
+      let param = {
+        ...params,
+        ...page,
+        materialClassifyFour: params.materialClassifyFour
+          ? params.materialClassifyFour.map((item) => item.id)
+          : undefined,
+      };
+      console.log(param, "param");
+      getSummaryList(param)
+        .then((res) => {
+          if (res.code === 200) {
+            this.tableList = res.rows;
+            this.page.total = res.total;
+          }
+        })
+        .then(() => {
+          // 合计不显示重绘
+          this.$refs.table.doLayout();
+          this.loading = false;
+        })
+        .catch((err) => {
+          this.loading = false;
+        });
+    },
+    selectAllEvent({ checked }) {
+      const selection = this.$refs.table.getCheckboxRecords();
+      console.log("选中", selection);
+      this.allSelection = selection;
+      this.ids = selection.map((item) => item.demandItemId);
+      console.log("选中数组", this.ids.join());
+    },
+    handleSelectionChange({ checked }) {
+      const selection = this.$refs.table.getCheckboxRecords();
+      console.log("选中", selection);
+      this.allSelection = selection;
+      this.ids = selection.map((item) => item.demandItemId);
+      console.log("选中数组", this.ids.join());
+    },
+    handleCommand() {
+      this.$modal.loading("正在导出数据,请稍后...");
+      let param = this.queryParams;
+      param.pageSize = this.total;
+      exportItems(param).then((res) => {
+        this.$modal.closeLoading();
+        const blob = new Blob([res], {
+          type: "application/vnd.ms-excel;charset=UTF-8",
+        }); // 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+        const downloadElement = document.createElement("a"); //创建a标签
+        const href = window.URL.createObjectURL(blob); // 创建下载的链接
+        // var temp = res.headers["content-disposition"];
+        // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
+        // var name = fileName.split(";")[0]; //切割成文件名
+        downloadElement.href = href; //下载地址
+        downloadElement.download =
+          "采购需求处理导出" + this.parseTime(new Date().getTime()) + ".xlsx"; // 下载后文件名
+        document.body.appendChild(downloadElement);
+        downloadElement.click(); // 点击下载
+        document.body.removeChild(downloadElement); // 下载完成移除元素
+        window.URL.revokeObjectURL(href); // 释放blob对象
+      });
+    },
+    check(row) {
+      this.isList = false;
+      this.pageStatus = "check";
+      this.rowDetail = row;
+      this.disable = true;
+    },
+    doubleClick({ row }) {
+      this.isList = false;
+      this.pageStatus = "check";
+      this.rowDetail = row;
+      this.disable = true;
+    },
+    // 表格选中数据
+    rowSelect(row) {
+      // console.log(row)
+      this.$refs.table.toggleCheckboxRow(row.row);
+    },
+    drop() {
+      this.expanded = !this.expanded;
+    },
+    editList() {
+      console.log("Lists`````", this.tableList);
+      this.lineDisable = false;
+    },
+    cancelEdit() {
+      this.lineDisable = true;
+      this.getList();
+    },
+    saveList() {
+      // console.log('记录',this.record)
+      // 对记录的数据进行去重
+      let newRecord = Array.from(new Set(this.record));
+      // console.log('去重后的', newRecord)
+      let changeList = newRecord.map((i) => {
+        return this.tableList[i];
+      });
+      // console.log('shuzu', changeList)
+      editSummaryList(changeList).then((res) => {
+        if (res.code === 200) {
+          this.$modal.notifySuccess("保存成功");
+          this.lineDisable = true;
+          this.getList();
+        }
+      });
+    },
+    confirms() {
+      if (this.ids.length == 0) {
+        this.$modal.notifyWarning("请选中至少一条数据");
+      } else {
+        confirmSummary(this.allSelection).then((res) => {
+          if (res.code === 200) {
+            this.$modal.notifySuccess("确认成功");
+            this.getList();
+          }
+        });
+      }
+    },
+    cancels() {
+      if (this.ids.length == 0) {
+        this.$modal.notifyWarning("请选中至少一条数据");
+      } else {
+        let param = this.ids.join();
+        cancelSummary(param).then((res) => {
+          if (res.code === 200) {
+            this.$modal.notifySuccess("取消成功");
+            this.getList();
+          }
+        });
+      }
+    },
+    cancelAudit() {
+      if (this.ids.length == 0) {
+        this.$modal.notifyWarning("请选中至少一条数据");
+      } else {
+        let param = this.ids.join();
+        cancelAudits(param).then((res) => {
+          if (res.code === 200) {
+            this.$modal.notifySuccess("审核成功");
+            this.getList();
+          }
+        });
+      }
+    },
+    audits() {
+      if (this.ids.length == 0) {
+        this.$modal.notifyWarning("请选中至少一条数据");
+      } else {
+        let param = this.ids.join();
+        auditSummary(param)
+          .then((res) => {
+            if (res.code === 200) {
+              this.$modal.notifySuccess("审核成功");
+              this.getList();
+            }
+          })
+          .catch((err) => {
+            this.getList();
+          });
+      }
+    },
+    // 行关闭
+    closeitem() {
+      let param = this.ids.join();
+      shutDownSummary(param).then((res) => {
+        if (res.code === 200) {
+          this.$modal.notifySuccess("操作成功");
+          this.getList();
+        }
+      });
+    },
+    closeLine() {
+      if (this.ids.length == 0) {
+        this.$modal.notifyWarning("请选中至少一条数据");
+      } else {
+        console.log("选中数组", this.allSelection);
+        let item = this.allSelection.some((item) => {
+          return item.demandNum >= 2;
+        });
+        if (item) {
+          this.$modal
+            .confirm("选中项有多个需求单位,是否确定关闭?")
+            .then(function () {})
+            .then(() => {
+              this.closeitem();
+            })
+            .catch(() => {});
+        } else {
+          this.closeitem();
+        }
+      }
+    },
+    // 搜索区参照选择
+    chooseRefer(type, isPage, title, stordocId) {
+      this.referCondition.type = type;
+      this.referCondition.isPage = isPage;
+      this.referCondition.title = title;
+      this.referCondition.stordocId = stordocId;
+      this.$refs.refer.init(this.referCondition);
+    },
+    selectionsToInput(selection) {
+      if (this.referCondition.title == "采购员") {
+        this.personOptions = selection;
+        this.queryParams.buyer = selection[0].code;
+        this.queryParams.buyerName = selection[0].name;
+      }
+      if (this.referCondition.title == "业务部门") {
+        this.deptOptions = selection;
+        this.queryParams.departmentName = selection[0].id;
+      }
+      if (this.referCondition.title == "审核人") {
+        this.auditOptions = selection;
+        this.queryParams.puManagerAuditor = selection[0].code;
+      }
+      if (this.referCondition.title == "需求客户") {
+        this.customerOptions = selection;
+        this.queryParams.customer = selection[0].id;
+      }
+      if (this.referCondition.title == "供应仓库") {
+        this.lastWarehouseOptions = selection;
+        this.queryParams.lastWarehouse = selection[0].id;
+      }
+      if (this.referCondition.title == "供应库位") {
+        this.lastAllocationOptions = selection;
+        this.queryParams.lastAllocation = selection[0].id;
+      }
+      if (this.referCondition.title == "默认采购组织") {
+        this.orgOptions = selection;
+        this.queryParams.purchaseOrg = selection[0].id;
+      }
+      if (this.referCondition.title == "明细采购员") {
+        console.log("选择进了吗", this.tableList);
+        this.record.push(this.tableIndex);
+        this.tableList[this.tableIndex].buyer = selection[0].code;
+        this.tableList[this.tableIndex].buyerName = selection[0].name;
+      }
+      if (this.referCondition.type == "SUPPLIER_PARAM") {
+        this.supplierOptions = selection;
+        this.queryParams.additionalSupplier = selection[0].id;
+      }
+      // if (this.referCondition.title == '明细默认采购组织') {
+      //   console.log('选择进了吗',this.tableList)
+      //   this.tableList[this.tableIndex].purchaseOrg = selection[0].id
+      //   this.tableList[this.tableIndex].purchaseOrgName = selection[0].name
+      // }
+    },
+    // 搜索区树形选择
+    chooseTreeRefer(type, isPage, title) {
+      this.referCondition.type = type;
+      this.referCondition.isPage = isPage;
+      this.referCondition.title = title;
+      this.$refs.tree.init(this.referCondition);
+    },
+    selectionsToInput2(selection) {
+      this.classOptions = selection;
+      this.queryParams.materialClassifyFour = selection.map((item) => {
+        return item.id;
+      });
+    },
+    // 搜索区物料编码
+    chooseMaterial() {
+      this.$refs.materialRefer.init();
+    },
+    selectMaterial(selection) {
+      console.log("选择的物料", selection);
+      this.queryParams.materialCodeList = selection.map((item) => {
+        return item.code;
+      });
+      console.log(this.queryParams.materialCodeList);
+      this.queryParams.names = selection
+        .map((item) => {
+          return item.name;
+        })
+        .join(",");
+    },
+    // 粘贴来的数据
+    async pasteMe(e) {
+      this.$modal.loading("正在粘贴数据...");
+      e.preventDefault(); //阻止默认粘贴事件
+      let source = e.clipboardData.getData("Text");
+      console.log("source", source);
+      // 这里区分普通复制和在表格内复制,判断是否包含','
+      // 没找到,就通过表格复制
+      if (source.indexOf(",") === -1) {
+        // 首先对源头进行解析
+        let rows = source.split("\r\n"); // 拆成一个数组
+        // 数组去除空字符串
+        rows = rows.filter((item) => {
+          return item && item.trim();
+        });
+        await getRefer({ type: "MATERIAL_PARAM", materialCodeList: rows })
+          .then((res) => {
+            this.$modal.closeLoading();
+            if (res.code === 200) {
+              let rowList = res.rows;
+              console.log("粘贴的", rowList);
+              this.queryParams.materialCodeList = rowList.map((item) => {
+                return item.code;
+              });
+              this.queryParams.names = rowList
+                .map((item) => {
+                  return item.code;
+                })
+                .join(",");
+            }
+          })
+          .catch((err) => {
+            this.$modal.closeLoading();
+          });
+      } else {
+        // 找到了,按,分割
+        let codelist = source.split(",");
+        console.log("按照逗号分隔", codelist);
+        // 数组去除空字符串
+        codelist = codelist.filter((item) => {
+          return item && item.trim();
+        });
+        this.queryParams.materialCodeList = codelist;
+        this.queryParams.names = codelist.join(",");
+        this.$modal.closeLoading();
+      }
+    },
+    // 明细行选择业务部门参照带出业务部门数据
+    chooseSon(index, type, isPage, title) {
+      this.tableIndex = index;
+      this.referCondition.type = type;
+      this.referCondition.isPage = isPage;
+      this.referCondition.title = title;
+      this.$refs.refer.init(this.referCondition);
+    },
+    jilu(index) {
+      this.record.push(index);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+#demandSummary {
+  padding: 12px;
+  box-sizing: border-box;
+  overflow-y: scroll;
+}
+.btn_grooup {
+  margin: 10px 0;
+  display: flex;
+  justify-content: flex-end;
+}
+.lines {
+  margin-top: 0;
+}
+.hang {
+  margin: auto;
+}
+.hang ::v-deep .el-form-item__content {
+  margin-left: 0px !important;
+}
+.el-pagination {
+  margin-top: 10px;
+  text-align: right;
+}
+::v-deep .vxe-body--row > td {
+  border-right: none;
+}
+::v-deep .el-card .el-form-item {
+  margin-bottom: 3px;
+}
+::v-deep .vxe-body--row .success-row {
+  background-color: #ff8a8a !important;
+}
+</style>
+<style>
+.exporttable {
+  border: solid 1px #c0c0c0;
+}
+</style>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.