ProductCateDetail.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <template>
  2. <div class="form-container container-frame">
  3. <el-form :model="productCate"
  4. :rules="rules"
  5. ref="productCateFrom"
  6. label-width="150px">
  7. <el-form-item label="分类名称:" prop="name">
  8. <el-input v-model="productCate.name"></el-input>
  9. </el-form-item>
  10. <el-form-item label="上级分类:">
  11. <el-select v-model="productCate.parentId"
  12. placeholder="请选择分类">
  13. <el-option
  14. v-for="item in selectProductCateList"
  15. :key="item.id"
  16. :label="item.name"
  17. :value="item.id">
  18. </el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="数量单位:">
  22. <el-input v-model="productCate.productUnit"></el-input>
  23. </el-form-item>
  24. <el-form-item label="排序:">
  25. <el-input v-model="productCate.sort"></el-input>
  26. </el-form-item>
  27. <el-form-item label="是否显示:">
  28. <el-radio-group v-model="productCate.showStatus">
  29. <el-radio :label="1">是</el-radio>
  30. <el-radio :label="0">否</el-radio>
  31. </el-radio-group>
  32. </el-form-item>
  33. <el-form-item label="是否显示在导航栏:">
  34. <el-radio-group v-model="productCate.navStatus">
  35. <el-radio :label="1">是</el-radio>
  36. <el-radio :label="0">否</el-radio>
  37. </el-radio-group>
  38. </el-form-item>
  39. <el-form-item label="分类图标:">
  40. <single-upload v-model="productCate.icon"></single-upload>
  41. </el-form-item>
  42. <el-form-item label="关键词:">
  43. <el-input v-model="productCate.keywords"></el-input>
  44. </el-form-item>
  45. <el-form-item label="分类描述:">
  46. <el-input type="textarea" :autosize="true" v-model="productCate.description"></el-input>
  47. </el-form-item>
  48. <el-form-item>
  49. <el-button type="primary" @click="onSubmit('productCateFrom')">提交</el-button>
  50. <el-button v-if="!isEdit" @click="resetForm('productCateFrom')">重置</el-button>
  51. </el-form-item>
  52. </el-form>
  53. </div>
  54. </template>
  55. <script>
  56. import {fetchList, createProductCate, updateProductCate, getProductCate} from '@/api/productCate';
  57. import SingleUpload from '@/components/Upload/singleUpload';
  58. const defaultProductCate = {
  59. description: '',
  60. icon: '',
  61. keywords: '',
  62. name: '',
  63. navStatus: 0,
  64. parentId: 0,
  65. productUnit: '',
  66. showStatus: 0,
  67. sort: 0
  68. };
  69. export default {
  70. name: "ProductCateDetail",
  71. components: {SingleUpload},
  72. props: {
  73. isEdit: {
  74. type: Boolean,
  75. default: false
  76. }
  77. },
  78. data() {
  79. return {
  80. productCate: Object.assign({}, defaultProductCate),
  81. selectProductCateList: [],
  82. rules: {
  83. name: [
  84. {required: true, message: '请输入品牌名称', trigger: 'blur'},
  85. {min: 2, max: 140, message: '长度在 2 到 140 个字符', trigger: 'blur'}
  86. ]
  87. }
  88. }
  89. },
  90. created() {
  91. if (this.isEdit) {
  92. getProductCate(this.$route.query.id).then(response => {
  93. this.productCate = response.data;
  94. });
  95. } else {
  96. this.productCate = Object.assign({}, defaultProductCate);
  97. }
  98. this.getSelectProductCateList();
  99. },
  100. methods: {
  101. getSelectProductCateList() {
  102. fetchList(0, {pageSize: 100, pageNum: 1}).then(response => {
  103. this.selectProductCateList = response.data.list;
  104. this.selectProductCateList.unshift({id: 0, name: '无上级分类'});
  105. });
  106. },
  107. onSubmit(formName) {
  108. this.$refs[formName].validate((valid) => {
  109. if (valid) {
  110. this.$confirm('是否提交数据', '提示', {
  111. confirmButtonText: '确定',
  112. cancelButtonText: '取消',
  113. type: 'warning'
  114. }).then(() => {
  115. if (this.isEdit) {
  116. updateProductCate(this.$route.query.id, this.productCate).then(response => {
  117. this.$refs[formName].resetFields();
  118. this.$message({
  119. message: '修改成功',
  120. type: 'success',
  121. duration: 1000
  122. });
  123. this.$router.back();
  124. });
  125. } else {
  126. createProductCate(this.productCate).then(response => {
  127. this.$refs[formName].resetFields();
  128. this.brand = Object.assign({}, defaultProductCate);
  129. this.$message({
  130. message: '提交成功',
  131. type: 'success',
  132. duration: 1000
  133. });
  134. });
  135. }
  136. });
  137. } else {
  138. this.$message({
  139. message: '验证失败',
  140. type: 'error',
  141. duration: 1000
  142. });
  143. return false;
  144. }
  145. });
  146. },
  147. resetForm(formName) {
  148. this.$refs[formName].resetFields();
  149. this.productCate = Object.assign({}, defaultProductCate);
  150. this.getSelectProductCateList();
  151. }
  152. }
  153. }
  154. </script>
  155. <style scoped>
  156. </style>