index.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>
  5. 排课资格列表
  6. </h2>
  7. <div class="m-core">
  8. <save-form
  9. :inline="true"
  10. :saveKey="'courseCreditials'"
  11. :model="searchForm"
  12. ref="searchForm"
  13. @submit="search"
  14. @reset="onReSet"
  15. >
  16. <el-form-item prop="search">
  17. <el-input
  18. placeholder="学生编号/姓名"
  19. clearable
  20. type="text"
  21. v-model.trim="searchForm.search"
  22. ></el-input>
  23. </el-form-item>
  24. <el-form-item prop="organId">
  25. <el-select
  26. class="multiple"
  27. filterable
  28. v-model.trim="searchForm.organId"
  29. clearable
  30. placeholder="请选择分部"
  31. >
  32. <el-option
  33. v-for="(item, index) in selects.branchs"
  34. :key="index"
  35. :label="item.name"
  36. :value="item.id"
  37. ></el-option>
  38. </el-select>
  39. </el-form-item>
  40. <el-form-item>
  41. <el-button native-type="submit" type="primary">搜索</el-button>
  42. <el-button native-type="reset" type="danger">重置</el-button>
  43. </el-form-item>
  44. </save-form>
  45. <div class="tableWrap">
  46. <el-table
  47. style="width: 100%"
  48. :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  49. :data="tableList"
  50. >
  51. <el-table-column
  52. align="center"
  53. prop="organName"
  54. label="分部"
  55. ></el-table-column>
  56. <el-table-column align="center" label="学员信息" width="120px">
  57. <template slot-scope="scope">
  58. {{ scope.row.username }}<br />
  59. <copy-text>{{ scope.row.userId }}</copy-text>
  60. </template>
  61. </el-table-column>
  62. <el-table-column
  63. align="center"
  64. prop="phone"
  65. label="手机号"
  66. width="120px"
  67. ></el-table-column>
  68. <el-table-column align="center" prop="one" label="1v1">
  69. <template slot="header">
  70. <div class="titleCell">
  71. <span>1v1</span>
  72. <el-tooltip placement="top" popper-class="mTooltip">
  73. <div slot="content">已上课次/总课次</div>
  74. <i
  75. class="el-icon-question micon el-tooltip"
  76. style="
  77. font-size: 18px;
  78. color: #f56c6c;
  79. top: 2px;
  80. position: relative;
  81. "
  82. ></i>
  83. </el-tooltip>
  84. </div>
  85. </template>
  86. </el-table-column>
  87. <el-table-column align="center" prop="two" label="1v2">
  88. <template slot="header">
  89. <div class="titleCell">
  90. <span>1v2</span>
  91. <el-tooltip placement="top" popper-class="mTooltip">
  92. <div slot="content">已上课次/总课次</div>
  93. <i
  94. class="el-icon-question micon el-tooltip"
  95. style="
  96. font-size: 18px;
  97. color: #f56c6c;
  98. top: 2px;
  99. position: relative;
  100. "
  101. ></i>
  102. </el-tooltip>
  103. </div> </template
  104. ></el-table-column>
  105. <el-table-column align="center" prop="three" label="1v3">
  106. <template slot="header">
  107. <div class="titleCell">
  108. <span>1v3</span>
  109. <el-tooltip placement="top" popper-class="mTooltip">
  110. <div slot="content">已上课次/总课次</div>
  111. <i
  112. class="el-icon-question micon el-tooltip"
  113. style="
  114. font-size: 18px;
  115. color: #f56c6c;
  116. top: 2px;
  117. position: relative;
  118. "
  119. ></i>
  120. </el-tooltip>
  121. </div> </template
  122. ></el-table-column>
  123. <el-table-column align="center" prop="four" label="1v4">
  124. <template slot="header">
  125. <div class="titleCell">
  126. <span>1v4</span>
  127. <el-tooltip placement="top" popper-class="mTooltip">
  128. <div slot="content">已上课次/总课次</div>
  129. <i
  130. class="el-icon-question micon el-tooltip"
  131. style="
  132. font-size: 18px;
  133. color: #f56c6c;
  134. top: 2px;
  135. position: relative;
  136. "
  137. ></i>
  138. </el-tooltip>
  139. </div> </template
  140. ></el-table-column>
  141. <el-table-column align="center" prop="five" label="1v5">
  142. <template slot="header">
  143. <div class="titleCell">
  144. <span>1v5</span>
  145. <el-tooltip placement="top" popper-class="mTooltip">
  146. <div slot="content">已上课次/总课次</div>
  147. <i
  148. class="el-icon-question micon el-tooltip"
  149. style="
  150. font-size: 18px;
  151. color: #f56c6c;
  152. top: 2px;
  153. position: relative;
  154. "
  155. ></i>
  156. </el-tooltip>
  157. </div> </template
  158. ></el-table-column>
  159. <el-table-column align="center" prop="six" label="1v6">
  160. <template slot="header">
  161. <div class="titleCell">
  162. <span>1v6</span>
  163. <el-tooltip placement="top" popper-class="mTooltip">
  164. <div slot="content">已上课次/总课次</div>
  165. <i
  166. class="el-icon-question micon el-tooltip"
  167. style="
  168. font-size: 18px;
  169. color: #f56c6c;
  170. top: 2px;
  171. position: relative;
  172. "
  173. ></i>
  174. </el-tooltip>
  175. </div>
  176. </template>
  177. </el-table-column>
  178. <el-table-column align="center" prop="seven" label="1v7">
  179. <template slot="header">
  180. <div class="titleCell">
  181. <span>1v7</span>
  182. <el-tooltip placement="top" popper-class="mTooltip">
  183. <div slot="content">已上课次/总课次</div>
  184. <i
  185. class="el-icon-question micon el-tooltip"
  186. style="
  187. font-size: 18px;
  188. color: #f56c6c;
  189. top: 2px;
  190. position: relative;
  191. "
  192. ></i>
  193. </el-tooltip>
  194. </div>
  195. </template>
  196. </el-table-column>
  197. <el-table-column align="center" prop="theory" label="小组课">
  198. <template slot="header">
  199. <div class="titleCell">
  200. <span>小组课</span>
  201. <el-tooltip placement="top" popper-class="mTooltip">
  202. <div slot="content">已上课次/总课次</div>
  203. <i
  204. class="el-icon-question micon el-tooltip"
  205. style="
  206. font-size: 18px;
  207. color: #f56c6c;
  208. top: 2px;
  209. position: relative;
  210. "
  211. ></i>
  212. </el-tooltip>
  213. </div>
  214. </template>
  215. </el-table-column>
  216. <el-table-column align="center" prop="practice" label="网管课">
  217. <template slot="header">
  218. <div class="titleCell">
  219. <span>网管课</span>
  220. <el-tooltip placement="top" popper-class="mTooltip">
  221. <div slot="content">已上课次/总课次</div>
  222. <i
  223. class="el-icon-question micon el-tooltip"
  224. style="
  225. font-size: 18px;
  226. color: #f56c6c;
  227. top: 2px;
  228. position: relative;
  229. "
  230. ></i>
  231. </el-tooltip>
  232. </div> </template
  233. ></el-table-column>
  234. <!-- <el-table-column
  235. align="center"
  236. prop="activityId"
  237. label="活动编号"
  238. ></el-table-column>
  239. <el-table-column
  240. align="center"
  241. prop="addMemo"
  242. label="活动名称"
  243. ></el-table-column>
  244. <el-table-column
  245. align="center"
  246. prop="organName"
  247. label="分部"
  248. ></el-table-column>
  249. <el-table-column align="center" label="学员信息">
  250. <template slot-scope="scope">
  251. {{ scope.row.username }}
  252. <copy-text>{{ scope.row.userId }}</copy-text>
  253. </template>
  254. </el-table-column>
  255. <el-table-column
  256. align="center"
  257. prop="teacherName"
  258. label="指导老师"
  259. ></el-table-column>
  260. <el-table-column align="center" label="付费类型">
  261. <template slot-scope="scope">
  262. <span v-if="scope.row.vipFlag">
  263. {{ scope.row.categoryName }}
  264. </span>
  265. <span v-if="scope.row.practiceFlag">
  266. 网管课
  267. </span>
  268. <span v-if="scope.row.memberFlag">学练宝</span>
  269. <span
  270. v-if="
  271. !scope.row.vipFlag &&
  272. !scope.row.practiceFlag &&
  273. !scope.row.memberFlag
  274. "
  275. >--</span
  276. >
  277. </template>
  278. </el-table-column>
  279. <el-table-column align="center" label="付费课资格">
  280. <template slot-scope="scope">
  281. <span v-if="scope.row.vipFlag || scope.row.practiceFlag">
  282. <span v-if="!scope.row.memberFlag"
  283. >{{ scope.row.totalCourseNum - scope.row.subCourseNum }}/{{
  284. scope.row.totalCourseNum
  285. }}</span
  286. >
  287. </span>
  288. </template>
  289. </el-table-column>
  290. <el-table-column align="center" label="赠送类型">
  291. <template slot-scope="scope">
  292. <span v-if="scope.row.giveVipFlag">
  293. {{ scope.row.giveCategoryName }}
  294. </span>
  295. <span v-if="scope.row.givePracticeFlag">
  296. 网管课
  297. </span>
  298. <span v-if="scope.row.giveMemberFlag">学练宝</span>
  299. <span
  300. v-if="
  301. !scope.row.giveVipFlag &&
  302. !scope.row.givePracticeFlag &&
  303. !scope.row.giveMemberFlag
  304. "
  305. >--</span
  306. >
  307. </template>
  308. </el-table-column>
  309. <el-table-column align="center" label="赠送课资格">
  310. <template slot-scope="scope">
  311. <span v-if="scope.row.giveVipFlag || scope.row.givePracticeFlag">
  312. <span v-if="!scope.row.giveMemberFlag"
  313. >{{
  314. scope.row.totalGiveCourseNum - scope.row.subGiveCourseNum
  315. }}/{{ scope.row.totalGiveCourseNum }}</span
  316. >
  317. </span>
  318. </template>
  319. </el-table-column>
  320. <el-table-column
  321. align="center"
  322. prop="musicTheoryNum"
  323. label="是否退费"
  324. >
  325. <template slot-scope="scope">
  326. {{ scope.row.returnFee ? "是" : "否" }}
  327. </template>
  328. </el-table-column>
  329. <el-table-column
  330. align="center"
  331. prop="actualPrice"
  332. label="支付金额"
  333. ></el-table-column>
  334. <el-table-column
  335. align="center"
  336. prop="subNoCoursePrice"
  337. label="剩余排课金额"
  338. ></el-table-column> -->
  339. <el-table-column align="center" label="操作">
  340. <template slot-scope="scope">
  341. <div>
  342. <el-button type="text" @click="gotoDetail(scope.row)"
  343. >详情</el-button
  344. >
  345. </div>
  346. </template>
  347. </el-table-column>
  348. </el-table>
  349. <pagination
  350. sync
  351. :saveKey="'courseCreditials'"
  352. :total.sync="rules.total"
  353. :page.sync="rules.page"
  354. :limit.sync="rules.limit"
  355. :page-sizes="rules.page_size"
  356. @pagination="getList"
  357. />
  358. </div>
  359. </div>
  360. <el-dialog :visible.sync="detailVisible" title="查看详情" width="900px">
  361. <detail v-if="detailVisible" :userId="selectUserId" />
  362. </el-dialog>
  363. </div>
  364. </template>
  365. <script>
  366. import pagination from "@/components/Pagination/index";
  367. import { querySumPage } from "./api";
  368. import detail from "./detail.vue";
  369. export default {
  370. name: "credentials",
  371. components: {
  372. pagination,
  373. detail
  374. },
  375. data() {
  376. return {
  377. searchForm: {
  378. search: null,
  379. organId: null,
  380. hasSubCourse: null,
  381. returnFee: null
  382. },
  383. tableList: [],
  384. rules: {
  385. // 分页规则
  386. limit: 10, // 限制显示条数
  387. page: 1, // 当前页
  388. total: 0, // 总条数
  389. page_size: [10, 20, 40, 50] // 选择限制显示条数
  390. },
  391. detailVisible: false,
  392. selectUserId: null
  393. };
  394. },
  395. mounted() {
  396. // 获取分部
  397. this.$store.dispatch("setBranchs");
  398. this.getList();
  399. },
  400. methods: {
  401. async getList() {
  402. try {
  403. const res = await querySumPage({
  404. page: this.rules.page,
  405. rows: this.rules.limit,
  406. ...this.searchForm
  407. });
  408. this.tableList = res.data.rows;
  409. this.rules.total = res.data.total;
  410. } catch (e) {}
  411. },
  412. search() {
  413. this.rules.page = 1;
  414. this.getList();
  415. },
  416. onReSet() {
  417. this.rules = {
  418. ...this.rules,
  419. page: 1
  420. };
  421. this.$refs.searchForm.resetFields();
  422. this.search();
  423. },
  424. gotoDetail(row) {
  425. // console.log(row, "121212", row.userId);
  426. this.selectUserId = row.userId;
  427. this.detailVisible = true;
  428. }
  429. }
  430. };
  431. </script>
  432. <style lang="scss"></style>