sckc.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. <template>
  2. <view class="ayuu">
  3. <view class="hdtgyyqb">
  4. <view class="flztoa scuuerm">
  5. <view :class="['sczhbry',Inv==0?'sctyxer':'']" @click="Inv=0">
  6. <text>直播课程</text>
  7. <view class="scmmtui"></view>
  8. </view>
  9. <view :class="['sczhbry',Inv==1?'sctyxer':'']" @click="Inv=1">
  10. <text>录制课程</text>
  11. <view class="scmmtui"></view>
  12. </view>
  13. </view>
  14. <view class="scmbberr"></view>
  15. <view v-show="Inv == 0">
  16. <view class="flztoa hdtcuur">
  17. <view class="fzctob">
  18. <view class="hdtcuutxt"><text>课程名称</text></view>
  19. <view class="hdtcuutxta"><input type="text" value=""
  20. placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入姓名" /></view>
  21. </view>
  22. </view>
  23. <view class="scjhrw"></view>
  24. <view class="flztoa hdtcuur">
  25. <view class="fzctob">
  26. <view class="hdtcuutxt"><text>课程时间</text></view>
  27. <view class="hdtcuutxta" @click="showa = true"><text>请选择课程时间</text></view>
  28. </view>
  29. <image @click="showa = true" src="/static/user/hdr1.png" style="width: 48rpx;min-width: 48rpx;height: 48rpx;" mode="">
  30. </image>
  31. </view>
  32. <view class="scjhrw"></view>
  33. <view class="flztoa hdtcuur">
  34. <view class="fzctob">
  35. <view class="hdtcuutxt"><text>课程分类</text></view>
  36. <view class="hdtcuutxta"><text>请选择课程分类</text></view>
  37. </view>
  38. <image src="/static/user/hdr1.png" style="width: 48rpx;min-width: 48rpx;height: 48rpx;" mode="">
  39. </image>
  40. </view>
  41. <view class="scjhrw"></view>
  42. <view class="flztoa hdtcuur">
  43. <view class="fzctob">
  44. <view class="hdtcuutxt"><text>金额</text></view>
  45. <view class="hdtcuutxta"><input type="text" value=""
  46. placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入金额" /></view>
  47. </view>
  48. </view>
  49. <view class="scjhrw"></view>
  50. <view class="sczbfmty">
  51. <text>直播封面</text>
  52. </view>
  53. <view class="fzddrew cpsahngc">
  54. <u-upload :action="action" :file-list="fileList" :max-count="1" width="642" height="392"
  55. upload-text="上传直播封面">
  56. </u-upload>
  57. </view>
  58. </view>
  59. <view v-show="Inv == 1">
  60. <view class="flztoa hdtcuur">
  61. <view class="fzctob">
  62. <view class="hdtcuutxt"><text>课程名称</text></view>
  63. <view class="hdtcuutxta">
  64. <input type="text" v-model.trim="title" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入课程名称" />
  65. </view>
  66. </view>
  67. </view>
  68. <view class="scjhrw"></view>
  69. <view class="flztoa hdtcuur" @click="show = true">
  70. <view class="fzctob">
  71. <view class="hdtcuutxt"><text>课程分类</text></view>
  72. <view class="hdtcuutxta"><text>{{classStr || '请选择课程分类'}}</text></view>
  73. </view>
  74. <image src="/static/user/hdr1.png" style="width: 48rpx;min-width: 48rpx;height: 48rpx;" mode=""></image>
  75. </view>
  76. <view class="scjhrw"></view>
  77. <view class="flztoa hdtcuur">
  78. <view class="fzctob">
  79. <view class="hdtcuutxt"><text>金额</text></view>
  80. <view class="hdtcuutxta"><input type="digit" v-model.trim="price" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入金额" /></view>
  81. </view>
  82. </view>
  83. <view class="scjhrw"></view>
  84. <view class="flztoa">
  85. <view class="fsxto">
  86. <view class="sczbfmty">
  87. <text>课程封面</text>
  88. </view>
  89. <view class="fzddrew cpsahngc">
  90. <!-- <u-upload :action="action" :file-list="fileList" :max-count="1" width="294rpx"
  91. height="198rpx" upload-text="上传课程封面" name="upfile" @on-success="upSuccess">
  92. </u-upload> -->
  93. <view v-if="!img" class="choose-outer" @click="choodeImage">
  94. <text class="up-label">+</text>
  95. <text class="up-title">上传课程封面</text>
  96. </view>
  97. <image v-if="img" @click="choodeImage" :src="img" mode="aspectFill" style="width: 294rpx; height: 198rpx; border-radius: 15rpx;"></image>
  98. </view>
  99. </view>
  100. <view class="fsxto">
  101. <view class="sczbfmty">
  102. <text>上传视频</text>
  103. </view>
  104. <view class="fzddrew cpsahngc">
  105. <!-- <u-upload :action="action" @click.stop="" :file-list="fileList" :max-count="1" width="294rpx"
  106. height="198rpx" upload-text="上传课程视频">
  107. </u-upload> -->
  108. <view v-if="!one_video_url" class="choose-outer" @click="chooseVideo">
  109. <text class="up-label">+</text>
  110. <text class="up-title">上传视频课程</text>
  111. </view>
  112. <video v-if="one_video_url" :src="one_video_url" style="width: 294rpx; height: 198rpx; border-radius: 15rpx;"></video>
  113. </view>
  114. </view>
  115. </view>
  116. </view>
  117. </view>
  118. <view v-show="Inv == 1">
  119. <view class="hdtgyyqb" v-for="(item,index) in chapter" :key="index">
  120. <view class="flztoa hdtcuur">
  121. <view class="fzctob">
  122. <view class="hdtcuutxt"><text>章节</text></view>
  123. <view class="hdtcuutxta"><input type="text" v-model.trim="item.catalog_title" placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入章节名称" /></view>
  124. </view>
  125. </view>
  126. <view class="scjhrw"></view>
  127. <view class="flztoa hdtcuur">
  128. <view class="fzctob">
  129. <view class="hdtcuutxt"><text>课程名称</text></view>
  130. <view class="hdtcuutxta"><input type="text" v-model.trim="item.title"
  131. placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入课程名称" /></view>
  132. </view>
  133. </view>
  134. <view class="scjhrw"></view>
  135. <view class="fzctob">
  136. <view class="fsxto">
  137. <view class="sczbfmty">
  138. <text>上传视频</text>
  139. </view>
  140. <view class="fzddrew cpsahngc">
  141. <!-- <u-upload :action="action" @click.stop="" :file-list="fileList" :max-count="1" width="294rpx"
  142. height="198rpx" upload-text="上传课程视频">
  143. </u-upload> -->
  144. <view v-if="!item.video_url" class="choose-outer" @click="choosezjVideo(index)">
  145. <text class="up-label">+</text>
  146. <text class="up-title">上传视频课程</text>
  147. </view>
  148. <video v-if="item.video_url" :src="item.video_url" style="width: 294rpx; height: 198rpx; border-radius: 15rpx;"></video>
  149. </view>
  150. </view>
  151. </view>
  152. </view>
  153. </view>
  154. <view v-show="Inv == 1">
  155. <view class="hdtgyyqb" @click="addzj">
  156. <view class="fzddrew" style="padding: 30rpx 0;">
  157. <u-icon name="plus" size="36"></u-icon>
  158. <text style="margin-top: 20rpx;">添加章节</text>
  159. </view>
  160. </view>
  161. </view>
  162. <view class="fzddrew scjjhrt">
  163. <view class="fzddrew fkdibr" @click="subCourse">
  164. <text>上传课程</text>
  165. </view>
  166. </view>
  167. <u-popup v-model="show" mode="bottom" :closeable="false" :border-radius="20" :safe-area-inset-bottom="true">
  168. <view class="" style="padding: 50rpx;30rpx">
  169. <view class="flztoa" style="margin-bottom: 40rpx;">
  170. <text @click="show = false;" style="color: #999999;">取消</text>
  171. <text style="font-size: 36rpx;font-weight: bold;">选择标签</text>
  172. <text @click="ensureLabel">确定</text>
  173. </view>
  174. <!-- <view class="tanckku">
  175. <uni-data-checkbox :multiple="true" mode="tag" v-model="radioa" :localdata="sex"
  176. selectedColor="#374B6E !important" style="margin-top: 24rpx;"></uni-data-checkbox>
  177. </view> -->
  178. <scroll-view scroll-y style="height: 500rpx;">
  179. <view class="label-outer">
  180. <view :class="index == curlabel?'label-act':'class-label'" @click="changeLabel(index)" v-for="(item,index) in labellist" :key="index">{{item.title}}</view>
  181. </view>
  182. </scroll-view>
  183. </view>
  184. </u-popup>
  185. <u-popup v-model="showa" mode="bottom" :closeable="false" :border-radius="20" :safe-area-inset-bottom="true">
  186. <view class="">
  187. <view class="flztoa" style="padding: 50rpx 30rpx;" >
  188. <text @click="showa = false;" style="color: #999999;">取消</text>
  189. <text style="font-size: 36rpx;font-weight: bold;">选择时间</text>
  190. <text @click="showa = false;">确定</text>
  191. </view>
  192. <view class="" style="background: #E4E4E4;width: 100%;height: 1rpx;"></view>
  193. <view class="flztoa yebbfrt">
  194. <view class="yeuddw" style="color: #FF0000;"><text>1月</text></view>
  195. <view class="yeuddw"><text>2月</text></view>
  196. <view class="yeuddw"><text>3月</text></view>
  197. <view class="yeuddw"><text>4月</text></view>
  198. </view>
  199. <view class="fzctob">
  200. <view class="fsxto rixdbyy">
  201. <view class="rixdrt"><text>18日</text></view>
  202. <view class="rixdrt"><text>19日</text></view>
  203. <view class="rixdrt" style="color: #FF0000;"><text>今天20日</text></view>
  204. <view class="rixdrt"><text>明天21日</text></view>
  205. <view class="rixdrt"><text>22日</text></view>
  206. <view class="rixdrt"><text>23日</text></view>
  207. <view class="rixdrt"><text>24日</text></view>
  208. </view>
  209. <view class="fsxto sjbbaq">
  210. <view class="flztoa rixdrt" style="color: #FF0000;">
  211. <text>18日</text>
  212. <image src="/static/lecturer/yyddw01.png" style="width: 32rpx;height: 32rpx;" mode=""></image>
  213. </view>
  214. <view class="rixdrt"><text>19日</text></view>
  215. <view class="rixdrt"><text>今天20日</text></view>
  216. <view class="rixdrt"><text>明天21日</text></view>
  217. <view class="rixdrt"><text>22日</text></view>
  218. <view class="rixdrt"><text>23日</text></view>
  219. <view class="rixdrt"><text>24日</text></view>
  220. </view>
  221. </view>
  222. </view>
  223. </u-popup>
  224. </view>
  225. </template>
  226. <style>
  227. page {
  228. background: #FAFAFA ;
  229. }
  230. </style>
  231. <script>
  232. export default {
  233. data() {
  234. return {
  235. Inv: 1,
  236. show: false,
  237. showa: false,
  238. timestamp: 86400,
  239. sex: [{
  240. text: '心里咨询',
  241. value: '1',
  242. }, {
  243. text: '心里咨询',
  244. value: '2',
  245. }, {
  246. text: '心里咨询',
  247. value: '3',
  248. }, {
  249. text: '心里咨询',
  250. value: '4',
  251. }],
  252. labellist:[],
  253. curlabel:'-1', // 当前选中分类标签的index
  254. classStr:'', // 分类str
  255. action:'https://xlzx.vvv5g.com/app/index.php?i=2&c=entry&a=wxapp&m=yzd_edu&do=UploadImg', // 图片上传地址
  256. title:'' , // 录播视频标题
  257. price:'', // 录播视频价格
  258. img:'', // 录播课程图片
  259. one_video_url:'', // 最上面的录播视频
  260. one_video_time:'', // 最上面的录播视频时长
  261. one_video_title:'', // 最上面视频的名称
  262. chapter:[
  263. {
  264. "catalog_title":"",
  265. "title":"",
  266. "video_url":"",
  267. "video_title":"",
  268. "video_time":""
  269. }
  270. ]
  271. }
  272. },
  273. onLoad() {
  274. // console.log(this.formatSeconds(61.253))
  275. this.getClassType()
  276. },
  277. methods: {
  278. // 选择图片上传
  279. choodeImage(){
  280. uni.chooseImage({
  281. count:1,
  282. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  283. sourceType: ['album'], //从相册选择
  284. success: (res)=> {
  285. // this.img = res.tempFilePaths[0]
  286. uni.showLoading({title:'上传中...'})
  287. uni.uploadFile({
  288. url: 'https://xlzx.vvv5g.com/app/index.php?i=2&c=entry&a=wxapp&m=yzd_edu&do=UploadImg', //仅为示例,非真实的接口地址
  289. filePath: res.tempFilePaths[0],
  290. name: 'upfile',
  291. success: (uploadFileRes) => {
  292. uni.hideLoading()
  293. console.log(uploadFileRes, '111111111111111')
  294. this.img = uploadFileRes.data
  295. }
  296. });
  297. }
  298. })
  299. },
  300. // 选择章节视频
  301. choosezjVideo(index){
  302. uni.chooseVideo({
  303. sourceType: ['camera', 'album'],
  304. success: res=> {
  305. console.log(res)
  306. this.chapter[index].video_time = this.formatSeconds(res.duration)
  307. // this.chapter[index].video_url = res.tempFilePath
  308. // this.chapter[index].video_title = res.tempFilePath.substring(res.tempFilePath.lastIndexOf("/")+1)
  309. // return
  310. uni.showLoading({title:'上传中...'})
  311. uni.uploadFile({
  312. url: 'https://xlzx.vvv5g.com/app/index.php?i=2&c=entry&a=wxapp&m=yzd_edu&do=UploadFile', //仅为示例,非真实的接口地址
  313. filePath: res.tempFilePath,
  314. name: 'upfile',
  315. success: (uploadFileRes) => {
  316. uni.hideLoading()
  317. console.log(uploadFileRes, '111111111111111')
  318. this.chapter[index].video_url = uploadFileRes.data
  319. this.chapter[index].video_title = uploadFileRes.data.substring(uploadFileRes.data.lastIndexOf("/")+1)
  320. console.log(this.chapter)
  321. }
  322. });
  323. }
  324. });
  325. },
  326. changeTab(Inv) {
  327. that.navIdx = Inv;
  328. },
  329. // 更改选择的分类标签
  330. changeLabel(index){
  331. this.curlabel = index
  332. this.classStr = this.labellist[this.curlabel].title
  333. },
  334. // 确定
  335. ensureLabel(){
  336. this.show = false
  337. // let choosedArr = this.labellist.filter(item=>item.toggle)
  338. // let classArr = []
  339. // choosedArr.map(item=>{
  340. // classArr.push(item.title)
  341. // })
  342. },
  343. upSuccess(e){
  344. console.log(e,'+++++++++')
  345. },
  346. // 获取课程分类
  347. getClassType(){
  348. this.$post({
  349. data:{
  350. do:'CourseType',
  351. data:{
  352. user_id:uni.getStorageSync('id'),
  353. type_id:0,
  354. pw:375
  355. }
  356. }
  357. }).then(res=>{
  358. console.log(res,'课程分类')
  359. this.labellist = res.data
  360. })
  361. },
  362. // 选择视频
  363. chooseVideo(){
  364. uni.chooseVideo({
  365. sourceType: ['camera', 'album'],
  366. success: res=> {
  367. console.log(res)
  368. this.one_video_time = this.formatSeconds(res.duration)
  369. uni.showLoading({title:'上传中...'})
  370. uni.uploadFile({
  371. url: 'https://xlzx.vvv5g.com/app/index.php?i=2&c=entry&a=wxapp&m=yzd_edu&do=UploadFile', //仅为示例,非真实的接口地址
  372. filePath: res.tempFilePath,
  373. name: 'upfile',
  374. success: (uploadFileRes) => {
  375. uni.hideLoading()
  376. console.log(uploadFileRes, '111111111111111')
  377. this.one_video_url = uploadFileRes.data
  378. this.one_video_title = uploadFileRes.data.substring(uploadFileRes.data.lastIndexOf("/")+1)
  379. }
  380. });
  381. }
  382. });
  383. },
  384. // 添加章节
  385. addzj(){
  386. this.chapter.push({
  387. "catalog_title":"",
  388. "title":"",
  389. "video_url":"",
  390. "video_title":"",
  391. "video_time":""
  392. })
  393. },
  394. // 提交课程
  395. subCourse(){
  396. if(this.Inv==1){
  397. if(!this.title){
  398. uni.showToast({
  399. title:'请输入课题名称',
  400. icon:'none'
  401. })
  402. return
  403. }
  404. if(this.curlabel<0){
  405. uni.showToast({
  406. title:'请选择课程分类',
  407. icon:'none'
  408. })
  409. return
  410. }
  411. if(this.price!=0 && this.price==''){
  412. uni.showToast({
  413. title:'请输入课程价格',
  414. icon:'none'
  415. })
  416. return
  417. }
  418. if(!this.img){
  419. uni.showToast({
  420. title:'请上传课程封面',
  421. icon:'none'
  422. })
  423. return
  424. }
  425. if(!this.one_video_url){
  426. uni.showToast({
  427. title:'请上传课程视频',
  428. icon:'none'
  429. })
  430. return
  431. }
  432. let flag = this.chapter.every(item=>item.catalog_title!=''&&item.title!=''&&item.video_url!='')
  433. if(!flag){
  434. uni.showToast({
  435. title:'请完善章节信息',
  436. icon:'none'
  437. })
  438. return
  439. }
  440. this.$post({
  441. data:{
  442. do:'CourseOption',
  443. data:{
  444. "group_state":0,
  445. "group_img":"",
  446. "lecturer_id":uni.getStorageSync('id'),
  447. "update_state":1,
  448. "state":1,
  449. "type":1,
  450. "course_id":"",
  451. "term":1,
  452. "term_day":"",
  453. title:this.title,
  454. img:this.img,
  455. type_id:this.labellist[this.curlabel].id,
  456. price:this.price,
  457. user_id:uni.getStorageSync('id'),
  458. one_video:{
  459. video_url:this.one_video_url,
  460. video_title:this.one_video_title,
  461. video_time:this.one_video_time
  462. },
  463. chapter:this.chapter
  464. }
  465. }
  466. }).then(res=>{
  467. console.log(res,'ssssssssssssssssssssss')
  468. uni.showToast({
  469. title:'添加成功',
  470. mask:true
  471. })
  472. setTimeout(()=>{
  473. uni.navigateBack()
  474. },1500)
  475. })
  476. }
  477. },
  478. // 秒数处理为时分秒
  479. formatSeconds(value) {
  480. // 秒
  481. let second = parseInt(value)
  482. // 分
  483. let minute = 0
  484. // 小时
  485. let hour = 0
  486. // 天
  487. // let day = 0
  488. // 如果秒数大于60,将秒数转换成整数
  489. if (second >= 60) {
  490. // 获取分钟,除以60取整数,得到整数分钟
  491. minute = parseInt(second / 60)
  492. // 获取秒数,秒数取佘,得到整数秒数
  493. second = parseInt(second % 60)
  494. // 如果分钟大于60,将分钟转换成小时
  495. if (minute > 60) {
  496. // 获取小时,获取分钟除以60,得到整数小时
  497. hour = parseInt(minute / 60)
  498. // 获取小时后取佘的分,获取分钟除以60取佘的分
  499. minute = parseInt(minute % 60)
  500. // 如果小时大于24,将小时转换成天
  501. // if (hour > 23) {
  502. // // 获取天数,获取小时除以24,得到整天数
  503. // day = parseInt(hour / 24)
  504. // // 获取天数后取余的小时,获取小时除以24取余的小时
  505. // hour = parseInt(hour % 24)
  506. // }
  507. }
  508. }
  509. let h = parseInt(hour)>9?parseInt(hour):'0'+parseInt(hour)
  510. let m = parseInt(minute)>9?parseInt(minute):'0'+parseInt(minute)
  511. let s = parseInt(second)>9?parseInt(second):'0'+parseInt(second)
  512. let result = '' + s;
  513. if (minute > 0) {
  514. result = '' + m + ':' + result
  515. }
  516. if (hour > 0) {
  517. result = '' + h + ':' + result
  518. }
  519. // if (day > 0) {
  520. // result = '' + parseInt(day) + '天' + result
  521. // }
  522. result = result.includes(':')?result:'00:'+result
  523. console.log('result:', result)
  524. return result
  525. }
  526. }
  527. }
  528. </script>
  529. <style lang="scss" scoped>
  530. .yebbfrt{
  531. padding: 34rpx 60rpx;
  532. }
  533. .yeuddw{
  534. font-size: 22rpx;
  535. font-family: PingFang SC-常规体, PingFang SC;
  536. font-weight: normal;
  537. color: #000000;
  538. line-height: 30rpx;
  539. }
  540. .rixdbyy {
  541. width: 218rpx;
  542. min-width: 218rpx;
  543. background: #F6F6F6;
  544. padding: 50rpx 30rpx;
  545. }
  546. .rixdrt{
  547. height: 30rpx;
  548. font-size: 22rpx;
  549. font-family: PingFang SC-常规体, PingFang SC;
  550. font-weight: normal;
  551. color: #000000;
  552. line-height: 30rpx;
  553. margin-bottom: 76rpx;
  554. }
  555. .sjbbaq{
  556. width: 100%;
  557. padding: 50rpx 32rpx;
  558. }
  559. .label-outer{
  560. display: flex;
  561. flex-wrap: wrap;
  562. align-content: flex-start;
  563. }
  564. .label-outer>view{
  565. margin-right: 30rpx;
  566. margin-bottom: 30rpx;
  567. }
  568. .label-outer>view:nth-of-type(3n+3){
  569. margin-right: 0rpx;
  570. }
  571. .class-label{
  572. width: 192rpx;
  573. height: 72rpx;
  574. background: #F4F4F4;
  575. border-radius: 36rpx 36rpx 36rpx 36rpx;
  576. opacity: 1;
  577. display: flex;
  578. justify-content: center;
  579. align-items: center;
  580. font-size: 28rpx;
  581. color: #999999;
  582. overflow: hidden;
  583. }
  584. .label-act{
  585. width: 192rpx;
  586. height: 72rpx;
  587. background: #374B6E;
  588. border-radius: 36rpx;
  589. font-size: 28rpx;
  590. color: #FFFFFF;
  591. display: flex;
  592. justify-content: center;
  593. align-items: center;
  594. font-size: 28rpx;
  595. color: #ffffff;
  596. overflow: hidden;
  597. }
  598. .choose-outer{
  599. width: 290rpx;
  600. height: 198rpx;
  601. border: 2px dotted #CCCCCC;
  602. border-radius: 15rpx;
  603. display: flex;
  604. flex-direction: column;
  605. justify-content: center;
  606. align-items: center;
  607. }
  608. .up-label{
  609. display: flex;
  610. justify-content: center;
  611. align-items: center;
  612. font-size: 50rpx;
  613. width: 60rpx;
  614. height: 60rpx;
  615. background: #E4E4E4;
  616. color: #FFFFFF;
  617. border-radius: 15rpx;
  618. }
  619. .up-title{
  620. font-size: 28rpx;
  621. color: #999999;
  622. margin-top: 20rpx;
  623. }
  624. </style>