2213980799@qq.com hace 1 año
padre
commit
5ce86c06a7

+ 305 - 0
src/api/manufacture/spreadWorkOrder.js

@@ -0,0 +1,305 @@
+import request from '@/utils/request';
+
+//获取列表
+export const getPutMeshWorkOrderByPage = (params) => {
+  return request({
+    url: '/aps/team_networking_task/ListPage',
+    method: 'post',
+    data: params,
+    params: {
+      pageNum: params.current,
+      pageSize: params.size,
+    },
+  })
+}
+
+// 删除
+export const deletePutMeshWorkOrder = (params) => {
+  return request({
+    url: '/api/blade-mes/putMes/deletePutMeshWorkOrder',
+    method: 'post',
+    params,
+  })
+}
+
+// 导出
+export const getScheduleWorkOrderExport = (params) => {
+  return request({
+    responseType: 'blob',
+    url: '/api/blade-mes/scheduleWorkOrder/getScheduleWorkOrderExport',
+    method: 'get',
+    params,
+  })
+}
+
+// 报工
+export const putMesSubmit = (params) => {
+  return request.post('/aps/team_networking_task/workTask',params)
+}
+// 撤回
+export const workFallback = (params) => {
+  return request.post('/aps/team_networking_task/workFallback',params)
+}
+
+// 下模
+export const saddleMarginDie = (params) => {
+  return request.post('/aps/team_networking_task/lowerMold',params)
+}
+
+// 报工
+export const onekeyGetFambeState = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getFambeState',
+    method: 'post',
+    params,
+  })
+}
+
+// 判断/调整
+export const saveCuttingWorkOrder = (data) => {
+  return request({
+    url: '/api/blade-mes/cuttingWorkOrder/saveCuttingWorkOrder',
+    method: 'post',
+    data,
+  })
+}
+
+export const getOnekeyWorkReportByPage = (params) => {
+  return request({
+    url: '/aps/team_networking_task/ListAJPage',
+    method: 'post',
+    data: params,
+    // params,
+  })
+}
+
+export const getCuttingIntoKiln = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getCuttingIntoKiln',
+    method: 'post',
+    data: params,
+  })
+}
+
+export const ToOnekeyFambe = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/ToOnekeyFambe',
+    method: 'post',
+    params,
+  })
+}
+
+// 报废接口
+export const onekeyScrap = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/scrap',
+    method: 'post',
+    params,
+  })
+}
+
+// 编辑界面接口
+export const getFambeByPage = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getFambeByPage',
+    method: 'post',
+    params,
+  })
+}
+// 编辑接口
+export const saveFambeWorkOrder = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/saveFambeWorkOrder',
+    method: 'post',
+    params,
+  })
+}
+
+// 编辑接口
+export const ealingKiln = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/ealingKiln',
+    method: 'post',
+    params,
+  })
+}
+
+// 编辑要移入进的窑列表
+export const getFambeNo = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getFambeNo',
+    method: 'post',
+    params,
+  })
+}
+
+// 查询釜号状态
+export const getFambeKettle = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getFambeKettle',
+    method: 'post',
+    params,
+  })
+}
+
+// 一键入釜
+export const ToOnekeyKettle = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/ToOnekeyKettle',
+    method: 'post',
+    params,
+  })
+}
+
+// 获取“预计剩余蒸养时间”
+export const oneKeyGetTime = (data) => {
+  let fd = new FormData()
+  fd.append('cateName', data)
+  return request({
+    url: '/api/blade-base/productCate/getTime',
+    method: 'post',
+    data: fd,
+  })
+}
+
+// 查询质检号状态
+export const getFambeQuality = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getFambeQuality',
+    method: 'post',
+    params,
+  })
+}
+
+//  一键出釜
+export const ToOnekeyQuality = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/ToOnekeyQuality',
+    method: 'post',
+    params,
+  })
+}
+
+// 获取质检弹窗表格1数据
+export const getQualityDetails = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getQualityDetailsWorkOrderByPage',
+    method: 'post',
+    data: params,
+    params: {
+      pageNum: params.pageNum,
+      pageSize: params.pageSize,
+    },
+  })
+}
+// 获取质检弹窗表格2数据
+export const getQualityDetails2 = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getQualityDetailsWorkOrderGatherByPage',
+    method: 'post',
+    data: params,
+    params: {
+      pageNum: params.pageNum,
+      pageSize: params.pageSize,
+    },
+  })
+}
+
+// 获取质检弹窗 - 入库仓库下拉选项列表
+export const getDepotList = (data) => {
+  return request({
+    url: '/api/blade-base/depot/list',
+    method: 'post',
+    data: data,
+  })
+}
+
+// 质检弹窗 - 暂存/提交
+export const qualitySubmits = (data, type, fambeNo, newFambeNo) => {
+  return request({
+    url: '/api/blade-mes/onekey/QualitySubmits',
+    method: 'post',
+    data,
+    params: {
+      type,
+      fambeNo,
+      newFambeNo
+    },
+  })
+}
+
+// 获取质检统计数据
+export const getWarehousingList = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getWarehousingList',
+    method: 'post',
+    params,
+  })
+}
+
+// 获取昨日/今日数据
+export const getTeamGroup = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getTeamGroup',
+    method: 'post',
+    params,
+  })
+}
+
+// 获取浇注数据
+export const getPouring = (params) => {
+  return request({
+    url: '/api/blade-rcm/pl/getTeamGroup',
+    method: 'post',
+    params,
+  })
+}
+
+// 查询转道号
+export const getFambeChange = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getFambeChange',
+    method: 'post',
+    params,
+  })
+}
+
+// 查询可转的道号
+export const getNewFambeNo = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/getNewFambeNo',
+    method: 'post',
+    params,
+  })
+}
+
+// 切割任务表 - 终止操作
+export const onekeyStop = (params) => {
+  return request({
+    url: '/api/blade-mes/onekey/rest',
+    method: 'post',
+    params,
+  })
+}
+//不合格特征维护列表
+export const selectFailTraitPage = (params,data) => {
+  return request({
+    url: '/api/blade-quality/failTrait/selectFailTraitPage',
+    method: 'post',
+    params,
+    data
+  })
+}
+export const getAutoclaveBITwo = () => {
+  return request({
+      url: '/api/blade-rcm/autoclave/getBITwo',
+      method: 'get',
+  })
+}
+//w温湿度BI近七天
+export const getThermometerBITwo = () => {
+  return request({
+      url: '/api/blade-rcm/thermometer/getBITwo',
+      method: 'get',
+  })
+}

+ 55 - 0
src/components/basic-container/main.vue

@@ -0,0 +1,55 @@
+<template>
+  <div class="basic-container" :class="{ 'basic-container--block': block }">
+    <el-card>
+      <slot></slot>
+    </el-card>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "basicContainer",
+  props: {
+    radius: {
+      type: [String, Number],
+      default: 10
+    },
+    background: {
+      type: String
+    },
+    block: {
+      type: Boolean,
+      default: false
+    }
+  },
+  computed: {
+    styleName() {
+      return {
+        borderRadius: this.setPx(this.radius),
+        background: this.background
+      };
+    }
+  }
+};
+</script>
+
+<style lang="scss">
+.basic-container {
+  height:100%;
+  // min-height: 1080px;
+  padding: 10px 0;
+  box-sizing: border-box;
+  &--block {
+    height: 100%;
+    .el-card {
+      height: 100%;
+    }
+  }
+  .el-card {
+    width: 100%;
+  }
+  &:first-child {
+    padding-top: 0;
+  }
+}
+</style>

+ 3 - 1
src/enum/dict.js

@@ -12,6 +12,8 @@ export default {
   时间单位: 'time_unit',
   处置仓库: 'modificatiWnarehouse',
   干燥区域: 'drying_area',
-  日期方式: 'date_method'
+  日期方式: 'date_method',
+  开槽类型:'slotting_type'
+
 };
 export const numberList = ['date_method'];

+ 21 - 2
src/utils/util.js

@@ -1,6 +1,6 @@
-import { getAction } from '@/api/flowable/manage';
+// import { getAction } from '@/api/flowable/manage';
 
-import store from '@/store';
+// import store from '@/store';
 
 export function formatDictText(dicts, values) {
   if (!(Array.isArray(dicts) && dicts.length > 0)) {
@@ -33,3 +33,22 @@ export function randomString(len) {
   }
   return pwd;
 }
+
+export function hangingStatus(v) {
+  let status = '';
+  switch (v) {
+    case 0:
+      status = '未发布';
+      break;
+    case 1:
+      status = '待生产';
+      break;
+    case 2:
+      status = '生产中';
+      break;
+    case 3:
+      status = '已完结';
+      break;
+  }
+  return status;
+}

+ 85 - 0
src/views/hangingWorkOrder/components/order-search.vue

@@ -0,0 +1,85 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form label-width="90px" class="ele-form-search" @keyup.enter.native="search" @submit.native.prevent>
+    <el-row :gutter="15">
+ 
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="产品名称:">
+          <el-input clearable v-model="where.productName" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 9, md: 12 } : { span: 9 }">
+        <el-form-item label="创建时间:">
+          <el-date-picker class="w100" v-model="where.createTime" type="daterange" range-separator="至"
+            start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"
+            :default-time="['00:00:00', '23:59:59']">
+          </el-date-picker>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label-width="0px">
+          <el-button type="primary" icon="el-icon-search" class="ele-btn-icon" @click="search">
+            查询
+          </el-button>
+          <el-button @click="reset" icon="el-icon-refresh-left" type="primary">重置</el-button>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+
+export default {
+  props: [],
+  data() {
+    // 默认表单数据
+    const defaultWhere = {
+      productName: '',
+      status: '',
+      createTime: []
+    };
+    return {
+      // 表单数据
+      where: { ...defaultWhere },
+      teamList: [],
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  watch: {},
+  created() {
+   
+   },
+  methods: {
+    /* 搜索 */
+    search() {
+      const where = { ...this.where };
+      if (where.createTime?.length) {
+        where.createTimeStart = where.createTime[0];
+        where.createTimeEnd = where.createTime[1];
+      }
+      delete where.createTime;
+      this.$emit('search', where);
+    },
+    /*  重置 */
+    reset() {
+      this.where = { ...this.defaultWhere };
+      this.search();
+    },
+
+
+  }
+};
+</script>
+<style lang="scss" scoped>
+.ele-form-actions {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+</style>

+ 223 - 0
src/views/hangingWorkOrder/index.vue

@@ -0,0 +1,223 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <order-search @search="reload" ref="searchRef"> </order-search>
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        cache-key="workOrderTable"
+      >
+        <template v-slot:Weight="{ row }">
+          <span>{{ row.weight | weightFilter }}</span>
+        </template>
+        <template v-slot:SlottingType="{ row }">
+          {{ getDictValue('开槽类型', row.slottingType + '') }}
+        </template>
+        <!-- <template v-slot:Status="{ row }">
+          {{ hangingStatus(row.status) }}
+        </template> -->
+        <!-- 操作列 -->
+        <template v-slot:action="{ row }">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-truck"
+            @click="confirm(row)"
+            v-if="row.status == 0"
+          >
+            任务下发
+          </el-link>
+        </template>
+      </ele-pro-table>
+    </el-card>
+  </div>
+</template>
+
+<script>
+// import { getList, releaseWorkOrder } from '@/api/workOrder/index.js';
+import OrderSearch from './components/order-search.vue';
+import dictMixins from '@/mixins/dictMixins';
+import { hangingStatus } from '@/utils/util';
+
+import {
+  getPutMeshWorkOrderByPage,
+} from '@/api/manufacture/spreadWorkOrder';
+export default {
+  components: {
+    OrderSearch
+  },
+  mixins: [dictMixins],
+  data() {
+    return {
+      visible: false,
+      loading: false,
+      releasParams: {
+        teamId: '',
+        id: ''
+      },
+
+      current: null
+    };
+  },
+  computed: {
+    // 表格列配置
+    columns() {
+      return [
+        {
+          columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          showOverflowTooltip: true,
+          fixed: 'left'
+        },
+        {
+          prop: 'weight',
+          label: '等级',
+          align: 'center',
+          slot: 'Weight'
+        },
+        {
+          prop: 'height',
+          label: '高度',
+          align: 'center'
+        },
+        {
+          prop: 'length',
+          label: '长1+长2+长3',
+          align: 'center'
+        },
+        {
+          prop: 'productName',
+          label: '产品名称',
+          align: 'center'
+        },
+        {
+          prop: 'allowance',
+          label: '余量',
+          align: 'center'
+        },
+        {
+          prop: 'moCount',
+          label: '模数',
+          align: 'center'
+        },
+        {
+          prop: 'blockCount',
+          label: '片1+片2+片3',
+          align: 'center'
+        },
+        {
+          prop: 'slottingType',
+          label: '开槽类型',
+          align: 'center',
+          slot: 'SlottingType'
+        },
+        {
+          prop: 'taskTime',
+          label: '任务日期',
+          align: 'center'
+        },
+
+        {
+          prop: 'issuedTime',
+          label: '下发日期',
+          align: 'center'
+        },
+
+        {
+          prop: 'teamName',
+          label: '班组',
+          align: 'center'
+        },
+        {
+          prop: 'status',
+          label: '状态',
+          align: 'center',
+          formatter: (row, column, cellValue) => {
+            return hangingStatus(cellValue);
+          }
+        },
+        {
+          prop: 'remark',
+          label: '完结原因',
+          align: 'center'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 120,
+          align: 'center',
+          resizable: false,
+          fixed: 'right',
+          slot: 'action',
+          showOverflowTooltip: true
+        }
+      ];
+    }
+  },
+  created() {
+    this.requestDict('开槽类型');
+  },
+  filters: {
+    weightFilter(value) {
+      let weight = '';
+      switch (value) {
+        case 1:
+          weight = 'A';
+          break;
+        case 2:
+          weight = 'B';
+          break;
+        case 3:
+          weight = 'C';
+          break;
+      }
+      return weight;
+    }
+  },
+  methods: {
+    /* 表格数据源 */
+    datasource({ page, limit, where }) {
+      return getPutMeshWorkOrderByPage({
+        pageNum: page,
+        size: limit,
+        ...where
+      });
+    },
+
+    // // 下达
+    // toRelease(row) {
+    //   this.current = row;
+    //   this.visible = true;
+    // },
+    // // 下达
+    // confirm(row) {
+    //   this.$confirm('确认下发选中的任务吗?', '提示', {
+    //     confirmButtonText: '确定',
+    //     cancleButtonText: '取消',
+    //     type: 'warning'
+    //   })
+    //     .then(async () => {
+    //       const res = await issuedPutMeshWorkOrder({
+    //         id: [row.id],
+    //         status: 1
+    //       });
+    //       this.$message.success('任务下发成功!');
+    //       this.reload();
+    //     })
+    //     .catch(() => {});
+    // },
+    /* 刷新表格 */
+    reload(where) {
+      this.$nextTick(() => {
+        this.$refs.table.reload({ page: 1, where });
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 1015 - 0
src/views/spreadNetWork/index.vue

@@ -0,0 +1,1015 @@
+<template>
+  <div style="height: 100%">
+    <div class="title" style="margin-left: 0px">
+      <div class="item">
+        <span class="font subWorkNameBox">挂网报工</span>
+      </div>
+      <div class="item">
+        <span class="font"
+          >{{ riqi }} &nbsp; &nbsp;{{ days }} &nbsp; {{ shijian }}</span
+        >
+      </div>
+      <div class="item">
+        <img class="top-bar__img" :src="info.avatar" />
+        <span class="font">
+          {{ info.name }}
+        </span>
+      </div>
+    </div>
+    <basic-container
+      v-loading="pageLoading"
+      element-loading-text="数据加载中..."
+      element-loading-spinner="el-icon-loading"
+    >
+      <div class="container">
+        <div class="top-row">
+          <div class="task-dist-title">组网任务表</div>
+          <!-- 合并挂网下发未报工排程详情列表 -->
+          <el-table
+            :data="taskDistTableData"
+            border
+            height="300"
+            style="width: 100%"
+            :header-row-style="headerRowStyle"
+          >
+            <el-table-column label="等级" prop="weight" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.weight | weightFilter }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="高度"
+              prop="height"
+              align="center"
+            ></el-table-column>
+            <el-table-column
+              label="长1+长2+长3"
+              align="center"
+              width="120"
+              prop="length"
+            ></el-table-column>
+            <el-table-column
+              label="余量"
+              align="center"
+              width="70"
+              prop="allowance"
+            ></el-table-column>
+            <el-table-column
+              label="模数"
+              align="center"
+              width="70"
+              prop="moCount"
+            ></el-table-column>
+            <el-table-column
+              label="片1+片2+片3"
+              align="center"
+              width="120"
+              prop="blockCount"
+            >
+              <!-- <template slot-scope="scope">
+                <span>{{
+                  scope.row.meshNumber
+                    ? scope.row.meshNumber.split(',').join('+')
+                    : ''
+                }}</span>
+              </template> -->
+            </el-table-column>
+            <el-table-column
+              label="产品名称"
+              align="center"
+              width="120"
+              prop="productName"
+            ></el-table-column>
+            <el-table-column
+              label="附加工艺"
+              align="center"
+              width="120"
+              prop="slottingType"
+            >
+              <template slot-scope="scope">
+                <span>{{
+                  getDictValue('开槽类型', scope.row.slottingType + '')
+                }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="交货日期"
+              align="center"
+              prop="issuedTime"
+              min-width="120"
+            >
+              <template slot-scope="scope">
+                <span>{{ scope.row.issuedTime }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="下发日期"
+              align="center"
+              prop="issuedTime"
+              min-width="120"
+            >
+              <template slot-scope="scope">
+                <span>{{ scope.row.issuedTime }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column
+              align="center"
+              prop="teamName"
+              label="班组"
+            ></el-table-column>
+            <el-table-column align="center" label="操作">
+              <template slot-scope="scope">
+                <el-button type="text" @click="showWorkReportDialog(scope.row)"
+                  >报工</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <!-- 下面两个表格 -->
+        <el-row class="bottom-row">
+          <!-- 鞍架上剩余规格和数量 -->
+          <el-col :span="12" class="left-col">
+            <div style="border-bottom: 1px solid #fff; margin-right: 5px">
+              <div class="saddle-table-title">鞍架余量表</div>
+
+              <el-table
+                :data="saddleTableData"
+                border
+                height="300"
+                :header-row-style="headerRowStyle"
+              >
+                <el-table-column
+                  label="高度"
+                  align="center"
+                  prop="height"
+                  filterable
+                  :filters="heightFilterArr1"
+                  :filter-method="filterHeightMethod"
+                ></el-table-column>
+                <el-table-column
+                  label="长1+长2+长3"
+                  align="center"
+                  prop="length"
+                  min-width="120"
+                ></el-table-column>
+                <el-table-column
+                  label="开槽类型"
+                  align="center"
+                  prop="slottingType"
+                  width="100"
+                  filterable
+                  :filters="[
+                    { text: '开槽', value: '开槽' },
+                    { text: '不开槽', value: '不开槽' }
+                  ]"
+                  :filter-method="filterSlottingMethod"
+                >
+                  <template slot-scope="scope">
+                    <span>{{
+                      getDictValue('开槽类型', scope.row.slottingType + '')
+                    }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="片1+片2+片3"
+                  align="center"
+                  min-width="120"
+                  prop="blockCount"
+                >
+                </el-table-column>
+                <el-table-column
+                  label="产品名称"
+                  align="center"
+                  width="120"
+                  prop="productName"
+                ></el-table-column>
+                <el-table-column
+                  label="模数"
+                  align="center"
+                  prop="ajSum"
+                ></el-table-column>
+                <el-table-column label="操作" align="center">
+                  <template slot-scope="scope">
+                    <el-button type="text" @click="handleLower(scope.row)"
+                      >下模</el-button
+                    >
+                    <el-button type="text" @click="handleSaveCutting(scope.row)"
+                      >盘点/调整</el-button
+                    >
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+            <el-dialog
+              title="盘点/调整"
+              :visible.sync="saveCuttingDialog"
+              width="10%"
+              :show-close="false"
+              :close-on-click-modal="false"
+              :close-on-press-escape="false"
+            >
+              <el-input
+                v-model="saddleMargin"
+                placeholder="请输入调整模数"
+                oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
+              ></el-input>
+              <span slot="footer" class="dialog-footer">
+                <el-button size="small" @click="cancelSaddle">取 消</el-button>
+                <el-button size="small" type="primary" @click="confirmSaddle"
+                  >确 定</el-button
+                >
+              </span>
+            </el-dialog>
+          </el-col>
+          <el-col :span="12" class="right-col">
+            <div style="border-bottom: 1px solid #fff; margin-left: 5px">
+              <div class="product-schedule-title">组网排程表</div>
+              <el-table
+                :data="productScheduleTableData"
+                border
+                height="300"
+                :header-row-style="headerRowStyle"
+              >
+                <!-- <el-table-column type="selection" width="50" align="center">
+              </el-table-column> -->
+                <el-table-column
+                  label="高度"
+                  align="center"
+                  prop="height"
+                  filterable
+                  :filters="heightFilterArr2"
+                  :filter-method="filterHeightMethod"
+                ></el-table-column>
+                <el-table-column
+                  label="长1+长2+长3"
+                  align="center"
+                  prop="length"
+                  min-width="120"
+                ></el-table-column>
+                <el-table-column
+                  label="产品名称"
+                  align="center"
+                  width="120"
+                  prop="productName"
+                ></el-table-column>
+                <el-table-column
+                  label="开槽类型"
+                  align="center"
+                  prop="slottingType"
+                  width="100"
+                  filterable
+                  :filters="[
+                    { text: '开槽', value: '开槽' },
+                    { text: '不开槽', value: '不开槽' }
+                  ]"
+                  :filter-method="filterSlottingMethod"
+                >
+                  <template slot-scope="scope">
+                    <span>{{
+                      getDictValue('开槽类型', scope.row.slottingType + '')
+                    }}</span>
+                  </template></el-table-column
+                >
+                <el-table-column
+                  prop="weight"
+                  label="等级"
+                  align="center"
+                  filterable
+                  :filters="[
+                    { text: 'A', value: 1 },
+                    { text: 'B', value: 2 },
+                    { text: 'C', value: 3 }
+                  ]"
+                  :filter-method="filterWeightMethod"
+                >
+                  <template slot-scope="scope">
+                    <span>{{ scope.row.weight | weightFilter }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="qgSum"
+                  label="切割余量"
+                  align="center"
+                  min-width="100"
+                ></el-table-column>
+                <el-table-column
+                  prop="gwSum"
+                  label="挂网数量"
+                  align="center"
+                  min-width="100"
+                ></el-table-column>
+                <el-table-column
+                  prop="teamName"
+                  label="班组"
+                  align="center"
+                  filterable
+                  :filters="[
+                    { text: '班组A', value: '班组A' },
+                    { text: '班组B', value: '班组B' }
+                  ]"
+                  :filter-method="filterJobMethod"
+                ></el-table-column>
+                <el-table-column
+                  prop="taskTime"
+                  label="排产日期"
+                  align="center"
+                  min-width="100"
+                >
+                  <template slot-scope="scope">
+                    <span>{{ scope.row.taskTime }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="remark"
+                  label="备注"
+                  align="center"
+                ></el-table-column>
+                <el-table-column label="操作" align="center">
+                  <template slot-scope="scope">
+                    <el-button
+                      type="text"
+                      @click="recallProductSchedule(scope.row)"
+                      >撤回</el-button
+                    >
+                  </template>
+                </el-table-column>
+              </el-table>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <!-- 报工弹窗 -->
+      <el-dialog
+        :visible.sync="workReportDialog"
+        width="50%"
+        v-loading="dialogLoading"
+        append-to-body
+        :close-on-click-modal="false"
+        :close-on-press-escape="false"
+        @close="handleCloseWorkReportDialog"
+      >
+        <el-table :data="workReportDialogData" border>
+          <el-table-column label="等级" prop="weight" align="center">
+            <template slot-scope="scope">
+              <span>{{ scope.row.weight | weightFilter }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="高度"
+            prop="height"
+            align="center"
+          ></el-table-column>
+          <el-table-column
+            label="长1+长2+长3"
+            align="center"
+            width="120"
+            prop="length"
+          ></el-table-column>
+          <el-table-column
+            label="未挂网余量"
+            align="center"
+            width="110"
+            prop="allowance"
+          ></el-table-column>
+          <el-table-column
+            label="计划模数"
+            align="center"
+            width="100"
+            prop="moCount"
+          ></el-table-column>
+          <el-table-column
+            label="片1+片2+片3"
+            align="center"
+            width="120"
+            prop="blockCount"
+          >
+          </el-table-column>
+          <el-table-column
+            label="附加工艺"
+            align="center"
+            width="120"
+            prop="slottingType"
+          >
+            <template slot-scope="scope">
+              <span>{{
+                getDictValue('开槽类型', scope.row.slottingType + '')
+              }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="teamName"
+            label="班组"
+          ></el-table-column>
+        </el-table>
+        <div class="dialog1-footer">
+          <el-button size="small" @click="handleCloseWorkReportDialog"
+            >取消</el-button
+          >
+          <div class="spread-modulus">
+            <span>挂网模数:</span>
+            <el-input
+              v-model="spreadModulus"
+              @input="spreadModulusInput(spreadModulus)"
+            ></el-input>
+          </div>
+          <el-button size="small" @click="handleWorkReport">确认</el-button>
+        </div>
+      </el-dialog>
+      <!-- 下模弹窗 -->
+      <el-dialog
+        :visible.sync="lowerDieDialog"
+        width="50%"
+        v-loading="dialogLoading"
+        :close-on-click-modal="false"
+        :close-on-press-escape="false"
+        @close="handleCloseLowerDieDialog"
+
+      >
+        <el-table :data="lowerDieDialogData" border>
+          <el-table-column label="等级" prop="weight" align="center">
+            <template slot-scope="scope">
+              <span>{{ scope.row.weight | weightFilter }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="高度"
+            prop="height"
+            align="center"
+          ></el-table-column>
+          <el-table-column
+            label="长1+长2+长3"
+            align="center"
+            width="120"
+            prop="length"
+          ></el-table-column>
+          <el-table-column
+            label="鞍架余量"
+            align="center"
+            width="100"
+            prop="ajSum"
+          ></el-table-column>
+          <el-table-column
+            label="计划模数"
+            align="center"
+            width="100"
+            prop="qgSum"
+          ></el-table-column>
+          <el-table-column
+            label="片1+片2+片3"
+            align="center"
+            width="120"
+            prop="blockCount"
+          >
+          </el-table-column>
+          <el-table-column
+            label="附加工艺"
+            align="center"
+            width="120"
+            prop="slottingType"
+          >
+            <template slot-scope="scope">
+              <span>{{
+                getDictValue('开槽类型', scope.row.slottingType + '')
+              }}</span>
+            </template></el-table-column
+          >
+          <el-table-column
+            align="center"
+            prop="teamName"
+            label="班组"
+          ></el-table-column>
+        </el-table>
+        <div class="dialog2-footer">
+          <el-button size="small" @click="handleCloseLowerDieDialog"
+            >取消</el-button
+          >
+          <div class="spud-modulus">
+            <span>插钎模数:</span>
+            <el-input
+              v-model="spudModulus"
+              @input="spudModulusInput(spudModulus)"
+            ></el-input>
+          </div>
+          <el-button size="small" @click="handleLowerDie">确认</el-button>
+        </div>
+      </el-dialog>
+    </basic-container>
+  </div>
+</template>
+
+<script>
+import {
+  getPutMeshWorkOrderByPage,
+  putMesSubmit,
+  saddleMarginDie,
+  workFallback,
+  getOnekeyWorkReportByPage,
+  saveCuttingWorkOrder
+} from '@/api/manufacture/spreadWorkOrder';
+import { mapState } from 'vuex';
+import basicContainer from '@/components/basic-container/main';
+import dictMixins from '@/mixins/dictMixins';
+
+export default {
+  mixins: [dictMixins],
+  components: {
+    basicContainer
+  },
+  data() {
+    return {
+      headerRowStyle: {
+        backgroundColor: ' #d0e4d5'
+      },
+      pageLoading: false,
+      dialogLoading: false,
+      taskDistTableData: [], // 下发未报工列表
+      saddleTableData: [], // 鞍架上剩余规格和数量
+      productScheduleTableData: [], // 生产排程列表数据
+      workReportDialog: false, // 报工弹窗
+      workReportDialogData: [], // 报工弹窗表格数据列表
+      spreadModulus: '', // 报工弹窗挂网模数
+      lowerDieDialog: false, // 下模弹窗
+      lowerDieDialogData: [], // 下模弹窗表格数据列表
+      spudModulus: '', // 下模弹窗插钎模数
+      riqi: '',
+      days: '',
+      shijian: '',
+      heightFilterArr1: [],
+      heightFilterArr2: [],
+      saveCuttingDialog: false, // 盘点调整弹窗
+      saveCuttingRow: {},
+      saddleMargin: '' // 调整模数
+    };
+  },
+  computed: {
+    ...mapState({
+      info: (store) => store.user.info //用户数据
+    })
+  },
+  filters: {
+    weightFilter(value) {
+      let weight = '';
+      switch (value) {
+        case 1:
+          weight = 'A';
+          break;
+        case 2:
+          weight = 'B';
+          break;
+        case 3:
+          weight = 'C';
+          break;
+      }
+      return weight;
+    }
+  },
+  mounted() {
+    this.gettime();
+    this.newtime();
+  },
+  async created() {
+    this.requestDict('开槽类型');
+
+    this.pageLoading = true;
+    try {
+      await this.getWorkUnreport();
+      await this.getSaddleData();
+      await this.getProductSchedule();
+      this.pageLoading = false;
+    } catch (error) {
+      this.pageLoading = false;
+    }
+  },
+  methods: {
+    gettime() {
+      var date = new Date();
+      let year = date.getFullYear();
+      let mou = date.getMonth() + 1;
+      let day = date.getDate();
+      let days = date.getDay();
+      switch (days) {
+        case 1:
+          days = '星期一';
+          break;
+        case 2:
+          days = '星期二';
+          break;
+        case 3:
+          days = '星期三';
+          break;
+        case 4:
+          days = '星期四';
+          break;
+        case 5:
+          days = '星期五';
+          break;
+        case 6:
+          days = '星期六';
+          break;
+        case 0:
+          days = '星期日';
+          break;
+      }
+      let hou = date.getHours(); //获取当前小时数(0-23)
+      let min = date.getMinutes(); //获取当前分钟数(0-59)
+      let sec = date.getSeconds(); //获取当前秒数(0-59)
+      if (mou < 10) mou = '0' + mou;
+      if (day < 10) day = '0' + day;
+      if (hou < 10) hou = '0' + hou;
+      if (min < 10) min = '0' + min;
+      if (sec < 10) sec = '0' + sec;
+      this.riqi = year + '/' + mou + '/' + day;
+      this.days = days;
+      this.shijian = hou + ':' + min + ':' + sec;
+    },
+    newtime() {
+      setInterval(() => {
+        this.gettime();
+      }, 1000);
+    },
+    // 获取组网任务表数据
+    async getWorkUnreport() {
+      this.pageLoading = true;
+      try {
+        let params = {
+          // pageNum: 1,
+          // pageSize: 100,
+          status: [1, 2]
+          // artisanStatus: '0'
+        };
+        const res = await getPutMeshWorkOrderByPage(params);
+        console.log('下发未报工数据:', res);
+        this.pageLoading = false;
+        this.taskDistTableData = res.data.data.list;
+
+        // this.total = res.data.data.total
+      } catch (error) {
+        this.pageLoading = false;
+      }
+    },
+    // 获取鞍架余量表数据
+    async getSaddleData() {
+      // return;
+      this.pageLoading = true;
+      this.heightFilterArr1 = [];
+      const res = await getOnekeyWorkReportByPage({
+        status: [3]
+      });
+      this.pageLoading = false;
+      this.saddleTableData = res.data.data.list;
+
+      let tempHeight = [];
+      this.saddleTableData.map((item) => {
+        tempHeight.push(item.height);
+      });
+      tempHeight = [...new Set(tempHeight)];
+      tempHeight.map((item) => {
+        this.heightFilterArr1.push({
+          value: item,
+          text: item
+        });
+      });
+    },
+    // 获取组网排程表数据
+    async getProductSchedule() {
+      this.pageLoading = true;
+      this.heightFilterArr2 = [];
+      const res = await getPutMeshWorkOrderByPage({
+        status: [3]
+        // materialName: '板材',
+        // pageSize: 1000,
+        // pageNum: 1
+      });
+      this.pageLoading = false;
+      this.productScheduleTableData = res.data.data.list;
+
+      let tempHeight = [];
+      this.productScheduleTableData.map((item) => {
+        tempHeight.push(item.height);
+      });
+      tempHeight = [...new Set(tempHeight)];
+      tempHeight.map((item) => {
+        this.heightFilterArr2.push({
+          value: item,
+          text: item
+        });
+      });
+    },
+    // 报工按钮操作
+    showWorkReportDialog(row) {
+      this.workReportDialogData.push(JSON.parse(JSON.stringify(row)));
+      this.workReportDialog = true;
+    },
+    // 关闭报工弹窗
+    handleCloseWorkReportDialog() {
+      this.workReportDialog = false;
+      this.workReportDialogData = [];
+      this.spreadModulus = '';
+    },
+    spreadModulusInput(val) {
+      if (Number(val) > Number(this.workReportDialogData[0].allowance)) {
+        this.spreadModulus = '';
+        return this.$message.error('计划挂网模数不能大于未挂网余量!');
+      }
+    },
+    spudModulusInput(val) {
+      if (Number(val) > Number(this.lowerDieDialogData[0].ajSum)) {
+        this.spudModulus = '';
+        return this.$message.error('插钎模数不能大于鞍架余量!');
+      }
+    },
+    // 确认报工操作
+    handleWorkReport() {
+      this.dialogLoading = true;
+      let obj = {
+        tid: this.workReportDialogData[0].id,
+        // type: 0,
+        allowance: this.spreadModulus
+        // sjMeshSpecs: this.workReportDialogData[0].meshLength,
+        // sjMeshSpecsTwo: '+'
+      };
+      putMesSubmit(obj)
+        .then((res) => {
+          this.workReportDialog = false;
+          this.dialogLoading = false;
+          this.workReportDialogData = [];
+          this.spreadModulus = '';
+          this.getWorkUnreport();
+          this.getSaddleData();
+          this.getProductSchedule();
+          this.$message.success('报工成功!');
+        })
+        .catch(() => {
+          this.dialogLoading = false;
+        });
+    },
+    // 下模按钮操作
+    handleLower(row) {
+      console.log(row);
+      this.lowerDieDialog = true;
+      this.lowerDieDialogData.push(JSON.parse(JSON.stringify(row)));
+    },
+    // 盘点调整
+    handleSaveCutting(row) {
+      this.saveCuttingDialog = true;
+      this.saveCuttingRow = row;
+    },
+    async confirmSaddle() {
+      try {
+        this.pageLoading = true;
+        let query = {
+          ajSum: this.saddleMargin,
+          tid: this.saveCuttingRow.id,
+          ajTrueFalse:2
+        };
+        const res = await saddleMarginDie(query);
+        this.pageLoading = false;
+        this.saveCuttingDialog = false;
+        this.saddleMargin = '';
+        this.getSaddleData();
+        this.$message.success('操作成功!');
+      } catch (error) {
+        this.pageLoading = false;
+        this.saveCuttingDialog = false;
+        console.log(error);
+      }
+    },
+    cancelSaddle() {
+      this.saveCuttingDialog = false;
+      this.saddleMargin = '';
+    },
+    // 关闭下模弹窗
+    handleCloseLowerDieDialog() {
+      this.lowerDieDialog = false;
+      this.lowerDieDialogData = [];
+      this.spudModulus = '';
+    },
+    // 确认下模操作
+    handleLowerDie() {
+      this.dialogLoading = true;
+      let obj = {
+        tid: this.lowerDieDialogData[0].id,
+        ajSum: this.spudModulus,
+        ajTrueFalse:1
+      };
+      saddleMarginDie(obj)
+        .then((res) => {
+          console.log(res);
+          this.dialogLoading = false;
+          this.lowerDieDialog = false;
+          this.lowerDieDialogData = [];
+          this.spudModulus = '';
+          this.getSaddleData();
+          this.$message.success('下模成功!');
+        })
+        .catch(() => {
+          this.dialogLoading = false;
+        });
+    },
+    // 撤回生产排程列表数据
+    recallProductSchedule(row) {
+      this.$confirm('确认撤回此条计划吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(async () => {
+          try {
+            let obj = {
+              tid: row.id
+              // type: 1,
+              // modulus: row.cuttingMargin
+            };
+            await workFallback(obj);
+            this.getWorkUnreport();
+            this.getSaddleData();
+            this.getProductSchedule();
+            this.$message.success('撤回成功!');
+          } catch (error) {
+            this.pageLoading = false;
+          }
+        })
+        .catch(() => {});
+    },
+    // 筛选高度
+    filterHeightMethod(value, row, column) {
+      const property = column['property'];
+      return row[property] === value;
+    },
+    // 筛选开槽
+    filterSlottingMethod(value, row, column) {
+      if (value == '开槽') {
+        return row['isSlotting'] === '是';
+      } else {
+        return row['isSlotting'] === '否';
+      }
+    },
+    // 筛选等级
+    filterWeightMethod(value, row, column) {
+      const property = column['property'];
+      return row[property] === value;
+    },
+    // 筛选班组
+    filterJobMethod(value, row, column) {
+      const property = column['property'];
+      return row[property] === value;
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.title {
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  margin-left: 0;
+  padding: 0 20px;
+  box-sizing: border-box;
+  // color: #fff;
+  height: 60px;
+  width: 100%;
+  background-color: #fff;
+  font-size: 16px;
+  .item:nth-child(1) {
+    flex: 1;
+  }
+  .item:nth-child(2) {
+    flex: 2;
+    text-align: left;
+  }
+  .item:nth-child(3) {
+    flex: 2;
+    text-align: left;
+  }
+  .item:nth-child(4) {
+    flex: 2;
+    text-align: right;
+  }
+  .item:nth-child(5) {
+    flex: 1;
+  }
+  .subWorkNameBox {
+    font-size: 24px !important;
+  }
+}
+:deep(.el-table) th.el-table__cell {
+  background: none;
+}
+.basic-container {
+  height: calc(100% - 66px);
+}
+:deep(.el-card.is-always-shadow) {
+  height: calc(100%);
+}
+// :deep(.el-card.is-always-shadow),
+// :deep(.el-table__empty-block),
+// .basic-container,
+// :deep(.el-table) {
+//   // background-color: #080848;
+// }
+:deep(.el-table--border) {
+  overflow: auto;
+}
+
+:deep(.el-table::before) {
+  display: none;
+}
+
+:deep(.el-table) thead,
+:deep(.el-table) tbody {
+  // color: #fff !important;
+}
+
+:deep(.el-table) thead th,
+:deep(.el-table) tbody td {
+  // background-color: #080848 !important;
+  font-size: 16px;
+}
+:deep(.el-table .cell) {
+  line-height: 45px;
+}
+
+// 全局修改滚动条样式
+:deep(::-webkit-scrollbar-thumb) {
+  // background-color: #666aa1;
+}
+
+:deep(.el-button) {
+  // background-color: #080848;
+  // color: #fff;
+}
+:deep(.el-button.el-button--text) {
+  font-size: 16px;
+  &:hover {
+    // color: red;
+  }
+}
+.container {
+  padding: 30px 0;
+  box-sizing: border-box;
+  .task-dist-title {
+    // color: #fff;
+    font-size: 20px;
+    text-align: center;
+    margin-bottom: 10px;
+  }
+  .top-row {
+    // border-bottom: 1px solid #fff;
+    height: 50%;
+  }
+  .bottom-row {
+    height: 50%;
+    margin-top: 30px;
+    display: flex;
+    justify-content: space-between;
+    .left-col {
+      .saddle-table-title {
+        // color: #fff;
+        font-size: 20px;
+        align-self: center;
+        flex: 1;
+        text-align: center;
+        margin-right: 10%;
+        margin-bottom: 10px;
+      }
+    }
+    .right-col {
+      .product-schedule-title {
+        font-size: 20px;
+        // color: #fff;
+        align-self: center;
+        flex: 1;
+        text-align: center;
+        margin-right: 10%;
+        margin-bottom: 10px;
+      }
+    }
+  }
+}
+:deep(.el-table__column-filter-trigger) i {
+  font-size: 14px;
+  // color: #fff;
+}
+.dialog1-footer,
+.dialog2-footer {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: 15px;
+  .spread-modulus,
+  .spud-modulus {
+    display: flex;
+    align-items: center;
+    margin: 0 50px;
+    > span {
+      width: 72px;
+    }
+    :deep(.el-input) {
+      width: 120px;
+    }
+  }
+}
+</style>