detail.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="form" ref="form" :rules="rules" label-width="110px" :disabled="disabled">
  4. <el-form-item label="电台名称:" prop="name">
  5. <el-input v-model="form.name" placeholder="请输入电台名称" />
  6. </el-form-item>
  7. <el-form-item label="资源平台:" prop="platformId">
  8. <el-select v-model="form.platformId" placeholder="请选择资源平台" :disabled="disabledPlatformId(form.platformId)">
  9. <el-option v-for="item in platformOptions" :key="item.value" :value="item.value" :label="item.label"
  10. :disabled="disabledJoinType(item.joinType)" />
  11. </el-select>
  12. </el-form-item>
  13. <el-form-item v-if="form.platformId !== 4" label="地域分类:" prop="addressClassifyId">
  14. <el-select v-model="form.addressClassifyId" placeholder="请选择地域分类">
  15. <el-option v-for="item in addressOptions" :key="item.value" :value="item.value.toString()"
  16. :label="item.label" />
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="广播分类:" prop="contentClassifyId">
  20. <el-select v-model="form.contentClassifyId" placeholder="请选择广播分类">
  21. <el-option v-for="item in contentOptions" :key="item.value" :value="item.value.toString()"
  22. :label="item.label" />
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item label="电台简介:" prop="description">
  26. <el-input v-model="form.description" type="textarea" rows="5" maxlength="300" show-word-limit
  27. placeholder="请输入电台简介" />
  28. </el-form-item>
  29. <el-form-item label="非加速链接:" prop="noStreamUrl">
  30. <el-input v-model="form.noStreamUrl" placeholder="请输入非加速链接" />
  31. </el-form-item>
  32. <el-form-item label="加速链接:">
  33. <el-input v-model="form.fullUrl" placeholder="请输入加速链接" />
  34. </el-form-item>
  35. <el-form-item label="电台封面:" prop="thumb">
  36. <Upload listType="picture-card" :url="form.thumb" @upload="upload" :disabled="disabled" />
  37. </el-form-item>
  38. </el-form>
  39. <div style="margin-left: 110px">
  40. <el-button @click="cancel">取消</el-button>
  41. <el-button v-if="!disabled" type="primary" @click="getSubmit">确定</el-button>
  42. </div>
  43. </div>
  44. </template>
  45. <script>
  46. import { submit, detail } from '@/api/music/radio'
  47. import { platformMixin, addressMixin, contentMixin } from '@/mixin/index'
  48. export default {
  49. mixins: [platformMixin, addressMixin, contentMixin],
  50. data() {
  51. return {
  52. // 表单
  53. form: {
  54. status: 1
  55. },
  56. // 校验
  57. rules: {
  58. name: [{
  59. required: true, message: '请输入电台名称', trigger: 'blur'
  60. }],
  61. addressClassifyId: [{
  62. required: true, message: '请选择地域分类', trigger: 'change'
  63. }],
  64. contentClassifyId: [{
  65. required: true, message: '请选择广播分类', trigger: 'change'
  66. }],
  67. description: [{
  68. required: true, message: '请输入电台简介', trigger: 'blur'
  69. }],
  70. platformId: [{
  71. required: true, message: '请选择资源平台', trigger: 'change'
  72. }],
  73. noStreamUrl: [{
  74. required: true, message: '请输入非加速链接', trigger: 'blur'
  75. }],
  76. thumb: [{
  77. required: true, message: '请上传电台封面', trigger: 'change'
  78. }]
  79. },
  80. // 只读
  81. disabled: false
  82. }
  83. },
  84. mounted() {
  85. // 获取资源平台
  86. this.getPlatform({
  87. audioType: 2
  88. })
  89. if (this.$route.query.id) {
  90. this.form.id = this.$route.query.id
  91. this.disabled = Boolean(this.$route.query.disabled)
  92. this.getList()
  93. }
  94. },
  95. methods: {
  96. // 详情
  97. getList() {
  98. detail(this.form.id).then(res => {
  99. if (res.code === 0) {
  100. this.form = res.data
  101. }
  102. })
  103. },
  104. // 上传
  105. upload(e) {
  106. this.form.thumb = e.file
  107. },
  108. // 确定
  109. getSubmit() {
  110. this.$refs.form.validate((valid) => {
  111. if (valid) {
  112. let title = this.form.id ? `编辑成功!` : `新增成功!`
  113. submit(this.form).then(res => {
  114. if (res.code === 0) {
  115. this.$message.success(`${title}`)
  116. this.cancel()
  117. }
  118. })
  119. } else {
  120. return false
  121. }
  122. })
  123. },
  124. // 取消
  125. cancel() {
  126. this.$tab.closeOpenPage('/music/radio')
  127. }
  128. }
  129. };
  130. </script>
  131. <style lang="scss" scoped>
  132. .el-form {
  133. width: 500px;
  134. }
  135. </style>