yijing 1 год назад
Родитель
Сommit
f4124001a6

+ 51 - 47
src/api/aps/presalesorder.js

@@ -2,10 +2,21 @@ import request from '@/utils/request';
 import store from '@/store';
 import Vue from 'vue';
 
+//+交期预估
+export async function estimateDeliveryDates(data) {
+  const res = await request.post('/aps/presalesorder/estimateDeliveryDates', data);
+  console.log(res, 'lll')
+
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(res.data); //报错处理
+
+}
 
 // 转销售订单
-export async function createOrUpdate(data) {
-  const res = await request.post('/aps/presalesorder/createOrUpdate',data);
+export async function convertToSalesOrder(data) {
+  const res = await request.post('/aps/presalesorder/convertToSalesOrder', data);
 
   if (res.data.code == 0) {
     return res.data.data;
@@ -16,7 +27,7 @@ export async function createOrUpdate(data) {
 
 // 一次性转销售订单
 export async function createAll(data) {
-  const res = await request.post('/aps/presalesorder/createAll',data);
+  const res = await request.post('/aps/presalesorder/createAll', data);
 
   if (res.data.code == 0) {
     return res.data.data;
@@ -25,21 +36,28 @@ export async function createAll(data) {
 
 }
 
-// 批量导文件
+// 批量导文件
 export async function exportFile() {
-  const res = await request.get('/aps/presalesorder/export/1',
-  {"responseType":"blob"});
-  // console.log(res);
-  download(res.data,"交期预估");
+  const res = await request.get('/aps/presalesorder/export', {
+    "responseType": "blob"
+  });
+  download(res.data, "交期预估");
+}
+//下载模板
+export async function importTemplate() {
+  const res = await request.get('/aps/salesorder/importTemplate', {
+    "responseType": "blob"
+  });
+  download(res.data, "交期预估");
 }
 
-export function download(data, name){
-  const a= document.createElement('a');
+export function download(data, name) {
+  const a = document.createElement('a');
   const url = window.URL.createObjectURL(data);
   const filename = name;
   a.href = url;
   a.download = filename,
-  a.click();
+    a.click();
   window.URL.revokeObjectURL(url);
 }
 
@@ -53,8 +71,7 @@ export async function importFile(data) {
 }
 
 // 查询销售订单列表
-export async function listSalesorder(query)  {
-  console.log(query);
+export async function listSalesorder(query) {
   const res = await request.post('/aps/presalesorder/page', query);
   if (res.data.code == '0') {
     return res.data.data;
@@ -64,20 +81,17 @@ export async function listSalesorder(query)  {
 
 
 // 查询销售订单预估列表
-export async function listSalesorderExpect(data) {
-  console.log(data);
+export async function listSalesOrderExpect(data) {
   const res = await request.post('/aps/presalesorder/expect', data);
-  console.log(res)
   if (res.status == 200) {
-      return res.data;
-    }
+    return res.data;
+  }
   return Promise.reject(res.data); //报错处理
 }
 
 // 查询销售订单预估列表
 export async function listSalesorderExpectAll() {
-  const res = await request.get('/aps/presalesorder/expectAll',null);
-  console.log(res)
+  const res = await request.get('/aps/presalesorder/expectAll', null);
   if (res.status == 200) {
     return res.data;
   }
@@ -86,10 +100,8 @@ export async function listSalesorderExpectAll() {
 }
 
 // 查询销售订单预估列表
-export async function listSalesorderOccupyRes(query) {
-  console.log(query);
-  const res = await request.post('/aps/presalesorder/queryOccupyRes',query);
-  console.log(res);
+export async function listSalesOrderOccupyRes(query) {
+  const res = await request.post('/aps/presalesorder/queryOccupyRes', query);
   if (res.status == 200) {
     return res.data;
   }
@@ -99,9 +111,7 @@ export async function listSalesorderOccupyRes(query) {
 
 // 查询销售订单预估列表
 export async function occupyRes(data) {
-  console.log(data);
-  const res = await request.post('/aps/presalesorder/occupyRes',data);
-  console.log(res);
+  const res = await request.post('/aps/presalesorder/occupyRes', data);
   if (res.data.code == '0') {
     return res.data;
   }
@@ -111,11 +121,7 @@ export async function occupyRes(data) {
 
 // 一次性占用资源
 export async function occupyAllRes(param) {
-
-  console.log("occupyAllRes");
-
-  const res = await request.post('/aps/presalesorder/occupyAllRes',param);
-  console.log(res);
+  const res = await request.post('/aps/presalesorder/occupyAllRes', param);
   if (res.data.code == '0') {
     return res.data;
   }
@@ -133,11 +139,9 @@ export async function occupyAllRes(param) {
 // }
 
 // 查询销售订单详细
-export async function getSalesorder(id) {
-  const res = await request.get('/aps/presalesorder/' + id,null);
-  console.log(res);
+export async function getSalesOrder(id) {
+  const res = await request.get('/aps/presalesorder/' + id, null);
   if (res.data.code == '0') {
-    console.log(0);
     return res.data;
   }
   return Promise.reject(res.data); //报错处理
@@ -145,7 +149,7 @@ export async function getSalesorder(id) {
 
 // 新增销售订单
 export async function addSalesorder(data) {
-  const res = await request.post('/aps/presalesorder/addOne' ,data);
+  const res = await request.post('/aps/presalesorder/addOne', data);
   if (res.data.code == '0') {
     return res.data.data;
   }
@@ -154,20 +158,20 @@ export async function addSalesorder(data) {
 
 // 修改销售订单
 export async function updateSalesorder(data) {
-  const res = await request.post('/aps/presalesorder/editOne',data);
-    if (res.data.code == '0') {
-      return res.data.data;
-    }
-    return Promise.reject(res.data); //报错处理
+  const res = await request.post('/aps/presalesorder/editOne', data);
+  if (res.data.code == '0') {
+    return res.data.data;
+  }
+  return Promise.reject(res.data); //报错处理
 
 }
 
 // 删除销售订单
 export async function delSalesorder(id) {
-  const res = await request.post('/aps/presalesorder/deleteOne/' + id ,null);
-    if (res.data.code == '0') {
-      return res.data.data;
-    }
-    return Promise.reject(res.data); //报错处理
+  const res = await request.post('/aps/presalesorder/deleteOne/' + id, null);
+  if (res.data.code == '0') {
+    return res.data.data;
+  }
+  return Promise.reject(res.data); //报错处理
 
 }

+ 15 - 4
src/views/aps/capacity/index.vue

@@ -32,6 +32,9 @@
           <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
             :disabled="single">详情</el-button>
         </template>
+        <template v-slot:plannedCapacity="{ row }">
+          {{ row.plannedCapacity }}{{row.plannedCapacityUnit?row.plannedCapacityUnit:''}}
+        </template>
         <template v-slot:action="{ row }">
           <el-link type="primary" :underline="false" icon="el-icon-edit" @click="handleUpdate(row)">
             修改
@@ -48,7 +51,8 @@
 
 
       <!-- 添加或修改工厂月产能定义对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="70%" :close-on-click-modal="false" modal-append-to-body>
+      <el-dialog :title="title" :visible.sync="open" width="70%" :close-on-click-modal="false" modal-append-to-body
+        append-to-body>
         <el-form ref="form" :model="form" :rules="rules" label-width="120px">
           <el-form-item label="年份" prop="year">
             <el-select v-model="form.year" placeholder="请选择年份">
@@ -63,10 +67,16 @@
             </el-select>
           </el-form-item>
           <el-form-item label="规划产能(吨)" prop="plannedCapacity">
-            <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+            <div style="display: flex;align-items: center;justify-content: space-between;">
+              <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" style="width: calc(100% - 100px)" />
+              <DictSelection dictName="计量单位" v-model="form.plannedCapacityUnit" filterable clearable style="width: 100px;">
+              </DictSelection>
+            </div>
           </el-form-item>
           <el-form-item label="工作日天数" prop="expandedCapacity">
-            <el-input v-model="form.expandedCapacity" placeholder="请输入工作日天数" />
+            <el-input v-model="form.expandedCapacity" placeholder="请输入工作日天数">
+              <template v-slot:append>天</template>
+            </el-input>
           </el-form-item>
 
         </el-form>
@@ -176,7 +186,8 @@ export default {
         },
         {
           prop: 'plannedCapacity',
-          label: '规划产能(吨)',
+          slot: 'plannedCapacity',
+          label: '规划产能',
           align: 'center',
         },
         {

+ 302 - 309
src/views/aps/presalesorder/index.vue

@@ -2,59 +2,31 @@
 
   <div class="ele-body">
     <el-card shadow="never" v-loading="loading">
-      <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"
-        class="ele-form-search">
-        <el-form-item label="销售订单" prop="preSalesOrderNumber">
-          <el-input v-model="queryParams.preSalesOrderNumber" placeholder="请输入销售订单" clearable
-            @keyup.enter.native="handleQuery" />
-        </el-form-item>
-        <el-form-item label="客户代号" prop="customerCode">
-          <el-input v-model="queryParams.customerCode" placeholder="请输入客户代号" clearable
-            @keyup.enter.native="handleQuery" />
-        </el-form-item>
-        <el-form-item label="客户名称" prop="customerName">
-          <el-input v-model="queryParams.customerName" placeholder="请输入客户名称" clearable
-            @keyup.enter.native="handleQuery" />
-        </el-form-item>
-        <el-form-item label="产品编码" prop="productCode">
-          <el-input v-model="queryParams.productCode" placeholder="请输入产品编码" clearable
-            @keyup.enter.native="handleQuery" />
-        </el-form-item>
-        <el-form-item label="订单状态" prop="productCode">
-          <el-switch v-model="queryParams.status" :active-value="1" :inactive-value="0"
-            @change="handleQuery"></el-switch>
-        </el-form-item>
-
-        <el-form-item>
-          <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
-          <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
-
-          <!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQueryUnplanned">只显示未排订单</el-button> -->
-        </el-form-item>
-      </el-form>
-
-      <ele-pro-table ref="tableRef" :columns="columns" :datasource="salesorderList" :pageSize="20"
-        :pageSizes="[20, 30, 40, 50, 100]" row-key="id" @selection-change="handleSelectionChange" @reload="salesorderList">
+      <search ref="search" @search="reload"></search>
+
+      <ele-pro-table ref="tableRef" :columns="columns" :datasource="datasource" :pageSize="20"
+        :pageSizes="[20, 30, 40, 50, 100]" row-key="id" @selection-change="handleSelectionChange" :initLoad="false"
+        @done="onDone">
         <template v-slot:toolbar>
-          <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
-          <el-button style="background-color: #4e6cef;color: white;border-color: #4e6cef" icon="el-icon-edit" size="mini" :disabled="single"
-            @click="handleUpdate">修改</el-button>
-          <el-button style="background-color: #dd2c00;color: white;border-color: #dd2c00" icon="el-icon-delete" size="mini" :disabled="multiple"
-            @click="handleDelete">删除</el-button>
-          <el-button style="background-color: #ec407a;color: white;border-color: #ec407a" icon="el-icon-download" size="mini" :disabled="single"
-            @click="handleExpect">交期预估</el-button>
-          <el-button style="background-color: #cddc39;color: white;border-color: #cddc39" icon="el-icon-download" size="mini" :disabled="multiple"
-            @click="handleAllExpect">全部预估</el-button>
+          <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleEstimatedDelivery">交期预估</el-button>
+          <el-button style="background-color: #dd2c00;color: white;border-color: #dd2c00" icon="el-icon-delete"
+            size="mini" :disabled="multiple" @click="handleDelete">删除</el-button>
+          <!-- <el-button style="background-color: #ec407a;color: white;border-color: #ec407a" icon="el-icon-download"
+            size="mini" :disabled="single" @click="handleExpect">交期预估</el-button> -->
+          <el-button style="background-color: #cddc39;color: white;border-color: #cddc39" icon="el-icon-download"
+            size="mini" :disabled="multiple" @click="handleAllExpect">全部预估</el-button>
+          <el-button style="background-color: #ec407a;color: white;border-color: #ec407a" icon="el-icon-download"
+            size="mini" @click="importTemplate">下载模板</el-button>
           <el-button type="info" icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
           <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
-          <el-button style="background-color: #8bc34a;color: white;border-color: #8bc34a" icon="el-icon-download" size="mini" :disabled="single"
-            @click="handleSaleorder">转销售订单</el-button>
-          <el-button type="success" icon="el-icon-download" size="mini"
-            @click="handleAllSaleorder">一次性转销售订单</el-button>
+          <el-button style="background-color: #8bc34a;color: white;border-color: #8bc34a" icon="el-icon-download"
+            size="mini" :disabled="ids.length == 0" @click="handleSaleorder">转销售订单</el-button>
+          <!-- <el-button type="success" icon="el-icon-download" size="mini"
+            @click="handleAllSaleorder">一次性转销售订单</el-button> -->
+        </template>
+        <template v-slot:status="{ row }">
+          {{ row.status == 1 ? '启用' : '停用' }}
         </template>
-        <!-- <template v-slot:status="{ row }">
-          {{ row.status ? '启用' : '停用' }}
-        </template> -->
 
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
@@ -75,12 +47,12 @@
       </ele-pro-table>
 
       <!-- 添加或修改销售订单对话框 -->
-      <el-dialog :title="titleExpect" :visible.sync="openExpect" width="70%" :close-on-click-modal="false"
-        modal-append-to-body :fullscreen="fullscreen" class="fullscreen">
+      <ele-modal :title="titleExpect" :visible.sync="openExpect" :before-close="cancelExpect"
+        :close-on-click-modal="false" :close-on-press-escape="false" append-to-body width="70%" :maxable="true">
         <template slot="title">
           <modalTitle :title="titleExpect" @setFullscreen="fullscreen = !fullscreen"></modalTitle>
         </template>
-        <el-table v-loading="loading" :data="salesorderExpectList">
+        <el-table v-loading="loading" :data="salesOrderExpectList">
           <el-table-column label="序号" align="center" prop="id" />
           <el-table-column label="年份" align="center" prop="year" />
           <el-table-column label="月份" align="center" prop="month" />
@@ -90,18 +62,19 @@
           <el-table-column label="已排产产能" align="center" prop="plannedSumCapacity" />
           <el-table-column label="未排产产能" align="center" prop="unplannedSumCapacity" />
           <el-table-column label="本次排产产能" align="center" prop="currenPlannedSumCapacity" />
-          <el-table-column label="已排产单号列表" align="center" prop="plannedOrder" />
-          <el-table-column label="已排产产能列表" align="center" prop="plannedOrderCapacity" />
+          <el-table-column label="已排产单号列表" align="center" prop="plannedOrder" show-overflow-tooltip />
+          <el-table-column label="已排产产能列表" align="center" prop="plannedOrderCapacity" show-overflow-tooltip />
         </el-table>
         <div slot="footer" class="dialog-footer">
           <el-button type="primary" :disabled="single" @click="submitFormExpect">确定交期</el-button>
           <el-button type="primary" :disabled="multiple" @click="submitFormAllExpect">确定所有交期</el-button>
           <el-button @click="cancelExpect">取 消</el-button>
         </div>
-      </el-dialog>
+      </ele-modal>
 
       <!-- 添加或修改销售订单对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="70%" :close-on-click-modal="false" modal-append-to-body>
+      <ele-modal :title="title" :visible.sync="open" :before-close="cancel" :close-on-click-modal="false"
+        :close-on-press-escape="false" append-to-body width="70%" :maxable="true">
         <el-form ref="form" :model="form" :rules="rules" label-width="80px">
           <el-row>
             <el-col :span="8">
@@ -199,7 +172,7 @@
           <el-button type="primary" @click="submitForm">确 定</el-button>
           <el-button @click="cancel">取 消</el-button>
         </div>
-      </el-dialog>
+      </ele-modal>
 
       <!-- 直报系统导入对话框 -->
       <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
@@ -216,16 +189,19 @@
 </template>
 
 <script>
-import { createAll, createOrUpdate, exportFile, importFile, listSalesorder, getSalesorder, delSalesorder, addSalesorder, updateSalesorder, listSalesorderExpect, occupyRes, listSalesorderOccupyRes, listSalesorderExpectAll, occupyAllRes } from "@/api/aps/presalesorder";
+import { estimateDeliveryDates, createAll, convertToSalesOrder, importTemplate, exportFile, importFile, listSalesorder, getSalesOrder, delSalesorder, addSalesorder, updateSalesorder, listSalesOrderExpect, occupyRes, listSalesOrderOccupyRes, listSalesorderExpectAll, occupyAllRes } from "@/api/aps/presalesorder";
 import { API_BASE_URL, TOKEN_HEADER_NAME, LAYOUT_PATH } from '@/config/setting';
 import { getToken, setToken } from '@/utils/token-util';
 import { download } from '@/utils/request';
 
 import modalTitle from '@/components/modalTitle.vue';
+
+import search from './search.vue';
+
 export default {
   name: "PreSalesorder",
 
-  components: { modalTitle },
+  components: { modalTitle, search },
   data() {
     return {
       fullscreen: false,
@@ -249,21 +225,20 @@ export default {
         url: API_BASE_URL + "/aps/presalesorder/importData"
       },
       // 遮罩层
-      loading: true,
+      loading: false,
       // 选中数组
       ids: [],
+      selectionData: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
       multiple: true,
-      // 显示搜索条件
-      showSearch: true,
       // 总条数
       total: 0,
       // 销售订单表格数据
       salesorderList: [],
       // 销售订单交期预估表格数据
-      salesorderExpectList: [],
+      salesOrderExpectList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -272,28 +247,7 @@ export default {
       titleExpect: "交期确定",
       // 是否显示弹出层
       openExpect: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        page: 1,
-        preSalesOrderNumber: null,
-        customerCode: null,
-        customerName: null,
-        productDescription: null,
-        productCode: null,
-        orderQuantity: null,
-        unit: null,
-        weightKg: null,
-        customerDeliveryDate: null,
-        productionDeliveryDate: null,
-        materialCode: null,
-        materialDescription: null,
-        materialQuantity: null,
-        materialUnit: null,
-        materialWeightKg: null,
-        status: null,
-      },
+
       columns: [
         {
           width: 45,
@@ -411,6 +365,7 @@ export default {
         },
         {
           prop: 'status',
+          slot: 'status',
           label: '订单状态',
           showOverflowTooltip: true,
           align: 'center',
@@ -432,25 +387,174 @@ export default {
         preSalesOrderNumber: [
           { required: true, message: "销售订单不能为空", trigger: "blur" }
         ],
-      }
+      },
+      selDataIds: [],
+      whereForm: {}
     };
   },
-  created() {
-    this.getList();
+  async created() {
+    await this.reload();
   },
   methods: {
-    handleChange(file, fileList) {
-      this.fileList = fileList;
-      console.log(fileList);
+    datasource({ page, where, limit }) {
+      const res = listSalesorder({ ...where, page, limit });
+      return res;
+    },
+    reload(where) {
+      console.log(where, 'where22222')
+      this.whereForm = where;
+      this.$nextTick(() => {
+        if (this.$refs.tableRef && this.$refs.tableRef.reload)
+          this.$refs.tableRef.reload({ page: 1, where: where });
+      })
+    },
+    onDone() {
+      this.$nextTick(() => {
+        this.$refs.tableRef.setSelectedRowKeys(this.selDataIds);
+      });
     },
 
-    //上传限制
-    beforeUpload(file) {
-      const isLt10M = file.size / 1024 / 1024 < 10;
-      if (!isLt10M) {
-        this.$message.error('上传文件大小不能超过 10MB!');
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.resetForm();
+      const id = row.id || this.ids
+      getSalesOrder(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改销售订单";
+      });
+    },
+    /** 删除 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm(`是否确认删除销售订单编号为"${ids}"的数据项?`, '提示')
+        .then(() => {
+          delSalesorder(ids)
+            .then(() => {
+              this.reload();
+              this.$message.success("删除成功");
+            })
+            .catch((e) => {
+              console.log(e);
+            });
+        })
+        .catch(() => { });
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.selectionData = selection
+      console.log(this.ids, 'selection')
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+
+
+      // if (selection.length == 1) {
+      //   const selSalesOrderNumber = selection[0].preSalesOrderNumber;
+      //   const list = this.$refs.tableRef.getData();
+      //   const data = []
+      //   for (let i = 0; i < list.length; i++) {
+      //     if (list[i].preSalesOrderNumber == selSalesOrderNumber) {
+
+      //       data.push(list[i].id);
+      //     }
+      //   }
+
+      //   this.selDataIds = data;
+
+      // }
+      // console.log(this.selDataIds, '勾选')
+      // if (this.selDataIds.length > 0) {
+      //   this.$refs.tableRef.setSelectedRowKeys(this.selDataIds);
+      // }
+
+    },
+
+    async handleEstimatedDelivery() {
+      if (this.ids.length === 0) {
+        this.$message.warning("请选择");
+        return;
       }
-      return isLt10M;
+      const res = await estimateDeliveryDates({ ids: this.ids })
+      if (res.code == 0) {
+        this.$message.success("操作成功");
+        this.reload();
+      }
+    },
+    /*交期预估*/
+    async handleExpect(row) {
+      if (this.ids.length === 0) {
+        this.$message.warning("请选择");
+        return;
+      }
+
+      const id = row.id || this.ids;
+
+      const response = await getSalesOrder(id);
+      const saleOrder = response.data;
+      this.form = response.data;
+
+      //如果是已经占用资源,则显示已经占用的资源,不能重复
+      if (saleOrder.status === "1" || saleOrder.status === "2") {
+        const occupyRes = await listSalesOrderOccupyRes(saleOrder);
+        this.salesOrderExpectList = occupyRes;
+        this.single = true;
+        this.multiple = true;
+      } else if (saleOrder.status === "0") {
+        const expectRes = await listSalesOrderExpect(saleOrder);
+        this.salesOrderExpectList = expectRes;
+        this.single = false;
+        this.multiple = true;
+      }
+      console.log(this.salesOrderExpectList.length, 'this.salesOrderExpectList.length')
+      if (this.salesOrderExpectList.length > 0) {
+        this.submitFormAllExpect();
+      }
+    },
+    submitFormAllExpect() {
+      var arr = [];
+      this.salesOrderExpectList.forEach(item => {
+        var node = {};
+        node.id = item.id;
+        node.createTime = item.createTime;
+        node.createUserId = item.createUserId;
+        node.year = item.year;
+        node.month = item.month;
+        node.day = item.day;
+        node.plannedCapacity = item.plannedCapacity;
+        node.unplannedSumCapacity = item.unplannedSumCapacity;
+        node.deliverDay = item.deliverDay;
+        node.currenPlannedSumCapacity = item.currenPlannedSumCapacity;
+        node.plannedSumCapacity = item.plannedSumCapacity;
+        node.plannedOrder = item.plannedOrder;
+        node.plannedOrderCapacity = item.plannedOrderCapacity;
+        node.plannedOrderDate = item.plannedOrderDate;
+        arr.push(node);
+      });
+      console.log(arr, 'arr')
+      occupyAllRes(arr).then(response => {
+        //console.log(response)
+        // this.openExpect = false;
+        this.reload();
+
+        this.$message.success("占用成功");
+      });
+    },
+    //全部预估
+    handleAllExpect() {
+
+      listSalesorderExpectAll().then(response => {
+
+        this.salesOrderExpectList = response;
+        this.openExpect = true;
+        this.single = true;
+        this.multiple = false;
+      });
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "销售订单数据导入";
+      this.upload.open = true;
     },
     //文件上传
     uploadFile(param) {
@@ -461,7 +565,7 @@ export default {
       importFile(fd)
         .then((res) => {
           this.$refs.uploadFile.clearFiles();
-          this.handleQuery();
+
           this.upload.open = false;
         })
         .catch((data) => {
@@ -473,29 +577,77 @@ export default {
           this.$refs.uploadFile.clearFiles();
         });
     },
-    /** 查询销售订单列表 */
-    getList() {
-      // console.log("getList")
+    //上传限制
+    beforeUpload(file) {
+      const isLt10M = file.size / 1024 / 1024 < 10;
+      if (!isLt10M) {
+        this.$message.error('上传文件大小不能超过 10MB!');
+      }
+      return isLt10M;
+    },
+    handleChange(file, fileList) {
+      this.fileList = fileList;
+      console.log(fileList);
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      console.log(this.whereForm, 'this.whereForm')
+
       this.loading = true;
-      listSalesorder(this.queryParams).then(response => {
-        // console.log(response)
-        this.salesorderList = response;
-        this.total = response.total;
+      exportFile(this.whereForm).then(res => {
         this.loading = false;
+
       });
     },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate(this.whereForm).then(res => {
+        this.$message.success("模板下载成功");
+      });
     },
-    // 取消按钮
-    cancelExpect() {
-      this.openExpect = false;
 
+    /** 转销售单按钮操作 */
+    handleSaleorder(row) {
+      if (this.ids.length == 0) {
+        this.$message.warning("请选择");
+        return;
+      }
+
+      const filteredData = this.selectionData.filter((item) => item.status == 1);
+      console.log(filteredData, 'filteredData');
+      if (filteredData.length > 0) {
+        const ids = filteredData.map(item => item.id)
+        convertToSalesOrder({ ids: ids }).then(response => {
+          this.$message.success("转换成功");
+          this.reload();
+        });
+      }
+
+
+      // const id = row.id || this.ids
+
+      // getSalesOrder(id).then(response => {
+      //   let saleorder = response.data;
+      //   this.form = response.data;
+      //   console.log(saleorder);
+      //   //如果是已经占用资源,则显示已经占用的资源,不能重复
+      //   if (saleorder.status == "1") {
+      //     convertToSalesOrder(this.ids).then(response => {
+      //       this.$message.success("转换成功");
+      //     });
+      //     return;
+      //   }
+      //   else if (saleorder.status == "0") {
+      //     //如果没有
+      //     this.$message.success("没有交期预估");
+      //   } else if (saleorder.status == "2") {
+      //     //如果没有
+      //     this.$message.success("已经转换过了");
+      //   }
+      // });
     },
     // 表单重置
-    reset() {
+    resetForm() {
       this.form = {
         id: null,
         preSalesOrderNumber: null,
@@ -515,49 +667,18 @@ export default {
         materialWeightKg: null,
         status: null,
       };
-      //this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      //this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    /** 只显示未排订单按钮操作 */
-    resetQueryUnplanned() {
-      this.queryParams.status = "0";
-      this.handleQuery();
     },
 
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length !== 1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加销售订单";
-    },
-    /** 交期预估按钮操作 */
-    handleAdd() {
-      this.openExpect = true;
+
+
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.resetForm();
     },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getSalesorder(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改销售订单";
-      });
+    // 取消按钮
+    cancelExpect() {
+      this.openExpect = false;
     },
     /** 提交按钮 */
     submitForm() {
@@ -567,13 +688,13 @@ export default {
             updateSalesorder(this.form).then(response => {
               this.$message.success("修改成功");
               this.open = false;
-              this.getList();
+              this.reload();
             });
           } else {
             addSalesorder(this.form).then(response => {
               this.$message.success("新增成功");
               this.open = false;
-              this.getList();
+              this.reload();
             });
           }
         }
@@ -582,7 +703,7 @@ export default {
     /** 提交交期确定按钮 */
     submitFormExpect() {
       const id = this.ids
-      getSalesorder(id).then(response => {
+      getSalesOrder(id).then(response => {
         // console.log(response);
         let saleorder = response.data;
         if (saleorder.status == "1" || saleorder.status == "2") {
@@ -590,21 +711,21 @@ export default {
           return;
         }
         var i = 0;
-        this.salesorderExpectList.forEach(item => {
+        this.salesOrderExpectList.forEach(item => {
           i++;
           item.plannedOrder = saleorder.preSalesOrderNumber + "-" + saleorder.materialCode + "";
           item.plannedOrderCapacity = item.currenPlannedSumCapacity;
           item.plannedSumCapacity = item.currenPlannedSumCapacity;
         });
 
-        var lastNode = this.salesorderExpectList[this.salesorderExpectList.length - 1];
-        console.log(lastNode);
+        var lastNode = this.salesOrderExpectList[this.salesOrderExpectList.length - 1];
+        console.log(lastNode, 'lastNode');
         var productDay = lastNode.deliverDay;
         saleorder.productionDeliveryDate = productDay;
         console.log(saleorder.productionDeliveryDate);
 
         var arr = [];
-        this.salesorderExpectList.forEach(item => {
+        this.salesOrderExpectList.forEach(item => {
           var node = {};
           node.id = item.id;
           node.createTime = item.createTime;
@@ -630,67 +751,13 @@ export default {
           updateSalesorder(saleorder).then(response => {
             this.$message.success("修改成功");
             this.openExpect = false;
-            this.getList();
+            this.reload();
           });
         });
 
 
       });
     },
-    submitFormAllExpect() {
-      var arr = [];
-      this.salesorderExpectList.forEach(item => {
-        var node = {};
-        node.id = item.id;
-        node.createTime = item.createTime;
-        node.createUserId = item.createUserId;
-        node.year = item.year;
-        node.month = item.month;
-        node.day = item.day;
-        node.plannedCapacity = item.plannedCapacity;
-        node.unplannedSumCapacity = item.unplannedSumCapacity;
-        node.deliverDay = item.deliverDay;
-        node.currenPlannedSumCapacity = item.currenPlannedSumCapacity;
-        node.plannedSumCapacity = item.plannedSumCapacity;
-        node.plannedOrder = item.plannedOrder;
-        node.plannedOrderCapacity = item.plannedOrderCapacity;
-        node.plannedOrderDate = item.plannedOrderDate;
-        arr.push(node);
-      });
-
-      occupyAllRes(arr).then(response => {
-        //console.log(response)
-        this.openExpect = false;
-        this.getList();
-
-        this.$message.success("占用成功");
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$confirm(`是否确认删除销售订单编号为"${ids}"的数据项?`, '提示')
-        .then(() => {
-          delSalesorder(ids)
-            .then(() => {
-              this.getList();
-              this.$message.success("删除成功");
-            })
-            .catch((e) => {
-              console.log(e);
-            });
-        })
-        .catch(() => { });
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.loading = true;
-      exportFile(this.queryParams).then(res => {
-        this.loading = false;
-
-      });
-    },
-
 
     /** 转销售单按钮操作 */
     handleAllSaleorder() {
@@ -703,101 +770,27 @@ export default {
         this.loading = false;
       });
     },
-    /** 转销售单按钮操作 */
-    handleSaleorder(row) {
-      const id = row.id || this.ids
-      getSalesorder(id).then(response => {
-        let saleorder = response.data;
-        this.form = response.data;
-        console.log(saleorder);
-        //如果是已经占用资源,则显示已经占用的资源,不能重复
-        if (saleorder.status == "1") {
-          createOrUpdate(saleorder).then(response => {
-            this.$message.success("转换成功");
-          });
-          return;
-
-        }
-        else if (saleorder.status == "0") {
-          //如果没有
-          this.$message.success("没有交期预估");
-        } else if (saleorder.status == "2") {
-          //如果没有
-          this.$message.success("已经转换过了");
-        }
-      });
-    },
-
-    /*销售单交期预估*/
-    handleExpect(row) {
-      const id = row.id || this.ids
-
-      getSalesorder(id).then(response => {
-        let saleorder = response.data;
-        this.form = response.data;
-        console.log(saleorder);
-        //如果是已经占用资源,则显示已经占用的资源,不能重复
-        if (saleorder.status == "1" || saleorder.status == "2") {
-
-          listSalesorderOccupyRes(saleorder).then(response => {
-            this.salesorderExpectList = response;
-            this.openExpect = true;
-            this.single = true;
-            this.multiple = true;
-          });
-          return;
-        }
-        else if (saleorder.status == "0") {
-
-          listSalesorderExpect(saleorder).then(response => {
-            this.salesorderExpectList = response;
-            this.openExpect = true;
-            this.single = false;
-            this.multiple = true;
-          });
-        }
-      });
-
-    },
-    //预览
-    handleAllExpect() {
 
-      listSalesorderExpectAll().then(response => {
 
-        this.salesorderExpectList = response;
-        this.openExpect = true;
-        this.single = true;
-        this.multiple = false;
-      });
-    },
-    /** 下载模板操作 */
-    importTemplate() {
-      this.download('aps/salesorder/importTemplate', {}, `user_template_${new Date().getTime()}.xlsx`)
-    },
-    /** 导入按钮操作 */
-    handleImport() {
-      this.upload.title = "销售订单数据导入";
-      this.upload.open = true;
-    },
-    // 提交上传文件
-    submitFileForm() {
-      this.$refs.upload.submit();
-    },
-    // 文件上传中处理
-    handleFileUploadProgress(event, file, fileList) {
-      this.upload.isUploading = true;
-    },
-    // 文件上传成功处理
-    handleFileSuccess(response, file, fileList) {
-      this.upload.open = false;
-      this.upload.isUploading = false;
-      this.$refs.upload.clearFiles();
-      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
-        response.msg + "</div>", "导入结果", {
-        dangerouslyUseHTMLString: true
-      });
-      this.getList();
-    },
+    // // 提交上传文件
+    // submitFileForm() {
+    //   this.$refs.upload.submit();
+    // },
+    // // 文件上传中处理
+    // handleFileUploadProgress(event, file, fileList) {
+    //   this.upload.isUploading = true;
+    // },
+    // // 文件上传成功处理
+    // handleFileSuccess(response, file, fileList) {
+    //   this.upload.open = false;
+    //   this.upload.isUploading = false;
+    //   this.$refs.upload.clearFiles();
+    //   this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+    //     response.msg + "</div>", "导入结果", {
+    //     dangerouslyUseHTMLString: true
+    //   });
+    //   this.reload();
+    // },
   }
 };
-</script>
+</script>

+ 76 - 0
src/views/aps/presalesorder/search.vue

@@ -0,0 +1,76 @@
+<!-- 搜索表单 -->
+
+<template>
+  <el-form label-width="80px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
+    <el-row :gutter="24">
+      <el-col :span="4">
+        <el-form-item label="销售订单" prop="preSalesOrderNumber">
+          <el-input v-model="where.preSalesOrderNumber" placeholder="请输入销售订单" clearable />
+        </el-form-item>
+      </el-col>
+      <el-col :span="4">
+        <el-form-item label="客户代号" prop="customerCode">
+          <el-input v-model="where.customerCode" placeholder="请输入客户代号" clearable />
+        </el-form-item>
+      </el-col>
+      <el-col :span="4">
+        <el-form-item label="客户名称" prop="customerName">
+          <el-input v-model="where.customerName" placeholder="请输入客户名称" clearable />
+        </el-form-item>
+      </el-col>
+      <el-col :span="4">
+        <el-form-item label="产品编码" prop="productCode">
+          <el-input v-model="where.productCode" placeholder="请输入产品编码" clearable />
+        </el-form-item>
+      </el-col>
+      <el-col :span="4">
+        <el-form-item label="订单状态" prop="status">
+          <el-switch v-model="where.status" :active-value="1" :inactive-value="0" @change="search"></el-switch>
+        </el-form-item>
+      </el-col>
+      <el-col style="display: flex; justify-content: flex-end" :span="4">
+        <div class="ele-form-actions">
+          <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+
+export default {
+  data() {
+    // 默认表单数据
+    const defaultWhere = {
+      preSalesOrderNumber: '',
+      customerCode: '',
+      customerName: '',
+      productCode: '',
+      status: null,
+    };
+    return {
+      defaultWhere,
+      // 表单数据
+      where: { ...defaultWhere },
+    };
+  },
+  computed: {
+
+  },
+  methods: {
+    /* 搜索 */
+    search() {
+      this.$emit('search', this.where);
+    },
+    /*  重置 */
+    reset() {
+      this.where = { ...this.defaultWhere };
+      this.search();
+    }
+  }
+};
+</script>

+ 1 - 1
vue.config.js

@@ -36,7 +36,7 @@ module.exports = {
         // target: 'http://192.168.1.158:18086',
         // target: 'http://192.168.158:18086',
         // target: 'http://192.168.1.158:18086',
-        target: 'http://192.168.1.125:18086',
+        target: 'http://192.168.1.251:18086',
 
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
         pathRewrite: {