jz.kai il y a 2 ans
Parent
commit
de8befbc99
4 fichiers modifiés avec 257 ajouts et 1 suppressions
  1. 54 0
      src/api/base/stock.js
  2. 5 1
      src/api/base/work.js
  3. 9 0
      src/routers/modules/base.js
  4. 189 0
      src/views/base/stock-list.vue

+ 54 - 0
src/api/base/stock.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData) {
+  return request.post(constant.serverUrl + "/base/stock/pageList", formData);
+}
+
+function create() {
+  return request.get(constant.serverUrl + "/base/stock/create");
+}
+
+function edit(id) {
+  return request.get(constant.serverUrl + "/base/stock/edit/" + id);
+}
+
+function add(formModel) {
+  return request.post(constant.serverUrl + "/base/stock/add", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel) {
+  return request.post(constant.serverUrl + "/base/stock/update", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id) {
+  return request.post(constant.serverUrl + "/base/stock/delete/" + id);
+}
+
+function batchRemove(idList) {
+  return request.post(constant.serverUrl + "/base/stock/batchDelete", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function batchOut(idList) {
+  return request.post(constant.serverUrl + "/base/stock/batchOut", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+export default {
+  pageList, create, edit, add, update, remove, batchRemove, batchOut
+}

+ 5 - 1
src/api/base/work.js

@@ -41,6 +41,10 @@ function batchRemove(idList){
   });
 }
 
+function findList(formData){
+  return request.post(constant.serverUrl + "/base/work/findList", formData);
+}
+
 export default {
-  pageList,create,edit,add,update,remove,batchRemove
+  pageList,create,edit,add,update,remove,batchRemove,findList
 }

+ 9 - 0
src/routers/modules/base.js

@@ -35,6 +35,15 @@ var routers = [
                 title: '加工单'
         }
     },
+    {
+        path: '/base/stock/list',
+        name: 'BaseStockList',
+        component: () => import('@/views/base/stock-list.vue'),
+        meta: {
+                roles: ["admin"],
+                title: '库存明细'
+        }
+    },
 ]
 
 export default routers;

+ 189 - 0
src/views/base/stock-list.vue

@@ -0,0 +1,189 @@
+<template>
+  <div>
+    <el-breadcrumb separator=">">
+      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="#">生产加工</a>
+      </el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="/base/stock">库存明细</a>
+      </el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-divider></el-divider>
+    <!--
+      要resetFields起作用,必须配置:model和prop
+    -->
+    <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
+      <el-form-item label="工单" prop="workId">
+        <el-select size="mini" v-model="queryModel.workId" filterable>
+          <el-option v-for="work in workList" :key="work.id" :label="work.name" :value="work.id"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="瑕疵" prop="flaw">
+        <el-input type="text" size="mini" v-model="queryModel.flaw"></el-input>
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select size="mini" v-model="queryModel.status" filterable>
+          <el-option label="已入库" :value="false"></el-option>
+          <el-option label="已出库" :value="true"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" size="mini" icon="ios-search" @click="changePage(1)" :loading="loading">查询</el-button>&nbsp;
+        <el-button type="info" size="mini" style="margin-left: 8px" @click="handleReset('queryForm')">重置</el-button>&nbsp;
+      </el-form-item>
+    </el-form>
+    <el-divider></el-divider>
+    <el-row class="button-group">
+      <el-button type="primary" size="small" plain icon="el-icon-remove" :disabled="multipleSelection.length == 0" @click="handleBatchOut">出库</el-button>
+    </el-row>
+    <el-table :data="tableData" style="min-height:400px;" v-loading="loading" stripe @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column prop="workName" label="工单" width="180"></el-table-column>
+      <el-table-column prop="number" label="编号" width="180"></el-table-column>
+      <el-table-column prop="colour" label="色泽" width="180"></el-table-column>
+      <el-table-column prop="length" label="长度" width="180"></el-table-column>
+      <el-table-column prop="flaw" label="瑕疵" width="180"></el-table-column>
+      <el-table-column label="状态" width="180">
+        <template slot-scope="{row}">
+          <span v-if="row.status">已出库</span>
+          <span v-else>已入库</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="createTime" label="入库时间" width="180"></el-table-column>
+      <el-table-column prop="updateTime" label="出库时间" width="180"></el-table-column>
+    </el-table>
+    <el-pagination :current-page.sync="pageIndex" :total="totalElements" :page-sizes="pageSizeList" @current-change="changePage" @size-change="pageSizeChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
+  </div>
+</template>
+<script>
+import Constant from "@/constant";
+import stockApi from "@/api/base/stock";
+import workApi from "@/api/base/work";
+import NProgress from "nprogress"; // progress bar
+import "nprogress/nprogress.css"; // progress bar style
+
+export default {
+  data() {
+    var self = this;
+
+    return {
+      queryModel: {
+        "workId": "",
+        "flaw": "",
+        "status": ""
+      },
+      loading: false,
+      tableData: [],
+      pageIndex: 1,
+      pageSize: 10,
+      totalPages: 0,
+      totalElements: 0,
+      field: "",
+      direction: "",
+      pageSizeList: [10, 20, 30],
+      multipleSelection: [],
+      showModal: false,
+      modalTitle: "",
+      businessKey: "",
+      workList: [],
+    };
+  },
+  methods: {
+    changePage(pageIndex) {
+      var self = this;
+
+      self.loading = true;
+
+      self.pageIndex = pageIndex;
+      var formData = new FormData();
+
+      formData.append("pageIndex", self.pageIndex);
+      formData.append("pageSize", self.pageSize);
+
+      formData.append("workId", self.queryModel.workId);
+      formData.append("flaw", self.queryModel.flaw);
+      formData.append("status", self.queryModel.status);
+
+      stockApi.pageList(formData).then(function (response) {
+        self.loading = false;
+
+        var jsonData = response.data.data;
+
+        self.tableData = jsonData.data;
+        self.totalPages = jsonData.totalPages;
+        self.totalElements = jsonData.recordsTotal;
+      }).catch((error) => {
+        self.loading = false;
+        // self.$message.error(error + "");
+      });
+    },
+    pageSizeChange(pageSize) {
+      this.pageSize = pageSize;
+
+      this.$nextTick(() => {
+        this.changePage(this.pageIndex);
+      });
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleReset(name) {
+      this.$refs[name].resetFields();
+    },
+    handleBatchOut() {
+      var self = this;
+
+      var idList = this.multipleSelection.map(record => {
+        return record.id;
+      });
+
+      this.$confirm("选中项是否确认出库?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        stockApi.batchOut(idList).then(function (response) {
+          var jsonData = response.data;
+
+          if (jsonData.result) {
+            self.changePage(self.pageIndex);
+
+            self.$message({
+              type: "success",
+              message: "出库成功!"
+            });
+          }
+        });
+      });
+    },
+  },
+  mounted: function () {
+    workApi.findList().then(response => {
+      this.workList = response.data.data;
+    });
+
+    this.changePage(1);
+  },
+};
+</script>
+<style lang="scss" scoped>
+.el-breadcrumb {
+  margin: 10px;
+  line-height: 20px;
+}
+
+.el-divider {
+  margin: 5px 0;
+}
+
+.demo-form-inline {
+  margin-left: 10px;
+  text-align: left;
+}
+
+.button-group {
+  margin-left: 10px;
+  text-align: left;
+}
+</style>