manageDetail.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. <template>
  2. <view class="column flex-1 hb">
  3. <view class="header p20">
  4. <view class="justify-start align-center">
  5. <u-avatar :src="grouplist.avatar" size="50"></u-avatar>
  6. <view class="ml20">
  7. <view class="justify-start align-center ">
  8. <text class="fs32 bold mr8">{{grouplist.nickName}}</text>
  9. <image class="w40 h40" src="@/static/images/copy_icon.png" @click="copyId" mode="aspectFill">
  10. </view>
  11. <view class="fs24 base-color-9 mt10">备注:{{grouplist.remark ||'暂无'}}</view>
  12. </view>
  13. </view>
  14. <view class="ptb20 fs24 base-color-6">手机号码:{{grouplist.phonenumber||'暂无'}}</view>
  15. </view>
  16. <view class="bgf">
  17. <view class="centerV">
  18. <u-tabs :list="list1" @click="clickTab" lineColor='#1773ff' lineWidth='40'
  19. activeStyle="font-weight:bold"></u-tabs>
  20. </view>
  21. <view class="justify-between box-blue" v-show="showCont==1">
  22. <view class="base-bg-sure boxs">
  23. <view class="bold">会员总数</view>
  24. <view class="base-color fs28">
  25. <text class="fs40 bold">{{companyUserCount.userTotal}}</text>人
  26. </view>
  27. </view>
  28. <view class="base-bg-sure boxs">
  29. <view class="bold">今日新增会员</view>
  30. <view class="base-color fs28">
  31. <text class="fs40 bold">{{companyUserCount.todayNewUser}}</text>人
  32. </view>
  33. </view>
  34. <view class="base-bg-sure boxs">
  35. <view class="bold">会员红包数</view>
  36. <view class="base-color fs28"><text class="fs40 bold">{{companyUserCount.userRedPacketNum}}</text>个</view>
  37. </view>
  38. <view class="base-bg-sure boxs">
  39. <view class="bold">新会员红包金额</view>
  40. <view class="base-color fs28"><text class="fs40 bold">{{companyUserCount.todayUserRedPacketAmount}}</text>元</view>
  41. </view>
  42. </view>
  43. <dropdownPanel :filterData='filterData' @onChange="onChange" @confirm="confirm" @reset="reset">
  44. <view v-if="searchbarNav == 0">
  45. <view class="mb20" >
  46. <u-search placeholder="请输入标签 多个标签用 , 隔开" v-model="keywordC" :showAction="false" height="30px"
  47. @search='getcompanyTagC'></u-search>
  48. </view>
  49. <view class="p20 fs28 column flex-1 scrolly">
  50. <scroll-view scroll-y="true" class="hb" :refresher-enabled="isEnabledC"
  51. :refresher-triggered="triggeredC" refresher-background="rgba(0,0,0,0)"
  52. @refresherrefresh="pullDownRefreshC" @refresherrestore="triggeredC = false"
  53. :upper-threshold="100" :lower-threshold="100" @refresherabort="triggeredC = false"
  54. @scrolltolower="reachBottomC">
  55. <view v-for="(item,index) in courseOne" :key="item.index"
  56. :class="courseid==item.courseId?'actNav':''" class="m10 p10 center"
  57. style="border-bottom: 2rpx solid #eee;" @click="getCourseOne(item.courseId)">
  58. {{item.courseName}}
  59. </view>
  60. </scroll-view>
  61. <u-loadmore :status="statusC" />
  62. </view>
  63. </view>
  64. <view class="p20 fs28 column flex-1 hidden h100" v-if="searchbarNav == 1">
  65. <view class="mb20" >
  66. <u-search placeholder="请输入标签 多个标签用 , 隔开" v-model="keyword" :showAction="false" height="30px"
  67. @search='getcompanyTag'></u-search>
  68. </view>
  69. <scroll-view scroll-y="true" class="hb" :refresher-enabled="isEnableds"
  70. :refresher-triggered="triggereds" refresher-background="rgba(0,0,0,0)"
  71. @refresherrefresh="pullDownRefreshs" @refresherrestore="triggereds = false"
  72. :upper-threshold="100" :lower-threshold="100" @refresherabort="triggereds = false"
  73. @scrolltolower="reachBottoms">
  74. <view v-for="(item,index) in courseTwo" :key="item.index"
  75. :class="courseids==item.videoId?'actNav':''" class="m10 p10 center"
  76. style="border-bottom: 2rpx solid #eee;" @click="getCourseTwo(item.videoId)">
  77. {{item.title}}
  78. </view>
  79. <u-loadmore :status="statusA" />
  80. <view class="ptb40"></view>
  81. </scroll-view>
  82. </view>
  83. </dropdownPanel>
  84. </view>
  85. <view class="column flex-1 scrolly" v-show="showCont==0">
  86. <scroll-view scroll-y="true" class="hb" :refresher-enabled="isEnabled" :refresher-triggered="triggered"
  87. refresher-background="rgba(0,0,0,0)" @refresherrefresh="pullDownRefresh"
  88. @refresherrestore="triggered = false" :upper-threshold="100" :lower-threshold="100"
  89. @refresherabort="triggered = false" @scrolltolower="reachBottom">
  90. <view class="m20 radius16 bgf p20" style="border: #3e9f59 solid 2rpx;"
  91. v-for="(item,index) in courselist" :key="index">
  92. <view class="justify-start align-center pb20" style="border-bottom: #eee solid 2rpx;">
  93. <view class="doingimg">
  94. <!-- <image src="../../../static/manergevip/book.png" class='w150 h90 radius16'></image> -->
  95. <image :src="item.thumbnail" class='w150 h90 radius16'></image>
  96. <view class="doing">进行中</view>
  97. </view>
  98. <view class="ml20">
  99. <view class="justify-start align-center">
  100. <view>{{item.courseName}}</view>
  101. <view class="justify-start align-center base-color">ID
  102. <image class="w40 h40" @click="copyCourseId(item.courseName)"
  103. src="@/static/images/copy_icon.png" mode="aspectFill">
  104. </view>
  105. </view>
  106. <view class="fs24 base-color-6 column">
  107. <text>{{item.title}}</text>
  108. <text></text>
  109. </view>
  110. </view>
  111. </view>
  112. <view class="justify-between fs28 mt20">
  113. <view class="flex-1">
  114. <view class="mb8 base-color-6">观看人数</view>
  115. <view>{{item.countVO.courseWatchNum}}</view>
  116. </view>
  117. <view class="flex-1">
  118. <view class="mb8 base-color-6">完播人数</view>
  119. <view>{{item.countVO.courseCompleteNum}}
  120. <text class="base-color-red ml16">完播率{{item.countVO.completeRate}}%</text>
  121. </view>
  122. </view>
  123. </view>
  124. <view class="justify-between fs28 mt20 pb20" style="border-bottom: #eee solid 2rpx;">
  125. <view class="flex-1">
  126. <view class="mb8 base-color-6">答题红包数</view>
  127. <view>{{item.countVO.redPacketNum}}</view>
  128. </view>
  129. <view class="flex-1">
  130. <view class="mb8 base-color-6">答题红包金额</view>
  131. <view>{{item.countVO.redPacketAmount}}元</view>
  132. </view>
  133. </view>
  134. <view class="justify-between mt20">
  135. <view class="flex-1">
  136. <view class="base-color-6 mb8 ">答题人数</view>
  137. <view>{{item.countVO.answerNum}}</view>
  138. </view>
  139. <view class="flex-1">
  140. <view class="base-color-6 mb8 ">正确人数</view>
  141. <view>{{item.countVO.answerRightNum}}</view>
  142. </view>
  143. <view class="flex-1">
  144. <!-- <view class="base-color-6 mb8 ">正确率</view>
  145. <view>{{item.answerRightRate.toFixed(2)||0}}%</view> -->
  146. </view>
  147. </view>
  148. <!-- <view class="centerV mt20">
  149. <view class="colorf base-bg ptb12 w400 radius80 center ">课程数据</view>
  150. </view> -->
  151. </view>
  152. <u-loadmore :status="status" />
  153. <view class="h90 "></view>
  154. </scroll-view>
  155. </view>
  156. <view class="column flex-1 scrolly " v-show="showCont==1"
  157. style="height: calc(100% - 100rpx);padding-bottom: 100rpx;">
  158. <u-collapse ref="collapseRef" :border="false" :value="collapseValue" @change="changeCollapse">
  159. <!-- #ifdef MP-WEIXIN -->
  160. <u-collapse-item name="course" title="课程统计">
  161. <!-- #endif -->
  162. <!-- #ifndef MP-WEIXIN -->
  163. <u-collapse-item name="course">
  164. <text slot="title" class="bold fs32">课程统计</text>
  165. <!-- #endif -->
  166. <text slot="value" class="base-color fs24">{{collapseValue.includes('course')?'收回':'展开'}}</text>
  167. <view slot="right-icon">
  168. <u-icon name="arrow-right" color="#1677ff" size="12"></u-icon>
  169. </view>
  170. <view class="justify-around ">
  171. <view class="base-bg-f radius16 p30 flex-1">
  172. <view class="mb12 bold">营期</view>
  173. <view class="base-color">
  174. <text class="bold fs40">{{courseCount.courseNum}}</text>期
  175. </view>
  176. </view>
  177. <view class="base-bg-f radius16 p20 flex-1 mlr20">
  178. <view class="mb12 bold">课程数</view>
  179. <view class="base-color"><text class="bold fs40">{{courseCount.videoNum}}
  180. </text>课</view>
  181. </view>
  182. <view class="base-bg-f radius16 p20 flex-1">
  183. <view class="mb12 bold">参与会员</view>
  184. <view class="base-color"><text class="bold fs40">
  185. {{courseCount.courseUserNum}}</text>人</view>
  186. </view>
  187. </view>
  188. </u-collapse-item>
  189. <!-- #ifdef MP-WEIXIN -->
  190. <u-collapse-item name="redenvelope" title="答题统计">
  191. <!-- #endif -->
  192. <!-- #ifndef MP-WEIXIN -->
  193. <u-collapse-item name="redenvelope">
  194. <text slot="title" class="bold fs32">答题统计</text>
  195. <!-- #endif -->
  196. <text slot="value"
  197. class="base-color fs24">{{collapseValue.includes('redenvelope')?'收回':'展开'}}</text>
  198. <view slot="right-icon">
  199. <u-icon name="arrow-right" color="#1677ff" size="12"></u-icon>
  200. </view>
  201. <view class="justify-around ">
  202. <view class="base-bg-f radius16 p30 flex-1">
  203. <view class="mb12 bold">答题人数</view>
  204. <view class="base-color"><text class="bold fs40">
  205. {{courseCount.answerNum}}</text>人</view>
  206. </view>
  207. <view class="base-bg-f radius16 p20 flex-1 mlr20">
  208. <view class="mb12 bold">正确人数</view>
  209. <view class="base-color"><text class="bold fs40">
  210. {{courseCount.answerRightNum}}</text>人</view>
  211. </view>
  212. <view class="base-bg-f radius16 p20 flex-1">
  213. <view class="mb12 bold">正确率</view>
  214. <view class="base-color"><text class="bold fs40">
  215. {{courseCount.answerRightRate}}</text>%</view>
  216. </view>
  217. </view>
  218. </u-collapse-item>
  219. <!-- #ifdef MP-WEIXIN -->
  220. <u-collapse-item name="live" title="红包统计">
  221. <!-- #endif -->
  222. <!-- #ifndef MP-WEIXIN -->
  223. <u-collapse-item name="live">
  224. <text slot="title" class="bold fs32">红包统计</text>
  225. <!-- #endif -->
  226. <text slot="value" class="base-color fs24">{{collapseValue.includes('live')?'收回':'展开'}}</text>
  227. <view slot="right-icon">
  228. <u-icon name="arrow-right" color="#1677ff" size="12"></u-icon>
  229. </view>
  230. <view class="justify-around ">
  231. <view class="base-bg-f radius16 p30 flex-1">
  232. <view class="mb12 bold">红包个数</view>
  233. <view class="base-color"><text class="bold fs40">
  234. {{courseCount.redPacketNum}}</text>个</view>
  235. </view>
  236. <view class="base-bg-f radius16 p20 mlr20 justify-start align-center">
  237. <image src="../../../static/images/redenvelope.png" class="w102 h102"></image>
  238. <view class="ml20">
  239. <view class="mb12 bold">答题红包金额</view>
  240. <view class="base-color">
  241. <text class="bold fs40">
  242. {{courseCount.redPacketAmount}}
  243. </text>元
  244. </view>
  245. </view>
  246. </view>
  247. </view>
  248. </u-collapse-item>
  249. </u-collapse>
  250. <view class="h90 "></view>
  251. </view>
  252. <view class="foot-box justify-between bgf p20 align-center">
  253. <view class="fs28 base-color-6" @click="showmore=true">更多</view>
  254. <view class="base-color-red base-bg-false plr20 fs28 ptb8 radius40 bold" @click="changevipDetail()">更换会员归属
  255. </view>
  256. </view>
  257. <view>
  258. <u-popup :show="showmore" @close="closemore" @open="openmore" style="flex: 0;">
  259. <view class="column align-center">
  260. <view class="m20" v-for="(item,index) in morelist" :key="item.value" @click="nameMore(item)">
  261. {{item.name}}
  262. </view>
  263. <u-modal :show="showlist" :title="titlelist" @confirm="confirmchange">
  264. <view class="slot-content">
  265. <u-input :placeholder="contpl" v-model="changelist" v-if="selnum==1"></u-input>
  266. <u-input :placeholder="contpl" v-model="changephone" v-if="selnum==2" maxlength="11" ></u-input>
  267. <u-input :placeholder="contpl" v-model="changeremark" v-if="selnum==3"></u-input>
  268. </view>
  269. </u-modal>
  270. </view>
  271. </u-popup>
  272. </view>
  273. </view>
  274. </template>
  275. <script>
  276. import dropdownPanel from "@/components/dropdownPanel.vue"
  277. import {
  278. getFsCourseList,
  279. getCourseVdieoList,
  280. getmanagepopnum,
  281. getRecPacketCount,
  282. getmanagecourse,
  283. getcourseList,
  284. updategroupinfo,
  285. getGroupDetail
  286. } from "@/api/courseManage.js"
  287. export default {
  288. components: {
  289. dropdownPanel
  290. },
  291. data() {
  292. return {
  293. changeremark: '',
  294. changephone: '',
  295. list1: [{
  296. name: '课程分析'
  297. }, {
  298. name: '销售数据'
  299. }],
  300. filterData: [{
  301. name: '训练营-营期',
  302. value: 0,
  303. },
  304. {
  305. name: '课程',
  306. value: 1,
  307. },
  308. ],
  309. searchbarNav: 0,
  310. showCont: 0,
  311. collapseValue: ['course', 'questions', 'redenvelope', 'live', 'funnel'], //
  312. showmore: false,
  313. morelist: [{
  314. name: '复制ID',
  315. value: 0,
  316. text: ''
  317. },
  318. {
  319. name: '改姓名',
  320. value: 1,
  321. text: '请输入姓名'
  322. },
  323. {
  324. name: '改手机号码',
  325. value: 2,
  326. text: '请输入手机号码'
  327. },
  328. {
  329. name: '改备注',
  330. value: 3,
  331. text: '请输入备注'
  332. }
  333. ],
  334. showlist: false,
  335. titlelist: '',
  336. contpl: '',
  337. changelist: '',
  338. groupid: 0,
  339. courseid: '',
  340. courseids: '',
  341. courseOne: [],
  342. courseTwo: [],
  343. triggereds: false,
  344. statusA: 'loadmore',
  345. isEnableds: true,
  346. pageNums: 1,
  347. pageSizes: 5,
  348. redprice: '',
  349. companyUserCount: [],
  350. redbaglist: [],
  351. courseCount: [],
  352. answerlist: [],
  353. courselist: [],
  354. triggered: false,
  355. status: 'loadmore',
  356. isEnabled: true,
  357. pageNum: 1,
  358. pageSize: 3,
  359. grouplist: [],
  360. selnum: 0,
  361. keyword:'',
  362. triggeredC: false,
  363. statusC: 'loadmore',
  364. isEnabledC: true,
  365. pageNumC: 1,
  366. pageSizeC: 10,
  367. keywordC:'',
  368. }
  369. },
  370. onLoad(option) {
  371. this.groupid = option.id
  372. },
  373. mounted() {
  374. this.user = uni.getStorageSync("companyUserInfo") ? JSON.parse(uni.getStorageSync("companyUserInfo")) : {}
  375. this.grouplist = uni.getStorageSync("grouplist")
  376. this.getvipcount()
  377. this.getcout()
  378. this.getcoursegroup()
  379. this.getgroupdetail()
  380. },
  381. methods: {
  382. getcompanyTagC(value){
  383. this.keywordC=value
  384. this.getCourseList()
  385. },
  386. pullDownRefreshC() {
  387. // 下拉
  388. this.triggeredC = true; //下拉了状态为true
  389. setTimeout(() => {
  390. this.triggeredC = false;
  391. uni.stopPullDownRefresh()
  392. this.pageNumC = 1;
  393. this.getCourseList('refresh') //触底 不穿执行else
  394. // 请求接口里面需要判断是不是最后一页 是最后一页 status赋值为‘loadmore’没有更多了
  395. // 请求接口
  396. }, 1000)
  397. },
  398. reachBottomC() {
  399. // status这个是加载状态
  400. if (this.statusC === 'loadmore') {
  401. this.statusC = 'loading'
  402. uni.showNavigationBarLoading()
  403. setTimeout(() => {
  404. this.pageNumC++
  405. this.getCourseList() //触底 不穿执行else
  406. uni.hideNavigationBarLoading()
  407. }, 1000);
  408. }
  409. },
  410. getcompanyTag(value){
  411. this.keyword=value
  412. this.getCourseListsmall()
  413. },
  414. copyId() {
  415. uni.setClipboardData({
  416. data: String(this.grouplist.nickName),
  417. success: () => {
  418. uni.showToast({
  419. title: '用户昵称复制成功',
  420. icon: 'none',
  421. duration: 2000
  422. });
  423. this.showmore = false
  424. },
  425. })
  426. },
  427. copyCourseId(id) {
  428. console.log(id)
  429. uni.setClipboardData({
  430. data: String(id),
  431. success: () => {
  432. uni.showToast({
  433. title: '课程标题复制成功',
  434. icon: 'none',
  435. duration: 2000
  436. });
  437. },
  438. })
  439. },
  440. getgroupdetail() {
  441. const param = {
  442. companyUserId : this.groupid
  443. }
  444. getGroupDetail(param).then(res => {
  445. this.grouplist = res.data
  446. })
  447. },
  448. updatagroup() {
  449. console.log(Number(this.groupid))
  450. const param = {
  451. nickName: this.changelist,
  452. phoneNumber: this.changephone,
  453. remark: this.changeremark,
  454. userId: this.groupid
  455. }
  456. updategroupinfo(param).then(res => {
  457. if (res.code == 200) {
  458. uni.showToast({
  459. icon: 'none',
  460. title: "修改成功"
  461. })
  462. } else {
  463. uni.showToast({
  464. icon: 'none',
  465. title: res.msg
  466. })
  467. }
  468. })
  469. },
  470. pullDownRefresh() {
  471. // 下拉
  472. this.triggered = true; //下拉了状态为true
  473. setTimeout(() => {
  474. this.triggered = false;
  475. uni.stopPullDownRefresh()
  476. this.pageNum = 1;
  477. this.getcoursegroup('refresh') //触底 不穿执行else
  478. // 请求接口里面需要判断是不是最后一页 是最后一页 status赋值为‘loadmore’没有更多了
  479. // 请求接口
  480. }, 1000)
  481. },
  482. reachBottom() {
  483. // status这个是加载状态
  484. if (this.status === 'loadmore') {
  485. this.status = 'loading'
  486. uni.showNavigationBarLoading()
  487. setTimeout(() => {
  488. this.pageNum++
  489. this.getcoursegroup() //触底 不穿执行else
  490. uni.hideNavigationBarLoading()
  491. }, 1000);
  492. }
  493. },
  494. getcoursegroup(type) {
  495. const param = {
  496. companyUserId: this.groupid,
  497. courseId: this.courseid,
  498. videoId: this.courseids,
  499. pageNum: this.pageNum,
  500. pageSize: this.pageSize,
  501. }
  502. getcourseList(param).then(res => {
  503. console.log(res)
  504. if (res.code == 200) {
  505. // refresh 下拉
  506. if (type == 'refresh') {
  507. this.courselist = res.data.list
  508. } else {
  509. // 加载更多 当前页和下一页合并
  510. this.courselist = [...this.courselist, ...res.data.list]
  511. }
  512. if (this.pageNum >= res.data.pages) {
  513. this.status = 'nomore'
  514. } else {
  515. this.status = 'loadmore'
  516. }
  517. } else {
  518. uni.showToast({
  519. icon: 'none',
  520. title: res.msg
  521. })
  522. }
  523. })
  524. },
  525. getcout() {
  526. const param = {
  527. companyUserId: this.groupid,
  528. courseId: this.courseid,
  529. videoId: this.courseids,
  530. }
  531. this.getCourselist(param)
  532. },
  533. getCourselist(param) {
  534. getmanagecourse(param).then(res => {
  535. if (res.code == 200) {
  536. this.courseCount = res.data
  537. } else {
  538. uni.showToast({
  539. icon: 'none',
  540. title: res.msg,
  541. });
  542. }
  543. })
  544. },
  545. getvipcount() {
  546. //获取会员总数
  547. const param = {
  548. companyUserId: this.groupid,
  549. }
  550. getmanagepopnum(param).then(res => {
  551. if (res.code == 200) {
  552. this.companyUserCount=res.data
  553. } else {
  554. uni.showToast({
  555. icon: 'none',
  556. title: res.msg,
  557. });
  558. }
  559. })
  560. },
  561. pullDownRefreshs() {
  562. // 下拉
  563. this.triggereds = true; //下拉了状态为true
  564. setTimeout(() => {
  565. this.triggereds = false;
  566. uni.stopPullDownRefresh()
  567. this.pageNums = 1;
  568. this.getCourseListsmall('refresh') //触底 不穿执行else
  569. // 请求接口里面需要判断是不是最后一页 是最后一页 status赋值为‘loadmore’没有更多了
  570. // 请求接口
  571. }, 1000)
  572. },
  573. reachBottoms() {
  574. // status这个是加载状态
  575. if (this.statusA === 'loadmore') {
  576. this.statusA = 'loading'
  577. uni.showNavigationBarLoading()
  578. setTimeout(() => {
  579. this.pageNums++
  580. this.getCourseListsmall() //触底 不穿执行else
  581. uni.hideNavigationBarLoading()
  582. }, 1000);
  583. }
  584. },
  585. getCourseOne(id) {
  586. this.courseid = id
  587. },
  588. getCourseTwo(id) {
  589. this.courseids = id
  590. },
  591. getCourseList(type) {
  592. this.courseOne=[]
  593. //获取课程列表
  594. const param = {
  595. keyword:this.keywordC,
  596. pageNum: this.pageNumC,
  597. pageSize: this.pageSizeC,
  598. }
  599. getFsCourseList(param).then(res => {
  600. if (res.code == 200) {
  601. // this.courseOne = res.data.list
  602. // console.log(res)
  603. if (type == 'refresh') {
  604. this.courseOne = res.data.list
  605. } else {
  606. // 加载更多 当前页和下一页合并
  607. this.courseOne = [...this.courseOne, ...res.data.list]
  608. }
  609. if (res.data.isLastPage) {
  610. this.statusC = 'nomore'
  611. } else {
  612. this.statusC = 'loadmore'
  613. }
  614. } else {
  615. uni.showToast({
  616. icon: 'none',
  617. title: res.msg
  618. })
  619. }
  620. })
  621. },
  622. getCourseListsmall(type) {
  623. //获取小节目录
  624. const param = {
  625. courseId: this.courseid,
  626. pageNum: this.pageNums,
  627. pageSize: this.pageSizes,
  628. keyword:this.keyword
  629. }
  630. getCourseVdieoList(param).then(res => {
  631. if (res.code == 200) {
  632. // refresh 下拉
  633. if (type == 'refresh') {
  634. this.courseTwo = res.data.list
  635. } else {
  636. // 加载更多 当前页和下一页合并
  637. this.courseTwo = [...this.courseTwo, ...res.data.list]
  638. }
  639. if (this.pageNums >= res.data.pages) {
  640. this.statusA = 'nomore'
  641. } else {
  642. this.statusA = 'loadmore'
  643. }
  644. } else {
  645. }
  646. })
  647. },
  648. clickTab(e) {
  649. this.showCont = e.index
  650. this.$nextTick(() => {
  651. this.$refs?.collapseRef?.init()
  652. })
  653. this.courseid=''
  654. this.courseids=''
  655. this.keyword=''
  656. this.getvipcount()
  657. this.getcout()
  658. this.getcoursegroup()
  659. console.log(e.index)
  660. },
  661. onChange(index) {
  662. this.searchbarNav = index
  663. if (index == 0) {
  664. this.getCourseList()
  665. } else {
  666. this.getCourseListsmall()
  667. }
  668. },
  669. confirm() {
  670. this.getcout()
  671. this.getredbaglist()
  672. this.courselist = []
  673. this.getcoursegroup()
  674. },
  675. reset() {
  676. if (this.searchbarNav == 0) {
  677. this.courseid = ''
  678. this.getcout()
  679. // this.getredbaglist()
  680. this.courselist = []
  681. this.getcoursegroup()
  682. } else {
  683. this.courseids = ''
  684. this.getcout()
  685. // this.getredbaglist()
  686. this.courselist = []
  687. this.getcoursegroup()
  688. }
  689. },
  690. changeCollapse(e) {
  691. this.collapseValue = e.filter(item => item.status == 'open').map(it => it.name)
  692. console.log(e.filter(item => item.status == 'open').map(it => it.name))
  693. },
  694. closemore() {
  695. this.showmore = false
  696. },
  697. openmore() {
  698. },
  699. nameMore(item) {
  700. this.titlelist = item.name
  701. this.contpl = item.text
  702. this.selnum = item.value
  703. if (item.value == 0) {
  704. this.copyId()
  705. } else if (item.value == 1) {
  706. this.changelist = this.grouplist.nickName
  707. this.showlist = true
  708. } else if (item.value == 2) {
  709. console.log(this.grouplist.phonenumber)
  710. this.changephone = this.grouplist.phonenumber
  711. this.showlist = true
  712. } else {
  713. this.changeremark = this.grouplist.remark
  714. this.showlist = true
  715. }
  716. },
  717. confirmchange() {
  718. this.updatagroup()
  719. this.showlist = false
  720. setTimeout(() => {
  721. this.showmore = false
  722. this.getgroupdetail()
  723. }, 200)
  724. },
  725. changevipDetail() {
  726. uni.navigateTo({
  727. url: '/pages/courseManage/manage/changeVip?id=' + this.groupid
  728. })
  729. }
  730. }
  731. }
  732. </script>
  733. <style lang="scss">
  734. .header {
  735. background: linear-gradient(to right, rgba(218, 233, 255, 1), rgba(225, 225, 253, 1));
  736. }
  737. .doingimg {
  738. position: relative;
  739. }
  740. .doing {
  741. border-radius: 12rpx 0 12rpx 0;
  742. background-color: #3e9f59;
  743. color: #fff;
  744. width: fit-content;
  745. padding: 0 20rpx;
  746. font-size: 24rpx;
  747. position: absolute;
  748. top: 3rpx;
  749. }
  750. .box-blue {
  751. flex-wrap: wrap;
  752. padding: 20rpx;
  753. .boxs {
  754. width: 48%;
  755. border-radius: 20rpx;
  756. margin-top: 20rpx;
  757. padding: 20rpx 0;
  758. padding-left: 32rpx;
  759. font-size: 28rpx;
  760. }
  761. }
  762. .foot-box {
  763. position: fixed;
  764. bottom: 0;
  765. width: 100%;
  766. }
  767. .actNav {
  768. color: #1677ff !important;
  769. background-color: #e7f2fe;
  770. }
  771. </style>