GoodsForm.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <div class="app-container">
  3. <!-- 对话框(添加 / 修改) -->
  4. <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="45%" v-dialogDrag append-to-body>
  5. <el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
  6. <el-form-item label="商品分类" prop="goodsTypeId">
  7. <el-input v-model="formData.goodsTypeId" placeholder="请输入商品分类" />
  8. </el-form-item>
  9. <el-form-item label="商品名称" prop="goodsName">
  10. <el-input v-model="formData.goodsName" placeholder="请输入商品名称" />
  11. </el-form-item>
  12. <el-form-item label="商品价格" prop="goodsPrice">
  13. <el-input v-model="formData.goodsPrice" placeholder="请输入商品价格" />
  14. </el-form-item>
  15. <el-form-item label="商品图标">
  16. <ImageUpload v-model="formData.goodsIcon"/>
  17. </el-form-item>
  18. </el-form>
  19. <div slot="footer" class="dialog-footer">
  20. <el-button type="primary" @click="submitForm" :disabled="formLoading">确 定</el-button>
  21. <el-button @click="dialogVisible = false">取 消</el-button>
  22. </div>
  23. </el-dialog>
  24. </div>
  25. </template>
  26. <script>
  27. import * as GoodsApi from '@/api/restaurant/restaurant';
  28. import ImageUpload from '@/components/ImageUpload';
  29. export default {
  30. name: "GoodsForm",
  31. components: {
  32. ImageUpload,
  33. },
  34. data() {
  35. return {
  36. // 弹出层标题
  37. dialogTitle: "",
  38. // 是否显示弹出层
  39. dialogVisible: false,
  40. // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  41. formLoading: false,
  42. // 表单参数
  43. formData: {
  44. goodsTypeId: undefined,
  45. goodsName: undefined,
  46. goodsPrice: undefined,
  47. goodsIcon: undefined,
  48. },
  49. // 表单校验
  50. formRules: {
  51. },
  52. };
  53. },
  54. methods: {
  55. /** 打开弹窗 */
  56. async open(id) {
  57. this.dialogVisible = true;
  58. this.reset();
  59. // 修改时,设置数据
  60. if (id) {
  61. this.formLoading = true;
  62. try {
  63. const res = await GoodsApi.getGoods(id);
  64. this.formData = res.data;
  65. this.title = "修改商品";
  66. } finally {
  67. this.formLoading = false;
  68. }
  69. }
  70. this.title = "新增商品";
  71. },
  72. /** 提交按钮 */
  73. async submitForm() {
  74. // 校验主表
  75. await this.$refs["formRef"].validate();
  76. this.formLoading = true;
  77. try {
  78. const data = this.formData;
  79. // 修改的提交
  80. if (data.id) {
  81. await GoodsApi.updateGoods(data);
  82. this.$modal.msgSuccess("修改成功");
  83. this.dialogVisible = false;
  84. this.$emit('success');
  85. return;
  86. }
  87. // 添加的提交
  88. await GoodsApi.createGoods(data);
  89. this.$modal.msgSuccess("新增成功");
  90. this.dialogVisible = false;
  91. this.$emit('success');
  92. } finally {
  93. this.formLoading = false;
  94. }
  95. },
  96. /** 表单重置 */
  97. reset() {
  98. this.formData = {
  99. goodsTypeId: undefined,
  100. goodsName: undefined,
  101. goodsPrice: undefined,
  102. goodsIcon: undefined,
  103. };
  104. this.resetForm("formRef");
  105. }
  106. }
  107. };
  108. </script>