2213980799@qq.com 1 год назад
Родитель
Сommit
78bf988a66

+ 8 - 3
src/api/mergePutMesh/mergePutMesh.js

@@ -23,8 +23,9 @@ export const updateMergeV2 = (data) => {
 }
 }
 
 
 // 获取任务下发数据列表
 // 获取任务下发数据列表
-export const getPutMeshWorkOrderByPage = (data) => {
-  return request({
+export const getPutMeshWorkOrderByPage = async (data) => {
+
+  const res = await request({
     url: '/aps/team_networking_task/ListPage',
     url: '/aps/team_networking_task/ListPage',
     method: 'post',
     method: 'post',
     params: {
     params: {
@@ -33,6 +34,9 @@ export const getPutMeshWorkOrderByPage = (data) => {
     },
     },
     data: data,
     data: data,
   })
   })
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
 }
 }
 
 
 // 任务下发按钮操作
 // 任务下发按钮操作
@@ -42,9 +46,10 @@ export const issuedPutMeshWorkOrder = (params) => {
 
 
 // 批量删除挂网工单信息(取消、删除、撤回)
 // 批量删除挂网工单信息(取消、删除、撤回)
 export const deletePutMeshWorkOrder = (params, type) => {
 export const deletePutMeshWorkOrder = (params, type) => {
+  console.log(params)
   let url = type == 0 ? '/aps/team_networking_task/cancel' : "/aps/team_networking_task/delete"
   let url = type == 0 ? '/aps/team_networking_task/cancel' : "/aps/team_networking_task/delete"
   if (type == 1) {
   if (type == 1) {
-    return request.delete(url, {data:params.id})
+    return request.post(url, params.id)
 
 
   } else {
   } else {
     return request.post(url, params)
     return request.post(url, params)

+ 11 - 0
src/api/productionPlan/index.js

@@ -72,3 +72,14 @@ export async function del (id) {
   }
   }
   return Promise.reject(new Error(res.data.message));
   return Promise.reject(new Error(res.data.message));
 }
 }
+
+/**
+ * 生产详情列表
+ */
+ export async function queryTaskDetail (data) {
+  const res = await request.get('/aps/team_networking_task/queryTaskDetail/'+data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 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) {
 export function formatDictText(dicts, values) {
   if (!(Array.isArray(dicts) && dicts.length > 0)) {
   if (!(Array.isArray(dicts) && dicts.length > 0)) {
@@ -33,3 +33,22 @@ export function randomString(len) {
   }
   }
   return pwd;
   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>

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

@@ -0,0 +1,224 @@
+<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,
+  issuedPutMeshWorkOrder
+} from '@/api/mergePutMesh/mergePutMesh';
+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>

+ 82 - 0
src/views/productionPlan/components/detail/productionDetail.vue

@@ -0,0 +1,82 @@
+<template>
+  <div class="pane-box">
+    <HeaderTitle title="生产详情表"> </HeaderTitle>
+    <ele-pro-table
+      ref="table"
+      :columns="columns"
+      :needPage="false"
+      :initLoad="false"
+      :datasource="datasource"
+    >
+    </ele-pro-table>
+  </div>
+</template>
+<script>
+  import { queryTaskDetail } from '@/api/productionPlan/index';
+  export default {
+    props: {
+      planId: {
+        type: [String, Number],
+        default: ''
+      }
+    },
+    data () {
+      return {
+        columns: [
+          {
+            type: 'index',
+            label: '序号',
+            width: '80'
+          },
+          {
+            prop: 'blockCount',
+            label: '排程数量'
+          },
+          {
+            prop: 'blockCount',
+            label: '完成数量'
+          },
+          {
+            prop: 'taskTime',
+            label: '排程日期'
+          },
+          {
+            prop: 'issuedTime',
+            label: '完成日期'
+          },
+    
+          {
+            prop: 'remark',
+            label: '完结原因'
+          },
+          {
+            prop: 'teamName',
+            label: '挂网班组'
+          },
+          {
+            prop: 'returnNum',
+            label: '切割班组'
+          }
+        ]
+      };
+    },
+    watch: {
+      planId: {
+        immediate: true,
+        handler (val) {
+          console.log(val, 'planId');
+          if (val) {
+            this.$nextTick(() => {
+              this.$refs.table.reload();
+            });
+          }
+        }
+      }
+    },
+    methods: {
+      async datasource () {
+        return queryTaskDetail(this.planId);
+      }
+    }
+  };
+</script>

+ 7 - 2
src/views/productionPlan/detail.vue

@@ -14,6 +14,11 @@
             :planId="infoData.productionPlan && infoData.productionPlan.id"
             :planId="infoData.productionPlan && infoData.productionPlan.id"
           />
           />
         </el-tab-pane>
         </el-tab-pane>
+        <el-tab-pane label="生产详情表" name="productionDetail">
+          <productionDetail
+            :planId="infoData.productionPlan && infoData.productionPlan.id"
+          />
+        </el-tab-pane>
         <!-- <el-tab-pane label="生产信息" name="prod"> <prod /></el-tab-pane>
         <!-- <el-tab-pane label="生产信息" name="prod"> <prod /></el-tab-pane>
         <el-tab-pane label="甘特图" name="gant">
         <el-tab-pane label="甘特图" name="gant">
           <gant />
           <gant />
@@ -26,11 +31,11 @@
 <script>
 <script>
   import plan from './components/detail/plan.vue';
   import plan from './components/detail/plan.vue';
   import material from './components/detail/material.vue';
   import material from './components/detail/material.vue';
-  // import gant from './components/detail/gant.vue';
+  import productionDetail from './components/detail/productionDetail.vue';
   // import prod from './components/detail/prod.vue';
   // import prod from './components/detail/prod.vue';
   import { getProductPlanDetail } from '@/api/productionPlan/index';
   import { getProductPlanDetail } from '@/api/productionPlan/index';
   export default {
   export default {
-    components: { plan, material },
+    components: { plan, material,productionDetail },
     data() {
     data() {
       return {
       return {
         activeName: 'plan',
         activeName: 'plan',

+ 7 - 7
src/views/productionPlan/index.vue

@@ -259,13 +259,13 @@ export default {
           label: '块数',
           label: '块数',
           align: 'center',
           align: 'center',
         },
         },
-        // {
-        //   prop: '',
-        //   label: '已生产数量',
-        //   align: 'center',
-        //   showOverflowTooltip: true,
-        //   minWidth: 110
-        // },
+        {
+          prop: 'noWordCount',
+          label: '未排程块数',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
         {
         {
           prop: 'reqMoldTime',
           prop: 'reqMoldTime',
           label: '要求生产日期',
           label: '要求生产日期',

+ 1 - 1
src/views/saleOrder/salesToProduction.vue

@@ -498,7 +498,7 @@ export default {
       this.form.salesOrders.forEach((item) => {
       this.form.salesOrders.forEach((item) => {
         item.slottingType = item.slottingType&&item.slottingType + '';
         item.slottingType = item.slottingType&&item.slottingType + '';
       });
       });
-      console.log(this.form.salesOrders, ';dsdsds');
+      // console.log(this.form.salesOrders, ';dsdsds');
     },
     },
     async _getInventory() {
     async _getInventory() {
       const res = await getInventory(this.form.productCode, this.form.planType);
       const res = await getInventory(this.form.productCode, this.form.planType);

+ 11 - 10
src/views/schedulingCalculation/mergePutMesh/index.vue

@@ -486,9 +486,9 @@
             <div>
             <div>
               <el-button
               <el-button
                 size="small"
                 size="small"
-                @click="handleDeleteWorkOrder('删除', '1')"
+                @click="handleDeleteWorkOrder('中止', '1')"
                 :disabled="workUnreportSelection.length == 0"
                 :disabled="workUnreportSelection.length == 0"
-                >删除</el-button
+                >人工中止</el-button
               >
               >
               <el-button
               <el-button
                 size="small"
                 size="small"
@@ -550,7 +550,7 @@
               label="余量"
               label="余量"
               align="center"
               align="center"
               width="70"
               width="70"
-              prop="moCount"
+              prop="allowance"
             ></el-table-column>
             ></el-table-column>
             <el-table-column
             <el-table-column
               label="模数"
               label="模数"
@@ -807,13 +807,13 @@ export default {
       let pages = {
       let pages = {
         // pageNum: 1,
         // pageNum: 1,
         // pageSize: 100,
         // pageSize: 100,
-        status: '0',
+        status: [0],
         // artisanStatus: '0'
         // artisanStatus: '0'
       };
       };
       const res = await getPutMeshWorkOrderByPage(pages);
       const res = await getPutMeshWorkOrderByPage(pages);
-      console.log('任务未下发数据列表:', res.data.data.list);
+      console.log('任务未下发数据列表:', res.list);
       this.taskDistTableLoading = false;
       this.taskDistTableLoading = false;
-      this.taskDistTableData = res.data.data.list;
+      this.taskDistTableData = res.list
 
 
       let tempHeight = [];
       let tempHeight = [];
       this.taskDistTableData.map((item) => {
       this.taskDistTableData.map((item) => {
@@ -835,13 +835,13 @@ export default {
       let pages = {
       let pages = {
         // pageNum: 1,
         // pageNum: 1,
         // pageSize: 100,
         // pageSize: 100,
-        status: '1',
+        status: [1],
         // artisanStatus: '0'
         // artisanStatus: '0'
       };
       };
       const res = await getPutMeshWorkOrderByPage(pages);
       const res = await getPutMeshWorkOrderByPage(pages);
-      console.log('任务已下发数据列表:',res.data.data.list);
+      console.log('任务已下发数据列表:',res.list);
       // this.taskDistTableLoading = false
       // this.taskDistTableLoading = false
-      this.workUnreportTableData = res.data.data.list;
+      this.workUnreportTableData = res.list
       this.workUnreportTableLoading = false;
       this.workUnreportTableLoading = false;
 
 
       let tempHeight = [];
       let tempHeight = [];
@@ -1107,9 +1107,10 @@ export default {
           let ids = '';
           let ids = '';
           if (btnType == '取消') {
           if (btnType == '取消') {
             ids = this.taskDistSelection.map((item) => item.id);
             ids = this.taskDistSelection.map((item) => item.id);
-          } else if (btnType == '撤回' || btnType == '删除') {
+          } else if (btnType == '撤回' || btnType == '中止') {
             ids = this.workUnreportSelection.map((item) => item.id);
             ids = this.workUnreportSelection.map((item) => item.id);
           }
           }
+          
           // let params = { type, ids };
           // let params = { type, ids };
           deletePutMeshWorkOrder({id:ids},type)
           deletePutMeshWorkOrder({id:ids},type)
             .then((res) => {
             .then((res) => {