detail.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="form" ref="form" :rules="rules" label-width="100px" :disabled="disabled">
  4. <el-form-item label="兑换标题:" prop="name">
  5. <el-input v-model="form.name" placeholder="请输入兑换标题" maxlength="50" show-word-limit />
  6. </el-form-item>
  7. <el-form-item label="兑换积分:" prop="exchangePoint">
  8. <el-input-number v-model="form.exchangePoint" placeholder="请输入兑换积分" :controls="false" :min="1" />
  9. <span style="margin-left: 10px">积分</span>
  10. </el-form-item>
  11. <el-form-item label="兑换类型:" prop="type">
  12. <el-select v-model="form.type" placeholder="请选择兑换类型">
  13. <el-option v-for="item in rewardOptions" :key="item.value" :value="item.value"
  14. :label="item.label" />
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item label="套餐名称:" v-if="form.type !== 3">
  18. <el-select v-model="form.businessId" placeholder="请选择套餐">
  19. <el-option v-for="item in mealOptions" :key="item.id" :value="item.id" :label="item.name" />
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="实物数量:" v-else prop="totalNum">
  23. <el-input-number v-model="form.totalNum" :min="1" :controls="false" />
  24. <span style="margin-left: 10px">个</span>
  25. </el-form-item>
  26. <el-form-item label="兑换图片:" prop="pic">
  27. <Upload listType="picture-card" :url="form.pic" @upload="upload" :disabled="disabled" />
  28. </el-form-item>
  29. </el-form>
  30. <div class="form-btn">
  31. <el-button @click="cancel">取消</el-button>
  32. <el-button v-if="!disabled" type="primary" @click="getSubmit">确定</el-button>
  33. </div>
  34. </div>
  35. </template>
  36. <script>
  37. import Upload from '@/components/Upload/index.vue'
  38. import { create, detail, edit, mealList } from '@/api/registration/exchange'
  39. export default {
  40. components: {
  41. Upload
  42. },
  43. data() {
  44. return {
  45. // 表单
  46. form: {
  47. status: 0,
  48. type: null,
  49. businessType: 4
  50. },
  51. // 校验
  52. rules: {
  53. name: [{
  54. required: true, message: '请输入兑换标题', trigger: 'blur'
  55. }],
  56. exchangePoint: [{
  57. required: true, message: '请输入兑换积分', trigger: 'blur'
  58. }],
  59. type: [{
  60. required: true, message: '请选择兑换类型', trigger: 'change'
  61. }],
  62. totalNum: [{
  63. required: true, message: '请输入实物数量', trigger: 'blur'
  64. }],
  65. pic: [{
  66. required: true, message: '请上传兑换图片', trigger: 'change'
  67. }]
  68. },
  69. // 奖品类型
  70. rewardOptions: [{
  71. value: 0,
  72. label: '音乐套餐'
  73. }, {
  74. value: 1,
  75. label: '流量套餐'
  76. }, {
  77. value: 3,
  78. label: '音响实物'
  79. }],
  80. // 套餐类型
  81. mealOptions: [],
  82. // 只读
  83. disabled: false
  84. }
  85. },
  86. watch: {
  87. 'form.type': {
  88. handler(val) {
  89. if (val !== null) {
  90. this.getMealList()
  91. }
  92. },
  93. deep: true
  94. }
  95. },
  96. mounted() {
  97. if (this.$route.query.id) {
  98. this.form.id = this.$route.query.id
  99. this.disabled = Boolean(this.$route.query.disabled)
  100. this.getList()
  101. }
  102. },
  103. methods: {
  104. // 详情
  105. getList() {
  106. detail(this.form.id).then(res => {
  107. if (res.code === 0) {
  108. this.form = res.data
  109. }
  110. })
  111. },
  112. // 上传
  113. upload(e) {
  114. this.form.pic = e.file
  115. },
  116. // 取消
  117. cancel() {
  118. this.$tab.closeOpenPage('/registration/exchangeConfig')
  119. },
  120. getMealList() {
  121. let type = this.form.type === 0 ? 13 : 12
  122. mealList(type, 2).then(res => {
  123. if (res.code === 0) {
  124. this.mealOptions = res.data
  125. }
  126. })
  127. },
  128. // 确定
  129. getSubmit() {
  130. this.$refs.form.validate((valid) => {
  131. if (valid) {
  132. if (this.form.id) {
  133. edit(this.form).then(res => {
  134. if (res.code === 0) {
  135. this.$message.success('修改成功!')
  136. this.cancel()
  137. }
  138. })
  139. } else {
  140. create(this.form).then(res => {
  141. if (res.code === 0) {
  142. this.$message.success('新增成功!')
  143. this.cancel()
  144. }
  145. })
  146. }
  147. } else {
  148. return false
  149. }
  150. })
  151. }
  152. }
  153. }
  154. </script>
  155. <style lang="scss" scoped>
  156. .el-form {
  157. width: 500px;
  158. }
  159. </style>