detail.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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="请输入歌手名称" />
  6. </el-form-item>
  7. <el-form-item label="歌手性别:" prop="sex">
  8. <el-select v-model="form.sex" placeholder="请选择歌手性别">
  9. <el-option v-for="item in sexOptions" :key="item.value" :value="item.value" :label="item.label" />
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="所属地区:" prop="singerArea">
  13. <el-select v-model="form.singerArea" placeholder="请选择歌手所属地区">
  14. <el-option v-for="item in regionOptions" :key="item.value" :value="item.value"
  15. :label="item.label" />
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="资源平台:" prop="platformId">
  19. <el-select v-model="form.platformId" placeholder="请选择资源平台" :disabled="disabledPlatformId(form.platformId)">
  20. <el-option v-for="item in platformOptions" :key="item.value" :value="item.value"
  21. :label="item.label" :disabled="disabledJoinType(item.joinType)" />
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="歌手简介:" prop="description">
  25. <el-input v-model="form.description" type="textarea" rows="5" placeholder="请输入歌手简介" maxlength="300"
  26. show-word-limit />
  27. </el-form-item>
  28. <el-form-item label="歌手头像:" prop="coverUrl">
  29. <Upload listType="picture-card" :url="form.coverUrl" @upload="upload" :disabled="disabled" />
  30. </el-form-item>
  31. </el-form>
  32. <div class="form-btn">
  33. <el-button @click="cancel">取消</el-button>
  34. <el-button type="primary" @click="getSubmit" v-if="!disabled">确定</el-button>
  35. </div>
  36. </div>
  37. </template>
  38. <script>
  39. import { detail, submit } from '@/api/music/singer'
  40. import { sexMixin, regionMixin, platformMixin } from '@/mixin/index'
  41. export default {
  42. name:"musicSingerDetail",
  43. mixins: [sexMixin, regionMixin, platformMixin],
  44. data() {
  45. return {
  46. // 表单
  47. form: {},
  48. // 校验
  49. rules: {
  50. name: [{
  51. required: true, message: '请输入歌手名称', trigger: 'blur'
  52. }],
  53. sex: [{
  54. required: true, message: '请选择歌手性别', trigger: 'change'
  55. }],
  56. singerArea: [{
  57. required: true, message: '请选择歌手所属地区', trigger: 'change'
  58. }],
  59. platformId: [{
  60. required: true, message: '请选择资源平台', trigger: 'change'
  61. }],
  62. status: [{
  63. required: true, message: '请选择当前状态', trigger: 'change'
  64. }],
  65. coverUrl: [{
  66. required: true, message: '请上传歌手头像', trigger: 'change'
  67. }]
  68. },
  69. // 是否只读
  70. disabled: false
  71. }
  72. },
  73. mounted() {
  74. // 获取资源平台
  75. this.getPlatform({
  76. audioType: 9
  77. })
  78. if (this.$route.query.id) {
  79. this.form.id = this.$route.query.id
  80. this.disabled = Boolean(this.$route.query.disabled)
  81. this.getList()
  82. }
  83. },
  84. methods: {
  85. // 详情
  86. getList() {
  87. detail(this.form.id).then(res => {
  88. if (res.code === 0) {
  89. this.form = res.data
  90. }
  91. })
  92. },
  93. // 上传
  94. upload(e) {
  95. this.form.coverUrl = e.file
  96. },
  97. // 新增
  98. getSubmit() {
  99. this.$refs.form.validate((valid) => {
  100. if (valid) {
  101. let title = this.form.id ? '编辑成功!' : '新增成功!'
  102. submit(this.form).then(res => {
  103. if (res.code === 0) {
  104. this.$message.success(`${title}`)
  105. this.cancel()
  106. }
  107. })
  108. } else {
  109. return false
  110. }
  111. })
  112. },
  113. // 取消
  114. cancel() {
  115. this.$tab.closeOpenPage("/music/singer");
  116. }
  117. }
  118. }
  119. </script>
  120. <style lang="scss" scoped>
  121. .el-form {
  122. width: 500px;
  123. }
  124. </style>