Ver código fonte

生产计划

quwangxin 2 anos atrás
pai
commit
12ec67af20

+ 22 - 0
src/api/productionPlan/batchingplan.js

@@ -0,0 +1,22 @@
+import request from '@/utils/request';
+
+/**
+ * 列表
+ */
+export async function getList (data) {
+  const res = await request.post('/aps/productionplan/page', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+/**
+ * 保存
+ */
+export async function save (data) {
+  const res = await request.post('/aps/productionplan/save', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

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

@@ -20,3 +20,13 @@ export async function save (data) {
   }
   }
   return Promise.reject(new Error(res.data.message));
   return Promise.reject(new Error(res.data.message));
 }
 }
+/**
+ * 详情
+ */
+export async function getById (id) {
+  const res = await request.get(`/aps/productionplan/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

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

@@ -10,3 +10,14 @@ export async function release (data) {
   }
   }
   return Promise.reject(new Error(res.data.message));
   return Promise.reject(new Error(res.data.message));
 }
 }
+
+/**
+ * 工单发布
+ */
+export async function getDeviceList ({ productionId }) {
+  const res = await request.get(`/aps/workorder/getDeviceList/${productionId}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 21 - 0
src/api/workforceManagement/classes.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request';
+
+// 列表
+export async function getteamtime (data) {
+  const res = await request.get(`/main/teamtime/page`, {
+    params: data
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+//
+// 根据班次id 获取绑定人员
+export async function getExector (id) {
+  const res = await request.get(`/main/teamtime/teamListById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 72 - 0
src/components/CommomSelect/classes-select.vue

@@ -0,0 +1,72 @@
+<template>
+  <!-- 班次 -->
+  <el-select
+    v-model="selectVal"
+    filterable
+    style="width: 100%"
+    v-bind="$attrs"
+    v-on="$listeners"
+    clearable
+  >
+    <el-option
+      v-for="item in dictList"
+      :key="item.id"
+      :label="item.name"
+      :value="item.id"
+    ></el-option>
+  </el-select>
+</template>
+
+<script>
+  import { getteamtime } from '@/api/workforceManagement/classes';
+  export default {
+    model: {
+      prop: 'value',
+      event: 'updateVal'
+    },
+    props: {
+      value: {
+        type: [String, Number, Array],
+        default: ''
+      },
+      init: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data () {
+      return {
+        dictList: []
+      };
+    },
+    computed: {
+      selectVal: {
+        set (val) {
+          this.$emit(
+            'selfChange',
+            val,
+            this.dictList.find((i) => i.id === val)
+          );
+          this.$emit('updateVal', val);
+        },
+        get () {
+          return this.value;
+        }
+      }
+    },
+    created () {
+      if (this.init) {
+        this.getList();
+      }
+    },
+    methods: {
+      async getList () {
+        const res = await getteamtime({
+          pageNum: 1,
+          size: -1
+        });
+        this.dictList = res.list;
+      }
+    }
+  };
+</script>

+ 1 - 1
src/customError.js

@@ -1,5 +1,5 @@
 export default class CustomError extends Error {
 export default class CustomError extends Error {
-  constructor(message) {
+  constructor (message) {
     super(message);
     super(message);
     (this.name = 'CustomError'),
     (this.name = 'CustomError'),
       // 这一步可不写,默认会保存堆栈追踪信息到自定义错误构造函数之前,
       // 这一步可不写,默认会保存堆栈追踪信息到自定义错误构造函数之前,

+ 76 - 0
src/views/materialPlan/components/plan-edit-dialog.vue

@@ -0,0 +1,76 @@
+<template>
+  <ele-modal
+    :visible.sync="visible"
+    :title="`${type == 'add' ? '创建' : '编辑'}配料计划`"
+    custom-class="ele-dialog-form"
+  >
+    <el-form :model="formData" label-width="100px" class="ele-body">
+      <el-row :gutter="32">
+        <el-col :span="12">
+          <el-form-item label="选择物料">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="生产版本">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="牌号">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="工艺路线名称">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="要求交付日期">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="工艺路线版本">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="生产重量">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="计划备注">
+            <el-input v-model="formData.aaa"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <div slot="footer">
+      <el-button>取消</el-button>
+      <el-button type="primary">确定</el-button>
+    </div>
+  </ele-modal>
+</template>
+
+<script>
+  export default {
+    data () {
+      return {
+        visible: false,
+        type: 'add',
+        formData: {}
+      };
+    },
+    methods: {
+      open (type, row = {}) {
+        this.type = type;
+        this.formData = row;
+        this.visible = true;
+      }
+    }
+  };
+</script>

+ 19 - 2
src/views/materialPlan/index.vue

@@ -3,7 +3,12 @@
     <el-card shadow="never" v-loading="loading">
     <el-card shadow="never" v-loading="loading">
       <materialPlan-search @search="reload" ref="searchRef">
       <materialPlan-search @search="reload" ref="searchRef">
       </materialPlan-search>
       </materialPlan-search>
-      <el-button type="primary" style="margin: 20px 0">创建计划</el-button>
+      <el-button
+        type="primary"
+        style="margin: 20px 0"
+        @click="handleEdit('add')"
+        >创建计划</el-button
+      >
       <el-tabs v-model="activeName" type="card" @tab-click="handleTabChange">
       <el-tabs v-model="activeName" type="card" @tab-click="handleTabChange">
         <el-tab-pane label="未发布" name="first"></el-tab-pane>
         <el-tab-pane label="未发布" name="first"></el-tab-pane>
         <el-tab-pane label="已发布" name="second"></el-tab-pane>
         <el-tab-pane label="已发布" name="second"></el-tab-pane>
@@ -34,7 +39,12 @@
           <el-link type="primary" :underline="false" icon="el-icon-truck">
           <el-link type="primary" :underline="false" icon="el-icon-truck">
             重新发布
             重新发布
           </el-link>
           </el-link>
-          <el-link type="primary" :underline="false" icon="el-icon-edit">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="handleEdit('edit', row)"
+          >
             修改计划
             修改计划
           </el-link>
           </el-link>
           <el-link type="primary" :underline="false" icon="el-icon-edit">
           <el-link type="primary" :underline="false" icon="el-icon-edit">
@@ -43,15 +53,19 @@
         </template>
         </template>
       </ele-pro-table>
       </ele-pro-table>
     </el-card>
     </el-card>
+    <planEditDialog ref="planEditDialogRef" />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
   import materialPlanSearch from './components/materialPlan-search.vue';
   import materialPlanSearch from './components/materialPlan-search.vue';
+  import planEditDialog from './components/plan-edit-dialog.vue';
   export default {
   export default {
     components: {
     components: {
+      planEditDialog,
       materialPlanSearch
       materialPlanSearch
     },
     },
+
     data () {
     data () {
       return {
       return {
         activeName: 'first',
         activeName: 'first',
@@ -219,6 +233,9 @@
         //   type: 3
         //   type: 3
         // });
         // });
       },
       },
+      handleEdit (type, row) {
+        this.$refs.planEditDialogRef.open(type, row);
+      },
       // 发布工单
       // 发布工单
       handleOrderPublish (row) {
       handleOrderPublish (row) {
         this.$router.push({
         this.$router.push({

+ 70 - 18
src/views/productionPlan/components/equipment-dailog.vue

@@ -14,10 +14,15 @@
     <ele-pro-table
     <ele-pro-table
       ref="table"
       ref="table"
       :columns="columns"
       :columns="columns"
+      @done="handleDone"
+      row-key="id"
       :needPage="false"
       :needPage="false"
+      :initLoad="false"
       :selection.sync="selectionList"
       :selection.sync="selectionList"
       :datasource="datasource"
       :datasource="datasource"
-      height
+      :current.sync="current"
+      :highlight-current-row="isSingle"
+      height="45vh"
     />
     />
 
 
     <div class="footer" slot="footer">
     <div class="footer" slot="footer">
@@ -28,15 +33,24 @@
 </template>
 </template>
 
 
 <script>
 <script>
-  import { getList } from '@/api/classifyManage/itemInformation';
+  import { getDeviceList } from '@/api/productionPlan/order';
   export default {
   export default {
+    prop: ['producteVersionId'],
     data () {
     data () {
       return {
       return {
         visible: false,
         visible: false,
+        current: null,
         name: '',
         name: '',
         selectionList: [],
         selectionList: [],
         tableList: [],
         tableList: [],
-        columns: [
+        memoList: [],
+        isSingle: false,
+        callback: null
+      };
+    },
+    computed: {
+      columns () {
+        const list = [
           {
           {
             label: '设备编码',
             label: '设备编码',
             prop: 'code'
             prop: 'code'
@@ -51,46 +65,84 @@
           },
           },
           {
           {
             label: '未完成工单数',
             label: '未完成工单数',
-            prop: 'code'
+            prop: 'code5'
           },
           },
           {
           {
             label: '预计完成时间',
             label: '预计完成时间',
-            prop: 'code'
+            prop: 'code2'
           },
           },
           {
           {
             label: '产能',
             label: '产能',
-            prop: 'code'
+            prop: 'code3'
           },
           },
           {
           {
             label: '末单牌号',
             label: '末单牌号',
-            prop: 'code'
-          },
-          {
+            prop: 'code4'
+          }
+        ];
+
+        if (!this.isSingle) {
+          list.push({
             type: 'selection',
             type: 'selection',
             align: 'center'
             align: 'center'
-          }
-        ]
-      };
+          });
+        }
+        return list;
+      }
     },
     },
     methods: {
     methods: {
       open (list) {
       open (list) {
+        this.memoList = list;
+        this.isSingle = false;
         this.visible = true;
         this.visible = true;
+        this.$nextTick(() => {
+          this.$refs.table.reload();
+        });
+      },
+      openSingle (list, callback) {
+        this.memoList = list;
+        this.callback = callback;
+        this.isSingle = true;
+        this.visible = true;
+        this.$nextTick(() => {
+          this.$refs.table.reload();
+        });
+      },
+      handleDone ({ data }) {
+        if (this.memoList.length) {
+          this.$nextTick(() => {
+            if (this.isSingle) {
+              this.$refs.table.setCurrentRow(
+                data.find((item) => item.id == this.memoList[0].deviceId)
+              );
+            } else {
+              this.$refs.table.setSelectedRowKeys(
+                this.memoList.map((i) => i.deviceId)
+              );
+            }
+          });
+        }
       },
       },
       datasource () {
       datasource () {
-        return getList({
-          pageNum: 1,
-          size: -1,
+        return getDeviceList({
           name: this.name,
           name: this.name,
-          categoryLevelId: '4'
+          productionId: this.producteVersionId
         });
         });
       },
       },
       handleSearch () {
       handleSearch () {
         this.$refs.table.reload();
         this.$refs.table.reload();
       },
       },
       confirm () {
       confirm () {
-        if (this.selectionList.length) return this.$message.error('请选择数据');
+        if (this.isSingle) {
+          if (!this.current) return this.$message.error('请选择数据');
+
+          this.callback && this.callback(this.current);
+        } else {
+          if (!this.selectionList.length)
+            return this.$message.error('请选择数据');
 
 
-        this.$emit('success', this.selectionList);
+          this.$emit('success', this.selectionList);
+        }
 
 
         this.cancel();
         this.cancel();
       },
       },

+ 211 - 59
src/views/productionPlan/components/plan-view.vue

@@ -1,9 +1,10 @@
 <template>
 <template>
-  <div>
+  <div class="plan-view">
     <div class="description">
     <div class="description">
-      <div class="label">方案说明</div>
-      <!-- <div class="content">
-        <template v-for="(item, index) in rules">
+      <div class="label"></div>
+      <!-- <div class="label">方案说明</div>
+      <div class="content">
+        <template v-for="(item, index) in rulesList">
           <template v-for="(itm, idx) in item.list">
           <template v-for="(itm, idx) in item.list">
             <template v-if="!itm.lastDisabled">
             <template v-if="!itm.lastDisabled">
               <div class="tag" :key="index + '' + idx">{{ itm.label }}</div>
               <div class="tag" :key="index + '' + idx">{{ itm.label }}</div>
@@ -12,8 +13,10 @@
         </template>
         </template>
       </div> -->
       </div> -->
       <div class="operate">
       <div class="operate">
-        <el-button type="primary" plain>发布当前方案</el-button>
-        <el-button type="primary">保存</el-button>
+        <el-button type="primary" plain @click="handleRelease"
+          >发布当前方案</el-button
+        >
+        <!-- <el-button type="primary">保存</el-button> -->
       </div>
       </div>
     </div>
     </div>
 
 
@@ -21,81 +24,153 @@
       <el-button type="primary" plain size="small" @click="addOrder"
       <el-button type="primary" plain size="small" @click="addOrder"
         >添加工单</el-button
         >添加工单</el-button
       >
       >
-      <el-button type="primary" plain size="small">删除</el-button>
+      <!-- <el-button type="primary" plain size="small">删除</el-button> -->
       <div class="items">
       <div class="items">
         <span class="label">累计工单条数</span>
         <span class="label">累计工单条数</span>
-        14
+        {{ tableData.length }}
       </div>
       </div>
       <div class="items">
       <div class="items">
         <span class="label">累计成型数量</span>
         <span class="label">累计成型数量</span>
-        14pcs
+        {{ sumData.formingNum }}pcs
       </div>
       </div>
       <div class="items">
       <div class="items">
         <span class="label">累计成型重量</span>
         <span class="label">累计成型重量</span>
-        14kg
+        {{ sumData.formingWeight }}kg
       </div>
       </div>
       <div class="items">
       <div class="items">
         <span class="label">设备数量</span>
         <span class="label">设备数量</span>
         14条
         14条
       </div>
       </div>
-      <div class="items">
+      <!-- <div class="items">
         <span class="label">成型剂需求</span>
         <span class="label">成型剂需求</span>
         14条
         14条
       </div>
       </div>
       <div class="items">
       <div class="items">
         <span class="label">混合料需求</span>
         <span class="label">混合料需求</span>
         14条
         14条
-      </div>
+      </div> -->
     </div>
     </div>
-
-    <el-table :data="tableData">
-      <el-table-column type="index" label="序号"></el-table-column>
-      <el-table-column label="工单号" prop=""></el-table-column>
-      <el-table-column label="成型数量" prop="">
-        <template v-slot="{ row }">
-          <el-input type="number" v-model.number="row.num"></el-input>
-        </template>
-      </el-table-column>
-      <el-table-column label="成型重量" prop="">
-        <template v-slot="{ row }">
-          <el-input type="number" v-model.number="row.num"></el-input>
-        </template>
-      </el-table-column>
-      <el-table-column label="开始日期" prop="">
-        <template v-slot="{ row }">
-          <el-input type="number" v-model.number="row.num"></el-input>
-        </template>
-      </el-table-column>
-      <el-table-column label="班次" prop="">
-        <template v-slot="{ row }">
-          <el-select v-model="row.ba">
-            <el-option></el-option>
-          </el-select>
-        </template>
-      </el-table-column>
-      <el-table-column label="设备编码" prop=""></el-table-column>
-      <el-table-column label="设备名称" prop=""></el-table-column>
-      <el-table-column label="可执行人" prop=""></el-table-column>
-      <el-table-column label="操作" prop="">
-        <template v-slot="{ row }">
-          <el-link type="danger">删除</el-link>
-        </template>
-      </el-table-column>
-      <el-table-column type="selection"></el-table-column>
-    </el-table>
-    <equipmentDailog ref="equipmentDailogRef" @success="equipmentSelect" />
+    <el-form :model="{ tableData }" label-width="0" ref="formRef">
+      <el-table :data="tableData">
+        <el-table-column type="index" label="序号"></el-table-column>
+        <el-table-column label="工单号" prop="code"></el-table-column>
+        <el-table-column label="成型数量" prop="">
+          <template v-slot="{ row, $index }">
+            <el-form-item
+              :prop="`tableData.${$index}.formingNum`"
+              :rules="rule.formingNum"
+            >
+              <el-input
+                type="number"
+                v-model.number="row.formingNum"
+              ></el-input>
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column label="成型重量" prop="">
+          <template v-slot="{ row, $index }">
+            <el-form-item
+              :prop="`tableData.${$index}.formingWeight`"
+              :rules="rule.formingWeight"
+            >
+              <el-input
+                type="number"
+                v-model.number="row.formingWeight"
+              ></el-input>
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column label="开始日期" prop="">
+          <template v-slot="{ row, $index }">
+            <el-form-item
+              :prop="`tableData.${$index}.planStartTime`"
+              :rules="rule.planStartTime"
+            >
+              <el-date-picker
+                class="w100"
+                :clearable="false"
+                v-model="row.planStartTime"
+                :disabledDate="() => true"
+                type="date"
+                placeholder="选择日期"
+                value-format="yyyy-MM-dd HH:mm:ss"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column label="班次" prop="">
+          <template v-slot="{ row, $index }">
+            <el-form-item
+              :prop="`tableData.${$index}.classeId`"
+              :rules="rule.classeId"
+            >
+              <classesSelect
+                v-model="row.classeId"
+                @selfChange="(val) => handleClasseChange(val, row)"
+              />
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column label="设备编码" prop="deviceCode"></el-table-column>
+        <el-table-column label="设备名称" prop="deviceName">
+          <template v-slot="{ row, $index }">
+            <el-input
+              :value="row.deviceName"
+              @click.native="editOrder(row)"
+            ></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column label="可执行人" prop=""></el-table-column>
+        <el-table-column label="操作" prop="">
+          <template v-slot="{ $index }">
+            <el-link type="danger" @click="handleDelete($index)">删除</el-link>
+          </template>
+        </el-table-column>
+        <el-table-column type="selection"></el-table-column>
+      </el-table>
+    </el-form>
+    <equipmentDailog
+      ref="equipmentDailogRef"
+      @success="equipmentSelect"
+      :producteVersionId="infoData.producteVersionId"
+    />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
   import equipmentDailog from './equipment-dailog.vue';
   import equipmentDailog from './equipment-dailog.vue';
-  import { save } from '@/api/productionPlan/index.js';
+  import classesSelect from '@/components/CommomSelect/classes-select';
+  import { getExector } from '@/api/workforceManagement/classes';
+
+  import { release } from '@/api/productionPlan/order.js';
+  import { getCode } from '@/api/codeManagement';
   export default {
   export default {
-    components: { equipmentDailog },
+    components: { equipmentDailog, classesSelect },
+    props: {
+      infoData: {
+        type: Object,
+        default: () => ({})
+      }
+    },
     data () {
     data () {
       return {
       return {
         tableData: [],
         tableData: [],
-        rules: [
+        rule: {
+          formingNum: [
+            { required: true, message: '请输入成型数量', trigger: 'blur' }
+          ],
+          formingWeight: [
+            { required: true, message: '请输入成型重量', trigger: 'blur' }
+          ],
+          planStartTime: [
+            { required: true, message: '请选择开始日期', trigger: 'blur' }
+          ],
+          classeId: [
+            { required: true, message: '请选择班次', trigger: 'change' }
+          ]
+        },
+        rulesList: [
           {
           {
             type: 'radio',
             type: 'radio',
             value: '',
             value: '',
@@ -131,28 +206,105 @@
         ]
         ]
       };
       };
     },
     },
+    computed: {
+      sumData () {
+        let formingNum = 0;
+        let formingWeight = 0;
+        this.tableData.forEach((ele) => {
+          formingNum += ele.formingNum || 0;
+          formingWeight += ele.formingWeight || 0;
+        });
+
+        return { formingNum, formingWeight };
+      }
+    },
     methods: {
     methods: {
+      // 发布
+      handleRelease () {
+        this.$refs.formRef.validate((value) => {
+          if (value) {
+            this.$confirm('发布工地后不可撤回,确定发布吗?', '发布确认').then(
+              async () => {
+                await release(this.tableData);
+
+                this.$message.success('发布成功!');
+                this.$router.go(-1);
+              }
+            );
+          }
+        });
+      },
+      // 班次改变选择执行人
+      async handleClasseChange (val, row) {
+        const res = await getExector(val);
+
+        console.log(res);
+      },
       addOrder () {
       addOrder () {
         this.$refs.equipmentDailogRef.open(this.tableData);
         this.$refs.equipmentDailogRef.open(this.tableData);
       },
       },
-      equipmentSelect (list) {
+      editOrder (row) {
+        this.$refs.equipmentDailogRef.openSingle([row], (current) => {
+          row.deviceCode = current.code;
+          row.deviceId = current.id;
+          row.deviceName = current.name;
+          row.planStartTime = '';
+        });
+      },
+      async equipmentSelect (list) {
         this.tableData = this.tableData.filter((item) =>
         this.tableData = this.tableData.filter((item) =>
           list.find((i) => i.id == item.id)
           list.find((i) => i.id == item.id)
         );
         );
 
 
-        this.tableData = list.reduce((cur, pre) => {
-          if (!cur.find((i) => i.id == pre.id)) {
-            cur.push(pre);
+        for (const pre of list) {
+          if (!this.tableData.find((i) => i.id == pre.id)) {
+            const code = await getCode('product_order_code');
+            // classeId	班次id		false
+            // classeName	班次名称		false
+            // code	工单号		false
+            // deviceCode	设备编码		false
+            // deviceId	设备id		false
+            // deviceName	设备名称		false
+            // executorId	执行人id		false
+            // executorName	执行人名称		false
+            // formingNum	成型数量		false
+            // generativeRules	生成规则		false
+            // planCompleteTime	计划完成时间		false
+            // planStartTime	计划开始时间		false
+            // productionPlanCode	生产计划号		false
+            // productionPlanId	生产计划id		false
+            // workOrderType	工单类型
+            this.tableData.push({
+              classeId: pre.classeId,
+              code: code,
+              deviceCode: pre.code,
+              deviceId: pre.id,
+              deviceName: pre.name,
+              executorId: pre.executorId,
+              productionPlanId: this.infoData.id,
+              productionPlanCode: this.infoData.code,
+              planCompleteTime: '', //当班下班时间,
+              planStartTime: '',
+              formingNum: pre.formingNum,
+              formingWeight: ''
+            });
           }
           }
-
-          return cur;
-        }, this.tableData);
+        }
+      },
+      handleDelete (index) {
+        this.tableData.splice(index, 1);
       }
       }
     }
     }
   };
   };
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+  .plan-view {
+    ::v-deep(.el-form-item) {
+      margin-top: 16px;
+      margin-bottom: 16px;
+    }
+  }
   .description {
   .description {
     display: flex;
     display: flex;
     justify-content: space-between;
     justify-content: space-between;

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

@@ -296,7 +296,7 @@
           path: '/productionPlan/workOrderPublish',
           path: '/productionPlan/workOrderPublish',
           query: {
           query: {
             type,
             type,
-            row: JSON.stringify(row)
+            id: row.id
           }
           }
         });
         });
       },
       },

+ 29 - 13
src/views/productionPlan/workOrderPublish.vue

@@ -2,8 +2,7 @@
   <div class="ele-body">
   <div class="ele-body">
     <el-card shadow="never">
     <el-card shadow="never">
       <div class="page-title">
       <div class="page-title">
-        <el-page-header @back="$router.go(-1)" content="发布工单">
-        </el-page-header>
+        <el-page-header @back="back" content="发布工单"> </el-page-header>
       </div>
       </div>
 
 
       <el-descriptions title="" :column="6" border class="mb-20">
       <el-descriptions title="" :column="6" border class="mb-20">
@@ -11,7 +10,7 @@
           infoData.code
           infoData.code
         }}</el-descriptions-item>
         }}</el-descriptions-item>
         <el-descriptions-item label="计划类型">{{
         <el-descriptions-item label="计划类型">{{
-          infoData.code
+          planType[infoData.planType]
         }}</el-descriptions-item>
         }}</el-descriptions-item>
         <el-descriptions-item label="产品编码">{{
         <el-descriptions-item label="产品编码">{{
           infoData.productCode
           infoData.productCode
@@ -23,13 +22,13 @@
           infoData.model
           infoData.model
         }}</el-descriptions-item>
         }}</el-descriptions-item>
         <el-descriptions-item label="生产版本">{{
         <el-descriptions-item label="生产版本">{{
-          infoData.code
+          infoData.productVersionName
         }}</el-descriptions-item>
         }}</el-descriptions-item>
         <el-descriptions-item label="工艺路线名称">{{
         <el-descriptions-item label="工艺路线名称">{{
-          infoData.code
+          infoData.routingName
         }}</el-descriptions-item>
         }}</el-descriptions-item>
         <el-descriptions-item label="工艺路线版本">{{
         <el-descriptions-item label="工艺路线版本">{{
-          infoData.code
+          infoData.routingVersion
         }}</el-descriptions-item>
         }}</el-descriptions-item>
         <el-descriptions-item label="产品数量"
         <el-descriptions-item label="产品数量"
           >{{ infoData.productNum
           >{{ infoData.productNum
@@ -87,24 +86,25 @@
           </div>
           </div>
         </div>
         </div>
       </div> -->
       </div> -->
-
-      <el-tabs v-model="activeName" type="card">
+      <planView key="first" :infoData="infoData" />
+      <!-- <el-tabs v-model="activeName" type="card">
         <el-tab-pane label="默认" name="first"
         <el-tab-pane label="默认" name="first"
-          ><planView key="first"
+          ><planView key="first" :infoData="infoData"
         /></el-tab-pane>
         /></el-tab-pane>
         <el-tab-pane
         <el-tab-pane
           v-for="(item, index) in planList"
           v-for="(item, index) in planList"
           :label="item.label"
           :label="item.label"
           :name="index"
           :name="index"
-          ><planView :key="index"
+          ><planView :key="index" :infoData="infoData"
         /></el-tab-pane>
         /></el-tab-pane>
-      </el-tabs>
+      </el-tabs> -->
     </el-card>
     </el-card>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
   import planView from './components/plan-view';
   import planView from './components/plan-view';
+  import { getById } from '@/api/productionPlan/index';
   export default {
   export default {
     components: { planView },
     components: { planView },
     data () {
     data () {
@@ -145,14 +145,30 @@
             list: [{ label: '末单均衡', value: 0 }]
             list: [{ label: '末单均衡', value: 0 }]
           }
           }
         ],
         ],
-        infoData: {}
+        infoData: {},
+        planType: ['内销计划', '外销计划'],
+        id: null
       };
       };
     },
     },
+    methods: {
+      back () {
+        this.$confirm('返回后将清空所有方案,是否要继续?', '提示').then(() => {
+          this.$router.go(-1);
+        });
+      },
+      async getInfo () {
+        const data = await getById(this.id);
+
+        this.infoData = data;
+      }
+    },
     created () {
     created () {
       const { query = {} } = this.$route;
       const { query = {} } = this.$route;
-      this.infoData = JSON.parse(query.row || '{}');
 
 
       this.type = query.type;
       this.type = query.type;
+      this.id = query.id;
+
+      this.getInfo();
     }
     }
   };
   };
 </script>
 </script>

+ 2 - 2
vue.config.js

@@ -31,11 +31,11 @@ module.exports = {
     proxy: {
     proxy: {
       // 当我们的本地的请求 有/api的时候,就会代理我们的请求地址向另外一个服务器发出请求
       // 当我们的本地的请求 有/api的时候,就会代理我们的请求地址向另外一个服务器发出请求
       '/api': {
       '/api': {
-        target: 'http://192.168.3.35:8080', // kang杨威
+        // target: 'http://192.168.3.35:8080', // kang杨威
         // target: 'http://192.168.3.38:8080', // 陈潇
         // target: 'http://192.168.3.38:8080', // 陈潇
         // target: 'http://192.168.3.25:8080', // 黄峥嵘
         // target: 'http://192.168.3.25:8080', // 黄峥嵘
         // target: 'http://192.168.3.41:8080', // 何江鹏
         // target: 'http://192.168.3.41:8080', // 何江鹏
-        // target: 'http://192.168.3.33:8080', // 谢一平
+        target: 'http://192.168.3.33:8080', // 谢一平
         // target: 'http://192.168.3.51:18086', // 测试环境
         // target: 'http://192.168.3.51:18086', // 测试环境
 
 
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域