Jelajahi Sumber

Merge branch 'test' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-aps into test

chencc 1 tahun lalu
induk
melakukan
32d7502f8a

+ 44 - 0
src/api/aps/aps_wc_capacity.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工作中心月产能定义列表
+export function listAps_wc_capacity(query) {
+  return request({
+    url: '/aps/aps_wc_capacity/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工作中心月产能定义详细
+export function getAps_wc_capacity(id) {
+  return request({
+    url: '/aps/aps_wc_capacity/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工作中心月产能定义
+export function addAps_wc_capacity(data) {
+  return request({
+    url: '/aps/aps_wc_capacity',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工作中心月产能定义
+export function updateAps_wc_capacity(data) {
+  return request({
+    url: '/aps/aps_wc_capacity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工作中心月产能定义
+export function delAps_wc_capacity(id) {
+  return request({
+    url: '/aps/aps_wc_capacity/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/aps/aps_wc_capacity_detail.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工作中心月产能定义详情列表
+export function listAps_wc_capacity_detail(query) {
+  return request({
+    url: '/aps/aps_wc_capacity_detail/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工作中心月产能定义详情详细
+export function getAps_wc_capacity_detail(id) {
+  return request({
+    url: '/aps/aps_wc_capacity_detail/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工作中心月产能定义详情
+export function addAps_wc_capacity_detail(data) {
+  return request({
+    url: '/aps/aps_wc_capacity_detail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工作中心月产能定义详情
+export function updateAps_wc_capacity_detail(data) {
+  return request({
+    url: '/aps/aps_wc_capacity_detail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工作中心月产能定义详情
+export function delAps_wc_capacity_detail(id) {
+  return request({
+    url: '/aps/aps_wc_capacity_detail/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/aps/aps_workcenter.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询APS工作中心信息列表
+export function listAps_workcenter(query) {
+  return request({
+    url: '/aps/aps_workcenter/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询APS工作中心信息详细
+export function getAps_workcenter(sequenceId) {
+  return request({
+    url: '/aps/aps_workcenter/' + sequenceId,
+    method: 'get'
+  })
+}
+
+// 新增APS工作中心信息
+export function addAps_workcenter(data) {
+  return request({
+    url: '/aps/aps_workcenter',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改APS工作中心信息
+export function updateAps_workcenter(data) {
+  return request({
+    url: '/aps/aps_workcenter',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除APS工作中心信息
+export function delAps_workcenter(sequenceId) {
+  return request({
+    url: '/aps/aps_workcenter/' + sequenceId,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/aps/aps_ws_capacity.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工位月产能定义列表
+export function listAps_ws_capacity(query) {
+  return request({
+    url: '/aps/aps_ws_capacity/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工位月产能定义详细
+export function getAps_ws_capacity(id) {
+  return request({
+    url: '/aps/aps_ws_capacity/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工位月产能定义
+export function addAps_ws_capacity(data) {
+  return request({
+    url: '/aps/aps_ws_capacity',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工位月产能定义
+export function updateAps_ws_capacity(data) {
+  return request({
+    url: '/aps/aps_ws_capacity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工位月产能定义
+export function delAps_ws_capacity(id) {
+  return request({
+    url: '/aps/aps_ws_capacity/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/aps/aps_ws_capacity_detail.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工位月产能详情定义列表
+export function listAps_ws_capacity_detail(query) {
+  return request({
+    url: '/aps/aps_ws_capacity_detail/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工位月产能详情定义详细
+export function getAps_ws_capacity_detail(id) {
+  return request({
+    url: '/aps/aps_ws_capacity_detail/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工位月产能详情定义
+export function addAps_ws_capacity_detail(data) {
+  return request({
+    url: '/aps/aps_ws_capacity_detail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工位月产能详情定义
+export function updateAps_ws_capacity_detail(data) {
+  return request({
+    url: '/aps/aps_ws_capacity_detail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工位月产能详情定义
+export function delAps_ws_capacity_detail(id) {
+  return request({
+    url: '/aps/aps_ws_capacity_detail/' + id,
+    method: 'delete'
+  })
+}

+ 46 - 0
src/api/aps/aps_ws_res_capacity.js

@@ -0,0 +1,46 @@
+import request from '@/utils/request'
+
+// 查询工作中心资源月产能定义列表
+export function listAps_ws_res_capacity(query) {
+  return request({
+    url: '/aps/aps_ws_res_capacity/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工作中心资源月产能定义详细
+export function getAps_ws_res_capacity(id) {
+  return request({
+    url: '/aps/aps_ws_res_capacity/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工作中心资源月产能定义
+export function addAps_ws_res_capacity(data) {
+  return request({
+    url: '/aps/aps_ws_res_capacity',
+    method: 'post',
+    data: data
+  })
+}
+
+
+
+// 修改工作中心资源月产能定义
+export function updateAps_ws_res_capacity(data) {
+  return request({
+    url: '/aps/aps_ws_res_capacity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工作中心资源月产能定义
+export function delAps_ws_res_capacity(id) {
+  return request({
+    url: '/aps/aps_ws_res_capacity/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
src/api/aps/team_capacity.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询产线月产能定义列表
+export function listCapacity(query) {
+  return request({
+    url: '/aps/team_capacity/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询产线月产能定义详细
+export function getCapacity(id) {
+  return request({
+    url: '/aps/team_capacity/' + id,
+    method: 'get'
+  })
+}
+
+// 新增产线月产能定义
+export function addCapacity(data) {
+  return request({
+    url: '/aps/team_capacity',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改产线月产能定义
+export function updateCapacity(data) {
+  return request({
+    url: '/aps/team_capacity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除产线月产能定义
+export function delCapacity(id) {
+  return request({
+    url: '/aps/team_capacity/' + id,
+    method: 'delete'
+  })
+}

+ 95 - 0
src/api/aps/team_capacity_detail.js

@@ -0,0 +1,95 @@
+import request from '@/utils/request'
+
+// 查询产线月产能详情定义列表
+export function expectAll(data) {
+  return request({
+    url: '/aps/team_capacity_detail/expectAll',
+    method: 'get'
+  })
+}
+
+// 查询产线月产能详情定义列表
+export function expect(data) {
+  return request({
+    url: '/aps/team_capacity_detail/expect/'+data,
+    method: 'get'
+  })
+}
+
+// 查询产线月产能详情定义列表
+export function queryOccupyRes(data) {
+  return request({
+    url: '/aps/team_capacity_detail/queryOccupyRes/'+data,
+    method: 'get'
+  })
+}
+
+// 查询产线月产能详情定义列表
+export function listTeam_capacity_detail(query) {
+  return request({
+    url: '/aps/team_capacity_detail/list',
+    method: 'get',
+    params: query
+  })
+}
+// 查询产线月产能详情定义列表
+export function listDetail(id) {
+  return request({
+    url: '/aps/team_capacity_detail/listDetail?id='+id,
+    method: 'get',
+    params: {}
+  })
+}
+
+// 查询产线月产能详情定义详细
+export function getTeam_capacity_detail(id) {
+  return request({
+    url: '/aps/team_capacity_detail/' + id,
+    method: 'get'
+  })
+}
+
+// 新增产线月产能详情定义
+export function addTeam_capacity_detail(data) {
+  return request({
+    url: '/aps/team_capacity_detail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改产线月产能详情定义
+export function updateTeam_capacity_detail(data) {
+  return request({
+    url: '/aps/team_capacity_detail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除产线月产能详情定义
+export function delTeam_capacity_detail(id) {
+  return request({
+    url: '/aps/team_capacity_detail/' + id,
+    method: 'delete'
+  })
+}
+
+// 占用产线月产能详情定义
+export function occupyRes(data) {
+  return request({
+    url: '/aps/team_capacity_detail/occupyRes',
+    method: 'post',
+    data: [data]
+  })
+}
+
+// 占用产线月产能详情定义
+export function occupyAllRes(data) {
+  return request({
+    url: '/aps/team_capacity_detail/occupyAllRes',
+    method: 'post',
+    data: data
+  })
+}
+

+ 89 - 0
src/api/aps/ws_res_capacity_detail.js

@@ -0,0 +1,89 @@
+import request from '@/utils/request'
+
+// 查询工作中心资源月产能定义详细列表
+export function listWs_res_capacity_detail(query) {
+  return request({
+    url: '/aps/ws_res_capacity_detail/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工作中心资源月产能定义详细详细
+export function getWs_res_capacity_detail(id) {
+  return request({
+    url: '/aps/ws_res_capacity_detail/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工作中心资源月产能定义详细
+export function addWs_res_capacity_detail(data) {
+  return request({
+    url: '/aps/ws_res_capacity_detail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工作中心资源月产能定义详细
+export function updateWs_res_capacity_detail(data) {
+  return request({
+    url: '/aps/ws_res_capacity_detail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工作中心资源月产能定义详细
+export function delWs_res_capacity_detail(id) {
+  return request({
+    url: '/aps/ws_res_capacity_detail/' + id,
+    method: 'delete'
+  })
+}
+
+// 新增工作中心资源月产能定义
+export function occupyRes(data) {
+  return request({
+    url: '/aps/ws_res_capacity_detail/occupyRes',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询工作中心资源月产能定义详细列表
+export function listTimes(query) {
+  return request({
+    url: 'main/teamtime/page?name=&factoryId=&pageNum=1&size=20',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工作中心资源月产能定义详细列表
+export function getBomCategory(query) {
+  return request({
+    url: 'main/categoryparam/mBomPage?bomCategoryId=1894726133221527553&pageNum=1&size=10',
+    method: 'get',
+    params: null
+  })
+}
+
+// 查询工作中心资源月产能定义详细列表
+export function occupyAuto(data) {
+  return request({
+    url: '/aps/ws_res_capacity_detail/occupyAuto',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询工作中心资源月产能定义详细列表
+export function occupyResAll(data) {
+  return request({
+    url: '/aps/ws_res_capacity_detail/occupyResAll',
+    method: 'post',
+    data: data
+  })
+}

+ 377 - 0
src/views/aps/aps_wc_capacity/index.vue

@@ -0,0 +1,377 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="工作中心ID" prop="workcenterId">
+        <el-input
+          v-model="queryParams.workcenterId"
+          placeholder="请输入工作中心ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="年份" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          placeholder="请输入年份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+        <el-input
+          v-model="queryParams.plannedCapacity"
+          placeholder="请输入规划产能(吨)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="扩充产能(吨)" prop="expandedCapacity">
+        <el-input
+          v-model="queryParams.expandedCapacity"
+          placeholder="请输入扩充产能(吨)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="平均天产能" prop="averageDailyCapacity">
+        <el-input
+          v-model="queryParams.averageDailyCapacity"
+          placeholder="请输入平均天产能"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录IP" prop="loginIp">
+        <el-input
+          v-model="queryParams.loginIp"
+          placeholder="请输入最后登录IP"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录时间" prop="loginDate">
+        <el-date-picker clearable
+          v-model="queryParams.loginDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择最后登录时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:aps_wc_capacity:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:aps_wc_capacity:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:aps_wc_capacity:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:aps_wc_capacity:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="aps_wc_capacityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="工作中心ID" align="center" prop="workcenterId" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="扩充产能(吨)" align="center" prop="expandedCapacity" />
+      <el-table-column label="平均天产能" align="center" prop="averageDailyCapacity" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+      <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+      <el-table-column label="最后登录时间" align="center" prop="loginDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.loginDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:aps_wc_capacity:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:aps_wc_capacity:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改工作中心月产能定义对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="工作中心ID" prop="workcenterId">
+          <el-input v-model="form.workcenterId" placeholder="请输入工作中心ID" />
+        </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-input v-model="form.year" placeholder="请输入年份" />
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" />
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="扩充产能(吨)" prop="expandedCapacity">
+          <el-input v-model="form.expandedCapacity" placeholder="请输入扩充产能(吨)" />
+        </el-form-item>
+        <el-form-item label="平均天产能" prop="averageDailyCapacity">
+          <el-input v-model="form.averageDailyCapacity" placeholder="请输入平均天产能" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+        <el-form-item label="最后登录时间" prop="loginDate">
+          <el-date-picker clearable
+            v-model="form.loginDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择最后登录时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAps_wc_capacity, getAps_wc_capacity, delAps_wc_capacity, addAps_wc_capacity, updateAps_wc_capacity } from "@/api/aps/aps_wc_capacity";
+
+export default {
+  name: "Aps_wc_capacity",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工作中心月产能定义表格数据
+      aps_wc_capacityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        workcenterId: null,
+        year: null,
+        month: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        workcenterId: [
+          { required: true, message: "工作中心ID不能为空", trigger: "blur" }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ],
+        month: [
+          { required: true, message: "月份不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工作中心月产能定义列表 */
+    getList() {
+      this.loading = true;
+      listAps_wc_capacity(this.queryParams).then(response => {
+        this.aps_wc_capacityList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        workcenterId: null,
+        year: null,
+        month: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加工作中心月产能定义";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAps_wc_capacity(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工作中心月产能定义";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAps_wc_capacity(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAps_wc_capacity(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工作中心月产能定义编号为"' + ids + '"的数据项?').then(function() {
+        return delAps_wc_capacity(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/aps_wc_capacity/export', {
+        ...this.queryParams
+      }, `aps_wc_capacity_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 389 - 0
src/views/aps/aps_wc_capacity_detail/index.vue

@@ -0,0 +1,389 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="工作中心ID" prop="workcenterId">
+        <el-input
+          v-model="queryParams.workcenterId"
+          placeholder="请输入工作中心ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="年份" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          placeholder="请输入年份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="day">
+        <el-input
+          v-model="queryParams.day"
+          placeholder="请输入日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+        <el-input
+          v-model="queryParams.plannedCapacity"
+          placeholder="请输入规划产能(吨)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="已排产产能" prop="plannedSumCapacity">
+        <el-input
+          v-model="queryParams.plannedSumCapacity"
+          placeholder="请输入已排产产能"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录IP" prop="loginIp">
+        <el-input
+          v-model="queryParams.loginIp"
+          placeholder="请输入最后登录IP"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录时间" prop="loginDate">
+        <el-date-picker clearable
+          v-model="queryParams.loginDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择最后登录时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:aps_wc_capacity_detail:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:aps_wc_capacity_detail:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:aps_wc_capacity_detail:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:aps_wc_capacity_detail:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="aps_wc_capacity_detailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="工作中心ID" align="center" prop="workcenterId" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="日期" align="center" prop="day" />
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="已排产产能" align="center" prop="plannedSumCapacity" />
+      <el-table-column label="排产单号" align="center" prop="plannedOrder" />
+      <el-table-column label="排产产能" align="center" prop="plannedOrderCapacity" />
+      <el-table-column label="排程时间" align="center" prop="plannedOrderDate" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+      <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+      <el-table-column label="最后登录时间" align="center" prop="loginDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.loginDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:aps_wc_capacity_detail:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:aps_wc_capacity_detail:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改工作中心月产能定义详情对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="工作中心ID" prop="workcenterId">
+          <el-input v-model="form.workcenterId" placeholder="请输入工作中心ID" />
+        </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-input v-model="form.year" placeholder="请输入年份" />
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" />
+        </el-form-item>
+        <el-form-item label="日期" prop="day">
+          <el-input v-model="form.day" placeholder="请输入日期" />
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="已排产产能" prop="plannedSumCapacity">
+          <el-input v-model="form.plannedSumCapacity" placeholder="请输入已排产产能" />
+        </el-form-item>
+        <el-form-item label="排产单号" prop="plannedOrder">
+          <el-input v-model="form.plannedOrder" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排产产能" prop="plannedOrderCapacity">
+          <el-input v-model="form.plannedOrderCapacity" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排程时间" prop="plannedOrderDate">
+          <el-input v-model="form.plannedOrderDate" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+        <el-form-item label="最后登录时间" prop="loginDate">
+          <el-date-picker clearable
+            v-model="form.loginDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择最后登录时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAps_wc_capacity_detail, getAps_wc_capacity_detail, delAps_wc_capacity_detail, addAps_wc_capacity_detail, updateAps_wc_capacity_detail } from "@/api/aps/aps_wc_capacity_detail";
+
+export default {
+  name: "Aps_wc_capacity_detail",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工作中心月产能定义详情表格数据
+      aps_wc_capacity_detailList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        workcenterId: null,
+        year: null,
+        month: null,
+        day: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        workcenterId: [
+          { required: true, message: "工作中心ID不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工作中心月产能定义详情列表 */
+    getList() {
+      this.loading = true;
+      listAps_wc_capacity_detail(this.queryParams).then(response => {
+        this.aps_wc_capacity_detailList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        workcenterId: null,
+        year: null,
+        month: null,
+        day: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加工作中心月产能定义详情";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAps_wc_capacity_detail(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工作中心月产能定义详情";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAps_wc_capacity_detail(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAps_wc_capacity_detail(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工作中心月产能定义详情编号为"' + ids + '"的数据项?').then(function() {
+        return delAps_wc_capacity_detail(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/aps_wc_capacity_detail/export', {
+        ...this.queryParams
+      }, `aps_wc_capacity_detail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 323 - 0
src/views/aps/aps_workcenter/index.vue

@@ -0,0 +1,323 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="所属工厂" prop="factoryId">
+        <el-input
+          v-model="queryParams.factoryId"
+          placeholder="请输入所属工厂"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="所属产线" prop="productLineId">
+        <el-input
+          v-model="queryParams.productLineId"
+          placeholder="请输入所属产线"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作中心编号" prop="workcenterCode">
+        <el-input
+          v-model="queryParams.workcenterCode"
+          placeholder="请输入工作中心编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作中心名称" prop="workcenterName">
+        <el-input
+          v-model="queryParams.workcenterName"
+          placeholder="请输入工作中心名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录IP" prop="loginIp">
+        <el-input
+          v-model="queryParams.loginIp"
+          placeholder="请输入最后登录IP"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:aps_workcenter:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:aps_workcenter:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:aps_workcenter:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:aps_workcenter:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="aps_workcenterList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="工作中心ID" align="center" prop="sequenceId" />
+      <el-table-column label="所属工厂" align="center" prop="factoryId" />
+      <el-table-column label="所属产线" align="center" prop="productLineId" />
+      <el-table-column label="工作中心编号" align="center" prop="workcenterCode" />
+      <el-table-column label="工作中心名称" align="center" prop="workcenterName" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+      <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:aps_workcenter:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:aps_workcenter:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改APS工作中心信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="所属工厂" prop="factoryId">
+          <el-input v-model="form.factoryId" placeholder="请输入所属工厂" />
+        </el-form-item>
+        <el-form-item label="所属产线" prop="productLineId">
+          <el-input v-model="form.productLineId" placeholder="请输入所属产线" />
+        </el-form-item>
+        <el-form-item label="工作中心编号" prop="workcenterCode">
+          <el-input v-model="form.workcenterCode" placeholder="请输入工作中心编号" />
+        </el-form-item>
+        <el-form-item label="工作中心名称" prop="workcenterName">
+          <el-input v-model="form.workcenterName" placeholder="请输入工作中心名称" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAps_workcenter, getAps_workcenter, delAps_workcenter, addAps_workcenter, updateAps_workcenter } from "@/api/aps/aps_workcenter";
+
+export default {
+  name: "Aps_workcenter",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // APS工作中心信息表格数据
+      aps_workcenterList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        factoryId: null,
+        productLineId: null,
+        workcenterCode: null,
+        workcenterName: null,
+        status: null,
+        loginIp: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        factoryId: [
+          { required: true, message: "所属工厂不能为空", trigger: "blur" }
+        ],
+        productLineId: [
+          { required: true, message: "所属产线不能为空", trigger: "blur" }
+        ],
+        workcenterCode: [
+          { required: true, message: "工作中心编号不能为空", trigger: "blur" }
+        ],
+        workcenterName: [
+          { required: true, message: "工作中心名称不能为空", trigger: "blur" }
+        ],
+        status: [
+          { required: true, message: "帐号状态不能为空", trigger: "change" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询APS工作中心信息列表 */
+    getList() {
+      this.loading = true;
+      listAps_workcenter(this.queryParams).then(response => {
+        this.aps_workcenterList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        sequenceId: null,
+        factoryId: null,
+        productLineId: null,
+        workcenterCode: null,
+        workcenterName: null,
+        status: null,
+        delFlag: null,
+        loginIp: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.sequenceId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加APS工作中心信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const sequenceId = row.sequenceId || this.ids
+      getAps_workcenter(sequenceId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改APS工作中心信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.sequenceId != null) {
+            updateAps_workcenter(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAps_workcenter(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const sequenceIds = row.sequenceId || this.ids;
+      this.$modal.confirm('是否确认删除APS工作中心信息编号为"' + sequenceIds + '"的数据项?').then(function() {
+        return delAps_workcenter(sequenceIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/aps_workcenter/export', {
+        ...this.queryParams
+      }, `aps_workcenter_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 411 - 0
src/views/aps/aps_ws_capacity/index.vue

@@ -0,0 +1,411 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="工位ID" prop="workstationId">
+        <el-input
+          v-model="queryParams.workstationId"
+          placeholder="请输入工位ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="年份" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          placeholder="请输入年份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作周" prop="week">
+        <el-input
+          v-model="queryParams.week"
+          placeholder="请输入工作周"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作日" prop="day">
+        <el-input
+          v-model="queryParams.day"
+          placeholder="请输入工作日"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+        <el-input
+          v-model="queryParams.plannedCapacity"
+          placeholder="请输入规划产能(吨)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="扩充产能(吨)" prop="expandedCapacity">
+        <el-input
+          v-model="queryParams.expandedCapacity"
+          placeholder="请输入扩充产能(吨)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="平均天产能" prop="averageDailyCapacity">
+        <el-input
+          v-model="queryParams.averageDailyCapacity"
+          placeholder="请输入平均天产能"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录IP" prop="loginIp">
+        <el-input
+          v-model="queryParams.loginIp"
+          placeholder="请输入最后登录IP"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录时间" prop="loginDate">
+        <el-date-picker clearable
+          v-model="queryParams.loginDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择最后登录时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:aps_ws_capacity:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:aps_ws_capacity:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:aps_ws_capacity:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:aps_ws_capacity:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="aps_ws_capacityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="工位ID" align="center" prop="workstationId" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="工作周" align="center" prop="week" />
+      <el-table-column label="工作日" align="center" prop="day" />
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="扩充产能(吨)" align="center" prop="expandedCapacity" />
+      <el-table-column label="平均天产能" align="center" prop="averageDailyCapacity" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+      <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+      <el-table-column label="最后登录时间" align="center" prop="loginDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.loginDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:aps_ws_capacity:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:aps_ws_capacity:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改工位月产能定义对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="工位ID" prop="workstationId">
+          <el-input v-model="form.workstationId" placeholder="请输入工位ID" />
+        </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-input v-model="form.year" placeholder="请输入年份" />
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" />
+        </el-form-item>
+        <el-form-item label="工作周" prop="week">
+          <el-input v-model="form.week" placeholder="请输入工作周" />
+        </el-form-item>
+        <el-form-item label="工作日" prop="day">
+          <el-input v-model="form.day" placeholder="请输入工作日" />
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="扩充产能(吨)" prop="expandedCapacity">
+          <el-input v-model="form.expandedCapacity" placeholder="请输入扩充产能(吨)" />
+        </el-form-item>
+        <el-form-item label="平均天产能" prop="averageDailyCapacity">
+          <el-input v-model="form.averageDailyCapacity" placeholder="请输入平均天产能" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+        <el-form-item label="最后登录时间" prop="loginDate">
+          <el-date-picker clearable
+            v-model="form.loginDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择最后登录时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAps_ws_capacity, getAps_ws_capacity, delAps_ws_capacity, addAps_ws_capacity, updateAps_ws_capacity } from "@/api/aps/aps_ws_capacity";
+
+export default {
+  name: "Aps_ws_capacity",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工位月产能定义表格数据
+      aps_ws_capacityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        workstationId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        workstationId: [
+          { required: true, message: "工位ID不能为空", trigger: "blur" }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ],
+        month: [
+          { required: true, message: "月份不能为空", trigger: "blur" }
+        ],
+        week: [
+          { required: true, message: "工作周不能为空", trigger: "blur" }
+        ],
+        day: [
+          { required: true, message: "工作日不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工位月产能定义列表 */
+    getList() {
+      this.loading = true;
+      listAps_ws_capacity(this.queryParams).then(response => {
+        this.aps_ws_capacityList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        workstationId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加工位月产能定义";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAps_ws_capacity(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工位月产能定义";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAps_ws_capacity(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAps_ws_capacity(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工位月产能定义编号为"' + ids + '"的数据项?').then(function() {
+        return delAps_ws_capacity(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/aps_ws_capacity/export', {
+        ...this.queryParams
+      }, `aps_ws_capacity_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 480 - 0
src/views/aps/aps_ws_capacity_detail/index.vue

@@ -0,0 +1,480 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="工作中心ID" prop="workcenterId">
+        <el-input
+          v-model="queryParams.workcenterId"
+          placeholder="请输入工作中心ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="年份" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          placeholder="请输入年份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工作周" prop="week">
+        <el-input
+          v-model="queryParams.week"
+          placeholder="请输入工作周"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="day">
+        <el-input
+          v-model="queryParams.day"
+          placeholder="请输入日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="班次ID" prop="classId">
+        <el-input
+          v-model="queryParams.classId"
+          placeholder="请输入班次ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="班次名称" prop="className">
+        <el-input
+          v-model="queryParams.className"
+          placeholder="请输入班次名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="开始时间" prop="startTime">
+        <el-date-picker clearable
+          v-model="queryParams.startTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择开始时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="结束时间" prop="endTime">
+        <el-date-picker clearable
+          v-model="queryParams.endTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择结束时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+        <el-input
+          v-model="queryParams.plannedCapacity"
+          placeholder="请输入规划产能(吨)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="已排产产能" prop="plannedSumCapacity">
+        <el-input
+          v-model="queryParams.plannedSumCapacity"
+          placeholder="请输入已排产产能"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录IP" prop="loginIp">
+        <el-input
+          v-model="queryParams.loginIp"
+          placeholder="请输入最后登录IP"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="最后登录时间" prop="loginDate">
+        <el-date-picker clearable
+          v-model="queryParams.loginDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择最后登录时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:aps_ws_capacity_detail:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:aps_ws_capacity_detail:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:aps_ws_capacity_detail:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:aps_ws_capacity_detail:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="aps_ws_capacity_detailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="工作中心ID" align="center" prop="workcenterId" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="工作周" align="center" prop="week" />
+      <el-table-column label="日期" align="center" prop="day" />
+      <el-table-column label="班次ID" align="center" prop="classId" />
+      <el-table-column label="班次名称" align="center" prop="className" />
+      <el-table-column label="开始时间" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="结束时间" align="center" prop="endTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="已排产产能" align="center" prop="plannedSumCapacity" />
+      <el-table-column label="排产单号" align="center" prop="plannedOrder" />
+      <el-table-column label="排产产能" align="center" prop="plannedOrderCapacity" />
+      <el-table-column label="排程时间" align="center" prop="plannedOrderDate" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+      <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+      <el-table-column label="最后登录时间" align="center" prop="loginDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.loginDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:aps_ws_capacity_detail:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:aps_ws_capacity_detail:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改工位月产能详情定义对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="工作中心ID" prop="workcenterId">
+          <el-input v-model="form.workcenterId" placeholder="请输入工作中心ID" />
+        </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-input v-model="form.year" placeholder="请输入年份" />
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" />
+        </el-form-item>
+        <el-form-item label="工作周" prop="week">
+          <el-input v-model="form.week" placeholder="请输入工作周" />
+        </el-form-item>
+        <el-form-item label="日期" prop="day">
+          <el-input v-model="form.day" placeholder="请输入日期" />
+        </el-form-item>
+        <el-form-item label="班次ID" prop="classId">
+          <el-input v-model="form.classId" placeholder="请输入班次ID" />
+        </el-form-item>
+        <el-form-item label="班次名称" prop="className">
+          <el-input v-model="form.className" placeholder="请输入班次名称" />
+        </el-form-item>
+        <el-form-item label="开始时间" prop="startTime">
+          <el-date-picker clearable
+            v-model="form.startTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择开始时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="结束时间" prop="endTime">
+          <el-date-picker clearable
+            v-model="form.endTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择结束时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="已排产产能" prop="plannedSumCapacity">
+          <el-input v-model="form.plannedSumCapacity" placeholder="请输入已排产产能" />
+        </el-form-item>
+        <el-form-item label="排产单号" prop="plannedOrder">
+          <el-input v-model="form.plannedOrder" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排产产能" prop="plannedOrderCapacity">
+          <el-input v-model="form.plannedOrderCapacity" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排程时间" prop="plannedOrderDate">
+          <el-input v-model="form.plannedOrderDate" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+        <el-form-item label="最后登录时间" prop="loginDate">
+          <el-date-picker clearable
+            v-model="form.loginDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择最后登录时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAps_ws_capacity_detail, getAps_ws_capacity_detail, delAps_ws_capacity_detail, addAps_ws_capacity_detail, updateAps_ws_capacity_detail } from "@/api/aps/aps_ws_capacity_detail";
+
+export default {
+  name: "Aps_ws_capacity_detail",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工位月产能详情定义表格数据
+      aps_ws_capacity_detailList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        workcenterId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        classId: null,
+        className: null,
+        startTime: null,
+        endTime: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        workcenterId: [
+          { required: true, message: "工作中心ID不能为空", trigger: "blur" }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工位月产能详情定义列表 */
+    getList() {
+      this.loading = true;
+      listAps_ws_capacity_detail(this.queryParams).then(response => {
+        this.aps_ws_capacity_detailList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        workcenterId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        classId: null,
+        className: null,
+        startTime: null,
+        endTime: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加工位月产能详情定义";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAps_ws_capacity_detail(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工位月产能详情定义";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAps_ws_capacity_detail(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAps_ws_capacity_detail(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工位月产能详情定义编号为"' + ids + '"的数据项?').then(function() {
+        return delAps_ws_capacity_detail(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/aps_ws_capacity_detail/export', {
+        ...this.queryParams
+      }, `aps_ws_capacity_detail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 358 - 0
src/views/aps/aps_ws_res_capacity/index.vue

@@ -0,0 +1,358 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+
+      <el-form-item label="年份" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          placeholder="请输入年份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="工作日" prop="day">
+        <el-input
+          v-model="queryParams.day"
+          placeholder="请输入工作日"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:aps_ws_res_capacity:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:aps_ws_res_capacity:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:aps_ws_res_capacity:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:aps_ws_res_capacity:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="aps_ws_res_capacityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="资源ID" align="center" prop="resourceId" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="工作周" align="center" prop="week" />
+      <el-table-column label="工作日" align="center" prop="day" />
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="扩充产能(吨)" align="center" prop="expandedCapacity" />
+      <el-table-column label="平均天产能" align="center" prop="averageDailyCapacity" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+      <el-table-column label="最后登录IP" align="center" prop="loginIp" />
+      <el-table-column label="最后登录时间" align="center" prop="loginDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.loginDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:aps_ws_res_capacity:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:aps_ws_res_capacity:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改工作中心资源月产能定义对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="资源ID" prop="resourceId">
+          <el-input v-model="form.resourceId" placeholder="请输入资源ID" />
+        </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-input v-model="form.year" placeholder="请输入年份" />
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" />
+        </el-form-item>
+        <el-form-item label="工作周" prop="week">
+          <el-input v-model="form.week" placeholder="请输入工作周" />
+        </el-form-item>
+        <el-form-item label="工作日" prop="day">
+          <el-input v-model="form.day" placeholder="请输入工作日" />
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="扩充产能(吨)" prop="expandedCapacity">
+          <el-input v-model="form.expandedCapacity" placeholder="请输入扩充产能(吨)" />
+        </el-form-item>
+        <el-form-item label="平均天产能" prop="averageDailyCapacity">
+          <el-input v-model="form.averageDailyCapacity" placeholder="请输入平均天产能" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="最后登录IP" prop="loginIp">
+          <el-input v-model="form.loginIp" placeholder="请输入最后登录IP" />
+        </el-form-item>
+        <el-form-item label="最后登录时间" prop="loginDate">
+          <el-date-picker clearable
+            v-model="form.loginDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择最后登录时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listAps_ws_res_capacity, getAps_ws_res_capacity, delAps_ws_res_capacity, addAps_ws_res_capacity, updateAps_ws_res_capacity } from "@/api/aps/aps_ws_res_capacity";
+
+export default {
+  name: "Aps_ws_res_capacity",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工作中心资源月产能定义表格数据
+      aps_ws_res_capacityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        resourceId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        resourceId: [
+          { required: true, message: "资源ID不能为空", trigger: "blur" }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ],
+        month: [
+          { required: true, message: "月份不能为空", trigger: "blur" }
+        ],
+        week: [
+          { required: true, message: "工作周不能为空", trigger: "blur" }
+        ],
+        day: [
+          { required: true, message: "工作日不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工作中心资源月产能定义列表 */
+    getList() {
+      this.loading = true;
+      listAps_ws_res_capacity(this.queryParams).then(response => {
+        this.aps_ws_res_capacityList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        resourceId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加工作中心资源月产能定义";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getAps_ws_res_capacity(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工作中心资源月产能定义";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateAps_ws_res_capacity(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addAps_ws_res_capacity(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除工作中心资源月产能定义编号为"' + ids + '"的数据项?').then(function() {
+        return delAps_ws_res_capacity(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/aps_ws_res_capacity/export', {
+        ...this.queryParams
+      }, `aps_ws_res_capacity_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 141 - 0
src/views/aps/presalesorder/import-dialog.vue

@@ -0,0 +1,141 @@
+<template>
+  <!-- 上传 -->
+  <el-dialog :title="defModule" :visible.sync="dialogVisible" width="40%">
+    <el-form label-width="110px" class="zw-criterion">
+      <el-form-item label="选择文件">
+        <el-upload
+          class="avatar-uploader"
+          action="#"
+          :show-file-list="false"
+          :http-request="handlSuccess"
+          :before-upload="beforeUpload"
+        >
+          <el-button icon="el-icon-plus" size="small" type="primary"
+            >文件上传</el-button
+          >
+          <div slot="tip" class="el-upload__tip">
+            只能上传excel文件,点击
+            <el-link
+              type="primary"
+              :underline="false"
+              @click="downLoadTemplate()"
+            >
+              下载模板</el-link
+            >
+          </div>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="上传列表">
+        <div class="imgs-box">
+          <p v-for="(item, index) in attaments" :key="index" class="imgs-p">
+            <span> {{ item.name }}</span>
+            <el-link @click="delFileList(index)" type="primary">删除</el-link>
+          </p>
+        </div>
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button size="small" @click="dialogVisible = false">关 闭</el-button>
+      <el-button size="small" @click="upload" type="primary" :loading="loading">上 传</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { importFile, importTemplate } from '@/api/aps/presalesorder';
+
+export default {
+  props: {
+    // eslint-disable-next-line vue/require-prop-type-constructor
+    defModule: ''
+  },
+  //注册组件
+  data() {
+    return {
+      loading: false, // 加载动画
+      showViewer: false, // 显示查看器
+      dialogVisible: false,
+      uploadShow: false,
+      module: '',
+      attaments: [], //上传文件
+      file: ''
+    };
+  },
+  created() {},
+  methods: {
+    open() {
+      this.attaments = [];
+      this.module = '';
+      this.dialogVisible = true;
+    },
+    //删除附件
+    delFileList(index) {
+      this.attaments.splice(index, 1);
+    },
+    //上传限制
+    beforeUpload(file) {
+      const isLt10M = file.size / 1024 / 1024 < 10;
+      if (!isLt10M) {
+        this.$message.error('导入单文件大小不能超过 10MB!');
+      }
+      return isLt10M;
+    },
+    //图片上传
+    handlSuccess(param) {
+      this.file = param.file;
+      this.attaments.push(param.file);
+    },
+    // 文件上传
+    async upload() {
+      if (this.attaments.length == 0) {
+        return this.$message.warning('文件不能为空!');
+      }
+      const formData = new FormData();
+      this.attaments.forEach((item, index) => {
+        formData.append(`importExcels`, item);
+      });
+      this.loading = true;
+      importFile(formData)
+        .then((res) => {
+          this.$message.success('操作成功!');
+          this.dialogVisible = false;
+          this.$emit('success');
+          this.loading = false;
+        })
+        .catch((data) => {
+          this.loading = false;
+          if (data.code != -1) {
+            this.$message.error(data.message);
+          }
+        })
+    },
+    //下载模板
+    downLoadTemplate(){
+      importTemplate()
+    }
+  }
+};
+</script>
+
+<style lang="scss">
+.zw-table-header {
+  float: right;
+}
+
+.imgs-box .imgs-p {
+  height: 30px;
+  background: #f0f3f3;
+  line-height: 30px;
+  width: 372px;
+  margin-bottom: 5px;
+  padding: 0 10px;
+  display: flex;
+  justify-content: space-between;
+}
+.zw-criterion-normal {
+  padding: 20px 0 0 0;
+}
+.el-main {
+  overflow: hidden;
+}
+</style>

+ 22 - 9
src/views/aps/presalesorder/index.vue

@@ -181,13 +181,13 @@
       </ele-modal>
 
       <!-- 直报系统导入对话框 -->
-      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <!-- <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
         <el-upload class="avatar-uploader" action="#" :show-file-list="false" :http-request="uploadFile"
           :before-upload="beforeUpload" :on-change="handleChange" ref="uploadFile">
           <el-button type="warning" size="mini">批量导入</el-button>
         </el-upload>
 
-      </el-dialog>
+      </el-dialog> -->
 
       <ele-modal title="选择工厂" :visible.sync="factoriesVisible" :before-close="handleCancel"
         :close-on-click-modal="false" :close-on-press-escape="false" append-to-body width="20%" :maxable="true">
@@ -202,7 +202,11 @@
         </div>
       </ele-modal>
     </el-card>
-
+    <importDialog
+      :defModule="upload.title"
+      ref="importDialogRef"
+      @success="reload"
+    />
   </div>
 </template>
 
@@ -211,15 +215,13 @@ import { estimateDeliveryDates, createAll, convertToSalesOrder, importTemplate,
 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';
-
+import importDialog from "./import-dialog.vue";
 export default {
   name: "PreSalesorder",
 
-  components: { modalTitle, search },
+  components: { modalTitle, search, importDialog },
   data() {
     return {
       fullscreen: false,
@@ -377,6 +379,13 @@ export default {
           align: 'center',
           width: 120,
         },
+        {
+          prop:'sendNum',
+          label: '发货数量',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
         {
           prop: 'materialQuantity',
           label: '物料数量',
@@ -455,7 +464,10 @@ export default {
       this.factoryList = res.data;
     },
     datasource({ page, where, limit }) {
-      const res = listSalesorder({ ...where, page, limit });
+      let pageNum = page;
+      let size = limit;
+      where.queryType = 1; //查询类型(1:预销售单页面查询;2:已转销售单页面查询)
+      const res = listSalesorder({ ...where, pageNum, size });
       return res;
     },
     reload(where) {
@@ -627,7 +639,8 @@ export default {
     /** 导入按钮操作 */
     handleImport() {
       this.upload.title = "销售订单数据导入";
-      this.upload.open = true;
+      // this.upload.open = true;
+      this.$refs.importDialogRef.open();
     },
     //文件上传
     uploadFile(param) {

+ 4 - 4
src/views/aps/presalesorder/search.vue

@@ -70,10 +70,10 @@ export default {
           value: '1',
           label: '已预估'
         },
-        {
-          value: '2',
-          label: '已转销售单'
-        }
+        // {
+        //   value: '2',
+        //   label: '已转销售单'
+        // }
       ]
     };
   },

+ 392 - 0
src/views/aps/team_capacity/index.vue

@@ -0,0 +1,392 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="班组" prop="teamId">
+        <el-select v-model="form.teamId"  placsseholder="请选择班组">
+                                <el-option v-for="item in  team_select" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+                        </el-select>
+      </el-form-item>
+      <el-form-item label="年份" prop="year">
+         <el-select v-model="queryParams.year"  placeholder="请选择年份" clearable>
+                        <el-option v-for="item in  year_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+                </el-select>
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-select v-model="queryParams.month"  placeholder="请选择月份" clearable>
+                          <el-option v-for="item in month_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+                        </el-select>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出</el-button>
+      </el-col>
+
+    </el-row>
+
+    <el-table v-loading="loading" :data="capacityList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="班组" align="center" prop="teamId" >
+        <template slot-scope="scope">{{getItemById(scope.row.teamId)}}</template>
+      </el-table-column>
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="工作日天数" align="center" prop="expandedCapacity" />
+      <el-table-column label="平均天产能(KG)" align="center" prop="averageDailyCapacity" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleDetail(scope.row)"
+
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+<!-- 添加或修改销售订单对话框 -->
+    <el-dialog :title="titleDetail" :visible.sync="openDetail" width="70%" :close-on-click-modal="false" modal-append-to-body>
+
+      <el-table v-loading="loading" :data="team_capacity_detailList" >
+        <el-table-column label="序号" align="center" prop="id" />
+        <el-table-column label="年份" align="center" prop="year" />
+        <el-table-column label="月份" align="center" prop="month" />
+        <el-table-column label="日期" align="center" prop="day" />
+        <el-table-column label="班组" align="center" prop="teamId" >
+          <template slot-scope="scope">{{getItemById(scope.row.teamId)}}</template>
+        </el-table-column>
+        <!-- <el-table-column label="预计交付日期" align="center" prop="deliverDay" /> -->
+        <el-table-column label="规划产能(KG)" align="center" prop="plannedCapacity" />
+        <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>
+      <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="openDetail=false">关闭</el-button>
+      </div>
+    </el-dialog>
+
+
+    <!-- 添加或修改班组月产能定义对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="班组" prop="teamId">
+                <el-select v-model="form.teamId"  placeholder="请选择班组">
+                        <el-option v-for="item in  team_select" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+                </el-select>
+              </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-select v-model="form.year"  placeholder="请选择年份">
+                  <el-option v-for="item in  year_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-select v-model="form.month"  placeholder="请选择月份">
+            <el-option v-for="item in month_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="工作日天数" prop="expandedCapacity">
+          <el-input v-model="form.expandedCapacity" placeholder="请输入工作日天数" />
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="getWorkDay">同步工作日</el-button>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listSchedule, getSchedule, delSchedule, addSchedule, updateSchedule } from "@/api/aps_workday_schedule/schedule";
+
+import { listCapacity, getCapacity, delCapacity, addCapacity, updateCapacity } from "@/api/aps/team_capacity";
+
+import { teamPage } from "@/api/mainData/index";
+
+import { listTeam_capacity_detail,listDetail, getTeam_capacity_detail, delTeam_capacity_detail, addTeam_capacity_detail, updateTeam_capacity_detail } from "@/api/aps/team_capacity_detail";
+
+export default {
+  name: "Capacity",
+    // dicts: ['year_select','month_select'],
+  data() {
+    return {
+      titleDetail:"班组排程详情",
+      openDetail:false,
+      team_capacity_detailList:[],
+      year_select:[
+        {"value":2025},{"value":2026},{"value":2027},{"value":2028}
+        ],
+      month_select:[
+        {"value":1},{"value":2},{"value":3},{"value":4},
+        {"value":5},{"value":6},{"value":7},{"value":8},
+        {"value":9},{"value":10},{"value":11},{"value":12},
+        ],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      //班组数组
+      team_select:[],
+      // 班组月产能定义表格数据
+      capacityList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        year: null,
+        month: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ],
+        month: [
+          { required: true, message: "月份不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTeam();
+  },
+  methods: {
+
+    getItemById(id) {
+         var node = this.team_select.find(item => item.id === id);
+         if (node == null||node == undefined) return '';else
+          return node.name;
+        },
+    /** 查询APS月度班制排班列表 */
+    getWorkDay() {
+      this.loading = true;
+      listSchedule({"year":this.form.year,"month":this.form.month}).then(response => {
+        this.scheduleList = response.data;
+       if (this.scheduleList==null||this.scheduleList.length==0) {
+        this.$message.success("没有配置工作日");
+         this.form.expandedCapacity = 0;
+       }
+       else this.form.expandedCapacity = this.scheduleList[0].workdayCount;
+      });
+    },
+    /** 查询班组列表 */
+    getTeam() {
+      this.loading = true;
+      teamPage({size:100}).then(response => {
+        // console.log(response);
+        this.team_select = response.list;
+       if (this.team_select==null||this.team_select.length==0) {
+        this.$message.success("没有配置班组");
+       }
+
+      });
+    },
+
+    /** 查询班组月产能定义列表 */
+    getList() {
+      this.loading = true;
+      listCapacity(this.queryParams).then(response => {
+        // console.log(response)
+        this.capacityList = response.data.data;
+        this.total = this.capacityList.length;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        year: null,
+        month: null,
+        plannedCapacity: null,
+        expandedCapacity: null,
+        averageDailyCapacity: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      // this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      // this.resetForm("queryForm");
+      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 = "添加班组月产能定义";
+    },
+    /** 详情按钮操作 */
+    handleDetail(row) {
+      this.openDetail = true;
+      const id = row.id || this.ids
+      this.loading = true;
+      listDetail(id).then(response => {
+        console.log(response)
+        this.team_capacity_detailList = response.data.data;
+        this.loading = false;
+      });
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getCapacity(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改班组月产能定义";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateCapacity(this.form).then(response => {
+             this.$message.success("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addCapacity(this.form).then(response => {
+             this.$message.success("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除班组月产能定义编号为"' + ids + '"的数据项?').then(function() {
+        return delCapacity(ids);
+      }).then(() => {
+        this.getList();
+       this.$message.success("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/capacity/export', {
+        ...this.queryParams
+      }, `capacity_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 344 - 0
src/views/aps/team_capacity_detail/index.vue

@@ -0,0 +1,344 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="班组" prop="teamId">
+              <el-select v-model="form.teamId"  placeholder="请选择班组">
+                      <el-option v-for="item in  team_select" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+              </el-select>
+            </el-form-item>
+      <el-form-item label="年份" prop="year">
+        <el-select v-model="form.year"  placeholder="请选择年份">
+                <el-option v-for="item in  dict.type.year_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-select v-model="form.month"  placeholder="请选择月份">
+          <el-option v-for="item in dict.type.month_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+        </el-select>
+      </el-form-item>
+
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['aps:team_capacity_detail:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:team_capacity_detail:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:team_capacity_detail:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['aps:team_capacity_detail:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="team_capacity_detailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="班组ID" align="center" prop="teamId" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="日期" align="center" prop="day" />
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="已排产产能" align="center" prop="plannedSumCapacity" />
+      <el-table-column label="排产单号" align="center" prop="plannedOrder" />
+      <el-table-column label="排产产能" align="center" prop="plannedOrderCapacity" />
+      <el-table-column label="排程时间" align="center" prop="plannedOrderDate" />
+
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['aps:team_capacity_detail:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['aps:team_capacity_detail:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改班组月产能详情定义对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="班组" prop="teamId">
+                <el-select v-model="form.teamId"  placeholder="请选择班组">
+                        <el-option v-for="item in  team_select" :key="item.id" :label="item.name" :value="item.id" ></el-option>
+                </el-select>
+              </el-form-item>
+        <el-form-item label="年份" prop="year">
+                <el-select v-model="form.year"  placeholder="请选择年份">
+                        <el-option v-for="item in  dict.type.year_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="月份" prop="month">
+                <el-select v-model="form.month"  placeholder="请选择月份">
+                  <el-option v-for="item in dict.type.month_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+                </el-select>
+              </el-form-item>
+        <el-form-item label="日期" prop="day">
+          <el-input v-model="form.day" placeholder="请输入日期" />
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="已排产产能" prop="plannedSumCapacity">
+          <el-input v-model="form.plannedSumCapacity" placeholder="请输入已排产产能" />
+        </el-form-item>
+        <el-form-item label="排产单号" prop="plannedOrder">
+          <el-input v-model="form.plannedOrder" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排产产能" prop="plannedOrderCapacity">
+          <el-input v-model="form.plannedOrderCapacity" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排程时间" prop="plannedOrderDate">
+          <el-input v-model="form.plannedOrderDate" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listSchedule, getSchedule, delSchedule, addSchedule, updateSchedule } from "@/api/aps_workday_schedule/schedule";
+
+
+import { listTeam_capacity_detail, getTeam_capacity_detail, delTeam_capacity_detail, addTeam_capacity_detail, updateTeam_capacity_detail } from "@/api/aps/team_capacity_detail";
+
+import { teamPage } from "@/api/mainData/index";
+
+export default {
+  name: "Team_capacity_detail",
+   dicts: ['year_select','month_select'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      //班组数组
+      team_select:[],
+      // 班组月产能详情定义表格数据
+      team_capacity_detailList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        year: null,
+        month: null,
+        day: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getTeam();
+  },
+  methods: {
+    checkedChange(index) {
+      this.capacityList[index].checked = !this.capacityList[index].checked;
+    },
+    /** 查询班组列表 */
+    getTeam() {
+      this.loading = true;
+      teamPage({size:100}).then(response => {
+        this.team_select = response.rows;
+       if (this.team_select==null||this.team_select.length==0) {
+         this.$modal.msgSuccess("没有配置班组");
+       }
+
+      });
+    },
+    /** 查询班组月产能详情定义列表 */
+    getList() {
+      this.loading = true;
+      listTeam_capacity_detail(this.queryParams).then(response => {
+        this.team_capacity_detailList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        year: null,
+        month: null,
+        day: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加班组月产能详情定义";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getTeam_capacity_detail(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改班组月产能详情定义";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateTeam_capacity_detail(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addTeam_capacity_detail(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除班组月产能详情定义编号为"' + ids + '"的数据项?').then(function() {
+        return delTeam_capacity_detail(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/team_capacity_detail/export', {
+        ...this.queryParams
+      }, `team_capacity_detail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 871 - 0
src/views/aps/transferred/index.vue

@@ -0,0 +1,871 @@
+<template>
+
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <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" @select="handleSelect"
+        @done="onDone">
+        <!-- <template v-slot:toolbar>
+          <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" @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="ids.length == 0" @click="handleSaleorder">转销售订单</el-button>
+        </template> -->
+        <template v-slot:status="{ row }">
+          {{ row.status == 0 ? '未预估' : row.status == 1 ? '已预估' : '已转销售单' }}
+        </template>
+
+        <!-- 操作列 -->
+        <!-- <template v-slot:action="{ row }">
+          <el-link type="primary" :underline="false" icon="el-icon-edit" @click="handleUpdate(row)">
+            修改
+          </el-link>
+          <el-popconfirm class="ele-action" title='是否确认删除此数据?' @confirm="handleDelete(row)">
+            <template v-slot:reference>
+              <el-link type="danger" :underline="false" icon="el-icon-delete">
+                删除
+              </el-link>
+            </template>
+          </el-popconfirm>
+        </template> -->
+      </ele-pro-table>
+
+
+
+      <!-- 添加或修改销售订单对话框 -->
+      <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">
+        <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" />
+          <el-table-column label="日期" align="center" prop="day" />
+          <el-table-column label="预计交付日期" align="center" prop="deliverDay" />
+          <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+          <el-table-column label="已排产产能" align="center" prop="plannedSumCapacity" />
+          <el-table-column label="未排产产能" align="center" prop="unplannedSumCapacity" />
+          <el-table-column label="本次排产产能" align="center" prop="currentPlannedSumCapacity" />
+          <el-table-column label="已排产单号列表" align="center" prop="plannedOrder" />
+          <el-table-column label="已排产产能列表" align="center" prop="plannedOrderCapacity" />
+        </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>
+      </ele-modal>
+
+      <!-- 添加或修改销售订单对话框 -->
+      <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">
+              <el-form-item label="销售订单" prop="preSalesOrderNumber">
+                <el-input v-model="form.preSalesOrderNumber" placeholder="请输入销售订单" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="客户代号" prop="customerCode">
+                <el-input v-model="form.customerCode" placeholder="请输入客户代号" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="客户名称" prop="customerName">
+                <el-input v-model="form.customerName" placeholder="请输入客户名称" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="产品描述" prop="productDescription">
+                <el-input v-model="form.productDescription" type="textarea" placeholder="请输入内容" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="产品编码" prop="productCode">
+                <el-input v-model="form.productCode" placeholder="请输入产品编码" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="订单数量" prop="orderQuantity">
+                <el-input v-model="form.orderQuantity" placeholder="请输入订单数量" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="单位" prop="unit">
+                <el-input v-model="form.unit" placeholder="请输入单位" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="重量" prop="weightKg">
+                <el-input v-model="form.weightKg" placeholder="请输入重量" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="客户交期" prop="customerDeliveryDate">
+                <el-date-picker clearable v-model="form.customerDeliveryDate" type="date" value-format="yyyy-MM-dd"
+                  placeholder="请选择客户交期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="生产交期" prop="productionDeliveryDate">
+                <el-date-picker clearable v-model="form.productionDeliveryDate" type="date" value-format="yyyy-MM-dd"
+                  placeholder="请选择生产交期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="材料编码" prop="materialCode">
+                <el-input v-model="form.materialCode" placeholder="请输入材料编码" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="材料描述" prop="materialDescription">
+                <el-input v-model="form.materialDescription" type="textarea" placeholder="请输入内容" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="物料数量" prop="materialQuantity">
+                <el-input v-model="form.materialQuantity" placeholder="请输入物料数量" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="物料单位" prop="materialUnit">
+                <el-input v-model="form.materialUnit" placeholder="请输入物料单位" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="物料重量" prop="materialWeightKg">
+                <el-input v-model="form.materialWeightKg" placeholder="请输入物料重量" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="编号" prop="productionCodes">
+                <el-input v-model="form.productionCodes" placeholder="请输入编号,用','隔开" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </ele-modal>
+
+      <!-- 直报系统导入对话框 -->
+      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+        <el-upload class="avatar-uploader" action="#" :show-file-list="false" :http-request="uploadFile"
+          :before-upload="beforeUpload" :on-change="handleChange" ref="uploadFile">
+          <el-button type="warning" size="mini">批量导入</el-button>
+        </el-upload>
+
+      </el-dialog>
+
+      <ele-modal title="选择工厂" :visible.sync="factoriesVisible" :before-close="handleCancel"
+        :close-on-click-modal="false" :close-on-press-escape="false" append-to-body width="20%" :maxable="true">
+        <el-row>
+          <el-select v-model="factoriesId">
+            <el-option v-for="item of factoryList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </el-row>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="handleSubmit">确 定</el-button>
+          <el-button @click="handleCancel">取 消</el-button>
+        </div>
+      </ele-modal>
+    </el-card>
+
+  </div>
+</template>
+
+<script>
+import { estimateDeliveryDates, createAll, convertToSalesOrder, importTemplate, exportFile, importFile, listSalesorder, getSalesOrder, delSalesorder, addSalesorder, updateSalesorder, listSalesOrderExpect, occupyRes, listSalesOrderOccupyRes, listSalesorderExpectAll, occupyAllRes, getQueryFactory } 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, search },
+  data() {
+    return {
+      fullscreen: false,
+      fileList: [],
+      isSubmitting: true,
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        // headers: {
+        // 	Authorization: "Bearer " +getToken()
+        // },
+        // 上传的地址
+        url: API_BASE_URL + "/aps/presalesorder/importData"
+      },
+      // 遮罩层
+      loading: false,
+      // 选中数组
+      ids: [],
+      selectionData: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 销售订单表格数据
+      salesorderList: [],
+      // 销售订单交期预估表格数据
+      salesOrderExpectList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 弹出层标题
+      titleExpect: "交期确定",
+      // 是否显示弹出层
+      openExpect: false,
+
+      columns: [
+        // {
+        //   width: 45,
+        //   type: 'selection',
+        //   columnKey: 'selection',
+        //   align: 'center',
+        //   reserveSelection: true
+        // },
+        {
+          columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'preSalesOrderNumber',
+          label: '销售订单号',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'customerCode',
+          label: '客户代号',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        {
+          prop: 'customerName',
+          label: '客户名称',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'productDescription',
+          label: '产品描述',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'productCode',
+          label: '产品编码',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'orderQuantity',
+          label: '订单数量',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        {
+          prop: 'unit',
+          label: '单位',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        {
+          prop: 'weightKg',
+          label: '重量',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        {
+          prop: 'customerDeliveryDate',
+          label: '客户交期',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'productionDeliveryDate',
+          label: '生产交期',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'materialCode',
+          label: '材料编码',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'materialDescription',
+          label: '材料描述',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop:'productionCodes',
+          label: '编号',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 140,
+        },
+        {
+          prop: 'factoriesName',
+          label: '工厂名称',
+          showOverflowTooltip: true,
+          align: 'center',
+          width: 120,
+        },
+        {
+          prop: 'materialQuantity',
+          label: '物料数量',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        {
+          prop: 'materialUnit',
+          label: '物料单位',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        {
+          prop: 'materialWeightKg',
+          label: '物料重量(kg)',
+          showOverflowTooltip: true,
+          align: 'center',
+        },
+        // {
+        //   prop: 'status',
+        //   slot: 'status',
+        //   width: 120,
+        //   label: '订单状态',
+        //   showOverflowTooltip: true,
+        //   align: 'center',
+        // },
+        // {
+        //   columnKey: 'action',
+        //   label: '操作',
+        //   width: 150,
+        //   align: 'center',
+        //   resizable: false,
+        //   slot: 'action',
+        //   fixed: 'right'
+        // }
+      ],
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        preSalesOrderNumber: [
+          { required: true, message: "销售订单不能为空", trigger: "blur" }
+        ],
+      },
+      selDataIds: [],
+      whereForm: {},
+      factoriesId: '',
+      factoriesVisible: false,
+      factoryList: []
+    };
+  },
+  async created() {
+    await this.reload();
+    await this.getFactoryList();
+  },
+  methods: {
+    handleSelect(selection, row) {
+      const matchField = 'preSalesOrderNumber';
+      const isSelected = selection.some(item => item.id === row.id);
+      const list = this.$refs.tableRef.getData()
+      const matchedRows = list.filter(
+        item => item[matchField] === row[matchField]
+      )
+
+      // 批量设置选择状态
+      this.$nextTick(() => {
+        matchedRows.forEach(item => {
+          this.$refs.tableRef.toggleRowSelection(item, isSelected) 
+        })
+      })
+    },
+
+    async getFactoryList() {
+      const res = await getQueryFactory();
+      console.log(res, 'data工厂')
+      this.factoryList = res.data;
+    },
+    datasource({ page, where, limit }) {
+      where.queryType = 2; //查询类型(1:预销售单页面查询;2:已转销售单页面查询)
+      let pageNum = page;
+      let size = limit;
+      const res = listSalesorder({ ...where, pageNum, size });
+      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);
+      });
+    },
+
+    /** 修改按钮操作 */
+    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) {
+      let ids = []
+      if (row.id) {
+        ids = [row.id]
+      } else {
+        ids = this.ids
+      }
+      this.$confirm(`是否确认删除该数据?`, '提示')
+        .then(() => {
+          delSalesorder({ ids: 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;
+      }
+      this.factoriesId = '';
+      this.factoriesVisible = true;
+    },
+
+    async handleSubmit() {
+      const res = await estimateDeliveryDates({ ids: this.ids, factoriesId: this.factoriesId })
+      if (res.code == 0) {
+        this.$message.success("操作成功");
+        this.factoriesVisible = false;
+        this.reload();
+      }
+    },
+    handleCancel() {
+      this.factoriesVisible = false;
+    },
+    /*交期预估*/
+    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.currentPlannedSumCapacity = item.currentPlannedSumCapacity;
+        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) {
+      let fd = new FormData();
+      this.fileList.forEach((item) => {
+        fd.append('importExcel', item.raw);
+      });
+      importFile(fd)
+        .then((res) => {
+          this.$refs.uploadFile.clearFiles();
+
+          this.upload.open = false;
+          this.reload();
+        })
+        .catch((data) => {
+          if (data.code != -1) {
+            this.$message.error(data.message);
+          }
+        })
+        .finally(() => {
+          this.$refs.uploadFile.clearFiles();
+        });
+    },
+    //上传限制
+    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;
+      let params = this.whereForm ? this.whereForm : []
+      exportFile(params).then(res => {
+        this.loading = false;
+
+      });
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate(this.whereForm).then(res => {
+        this.$message.success("模板下载成功");
+      });
+    },
+
+    /** 转销售单按钮操作 */
+    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();
+        });
+      } else {
+        this.$message.warning("请选择状态为未提交的数据!");
+        return;
+      }
+
+
+      // 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("已经转换过了");
+      //   }
+      // });
+    },
+    // 表单重置
+    resetForm() {
+      this.form = {
+        id: null,
+        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,
+      };
+    },
+
+
+
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.resetForm();
+    },
+    // 取消按钮
+    cancelExpect() {
+      this.openExpect = false;
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            if (this.form.productionCodes) {
+              this.form.productionCodes = this.form.productionCodes.replace(/,/g, ",")
+            }
+            updateSalesorder(this.form).then(response => {
+              this.$message.success("修改成功");
+              this.open = false;
+              this.reload();
+            });
+          } else {
+            addSalesorder(this.form).then(response => {
+              this.$message.success("新增成功");
+              this.open = false;
+              this.reload();
+            });
+          }
+        }
+      });
+    },
+    /** 提交交期确定按钮 */
+    submitFormExpect() {
+      const id = this.ids
+      getSalesOrder(id).then(response => {
+        // console.log(response);
+        let saleorder = response.data;
+        if (saleorder.status == "1" || saleorder.status == "2") {
+          this.$message.success("已经分配过资源");
+          return;
+        }
+        var i = 0;
+        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, 'lastNode');
+        var productDay = lastNode.deliverDay;
+        saleorder.productionDeliveryDate = productDay;
+        console.log(saleorder.productionDeliveryDate);
+
+        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);
+        });
+        occupyRes(arr).then(response => {
+          this.$message.success("占用成功");
+
+          saleorder.status = "1";
+          console.log(saleorder);
+          updateSalesorder(saleorder).then(response => {
+            this.$message.success("修改成功");
+            this.openExpect = false;
+            this.reload();
+          });
+        });
+
+
+      });
+    },
+
+    /** 转销售单按钮操作 */
+    handleAllSaleorder() {
+
+      this.loading = true;
+      let saleorder = {};
+      //如果是已经占用资源,则显示已经占用的资源,不能重复
+      createAll(saleorder).then(response => {
+        this.$message.success("转换成功");
+        this.loading = false;
+      });
+    },
+
+
+    // // 提交上传文件
+    // 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>

+ 94 - 0
src/views/aps/transferred/search.vue

@@ -0,0 +1,94 @@
+<!-- 搜索表单 -->
+
+<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-select v-model="where.status" placeholder="请选择订单状态" clearable @change="search">
+            <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-col> -->
+      <el-col style="display: flex; justify-content: flex-end" :span="8">
+        <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,
+      queryType: 2 //查询类型(1:预销售单页面查询;2:已转销售单页面查询)
+    };
+    return {
+      defaultWhere,
+      // 表单数据
+      where: { ...defaultWhere },
+      statusOptions: [
+        {
+          value: '0',
+          label: '未预估'
+        },
+        {
+          value: '1',
+          label: '已预估'
+        },
+        {
+          value: '2',
+          label: '已转销售单'
+        }
+      ]
+    };
+  },
+  computed: {
+
+  },
+  methods: {
+    /* 搜索 */
+    search() {
+      this.$emit('search', this.where);
+    },
+    /*  重置 */
+    reset() {
+      this.where = { ...this.defaultWhere };
+      this.search();
+    }
+  }
+};
+</script>

+ 402 - 0
src/views/aps/ws_res_capacity_detail/index.vue

@@ -0,0 +1,402 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="生产订单" prop="plannedOrder">
+        <el-input
+          v-model="queryParams.plannedOrder"
+          placeholder="请输入生产订单"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="年份" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          placeholder="请输入年份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="月份" prop="month">
+        <el-input
+          v-model="queryParams.month"
+          placeholder="请输入月份"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="日期" prop="day">
+        <el-input
+          v-model="queryParams.day"
+          placeholder="请输入日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="班次ID" prop="classId">
+        <el-input
+          v-model="queryParams.classId"
+          placeholder="请输入班次ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="班次名称" prop="className">
+        <el-input
+          v-model="queryParams.className"
+          placeholder="请输入班次名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item> -->
+
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+
+        >导出</el-button>
+      </el-col>
+
+    </el-row>
+
+    <el-table v-loading="loading" :data="ws_res_capacity_detailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="序号" align="center" prop="id" />
+      <el-table-column label="资源ID" align="center" prop="resourceId" />
+      <el-table-column label="资源类型" align="center" prop="resType" />
+      <el-table-column label="数量" align="center" prop="num" />
+      <el-table-column label="单位" align="center" prop="units" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="月份" align="center" prop="month" />
+      <el-table-column label="工作周" align="center" prop="week" />
+      <el-table-column label="日期" align="center" prop="day" />
+      <el-table-column label="班次ID" align="center" prop="classId" />
+      <el-table-column label="班次名称" align="center" prop="className" />
+      <el-table-column label="工单开始时间" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ scope.row.startTime }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="工单结束时间" align="center" prop="endTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ scope.row.endTime}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="规划产能(吨)" align="center" prop="plannedCapacity" />
+      <el-table-column label="已排产产能" align="center" prop="plannedSumCapacity" />
+      <el-table-column label="排产单号" align="center" prop="plannedOrder" />
+      <el-table-column label="排产产能" align="center" prop="plannedOrderCapacity" />
+      <el-table-column label="排程时间" align="center" prop="plannedOrderDate" />
+      <el-table-column label="帐号状态" align="center" prop="status" />
+
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 添加或修改工作中心资源月产能定义详细对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="资源ID" prop="resourceId">
+          <el-input v-model="form.resourceId" placeholder="请输入资源ID" />
+        </el-form-item>
+        <el-form-item label="资源类型" prop="resType">
+          <el-input v-model="form.resType" placeholder="请输入资源类型" />
+        </el-form-item>
+        <el-form-item label="年份" prop="year">
+          <el-input v-model="form.year" placeholder="请输入年份" />
+        </el-form-item>
+        <el-form-item label="月份" prop="month">
+          <el-input v-model="form.month" placeholder="请输入月份" />
+        </el-form-item>
+        <el-form-item label="工作周" prop="week">
+          <el-input v-model="form.week" placeholder="请输入工作周" />
+        </el-form-item>
+        <el-form-item label="日期" prop="day">
+          <el-input v-model="form.day" placeholder="请输入日期" />
+        </el-form-item>
+        <el-form-item label="班次ID" prop="classId">
+          <el-input v-model="form.classId" placeholder="请输入班次ID" />
+        </el-form-item>
+        <el-form-item label="班次名称" prop="className">
+          <el-input v-model="form.className" placeholder="请输入班次名称" />
+        </el-form-item>
+        <el-form-item label="工单开始时间" prop="startTime">
+          <el-date-picker clearable
+            v-model="form.startTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择工单开始时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="工单结束时间" prop="endTime">
+          <el-date-picker clearable
+            v-model="form.endTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择工单结束时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="规划产能(吨)" prop="plannedCapacity">
+          <el-input v-model="form.plannedCapacity" placeholder="请输入规划产能(吨)" />
+        </el-form-item>
+        <el-form-item label="已排产产能" prop="plannedSumCapacity">
+          <el-input v-model="form.plannedSumCapacity" placeholder="请输入已排产产能" />
+        </el-form-item>
+        <el-form-item label="排产单号" prop="plannedOrder">
+          <el-input v-model="form.plannedOrder" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排产产能" prop="plannedOrderCapacity">
+          <el-input v-model="form.plannedOrderCapacity" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="排程时间" prop="plannedOrderDate">
+          <el-input v-model="form.plannedOrderDate" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listWs_res_capacity_detail, getWs_res_capacity_detail, delWs_res_capacity_detail, addWs_res_capacity_detail, updateWs_res_capacity_detail } from "@/api/aps/ws_res_capacity_detail";
+
+export default {
+  name: "Ws_res_capacity_detail",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 工作中心资源月产能定义详细表格数据
+      ws_res_capacity_detailList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        resourceId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        classId: null,
+        className: null,
+        startTime: null,
+        endTime: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        loginIp: null,
+        loginDate: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        resourceId: [
+          { required: true, message: "资源ID不能为空", trigger: "blur" }
+        ],
+        year: [
+          { required: true, message: "年份不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询工作中心资源月产能定义详细列表 */
+    getList() {
+      this.loading = true;
+      listWs_res_capacity_detail(this.queryParams).then(response => {
+        console.log(response);
+        this.ws_res_capacity_detailList = response.data;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        resourceId: null,
+        year: null,
+        month: null,
+        week: null,
+        day: null,
+        classId: null,
+        className: null,
+        startTime: null,
+        endTime: null,
+        plannedCapacity: null,
+        plannedSumCapacity: null,
+        plannedOrder: null,
+        plannedOrderCapacity: null,
+        plannedOrderDate: null,
+        status: null,
+        delFlag: null,
+        loginIp: null,
+        loginDate: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      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 = "添加工作中心资源月产能定义详细";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getWs_res_capacity_detail(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改工作中心资源月产能定义详细";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateWs_res_capacity_detail(this.form).then(response => {
+              this.$message.success("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addWs_res_capacity_detail(this.form).then(response => {
+              this.$message.success("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除工作中心资源月产能定义详细编号为"' + ids + '"的数据项?').then(function() {
+        return delWs_res_capacity_detail(ids);
+      }).then(() => {
+        this.getList();
+        this.$message.success("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('aps/ws_res_capacity_detail/export', {
+        ...this.queryParams
+      }, `ws_res_capacity_detail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 2 - 2
src/views/materialPlan/components/produceOrder.vue

@@ -31,7 +31,7 @@ export default {
 
       statusOpt: {
         first: [
-          { label: '所有状态', value: '3,2' },
+          { label: '所有状态', value: '1,2,3,4,5,7' },
           { label: '待发布', value: '2' },
           { label: '发布失败', value: '3' },
           { label: '已发布', value: '4' }
@@ -351,7 +351,7 @@ export default {
       }
 
       this.visible = true;
-      await this.reload();
+      // await this.reload();
 
     },
 

+ 130 - 99
src/views/workOrder/autoIndex.vue

@@ -7,23 +7,29 @@
         <el-tab-pane label="已完成工单" name="second"></el-tab-pane>
       </el-tabs> -->
       <!-- 数据表格 -->
+      <div class="btn_box">
 
-      <plan-statistics></plan-statistics>
+        <el-button type="success" size="mini"  @click="handleAllExpect"
+          >自动排程</el-button>
+        <!-- <el-button type="success" size="mini" @click="autoScheduleRule"
+          >排程规则</el-button> -->
+      </div>
+      <!-- <plan-statistics></plan-statistics> -->
 
       <ele-pro-table
         ref="table"
         :columns="newColumns"
         :datasource="datasource"
         cache-key="workOrderTable"
+        :selection.sync="selection"
          row-key="code"
         @sort-change="onSortChange"
         height="calc(100vh - 380px)"
         autoAmendPage
         :parse-data="parseData"
+         @update:selection="handleSelectionChange"
       >
 
-
-
         <template v-slot:code="{ row }">
           {{ row.code }}
         </template>
@@ -64,19 +70,7 @@
         </template>
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
-          <el-link
-            type="primary"
-            :underline="false"
-            @click="toUnpack(row)"
-            v-if="
-              (clientEnvironmentId != '4' && row.status == 8) ||
-              (clientEnvironmentId == '4' &&
-                !row.productName.includes('板材') &&
-                row.status == 8)
-            "
-          >
-            拆单
-          </el-link>
+
 
           <el-link
             type="primary"
@@ -97,89 +91,32 @@
       </ele-pro-table>
     </el-card>
 
-    <el-dialog :visible.sync="visible" title="派单" width="500px">
-      <el-form
-        ref="form"
-        :model="form"
-        :rules="rules"
-        label-position="left"
-        label-width="100px"
-      >
-        <el-form-item label="报工类型:" prop="singleReport">
-          <el-radio-group v-model="form.singleReport" >
-            <el-radio :label="1" v-if="clientEnvironmentId != 2">单件报工</el-radio>
-            <el-radio :label="0">批量报工</el-radio>
-          </el-radio-group>
-        </el-form-item>
-
-        <el-form-item label="指定:" prop="assignType">
-          <el-radio-group v-model="form.assignType" size="mini">
-            <el-radio-button :label="1">工位</el-radio-button>
-            <el-radio-button :label="2">人员</el-radio-button>
-          </el-radio-group>
-        </el-form-item>
-
-        <el-form-item label="班组:" prop="teamId">
-          <el-select
-            class="ele-block"
-            v-model="form.teamId"
-            placeholder="请选择班组"
-            size="mini"
-            filterable
-            @change="stationChange"
-          >
-            <el-option
-              v-for="item in teamsList"
-              :key="item.id"
-              :label="item.name + '(' + item.code + ')'"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item
-          label="工位:"
-          prop="workstationIds"
-          v-if="form.assignType == 1"
-        >
-          <el-select
-            class="ele-block"
-            v-model="form.workstationIds"
-            placeholder="请选择工位"
-            size="mini"
-            multiple
-            filterable
-          >
-            <el-option
-              v-for="item in stationList"
-              :key="item.id"
-              :label="item.name + '(' + item.code + ')'"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="人员:" prop="crewIds" v-if="form.assignType == 2">
-          <el-select
-            class="ele-block"
-            v-model="form.crewIds"
-            placeholder="请选择班组"
-            size="mini"
-            filterable
-            multiple
-          >
-            <el-option
-              v-for="item in crewList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
+    <!-- 自动排程对话框 -->
+    <el-dialog :title="titleExpect" :visible.sync="openExpect" width="70%" :close-on-click-modal="false" modal-append-to-body>
+
+      <el-table v-loading="loading" :data="salesorderExpectList" >
+        <el-table-column label="序号" align="center" prop="id" />
+        <el-table-column label="生产订单" align="center" prop="plannedOrder" />
+        <el-table-column label="班组" align="center" prop="teamId" />
+        <el-table-column label="班次名称" align="center" prop="className" />
+        <el-table-column label="物料数量" align="center" prop="materialQuotaVOList.length" />
+        <!-- <el-table-column label="设备数量" align="center" prop="units" /> -->
+        <el-table-column label="年" align="center" prop="year" />
+        <el-table-column label="月" align="center" prop="month" />
+        <el-table-column label="日" align="center" prop="day" />
+
+
+        <el-table-column label="工单开始时间" align="center" prop="startTime" width="180">
+          <template slot-scope="scope">
+            <span>{{ scope.row.startTime }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="工单结束时间" align="center" prop="endTime" width="180">
+          <template slot-scope="scope">
+            <span>{{ scope.row.endTime}}</span>
+          </template>
+        </el-table-column>
+      </el-table>
 
       <div class="footer" slot="footer">
         <el-button @click="visible = false">取消</el-button>
@@ -192,6 +129,8 @@
 </template>
 
 <script>
+  import { occupyResAll,occupyAuto,listTimes,getBomCategory} from "@/api/aps/ws_res_capacity_detail";
+
   import {
     getList,
     releaseWorkOrder,
@@ -218,6 +157,21 @@
     },
     data() {
       return {
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: false,
+        // 非多个禁用
+        multiple: false,
+        // 销售订单交期预估表格数据
+        salesorderExpectList:[],
+        selection:[],
+        // 弹出层标题
+
+        titleExpect: "交期确定",
+        // 是否显示弹出层
+        openExpect: false,
+
         visible: false,
         loading: false,
 
@@ -256,6 +210,11 @@
           { label: '生产中', value: 5 },
           { label: '待下达', value: 8 }
         ],
+        statusScheduleOpt: [
+          { label: '未开始', value: 0 },
+          { label: '未排产', value: 1 },
+          { label: '已排产', value: 2 }
+        ],
 
         newColumns: [],
 
@@ -273,6 +232,10 @@
       // 表格列配置
       columns() {
         return [
+          {
+            type: 'selection',
+            align: 'center',
+          },
           {
             columnKey: 'index',
             slot: 'index',
@@ -406,6 +369,14 @@
               const obj = this.statusOpt.find((i) => i.value == row.status);
               return obj && obj.label;
             }
+          },{
+            slot: 'scheduleStatus',
+            label: '进度状态',
+            align: 'center',
+            formatter: (row) => {
+              const obj = this.statusScheduleOpt.find((i) => i.value == row.status);
+              return obj && obj.label;
+            }
           },
 
           {
@@ -428,10 +399,70 @@
       this.getFieldModel();
     },
     methods: {
+      handOneSelection(row) {
+        const index = this.selection.findIndex((item) => item.id == row.id);
+        if (index >= 0) {
+          this.selection.splice(index, 1);
+        } else {
+          this.selection.push(row);
+        }
+        this.ids = this.selection.map(item => item.id)
+        if (this.selection.length==0){
+          this.single = false;
+          this.multiple = false;
+        } else if (this.selection.length==1) {
+          this.single = true;
+          this.multiple = false;
+        } else if (this.selection.length>1) {
+          this.single = false;
+          this.multiple = true;
+        }
+      },
+
+      selectionFilter(row) {
+        return this.selection.findIndex((item) => item.id == row.id) >= 0;
+      },
+      handleSelectionChange(list) {
+        console.log(list);
+        if (list.length > 1) {
+          // let _list = [];
+          // list.forEach((e) => {
+          //   if (e.childList.length > 0 && e.splitBatch != 2) {
+          //     _list.push(...e.childList);
+          //   } else {
+          //     _list.push(e);
+          //   }
+          // });
+          this.selection = list;
+        } else {
+          this.selection = [];
+        }
+
+
+      },
+      handleAllExpect(){
+        if (this.selection.length==0) return;
+        this.selection.map(item=>{
+          item.planStartTime = Date.parse(new Date(item.planStartTime));
+          item.planCompleteTime = Date.parse(new Date(item.planCompleteTime));
+        })
+        occupyAuto(this.selection).then(response => {
+            console.log(response);
+            this.salesorderExpectList = response.data.data;
+            this.openExpect = true;
+            this.single = false;
+            this.multiple = false;
+          });
+        return;
+      },
       statusFormatter(status) {
         const obj = this.statusOpt.find((i) => i.value == status);
         return obj && obj.label;
       },
+      statusScheduleFormatter(status) {
+        const obj = this.statusScheduleOpt.find((i) => i.value == status);
+        return obj && obj.label;
+      },
       /* 表格数据源 */
       datasource({ page, limit, where }) {
         if (where.status) {

+ 29 - 22
src/views/workOrder/index.vue

@@ -167,7 +167,7 @@ export default {
         crewIds: '',
         workstationIds: '',
         teamId: '',
-        singleReport: this.clientEnvironmentId == 2 ? 0 : 1
+        singleReport: ''
       },
 
       rules: {
@@ -449,34 +449,41 @@ export default {
       this.visible = true;
       this.FirstTaskIdFn();
       this.WorkCenterIdFn();
+      this.form.singleReport = this.clientEnvironmentId == 2 ? 0 : 1
     },
     // 下达
     confirm() {
-      const loading = this.$loading({ text: '加载中...' });
-
-      if (this.form.assignType * 1 == 2) {
-        this.form.workstationIds = [];
-      } else {
-        this.form.crewIds = [];
-      }
+      this.$refs.form.validate((valid)=>{
+        if (valid) {
+          const loading = this.$loading({ text: '加载中...' });
+
+          if (this.form.assignType * 1 == 2) {
+            this.form.workstationIds = [];
+          } else {
+            this.form.crewIds = [];
+          }
 
 
-      releaseWorkOrder({
-        id: this.current.id,
-        ...this.form
+          releaseWorkOrder({
+            id: this.current.id,
+            ...this.form
+          })
+            .then((res) => {
+              if (res) {
+                this.$message.success('成功');
+
+                this.reData();
+                this.reload();
+                this.visible = false;
+              }
+            })
+            .finally(() => {
+              loading.close();
+            }); 
+            
+        }
       })
-        .then((res) => {
-          if (res) {
-            this.$message.success('成功');
 
-            this.reData();
-            this.reload();
-            this.visible = false;
-          }
-        })
-        .finally(() => {
-          loading.close();
-        });
     },
     close() {
       this.visible = false;

+ 504 - 102
src/views/workOrder/manuIndex.vue

@@ -8,7 +8,7 @@
       </el-tabs> -->
       <!-- 数据表格 -->
 
-      <plan-statistics></plan-statistics>
+      <!-- <plan-statistics></plan-statistics> -->
 
       <ele-pro-table
         ref="table"
@@ -64,40 +64,21 @@
         </template>
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
-          <el-link
-            type="primary"
-            :underline="false"
-            @click="toUnpack(row)"
-            v-if="
-              (clientEnvironmentId != '4' && row.status == 8) ||
-              (clientEnvironmentId == '4' &&
-                !row.productName.includes('板材') &&
-                row.status == 8)
-            "
-          >
-            拆单
-          </el-link>
 
           <el-link
             type="primary"
             :underline="false"
             icon="el-icon-truck"
             @click="toRelease(row)"
-            v-if="
-            row.isSplit != 1  &&
-              (clientEnvironmentId != '4' && row.status == 8) ||
-              (clientEnvironmentId == '4' &&
-                !row.productName.includes('板材') &&
-                row.status == 8)
-            "
+
           >
-            派单
+            排程
           </el-link>
         </template>
       </ele-pro-table>
     </el-card>
 
-    <el-dialog :visible.sync="visible" title="派单" width="500px">
+    <el-dialog :title="title" :visible.sync="visible" width="70%" :close-on-click-modal="false" modal-append-to-body>
       <el-form
         ref="form"
         :model="form"
@@ -105,80 +86,219 @@
         label-position="left"
         label-width="100px"
       >
-        <el-form-item label="报工类型:" prop="singleReport">
-          <el-radio-group v-model="form.singleReport" >
-            <el-radio :label="1" v-if="clientEnvironmentId != 2">单件报工</el-radio>
-            <el-radio :label="0">批量报工</el-radio>
-          </el-radio-group>
-        </el-form-item>
-
-        <el-form-item label="指定:" prop="assignType">
-          <el-radio-group v-model="form.assignType" size="mini">
-            <el-radio-button :label="1">工位</el-radio-button>
-            <el-radio-button :label="2">人员</el-radio-button>
-          </el-radio-group>
-        </el-form-item>
-
-        <el-form-item label="班组:" prop="teamId">
-          <el-select
-            class="ele-block"
-            v-model="form.teamId"
-            placeholder="请选择班组"
-            size="mini"
-            filterable
-            @change="stationChange"
-          >
-            <el-option
-              v-for="item in teamsList"
-              :key="item.id"
-              :label="item.name + '(' + item.code + ')'"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item
-          label="工位:"
-          prop="workstationIds"
-          v-if="form.assignType == 1"
-        >
-          <el-select
-            class="ele-block"
-            v-model="form.workstationIds"
-            placeholder="请选择工位"
-            size="mini"
-            multiple
-            filterable
-          >
-            <el-option
-              v-for="item in stationList"
-              :key="item.id"
-              :label="item.name + '(' + item.code + ')'"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="人员:" prop="crewIds" v-if="form.assignType == 2">
-          <el-select
-            class="ele-block"
-            v-model="form.crewIds"
-            placeholder="请选择班组"
-            size="mini"
-            filterable
-            multiple
-          >
-            <el-option
-              v-for="item in crewList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            >
-            </el-option>
-          </el-select>
-        </el-form-item>
+        <!--时间列表
+        -->
+        <el-row>
+            <el-col :span="12">
+              <el-form-item label="工艺路线" prop="produceRoutingId" v-if="false">
+
+                <el-input  v-model="form.produceRoutingId" placeholder="请输入工艺路线" />
+
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item  label="本次产能" prop="thisCapacity" v-if="false">
+                  <el-input  v-model="form.thisCapacity" placeholder="请输入本次产能" />
+                </el-form-item>
+              </el-col>
+
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="产线" prop="productLineId" v-if="false">
+
+                <el-input  v-model="form.productLineId" placeholder="请输入产线" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="工位:"
+                prop="workstationIds"
+
+              >
+                <el-select
+                  class="ele-block"
+                  v-model="form.workstationIds"
+                  placeholder="请选择工位"
+                  size="mini"
+                  multiple
+                  filterable
+                >
+                  <el-option
+                    v-for="item in stationList"
+                    :key="item.id"
+                    :label="item.name + '(' + item.code + ')'"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item  label="本次产能" prop="thisCapacity">
+                <el-input  v-model="form.thisCapacity" placeholder="请输入本次产能" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="年份" prop="year">
+                  <el-select v-model="form.year"  placeholder="请选择年份" >
+                          <el-option v-for="item in  year_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+                  </el-select>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="月份" prop="month">
+                  <el-select v-model="form.month"  placeholder="请选择月份" @change="getCapacityList()">
+                    <el-option v-for="item in month_select" :key="item.value" :label="item.value" :value="item.value" ></el-option>
+                  </el-select>
+                </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="日期" prop="day">
+                <el-input disabled v-model="form.day" placeholder="请输入日期"  />
+                <div class="bottom"   >
+                  <div
+                    class="box"
+                    v-for="(item, index) in capacityList"
+                    :key="index"
+                    :class="[(index + 1) % 6 == 0 ? 'margin_0' : '']"
+                    @click="checkedChange(index)"
+                  >
+                    <div class="item" :class="[item.checked ? 'item active' : 'item']">
+                      <div class="date">{{ item.year+'-'+item.month+'-'+item.day }}</div>
+                     <!-- <div class="capacity">{{'总产能' + item.plannedCapacity }}</div>
+                      <div class="capacity">{{'已排产能' +item.plannedSumCapacity }}</div> -->
+                      <div class="capacity">{{'剩余产能' +(item.plannedCapacity-item.plannedSumCapacity) }}</div>
+                      <div v-if="item.checked" class="checked">
+                        <img :src="checkImg" alt="" />
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </el-form-item>
+            </el-col>
+
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label-width="100px"  label="班次" prop="classId">
+                <el-select v-model="form.classId"  placeholder="请选择班次" @select="getTimesList">
+                  <el-option v-for="item in timesList" :key="item.value" :label="item.text" :value="item.value" ></el-option>
+                </el-select>
+                <!-- <el-time-picker clearable
+                                v-model="form.start"
+                                type="datetime"
+                                value-format="HH:mm:ss"
+                                placeholder="请选择开始时间">
+                </el-time-picker> -->
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="报工类型:" prop="singleReport">
+                <el-radio-group v-model="form.singleReport" >
+                  <el-radio :label="1" v-if="clientEnvironmentId != 2">单件报工</el-radio>
+                  <el-radio :label="0">批量报工</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+
+          </el-row>
+
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="指定:" prop="assignType">
+                <el-radio-group v-model="form.assignType" size="mini">
+                  <el-radio-button :label="1">人员</el-radio-button>
+                  <el-radio-button :label="2">物料</el-radio-button>
+                  <el-radio-button :label="3">设备</el-radio-button>
+                  <el-radio-button :label="4">工具</el-radio-button>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+
+              <el-form-item
+                label="人员:"
+                prop="workstationIds"
+                v-if="form.assignType == 1"
+              >
+                <el-form-item label="班组:" prop="teamId">
+                          <el-select
+                            class="ele-block"
+                            v-model="form.teamId"
+                            placeholder="请选择班组"
+                            size="mini"
+                            filterable
+                            @change="stationChange"
+                          >
+                            <el-option
+                              v-for="item in teamsList"
+                              :key="item.id"
+                              :label="item.name + '(' + item.code + ')'"
+                              :value="item.id"
+                            >
+                            </el-option>
+                          </el-select>
+                        </el-form-item>
+                 <el-select
+                   class="ele-block"
+                   v-model="form.crewIds"
+                   placeholder="请选择人员"
+                   size="mini"
+                   filterable
+                   multiple
+                 >
+                   <el-option
+                     v-for="item in crewList"
+                     :key="item.id"
+                     :label="item.name"
+                     :value="item.id"
+                   >
+                   </el-option>
+                 </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="物料:" prop="crewIds" v-if="form.assignType == 2">
+                <!--物料列表
+                -->
+                <el-table v-loading="loading" :data="materialsList" >
+                        <el-table-column type="selection" width="55" align="center" />
+                        <el-table-column label="序号" align="center" prop="subCode" />
+                        <el-table-column label="物料名称" align="center" prop="categoryName" />
+                        <el-table-column label="牌号" align="center" prop="brandNum" />
+                        <el-table-column label="型号" align="center" prop="modelType" />
+                        <el-table-column label="数量" align="center" prop="count" />
+                        <el-table-column label="单位" align="center" prop="unit" />
+
+                      </el-table>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form-item label="设备:" prop="crewIds" v-if="form.assignType == 3">
+                <!--设备列表
+                -->
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+
+              <el-form-item label="工具:" prop="crewIds" v-if="form.assignType == 4">
+                <!--工具列表
+                -->
+              </el-form-item>
+            </el-col>
+          </el-row>
+
       </el-form>
 
       <div class="footer" slot="footer">
@@ -192,6 +312,11 @@
 </template>
 
 <script>
+  import { listProduct_line_capacity_detail,listDetail, getProduct_line_capacity_detail, delProduct_line_capacity_detail, addProduct_line_capacity_detail, updateProduct_line_capacity_detail } from "@/api/aps/product_line_capacity_detail";
+
+  import { occupyRes,listTimes,getBomCategory} from "@/api/aps/ws_res_capacity_detail";
+
+
   import {
     getList,
     releaseWorkOrder,
@@ -207,6 +332,9 @@
   import unpackDialog from './components/unpackDialog.vue';
 
   import { fieldModel } from '@/api/saleOrder';
+  import {
+    getById
+  } from '@/api/productionPlan/index.js';
 
   import { debounce } from 'lodash';
   import PlanStatistics from "@/components/statistics/PlanStatistics.vue";
@@ -218,6 +346,21 @@
     },
     data() {
       return {
+        year_select:[
+          {"value":2025},{"value":2026},{"value":2027},{"value":2028}
+          ],
+        month_select:[
+          {"value":1},{"value":2},{"value":3},{"value":4},
+          {"value":5},{"value":6},{"value":7},{"value":8},
+          {"value":9},{"value":10},{"value":11},{"value":12},
+          ],
+        title:"工位名称(工序名称)",
+        //日期选择框
+        checkImg: require('@/assets/checked.png'),
+        capacityList: [
+
+        ],
+
         visible: false,
         loading: false,
 
@@ -256,13 +399,20 @@
           { label: '生产中', value: 5 },
           { label: '待下达', value: 8 }
         ],
-
+        statusScheduleOpt: [
+          { label: '未开始', value: 0 },
+          { label: '未排产', value: 1 },
+          { label: '已排产', value: 2 }
+        ],
         newColumns: [],
 
         stationList: [],
         teamsList: [],
         crewList: [],
-
+        timesList:[],
+        startTime:null,
+        endTime:null,
+        className:null,
         current: null
       };
     },
@@ -407,7 +557,15 @@
               return obj && obj.label;
             }
           },
-
+          {
+            slot: 'scheduleStatus',
+            label: '进度状态',
+            align: 'center',
+            formatter: (row) => {
+              const obj = this.statusScheduleOpt.find((i) => i.value == row.status);
+              return obj && obj.label;
+            }
+          },
           {
             prop: 'serialNo',
             label: '客户代号',
@@ -426,8 +584,100 @@
     },
     created() {
       this.getFieldModel();
+      this.listTimes();
     },
     methods: {
+      getBomCategory(){
+        getBomCategory({bomCategoryId:this.form.productId}).then(response => {
+          //console.log(response);
+          if (response.data.data.length>0&&response.data.data[0].taskParam.length>0&&response.data.data[0].taskParam[0].materialQuota.length>0)
+          //console.log(response.data.data[0].taskParam[0].materialQuota);
+            this.materialsList = response.data.data[0].taskParam[0].materialQuota.filter((item)=>{
+            if (item.isReworkBom == 0) return true;
+          });
+        });
+
+      },
+
+      getTimesList(value){
+        console.log(value);
+      },
+      listTimes(){
+        listTimes({}).then(response => {
+          //console.log(response.data.data.list);
+          this.timesList =[];
+          var list = response.data.data.list;
+          for(var i=0;i<list.length;i++){
+            this.timesList=this.timesList.concat(list[i].details);
+          }
+          //console.log(this.timesList);
+          this.timesList=this.timesList.map((item)=>{
+            return {
+              value : item.id,
+              text :item.name+"-["+item.startTime+"-"+item.endTime+"]",
+              name : item.name,
+              startTime:item.startTime,
+              endTime:item.endTime
+              };
+          });
+
+            // let newRes = res.map((m) => {
+            //   return {
+            //     prop: 'extField.' + m.prop,
+            //     label: m.label,
+            //     align: 'center',
+            //     showOverflowTooltip: true
+            //   };
+            // });
+        });
+
+      },
+      checkedChange(index){
+        //console.log(this.capacityList[index].day);
+        if (!this.capacityList[index].checked) return;
+        this.form.day = this.capacityList[index].day;
+        this.form.detailId = this.capacityList[index].id;
+        this.capacityList = [];
+        console.log(this.form.day);
+      },
+      /** 查询产线月产能详情定义列表 */
+      getCapacityList() {
+
+        //this.form.day = "";
+        if (this.form.produceRoutingId == ""||this.form.produceRoutingId==null) {
+          this.$message.warning('需要选择工艺路线!');
+          return;
+        }
+        if (this.form.productLineId == ""||this.form.productLineId==null) {
+          this.$message.warning('需要选择产线!');
+          return;
+        }
+
+        if (this.form.year == ""||this.form.year==null) {
+          this.$message.warning('需要选择年份!');
+          return;
+        }
+        if (this.form.month == ""||this.form.month==null) {
+          this.$message.warning('需要选择月份!');
+          return;
+        }
+        this.loading = true;
+        var node = {
+          "produceRoutingId" : this.form.produceRoutingId,
+          "productLineId" : this.form.productLineId,
+          "year" : this.form.year,
+          "month" : this.form.month
+        };
+
+        listProduct_line_capacity_detail(node).then(response => {
+          console.log(response)
+          this.capacityList = response.data.data;
+          this.capacityList.forEach(item=>{
+            item.checked = (item.plannedCapacity-item.plannedSumCapacity>=this.form.thisCapacity)
+          })
+          this.loading = false;
+        });
+      },
       statusFormatter(status) {
         const obj = this.statusOpt.find((i) => i.value == status);
         return obj && obj.label;
@@ -493,15 +743,52 @@
       toRelease(row) {
         this.current = row;
         this.visible = true;
-
+        //console.log(row);
+        this.title = this.current.firstTaskName;
+        this.form.produceRoutingId = this.current.produceRoutingId;
+        this.form.thisCapacity = this.current.formingWeight;
+        // this.form.productLineId = this.getProductionLineId(this.current.productionPlanId[0]);
+        this.form.productId = this.current.categoryId;
         this.FirstTaskIdFn();
         this.WorkCenterIdFn();
+        this.getBomCategory();
+      },
+      getProductionLineId(productionPlanId){
+        getById(productionPlanId).then((res)=>{
+          if (res) {
+            return res.productLine;
+          } else return '';
+        })
+
       },
       // 下达
       confirm() {
+        // console.log(this.timesList);
+        for(var i=0;i<this.timesList.length;i++){
+          console.log(this.timesList[i].value+"="+this.form.classId);
+          if (this.timesList[i].value==this.form.classId){
+            this.startTime = this.timesList[i].startTime;
+            this.endTime = this.timesList[i].endTime;
+            this.className = this.timesList[i].name;
+          }
+        }
+        this.materialsList.forEach(item=>{
+          delete item.bomArtFiles;
+          delete item.replaceMaterial;
+        })
+
+        // console.log(this.startTime);
         const loading = this.$loading({ text: '加载中...' });
-        releaseWorkOrder({
+        occupyRes({
           id: this.current.id,
+          detailId:this.form.detailId,
+          startTime:Date.parse(new Date(this.form.year+"-"+this.form.month+"-"+this.form.day+" "+this.startTime)),
+          endTime:Date.parse(new Date(this.form.year+"-"+this.form.month+"-"+this.form.day+" "+this.endTime)),
+          className:this.className,
+          materialQuotaVOList:this.materialsList,
+          plannedOrder:this.current.code,
+          plannedOrderCapacity:this.current.formingWeight,
+          workCenterId:this.current.workCenterId,
           ...this.form
         })
           .then((res) => {
@@ -552,6 +839,9 @@
       WorkCenterIdFn() {
         listByWorkCenterId(this.current.workCenterId).then((res) => {
           this.teamsList = res;
+          //console.log(res[0].productionLineId[0])
+          if (res && res.length > 0&& res[0].productionLineId && res[0].productionLineId.length>0)
+          this.form.productLineId = res[0].productionLineId[0];
         });
       },
 
@@ -598,4 +888,116 @@
 ::v-deep .el-table__row {
   height: 51px !important;
 }
+
+.btn_box {
+    margin-bottom: 6px;
+  }
+
+  .check_box {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+  }
+
+  .check {
+    width: 14px;
+    height: 14px;
+    border: 1px solid #dddddd;
+
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+
+  .act_check {
+    border: 1px solid #409eff;
+    background: #409eff;
+
+    .el-icon-check {
+      color: #fff;
+      font-size: 10px;
+    }
+  }
+  .statistics {
+    padding: 10px 10px 20px;
+  }
+  .cardItem {
+    border: 1px solid rgb(225, 225, 225);
+    text-align: center;
+    color: white;
+    background-color: rgba(24, 144, 255, 0.8);
+    overflow: hidden;
+    padding: 10px;
+  }
+  .cardText {
+    font-size: 16px;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    overflow: hidden;
+  }
+  .cardNum {
+    font-size: 32px;
+    font-style: italic;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    overflow: hidden;
+  }
+  @media (max-width: 768px) {
+    .cardText {
+      font-size: 14px;
+    }
+
+    .cardNum {
+      font-size: 24px;
+    }
+  }
+  ::v-deep .el-card__body {
+    padding: 17px 12px !important;
+  }
+
+  .bottom {
+    flex: 1;
+    width: 100%;
+    .box {
+      width: 15%;
+      height: 69px;
+      margin-right: 2%;
+      margin-bottom: 10px;
+      display: inline-block;
+      cursor: pointer;
+      .item {
+        width: 100%;
+        height: 100%;
+        position: relative;
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+        border-radius: 2px;
+        border: 1px solid #d9d9d9;
+        .date {
+          color: #202325;
+        }
+        .checked {
+          position: absolute;
+          top: 0;
+          right: 0;
+          width: 46px;
+          height: 46px;
+          > img {
+            height: 100%;
+            width: 100%;
+          }
+        }
+      }
+      .active {
+        border-color: #2d80ee;
+      }
+    }
+    .margin_0 {
+      margin-right: 0;
+    }
+  }
 </style>