addConsume.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div>
  3. <el-drawer class="edit-drawer" title="消耗品调拨" size="650px" :visible.sync="visible"
  4. direction="rtl" :modal="modal" :wrapper-closable="false" @close="close">
  5. <el-form ref="form" :rules="rules" size="small" :model="form" label-width="120px">
  6. <el-form-item label="选择商品:" prop="goodsId">
  7. <el-input v-model="base_form.goodsName" style="width: 200px"
  8. :disabled="!base_form.shopName " readonly placeholder="请选择商品">
  9. <i slot="suffix" class="el-input__icon el-icon-search" @click="openGoodsModel"></i>
  10. </el-input>
  11. </el-form-item>
  12. <el-form-item label="出库数量" prop="number">
  13. <el-input-number v-model="form.number" controls-position="right" :min="1"></el-input-number>
  14. </el-form-item>
  15. <el-form-item style="text-align: right; padding-right: 10px">
  16. <el-button type="primary" @click="confirm">确 定</el-button>
  17. <el-button @click="close">取 消</el-button>
  18. </el-form-item>
  19. </el-form>
  20. </el-drawer>
  21. <!-- 商品列表-->
  22. <GoodsWarehouse v-if="show_goods" :modal="false" :shop-id="base_form.shopId" goods-warehouse
  23. :is-check="false" :is-show="show_goods" :enable="true" @cancel="show_goods = false" @confirm="selGoods" />
  24. </div>
  25. </template>
  26. <script>
  27. import {
  28. // postClassDetails,
  29. allocationConsume
  30. } from "@/api/Stock";
  31. import {
  32. getGoodsBasicInfoById,
  33. } from "@/api/goods";
  34. import {
  35. mapGetters
  36. } from "vuex";
  37. import GoodsWarehouse from "@/component/goods/GoodsWarehouse";
  38. export default {
  39. name: "AddConsume",
  40. components: {
  41. GoodsWarehouse
  42. },
  43. props: {
  44. visible: {
  45. type: Boolean,
  46. default: false,
  47. },
  48. isEdit: {
  49. type: Boolean,
  50. default: false,
  51. },
  52. // 是否需要遮罩层
  53. modal: {
  54. type: Boolean,
  55. default: true,
  56. },
  57. },
  58. data() {
  59. return {
  60. // 显示选择商品
  61. show_goods: false,
  62. form: {
  63. // 选中的商品ID
  64. goodsId: '',
  65. //数量
  66. number: '',
  67. },
  68. base_form: {
  69. // 商店id
  70. shopId: '',
  71. shopName: '',
  72. // 商品名称
  73. goodsName: ''
  74. },
  75. rules: {
  76. number: [{
  77. required: true,
  78. message: "请输入商品数量",
  79. trigger: "blur"
  80. }],
  81. basicGoodsId: [{
  82. required: true,
  83. message: "请选择商品",
  84. trigger: "blur"
  85. }],
  86. }
  87. };
  88. },
  89. computed: {
  90. ...mapGetters({
  91. systemType: "MUser/systemType",
  92. storeData: "MUser/storeData",
  93. }),
  94. },
  95. created() {
  96. // 判断是否为门店页面
  97. if ([2, 3].includes(this.systemType)) {
  98. this.base_form.shopId = this.storeData.id; // 店铺
  99. this.base_form.shopName = this.storeData.name; // 店铺
  100. }
  101. },
  102. methods: {
  103. // 选择商品
  104. async selGoods(row,) {
  105. //保存选中商品
  106. this.form.goodsId = row[0].id;
  107. this.base_form.goodsName = row[0].title;
  108. },
  109. // 打开商品选择
  110. openGoodsModel() {
  111. if (!this.base_form.shopName ) return;
  112. this.show_goods = true;
  113. },
  114. close() {
  115. this.$emit("close");
  116. },
  117. // 提交
  118. async confirm() {
  119. this.$refs.form.validate(async (valid) => {
  120. if (valid) {
  121. const data = await allocationConsume({
  122. "id": this.form.goodsId, //仓库商品id
  123. "number": this.form.number //调拨数量
  124. });
  125. this.$message({
  126. message: data.data,
  127. type: "success",
  128. });
  129. this.close();
  130. this.$emit("confirm");
  131. }
  132. });
  133. },
  134. },
  135. };
  136. </script>
  137. <style scoped>
  138. .btn-up {
  139. position: relative;
  140. }
  141. .btn-department {
  142. position: absolute;
  143. left: 270px;
  144. top: 4px;
  145. }
  146. .btn-role-up {
  147. position: relative;
  148. }
  149. .add-role {
  150. position: absolute;
  151. left: 270px;
  152. top: 4px;
  153. }
  154. .creat-shop {
  155. color: #1890ff;
  156. font-size: 12px;
  157. }
  158. </style>