index.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>退团申请 <filter-search @reload="reloadSearch" :keys="['visitFlag']" :moreKeys="['organId']"/>
  5. </h2>
  6. <div class="m-core">
  7. <save-form
  8. :inline="true"
  9. @submit="submit"
  10. @reset="onReSet"
  11. ref="searchForm"
  12. :model.sync="searchForm"
  13. >
  14. <el-form-item>
  15. <el-input
  16. v-model.trim="searchForm.search"
  17. clearable
  18. placeholder="学员(乐团)编号"
  19. ></el-input>
  20. </el-form-item>
  21. <el-form-item>
  22. <el-select v-model="searchForm.status" clearable placeholder="请选择状态">
  23. <el-option
  24. v-for="(item, key) in withdrawalStatus"
  25. :key="key"
  26. :label="item"
  27. :value="key"
  28. ></el-option>
  29. </el-select>
  30. </el-form-item>
  31. <el-form-item>
  32. <el-button native-type="submit" type="danger">搜索</el-button>
  33. <el-button native-type="reset" type="primary">重置</el-button>
  34. <el-button @click="onExport" type="primary" v-permission="'export/musicGroupQuit'">导出</el-button>
  35. </el-form-item>
  36. </save-form>
  37. <el-table
  38. :data="list"
  39. style="width: 100%"
  40. :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  41. >
  42. <el-table-column
  43. prop="userId"
  44. label="学员编号"
  45. >
  46. <copy-text slot-scope="scope">{{scope.row.userId}}</copy-text>
  47. </el-table-column>
  48. <el-table-column
  49. prop="userId"
  50. label="学员姓名"
  51. >
  52. <copy-text slot-scope="scope">{{scope.row.user.username}}</copy-text>
  53. </el-table-column>
  54. <el-table-column
  55. prop="musicGroupId"
  56. label="所属乐团"
  57. >
  58. <copy-text slot-scope="scope">{{scope.row.musicGroup.name}}</copy-text>
  59. </el-table-column>
  60. <el-table-column label="状态">
  61. <template slot-scope="scope">
  62. {{ scope.row.status | withdrawalStatus }}
  63. </template>
  64. </el-table-column>
  65. <el-table-column
  66. prop="createTime"
  67. label="申请时间"
  68. ></el-table-column>
  69. <el-table-column
  70. prop="userComment"
  71. label="退团原因"
  72. >
  73. <overflow-text width="100%" slot-scope="scope" :text="scope.row.userComment"></overflow-text>
  74. </el-table-column>
  75. <el-table-column
  76. align="center"
  77. fixed="right"
  78. width="200px;"
  79. label="操作"
  80. v-if="permission('musicGroupQuit/quitMusicGroup/quit') || permission('musicGroupQuit/quitMusicGroup/quit-only') || permission('visit/add/tuituanliebiao')"
  81. >
  82. <template slot-scope="scope">
  83. <el-button
  84. type="text"
  85. v-if="permission('musicGroupQuit/quitMusicGroup/quit')"
  86. :disabled="scope.row.status != 'PROCESSING'"
  87. @click="quieTeamMask(scope.row)"
  88. >审核</el-button>
  89. <!-- <el-button
  90. type="text"
  91. v-if="permission('musicGroupQuit/quitMusicGroup/quit-only')"
  92. :disabled="scope.row.status != 'PROCESSING'"
  93. @click="quieTeam(scope.row)"
  94. >退团</el-button> -->
  95. <el-button
  96. type="text"
  97. v-if="permission('visit/add/tuituanliebiao')"
  98. @click="addVisit(scope.row)"
  99. >新增回访</el-button>
  100. </template>
  101. </el-table-column>
  102. </el-table>
  103. <pagination
  104. sync
  105. :total.sync="rules.total"
  106. :page.sync="rules.page"
  107. :limit.sync="rules.limit"
  108. :page-sizes="rules.page_size"
  109. @pagination="FetchList"
  110. />
  111. </div>
  112. <el-dialog title="审核" width="640px" :visible.sync="quitVisible">
  113. <quitModal
  114. v-if="quitVisible && detail"
  115. :detail="detail"
  116. @close="quitVisible = false"
  117. @submited="FetchList"
  118. />
  119. </el-dialog>
  120. <!-- <el-dialog title="退团" width="500px" :visible.sync="quitOnlyVisible">
  121. <quitOnlyModal
  122. v-if="quitOnlyVisible && detail"
  123. :detail="detail"
  124. @close="quitOnlyVisible = false"
  125. @submited="FetchList"
  126. />
  127. </el-dialog> -->
  128. <el-dialog title="新增回访" width="500px" :visible.sync="visitVisible">
  129. <visit
  130. v-if="visitVisible && detail"
  131. :detail="detail"
  132. @close="visitVisible = false"
  133. @submited="FetchList"
  134. />
  135. </el-dialog>
  136. </div>
  137. </template>
  138. <script>
  139. import pagination from "@/components/Pagination/index";
  140. import { permission } from '@/utils/directivePage'
  141. import quitModal from './modals/quit'
  142. import quitOnlyModal from './modals/quitOnly'
  143. import visit from './modals/visit'
  144. import { Export } from '@/utils/downLoadFile'
  145. import qs from 'qs'
  146. import { musicGroupQuitQeryPage } from './api'
  147. import { withdrawalStatus } from '@/constant'
  148. const initSearch = {
  149. search: '',
  150. status: null
  151. }
  152. export default {
  153. components: { pagination, quitModal, quitOnlyModal, visit },
  154. data() {
  155. return {
  156. withdrawalStatus,
  157. quitVisible: false,
  158. quitOnlyVisible: false,
  159. visitVisible: false,
  160. detail: null,
  161. list: [],
  162. searchForm: {
  163. ...initSearch
  164. },
  165. rules: {
  166. // 分页规则
  167. limit: 10, // 限制显示条数
  168. page: 1, // 当前页
  169. total: 0, // 总条数
  170. page_size: [10, 20, 40, 50], // 选择限制显示条数
  171. },
  172. }
  173. },
  174. mounted() {
  175. this.FetchList()
  176. },
  177. methods: {
  178. permission,
  179. reloadSearch() {
  180. this.rules.page = 1;
  181. this.FetchList();
  182. },
  183. submit() {
  184. this.rules.page = 1
  185. this.FetchList()
  186. },
  187. onReSet() {
  188. this.searchForm = {...initSearch}
  189. this.submit();
  190. },
  191. quieTeamMask(row) {
  192. this.quitVisible = true
  193. this.detail = row
  194. },
  195. quieTeam(row) {
  196. this.quitOnlyVisible = true
  197. this.detail = row
  198. },
  199. addVisit(row) {
  200. this.visitVisible = true
  201. this.detail = row
  202. },
  203. async FetchList() {
  204. try {
  205. const res = await musicGroupQuitQeryPage({
  206. page: this.rules.page,
  207. rows: this.rules.limit,
  208. visitFlag: this.$route.query.visitFlag,
  209. ...this.searchForm,
  210. })
  211. this.rules.total = res.data.total;
  212. this.list = res.data.rows
  213. } catch (error) {}
  214. },
  215. onExport() {
  216. const { ...rest} = this.searchForm
  217. Export(this, {
  218. url: '/api-web/export/musicGroupQuit',
  219. fileName: '退团申请.xls',
  220. method: 'post',
  221. params: qs.stringify({ visitFlag: this.$route.query.visitFlag, ...rest })
  222. }, '您确定导出退团申请列表?')
  223. }
  224. }
  225. }
  226. </script>