detail.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <template>
  2. <div class="app-container">
  3. <el-form class="form" label-width="100px" size="small">
  4. <el-row>
  5. <el-col :span="12">
  6. <el-form-item label="播客封面:">
  7. <Upload listType="picture-card" @upload="getUpload" />
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="12">
  11. <el-form-item label="播客名称:">
  12. <el-input placeholder="请输入播客名称" />
  13. </el-form-item>
  14. <el-form-item label="播客分类:">
  15. <el-select placeholder="请选择播客分类">
  16. <el-option />
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="资源平台:">
  20. <el-input disabled />
  21. </el-form-item>
  22. </el-col>
  23. </el-row>
  24. <el-form-item label="音乐简介:">
  25. <el-input type="textarea" rows="4" placeholder="请输入音乐简介" />
  26. </el-form-item>
  27. <el-form-item label="付费类型:">
  28. <el-select placeholder="请选择付费类型">
  29. <el-option />
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="原价:">
  33. <el-input placeholder="请输入原价" />
  34. </el-form-item>
  35. <el-form-item label="折扣价:">
  36. <el-input placeholder="请输入折扣价" />
  37. </el-form-item>
  38. <el-form-item label="标签分类:">
  39. <el-select placeholder="请选择标签分类">
  40. <el-option />
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="关联节目:" style="width: 1000px">
  44. <el-button type="primary" @click="getPage">关联</el-button>
  45. <el-button @click="getDelete">解除关联</el-button>
  46. <el-table :data="tableData1" height="229px" :row-key="getRowKey"
  47. @selection-change="selectionChangeDelete">
  48. <el-table-column type="selection" align="center" />
  49. <el-table-column prop="id" label="节目ID" align="center" width="150px" />
  50. <el-table-column prop="name" label="节目名称" align="center" show-overflow-tooltip />
  51. <el-table-column prop="platformId" label="资源平台" align="center" width="100px" />
  52. <el-table-column prop="status" label="当前状态" align="center" width="100px"
  53. :formatter="statusFormatter" />
  54. </el-table>
  55. </el-form-item>
  56. <el-form-item>
  57. <el-button @click="getCancel">取消</el-button>
  58. <el-button type="primary" @click="getSubmit">提交</el-button>
  59. </el-form-item>
  60. </el-form>
  61. <!-- 关联弹窗 -->
  62. <el-dialog :visible.sync="dialogVisible" title="关联节目" width="1000px">
  63. <el-form :model="programmeForm" inline size="mini">
  64. <el-form-item label="节目ID:">
  65. <el-input v-model="programmeForm.id" placeholder="请输入节目ID" />
  66. </el-form-item>
  67. <el-form-item label="节目名称:">
  68. <el-input v-model="programmeForm.name" placeholder="请输入节目名称" />
  69. </el-form-item>
  70. <el-form-item>
  71. <el-button icon="el-icon-search" type="primary" @click="getSearch">搜索</el-button>
  72. <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
  73. </el-form-item>
  74. </el-form>
  75. <el-table :data="programmeTable" ref="programmeTable" v-loading="loading" :row-key="getRowKey"
  76. @selection-change="selectionChangeAdd">
  77. <el-table-column type="selection" reserve-selection align="center" />
  78. <el-table-column prop="id" label="节目ID" align="center" width="150px" />
  79. <el-table-column prop="name" label="节目名称" align="center" show-overflow-tooltip />
  80. <el-table-column prop="platformId" label="资源平台" align="center" width="100px" />
  81. <el-table-column prop="status" label="当前状态" align="center" width="100px"
  82. :formatter="statusFormatter" />
  83. </el-table>
  84. <pagination v-show="total>0" :total="total" :page.sync="programmeForm.pageNum"
  85. :limit.sync="programmeForm.pageSize" @pagination="getPage" />
  86. </el-dialog>
  87. </div>
  88. </template>
  89. <script>
  90. import { getProgrammePage } from '@/api/music/blog'
  91. import { statusMixin } from '../mixin/index'
  92. import Upload from "@/components/Upload/index";
  93. export default {
  94. mixins: [statusMixin],
  95. components: {
  96. Upload,
  97. },
  98. data() {
  99. return {
  100. // 遮罩层
  101. loading: true,
  102. // 表单
  103. programmeForm: {
  104. pageNum: 1,
  105. pageSize: 10
  106. },
  107. // 弹窗
  108. dialogVisible: false,
  109. // 选择的节目列表
  110. tableData1: [],
  111. // 解除关联
  112. delete_list: [],
  113. flag: false,
  114. // 节目总列表
  115. programmeTable: [],
  116. total: 0,
  117. };
  118. },
  119. methods: {
  120. // 上传封面
  121. getUpload(e){
  122. },
  123. // 关联
  124. getPage() {
  125. this.loading = true
  126. this.dialogVisible = true,
  127. getProgrammePage(this.programmeForm).then(res => {
  128. if (res.code === 0) {
  129. this.programmeTable = res.data.records
  130. this.total = res.data.total
  131. this.loading = false
  132. }
  133. })
  134. },
  135. // 多选
  136. selectionChangeDelete(e) {
  137. this.delete_list = e
  138. },
  139. selectionChangeAdd(e) {
  140. if(this.flag) return
  141. this.tableData1 = e
  142. },
  143. getRowKey(row) {
  144. return row.id;
  145. },
  146. // 解除关联
  147. getDelete() {
  148. this.flag = true
  149. this.delete_list.forEach(i => {
  150. this.tableData1.splice(i, 1)
  151. this.$refs.programmeTable.toggleRowSelection(i)
  152. })
  153. this.flag = false
  154. },
  155. // 搜索
  156. getSearch() {
  157. this.programmeForm.pageNum = 1
  158. this.getPage()
  159. },
  160. // 重置
  161. getRefresh() {
  162. this.programmeForm = {
  163. pageNum: 1,
  164. pageSize: 10
  165. }
  166. this.getPage()
  167. },
  168. getCancel() {
  169. this.$tab.closeOpenPage("/music/blog");
  170. },
  171. getSubmit() { },
  172. // 字典翻译
  173. statusFormatter(row) {
  174. return this.selectDictLabel(this.statusOptions, row.status)
  175. }
  176. },
  177. };
  178. </script>
  179. <style lang="scss" scoped>
  180. .form {
  181. width: 600px;
  182. }
  183. </style>