|
@@ -1,101 +1,166 @@
|
|
|
<template>
|
|
|
- <div class="addForm">
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :span="24">
|
|
|
- <el-form
|
|
|
- :model="ruleForm"
|
|
|
- status-icon
|
|
|
- :rules="rulesThis"
|
|
|
- ref="ruleForm"
|
|
|
- label-width="150px"
|
|
|
- class="demo-ruleForm"
|
|
|
+ <el-row class="addForm">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form
|
|
|
+ :model="ruleForm"
|
|
|
+ status-icon
|
|
|
+ :rules="rulesThis"
|
|
|
+ ref="ruleForm"
|
|
|
+ :size="'mini'"
|
|
|
+ label-width="60px"
|
|
|
+ class="demo-ruleForm"
|
|
|
+ >
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="label-title-model">出库仓库信息:</div>
|
|
|
+ <el-form-item label="公司" prop="supplier_code">
|
|
|
+ <search-supplier
|
|
|
+ :value="ruleForm.supplier_code"
|
|
|
+ :placeholder="'请选择公司'"
|
|
|
+ @searchChange="selectSupplier"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="仓库" prop="stock_code">
|
|
|
+ <search-stock
|
|
|
+ :value="ruleForm.stock_code"
|
|
|
+ :isDetail="true"
|
|
|
+ :disabled="isDisabled"
|
|
|
+ :placeholder="'请选择仓库'"
|
|
|
+ :isRelation="true"
|
|
|
+ :companyCode="supplier_code"
|
|
|
+ :names="''"
|
|
|
+ @searchChange="selectStock"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div class="label-title-model">入库仓库信息:</div>
|
|
|
+ <el-form-item label="公司" prop="supplier_in_code">
|
|
|
+ <search-supplier
|
|
|
+ :value="ruleForm.supplier_in_code"
|
|
|
+ :placeholder="'请选择公司'"
|
|
|
+ @searchChange="selectSupplierIn"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="仓库" prop="stock_in_code">
|
|
|
+ <search-stock
|
|
|
+ :value="ruleForm.stock_in_code"
|
|
|
+ :isDetail="true"
|
|
|
+ :disabled="isDisabledIn"
|
|
|
+ :placeholder="'请选择仓库'"
|
|
|
+ :isRelation="true"
|
|
|
+ :companyCode="stock_in_code"
|
|
|
+ :names="''"
|
|
|
+ @searchChange="selectStockIn"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label="商品"
|
|
|
+ prop="product_go"
|
|
|
+ :size="'mini'"
|
|
|
+ class="product_go"
|
|
|
>
|
|
|
- <!-- 出库供应商 -->
|
|
|
- <el-form-item label="出库供应商名称" prop="supplier_code">
|
|
|
- <search-supplier
|
|
|
- style="width: calc(100% - 150px)"
|
|
|
- :value="ruleForm.supplier_code"
|
|
|
- :placeholder="'请选择供应商'"
|
|
|
- @searchChange="selectSupplier"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 出库仓库 -->
|
|
|
- <el-form-item label="出库仓库名称" prop="stock_code">
|
|
|
- <search-stock
|
|
|
- style="width: calc(100% - 150px)"
|
|
|
- :value="ruleForm.stock_code"
|
|
|
- :isDetail="true"
|
|
|
- :disabled="isDisabled"
|
|
|
- :placeholder="'请选择出口仓库'"
|
|
|
- :isRelation="true"
|
|
|
- :companyCode="supplier_code"
|
|
|
- :names="''"
|
|
|
- @searchChange="selectStock"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 入库供应商 -->
|
|
|
- <el-form-item label="入库供应商名称" prop="supplier_in_code">
|
|
|
- <search-supplier
|
|
|
- style="width: calc(100% - 150px)"
|
|
|
- :value="ruleForm.supplier_in_code"
|
|
|
- :placeholder="'请选择供应商'"
|
|
|
- @searchChange="selectSupplierIn"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 入库仓库 -->
|
|
|
- <el-form-item label="入库仓库名称" prop="stock_in_code">
|
|
|
- <search-stock
|
|
|
- style="width: calc(100% - 150px)"
|
|
|
- :value="ruleForm.stock_in_code"
|
|
|
- :isDetail="true"
|
|
|
- :disabled="isDisabledIn"
|
|
|
- :placeholder="'请选择入口仓库'"
|
|
|
- :isRelation="true"
|
|
|
- :companyCode="stock_in_code"
|
|
|
- :names="''"
|
|
|
- @searchChange="selectStockIn"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="出库商品" prop="tableData">
|
|
|
- <el-table :data="tableData" border :size="'mini'">
|
|
|
- <el-table-column
|
|
|
- fixed
|
|
|
- prop="date"
|
|
|
- :label="item.label"
|
|
|
- v-for="(item, index) in columns"
|
|
|
- :key="index"
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" style="padding: 0 0 10px 0">
|
|
|
+ <el-button
|
|
|
+ :size="'mini'"
|
|
|
+ type="primary"
|
|
|
+ class="fr"
|
|
|
+ @click="openGoodsModel"
|
|
|
+ >添加商品</el-button
|
|
|
+ ></el-col
|
|
|
+ >
|
|
|
+ <el-col :span="24">
|
|
|
+ <!-- row-key="key" -->
|
|
|
+ <el-table
|
|
|
+ :data="ruleForm.product_go"
|
|
|
+ border
|
|
|
+ :size="'mini'"
|
|
|
+ max-height="400px"
|
|
|
>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column fixed="right" label="操作" width="100">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button
|
|
|
- @click.native.prevent="deleteRow(scope.$index, tableData)"
|
|
|
- type="text"
|
|
|
- size="small"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-form-item>
|
|
|
- isDisabled:{{ isDisabled }}-----isDetail:{{ isDetail }}---id:{{ id }}
|
|
|
- </el-form>
|
|
|
- </el-col>
|
|
|
- <el-col :span="24" style="text-align: right">
|
|
|
- <el-button type="primary" @click="submitForm" v-if="!isDetail"
|
|
|
- >保 存
|
|
|
- </el-button>
|
|
|
- <el-button @click="closeModel">{{
|
|
|
- isDetail ? "关 闭" : "取 消"
|
|
|
- }}</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <!-- <search-good-modal
|
|
|
- :show-model="showGoodsModel"
|
|
|
- @cancel="showGoodsModel = false"
|
|
|
- @resultList="addGoodsRes"
|
|
|
- /> -->
|
|
|
- </div>
|
|
|
+ <el-table-column
|
|
|
+ show-overflow-tooltip
|
|
|
+ :prop="item.prop"
|
|
|
+ :label="item.label"
|
|
|
+ :width="item.width"
|
|
|
+ :min-width="item.minWidth"
|
|
|
+ v-for="(item, index) in columns"
|
|
|
+ :key="item.prop + index"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item
|
|
|
+ :prop="'list.' + scope.$index + '.' + scope.row.id"
|
|
|
+ :size="'mini'"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ :size="'mini'"
|
|
|
+ v-model="scope.row[item.prop]"
|
|
|
+ v-if="scope.row.edit && item.prop === 'allot_num'"
|
|
|
+ ></el-input>
|
|
|
+ <span v-else>{{ scope.row[item.prop] }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column fixed="right" label="操作" width="80">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tooltip
|
|
|
+ effect="dark"
|
|
|
+ content="编辑"
|
|
|
+ v-if="!scope.row.edit"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ class="el-icon-edit tb-icon"
|
|
|
+ @click="editRow(scope.$index)"
|
|
|
+ ></i>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
+ <el-tooltip
|
|
|
+ effect="dark"
|
|
|
+ content="保存"
|
|
|
+ v-if="scope.row.edit"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ class="el-icon-circle-check tb-icon"
|
|
|
+ @click="checkRow(scope.$index)"
|
|
|
+ ></i>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
+ <el-tooltip effect="dark" content="删除" placement="top">
|
|
|
+ <i
|
|
|
+ class="el-icon-delete tb-icon"
|
|
|
+ @click="deleteRow(scope.$index, ruleForm.product_go)"
|
|
|
+ ></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" style="text-align: right">
|
|
|
+ <el-button type="primary" @click="submitForm" v-if="!isDetail"
|
|
|
+ >保 存
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="closeModel">{{
|
|
|
+ isDetail ? "关 闭" : "取 消"
|
|
|
+ }}</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <search-stock-good-modal
|
|
|
+ :show-model="showGoodsModel"
|
|
|
+ :code="stockCode"
|
|
|
+ @cancel="showGoodsModel = false"
|
|
|
+ @searchChange="addGoodsRes"
|
|
|
+ />
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</template>
|
|
|
<script>
|
|
|
import asyncRequest from "@/apis/service/stock/allot";
|
|
@@ -106,6 +171,7 @@ export default {
|
|
|
mixins: [resToken],
|
|
|
data() {
|
|
|
return {
|
|
|
+ showGoodsModel: false,
|
|
|
id: "",
|
|
|
supplier_code: "",
|
|
|
stock_in_code: "",
|
|
@@ -115,13 +181,11 @@ export default {
|
|
|
title: "新建调拨申请",
|
|
|
showModelThis: this.showModel,
|
|
|
ruleForm: {
|
|
|
- supplier_code: [], //出库供应商名称
|
|
|
- stock_code: [], //出库仓库名称
|
|
|
- supplier_in_code: [], //入库供应商名称
|
|
|
- stock_in_code: [], //入库仓库名称
|
|
|
- product_go: [], //出库商品选择
|
|
|
- product_type_code: "", //商品属性code
|
|
|
- status: "", //审核状态
|
|
|
+ supplier_code: [], //出库供应商code
|
|
|
+ stock_code: [], //出库仓库code
|
|
|
+ supplier_in_code: [], //入库供应商code
|
|
|
+ stock_in_code: [], //入库仓库code
|
|
|
+ product_go: [], //出库商品
|
|
|
},
|
|
|
rulesThis: this.rules,
|
|
|
rules: {
|
|
@@ -168,52 +232,45 @@ export default {
|
|
|
},
|
|
|
columns: [
|
|
|
{
|
|
|
- prop: "product_sn",
|
|
|
- label: "商品编号",
|
|
|
+ prop: "good_code",
|
|
|
+ label: "商品编码",
|
|
|
+ width: "150",
|
|
|
},
|
|
|
{
|
|
|
- prop: "product_name",
|
|
|
+ prop: "good_name",
|
|
|
label: "商品名称",
|
|
|
+ minWidth: "170",
|
|
|
},
|
|
|
{
|
|
|
- prop: "product_num",
|
|
|
- label: "总数量",
|
|
|
+ prop: "usable_stock",
|
|
|
+ label: "可用库存数",
|
|
|
+ width: "110",
|
|
|
},
|
|
|
- ],
|
|
|
- tableData: [
|
|
|
{
|
|
|
- date: "2016-05-02",
|
|
|
- name: "王小虎",
|
|
|
- province: "上海",
|
|
|
- city: "普陀区",
|
|
|
- address: "上海市普陀区金沙江路 1518 弄",
|
|
|
- zip: 200333,
|
|
|
+ prop: "allot_num",
|
|
|
+ label: "调拨数量",
|
|
|
+ width: "130",
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ prop: "unit",
|
|
|
+ label: "单位",
|
|
|
+ width: "45",
|
|
|
},
|
|
|
{
|
|
|
- date: "2016-05-04",
|
|
|
- name: "王小虎",
|
|
|
- province: "上海",
|
|
|
- city: "普陀区",
|
|
|
- address: "上海市普陀区金沙江路 1517 弄",
|
|
|
- zip: 200333,
|
|
|
+ prop: "color",
|
|
|
+ label: "商品颜色",
|
|
|
},
|
|
|
{
|
|
|
- date: "2016-05-01",
|
|
|
- name: "王小虎",
|
|
|
- province: "上海",
|
|
|
- city: "普陀区",
|
|
|
- address: "上海市普陀区金沙江路 1519 弄",
|
|
|
- zip: 200333,
|
|
|
+ prop: "material",
|
|
|
+ label: "商品材质",
|
|
|
},
|
|
|
{
|
|
|
- date: "2016-05-03",
|
|
|
- name: "王小虎",
|
|
|
- province: "上海",
|
|
|
- city: "普陀区",
|
|
|
- address: "上海市普陀区金沙江路 1516 弄",
|
|
|
- zip: 200333,
|
|
|
+ prop: "brand",
|
|
|
+ label: "品牌",
|
|
|
},
|
|
|
],
|
|
|
+ tableData: [],
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
@@ -232,7 +289,7 @@ export default {
|
|
|
mounted() {
|
|
|
console.log("asd");
|
|
|
this.id = this.$route.query.id;
|
|
|
- this.getValue();
|
|
|
+ // this.getValue();
|
|
|
this.initForm();
|
|
|
},
|
|
|
methods: {
|
|
@@ -252,10 +309,16 @@ export default {
|
|
|
// console.log(index, rows);
|
|
|
rows.splice(index, 1);
|
|
|
},
|
|
|
- // 通知弹窗关闭
|
|
|
closeModel() {
|
|
|
this.$emit("closeModel");
|
|
|
},
|
|
|
+ openGoodsModel() {
|
|
|
+ if (this.ruleForm.stock_code.length === 0) {
|
|
|
+ this.$message.warning("请选择出库仓库!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.showGoodsModel = true;
|
|
|
+ },
|
|
|
|
|
|
async initForm() {
|
|
|
this.loading = true;
|
|
@@ -294,18 +357,12 @@ export default {
|
|
|
this.$refs.ruleForm.resetFields();
|
|
|
this.$refs.ruleForm.clearValidate();
|
|
|
this.ruleForm = {
|
|
|
- stock_code: [], //出库仓库编码
|
|
|
- supplier_code: [], //出库供应商编码
|
|
|
- supplier_in_code: [], //入库供应商编码
|
|
|
- stock_in_code: [], //入库仓库编码
|
|
|
+ supplier_code: [], //出库供应商code
|
|
|
+ stock_code: [], //出库仓库code
|
|
|
+ supplier_in_code: [], //入库供应商code
|
|
|
+ stock_in_code: [], //入库仓库code
|
|
|
product_go: [], //出库商品
|
|
|
- product_type_code: "", //商品属性code
|
|
|
- status: "", //审核状态
|
|
|
};
|
|
|
- if (this.id === "add" || this.isDetail) {
|
|
|
- // this.rules.username[0].required = false;
|
|
|
- console.log("当前是add或者 this.isDetail是true");
|
|
|
- }
|
|
|
}
|
|
|
});
|
|
|
},
|
|
@@ -313,6 +370,10 @@ export default {
|
|
|
async submitForm() {
|
|
|
await this.$refs.ruleForm.validate(async (valid) => {
|
|
|
if (valid) {
|
|
|
+ if (this.stockCode == this.stock_in_code) {
|
|
|
+ this.$message.warning("出入库仓库不能相同!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
this.loading = true;
|
|
|
// const { username, name, mobile, email, role_id, status } = JSON.parse(
|
|
|
// JSON.stringify(this.ruleForm)
|
|
@@ -334,7 +395,7 @@ export default {
|
|
|
},
|
|
|
],
|
|
|
};
|
|
|
- console.log(model);
|
|
|
+ // console.log(model);
|
|
|
let res = {};
|
|
|
if (this.id === "add") {
|
|
|
delete model["id"];
|
|
@@ -363,16 +424,50 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
-
|
|
|
+ //保存某一行
|
|
|
+ checkRow(rowIndex) {
|
|
|
+ const { usable_stock, allot_num } = this.ruleForm.product_go[rowIndex];
|
|
|
+ let num = allot_num === "" ? "0" : allot_num;
|
|
|
+ if (allot_num === "0") {
|
|
|
+ this.$message.warning("调拨数量不能为0!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (allot_num === "") {
|
|
|
+ this.$message.warning("调拨数量不能为空!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (parseInt(num) > parseInt(usable_stock)) {
|
|
|
+ this.$message.warning("调拨数量不大于可用库存数!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.ruleForm.product_go[rowIndex].edit = false;
|
|
|
+ },
|
|
|
+ //编辑某一行
|
|
|
+ editRow(rowIndex) {
|
|
|
+ let index = this.ruleForm.product_go.findIndex((v) => v.edit);
|
|
|
+ if (index !== -1) {
|
|
|
+ this.$message.warning("请保存其他行!");
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ this.ruleForm.product_go[rowIndex].edit = true;
|
|
|
+ }
|
|
|
+ console.log(index);
|
|
|
+ },
|
|
|
// 执行点击商品名称的抛出事件
|
|
|
addGoodsRes(e) {
|
|
|
- console.log(e);
|
|
|
-
|
|
|
- let { good_code, good_name, type_code } = e[0];
|
|
|
- // this.ruleForm.goods_name = good_name;
|
|
|
- // this.ruleForm.good_type_code = type_code;
|
|
|
- // this.ruleForm.good_code = good_code;
|
|
|
- // this.$refs.ruleForm.validateField("goods_name");
|
|
|
+ let oldList = JSON.parse(JSON.stringify(this.ruleForm.product_go)),
|
|
|
+ addList = JSON.parse(JSON.stringify(e)),
|
|
|
+ newList = [].concat(...oldList);
|
|
|
+ addList.forEach((v1, index) => {
|
|
|
+ let oldindex = oldList.findIndex((v2) => v1.good_code === v2.good_code);
|
|
|
+ if (oldindex === -1) {
|
|
|
+ addList[index].allot_num = addList[index].usable_stock;
|
|
|
+ addList[index].edit = false;
|
|
|
+ newList.push(addList[index]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.ruleForm.product_go = [].concat(...newList);
|
|
|
+ this.$refs.ruleForm.validateField("product_go");
|
|
|
},
|
|
|
|
|
|
// 选择出库仓库
|
|
@@ -380,13 +475,6 @@ export default {
|
|
|
if (e && e.id) {
|
|
|
this.ruleForm.stock_code = [e.code];
|
|
|
this.stockCode = e.code;
|
|
|
- if (this.stockCode == this.stock_in_code) {
|
|
|
- this.$message({
|
|
|
- message: "出库供应商仓库不能和入库供应商仓库相同",
|
|
|
- type: "warning",
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
} else {
|
|
|
this.ruleForm.stockCode = [];
|
|
|
this.stockCode = "";
|
|
@@ -439,4 +527,24 @@ export default {
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.allot {
|
|
|
+ .label-title-model {
|
|
|
+ line-height: 30px;
|
|
|
+ width: 100%;
|
|
|
+ color: #909399;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 15px;
|
|
|
+ padding-bottom: 12px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .product_go {
|
|
|
+ .el-form-item--mini.el-form-item {
|
|
|
+ margin: 0 !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|
|
|
+
|
|
|
|