manageDetail.vue 21 KB

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