BrandDetail.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template> 
  2. <div class="form-container container-frame">
  3. <el-form :model="brand" :rules="rules" ref="brandFrom" label-width="150px">
  4. <el-form-item label="品牌名称:" prop="name">
  5. <el-input v-model="brand.name"></el-input>
  6. </el-form-item>
  7. <el-form-item label="品牌首字母:">
  8. <el-input v-model="brand.firstLetter"></el-input>
  9. </el-form-item>
  10. <el-form-item label="品牌LOGO:" prop="logo">
  11. <el-input v-model="brand.logo"></el-input>
  12. </el-form-item>
  13. <el-form-item label="品牌专区大图:">
  14. <el-input v-model="brand.bigPic"></el-input>
  15. </el-form-item>
  16. <el-form-item label="品牌故事:">
  17. <el-input
  18. placeholder="请输入内容"
  19. type="textarea"
  20. v-model="brand.brandStory"
  21. autosize="true"></el-input>
  22. </el-form-item>
  23. <el-form-item label="排序:" prop="sort">
  24. <el-input v-model.number="brand.sort"></el-input>
  25. </el-form-item>
  26. <el-form-item label="是否显示:">
  27. <el-radio-group v-model="brand.showStatus">
  28. <el-radio :label="1">是</el-radio>
  29. <el-radio :label="0">否</el-radio>
  30. </el-radio-group>
  31. </el-form-item>
  32. <el-form-item label="品牌制造商:">
  33. <el-radio-group v-model="brand.factoryStatus">
  34. <el-radio :label="1">是</el-radio>
  35. <el-radio :label="0">否</el-radio>
  36. </el-radio-group>
  37. </el-form-item>
  38. <el-form-item>
  39. <el-button type="primary" @click="onSubmit('brandFrom')">提交</el-button>
  40. <el-button v-if="!isEdit" @click="resetForm('brandFrom')">重置</el-button>
  41. </el-form-item>
  42. </el-form>
  43. </div>
  44. </template>
  45. <script>
  46. import {createBrand, getBrand, updateBrand} from '@/api/brand'
  47. export default {
  48. name: 'BrandDetail',
  49. props: {
  50. isEdit: {
  51. type: Boolean,
  52. default: false
  53. }
  54. },
  55. data() {
  56. return {
  57. brand: {
  58. bigPic: '',
  59. brandStory: '',
  60. factoryStatus: 0,
  61. firstLetter: '',
  62. logo: '',
  63. name: '',
  64. showStatus: 0,
  65. sort: 0
  66. },
  67. rules: {
  68. name: [
  69. {required: true, message: '请输入品牌名称', trigger: 'blur'},
  70. {min: 2, max: 140, message: '长度在 2 到 140 个字符', trigger: 'blur'}
  71. ],
  72. logo: [
  73. {required: true, message: '请输入品牌logo', trigger: 'blur'}
  74. ],
  75. sort: [
  76. {type: 'number', message: '排序必须为数字'}
  77. ]
  78. }
  79. }
  80. },
  81. created() {
  82. if (this.isEdit) {
  83. getBrand(this.$route.query.id).then(response => {
  84. this.brand = response.data;
  85. });
  86. }
  87. },
  88. methods: {
  89. onSubmit(formName) {
  90. this.$refs[formName].validate((valid) => {
  91. if (valid) {
  92. this.$confirm('是否提交数据', '提示', {
  93. confirmButtonText: '确定',
  94. cancelButtonText: '取消',
  95. type: 'warning'
  96. }).then(() => {
  97. if (this.isEdit) {
  98. updateBrand(this.$route.query.id, this.brand).then(response => {
  99. this.$refs[formName].resetFields();
  100. this.$message({
  101. message: '修改成功',
  102. type: 'success',
  103. duration:1000
  104. });
  105. });
  106. } else {
  107. createBrand(this.brand).then(response => {
  108. this.$refs[formName].resetFields();
  109. this.$message({
  110. message: '提交成功',
  111. type: 'success',
  112. duration:1000
  113. });
  114. });
  115. }
  116. });
  117. } else {
  118. this.$message({
  119. message: '验证失败',
  120. type: 'error',
  121. duration:1000
  122. });
  123. return false;
  124. }
  125. });
  126. },
  127. resetForm(formName) {
  128. this.$refs[formName].resetFields();
  129. }
  130. }
  131. }
  132. </script>
  133. <style>
  134. .form-container {
  135. position: absolute;
  136. left: 0;
  137. right: 0;
  138. width: 520px;
  139. padding: 35px 35px 15px 35px;
  140. margin: 20px auto;
  141. }
  142. </style>