Quellcode durchsuchen

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

quwangxin vor 2 Jahren
Ursprung
Commit
a1d6ee6481

+ 24 - 0
src/api/workOrder/index.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request';
+import store from '@/store';
+import Vue from 'vue';
+
+
+/**
+ * 列表
+ */
+export async function getList (params) {
+  const res = await request.post('/aps/workorder/page', params);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 下达
+export async function releaseWorkOrder(id) {
+  const res = await request.get(`/aps/workorder/releaseWorkOrder/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

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

@@ -605,7 +605,7 @@
                   data.workOrder.productionPlanId = params.id;
                   data.workOrder.productionPlanId = params.id;
                 }
                 }
 
 
-                releaseSave(data)
+                await releaseSave(data)
                   .then(() => {
                   .then(() => {
                     this.$message.success('发布成功!');
                     this.$message.success('发布成功!');
                     this.$router.push({
                     this.$router.push({

+ 166 - 0
src/views/workOrder/components/order-search.vue

@@ -0,0 +1,166 @@
+<!-- 搜索表单 -->
+<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.code" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="计划编码:">
+          <el-input
+            clearable
+            v-model="where.productionPlanCode"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="生产版本:">
+          <el-input
+            clearable
+            v-model="where.produceVersionName"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="物料编码:">
+          <el-input
+            clearable
+            v-model="where.productCode"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <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: 6, md: 12 } : { span: 6 }">
+	    <el-form-item label="状态:">
+	      <el-select v-model="where.status" placeholder="请选择">
+	        <el-option
+	          v-for="item in statusOpt"
+	          :key="item.value"
+	          :label="item.label"
+	          :value="item.value">
+	        </el-option>
+	      </el-select>
+	    </el-form-item>
+	  </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="牌号:">
+          <el-input clearable v-model="where.brandNo" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="型号:">
+          <el-input clearable v-model="where.model" 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 = {
+        code: '',
+        productionPlanCode: '',
+        produceVersionName: '',
+        productCode: '',
+        productName: '',
+        brandNo: '',
+        model: '',
+		status:'',
+        createTime: []
+      };
+      return {
+        // 表单数据
+        where: { ...defaultWhere },
+		statusOpt: [
+			{ label: '待下达', value: 8 },
+		    { label: '待生产', value: 4 },
+		    { label: '生产中', value: 5 }
+		],
+      };
+    },
+    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>

+ 203 - 0
src/views/workOrder/index.vue

@@ -0,0 +1,203 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <order-search
+        @search="reload"
+        ref="searchRef"
+      >
+      </order-search>
+<!--      <el-tabs v-model="activeName" type="card">
+        <el-tab-pane label="未完成工单" name="first"></el-tab-pane>
+        <el-tab-pane label="已完成工单" name="second"></el-tab-pane>
+      </el-tabs> -->
+      <!-- 数据表格 -->
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        cache-key="workOrderTable"
+      >
+        <template v-slot:code="{ row }">
+          <!-- <el-link type="primary" :underline="false" @click="goDetail(row)"> -->
+            {{ row.code }}
+          <!-- </el-link> -->
+        </template>
+        <template v-slot:status="{ row }">
+          <span :class="{ 'ele-text-danger': row.status == 3 }">
+            {{ statusFormatter(row.status) }}
+          </span>
+        </template>
+        <!-- 操作列 -->
+        <template v-slot:action="{ row }">
+            <el-link
+              type="primary"
+              :underline="false"
+              icon="el-icon-truck"
+              @click="toRelease(row)"
+			  v-if="row.status==8"
+            >
+              下达
+            </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';
+  export default {
+    components: {
+      OrderSearch
+    },
+    data() {
+      return {
+		loading:false,
+        statusOpt: [
+            { label: '待生产', value: 4 },
+            { label: '生产中', value: 5 },
+            { label: '待下达', value: 8 }
+        ],
+      };
+    },
+    computed: {
+      // 表格列配置
+      columns() {
+        return [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            slot: 'code',
+            label: '生产工单号',
+            align: 'center',
+            minWidth: 110
+          },
+          {
+            prop: 'productionPlanCode',
+            label: '计划编号',
+            align: 'center'
+          },
+          {
+            prop: 'produceVersionName',
+            label: '生产版本',
+            align: 'center'
+          },
+          {
+            prop: 'productCode',
+            label: '物料编号',
+            align: 'center'
+          },
+          {
+            prop: 'productName',
+            label: '产品名称',
+            align: 'center'
+          },
+          {
+            prop: 'brandNo',
+            label: '牌号',
+            align: 'center'
+          },
+          {
+            prop: 'model',
+            label: '型号',
+            align: 'center'
+          },
+          {
+            prop: 'formingNum',
+            label: '要求成型数量',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'formingWeight',
+            label: '要求成型重量',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'planStartTime',
+            label: '计划开始时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            slot: 'status',
+            label: '状态',
+            align: 'center',
+            formatter: (row) => {
+              const obj = this.statusOpt.find(
+                (i) => i.value == row.status
+              );
+              return obj && obj.label;
+            }
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 90,
+            align: 'center',
+            resizable: false,
+            fixed: 'right',
+            slot: 'action',
+            showOverflowTooltip: true
+          }
+        ];
+      }
+    },
+    methods: {
+      statusFormatter(status) {
+        const obj = this.statusOpt.find(
+          (i) => i.value == status
+        );
+        return obj && obj.label;
+      },
+      /* 表格数据源 */
+      datasource({ page, limit, where }) {
+		if(where.status){
+			where.statusList = []
+			where.statusList.push(where.status)
+		}
+        return getList({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
+      // 下达
+      toRelease(row) {
+        releaseWorkOrder(row.id).then((res) => {
+			if(res){
+				this.$message.success('成功');
+				this.reload();
+			}
+        });
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$nextTick(() => {
+          this.$refs.table.reload({ page: 1, where });
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped></style>