index.vue 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217
  1. <template>
  2. <view class="sheduling">
  3. <!-- 添加排班 -->
  4. <u-popup v-model="teacher_show" mode="center" border-radius="19">
  5. <view class="pop_wrap">
  6. <view class="pop_top">
  7. <text class="title">请您确认排班时间</text>
  8. </view>
  9. <view class="pop_center">
  10. <text>上课日期:{{now_date}}</text>
  11. <text>上课时间:{{time.start_time}}-{{time.end_time}}</text>
  12. </view>
  13. <view class="pop_bootom">
  14. <button type="default" @click="sure_choose">确认</button>
  15. </view>
  16. </view>
  17. </u-popup>
  18. <!-- 取消排班 -->
  19. <u-popup v-model="cancel_show" mode="center" border-radius="19">
  20. <view class="pop_wrap">
  21. <view class="pop_top">
  22. <text class="title">您确定要取消如下排班吗</text>
  23. </view>
  24. <view class="pop_center">
  25. <text>上课日期:{{cancel_detail.day}}</text>
  26. <text>上课时间:{{cancel_detail.start_time}}-{{cancel_detail.end_time}}</text>
  27. </view>
  28. <view class="pop_bootom">
  29. <button type="default" @click="sure_cancel">确定取消</button>
  30. </view>
  31. </view>
  32. </u-popup>
  33. <u-popup v-model="stu_show" mode="center" border-radius="42" width="85%">
  34. <view class="student-show">
  35. <view class="stu-title">
  36. 预约学生基本信息
  37. </view>
  38. <view class="stu-mess">
  39. <image :src="stu_detail.student ? stu_detail.student.headimg : '../../static/images/avator.png'"
  40. mode="">
  41. </image>
  42. <view class="right">
  43. <view class="stu-text">
  44. 姓名:{{stu_detail.student?stu_detail.student.truename:'--'}}
  45. </view>
  46. <view class="stu-text">
  47. 学号:{{stu_detail.student?stu_detail.student.account:'--'}}
  48. </view>
  49. <view class="stu-text">
  50. 班级:{{stu_detail.student ? stu_detail.student.class :'--'}}
  51. </view>
  52. <view class="stu-text">
  53. 手机号:{{stu_detail.student ? stu_detail.student.mobile :'--'}}
  54. </view>
  55. </view>
  56. </view>
  57. <view class="e-mail">
  58. <u-icon name="email"></u-icon>:{{stu_detail.student ? stu_detail.student.email :'--'}}
  59. </view>
  60. <view class="remark-title">
  61. {{stu_detail.student?stu_detail.student.sex==2?"她":"他":'--'}}的备注
  62. </view>
  63. <view class="remark">
  64. {{stu_detail.remark?stu_detail.remark:'暂无'}}
  65. </view>
  66. </view>
  67. </u-popup>
  68. <view class="sheduling-top" v-if="notice.length>0">
  69. <image src="../../static/images/nock.png" mode=""></image>
  70. <view class="title">
  71. <u-notice-bar :volume-icon="false" type='none' color='#2B9155' :speed="120" :list="notice">
  72. </u-notice-bar>
  73. </view>
  74. </view>
  75. <view class="tab">
  76. <view v-for="(item,index) in tab_list" :key='index' :class="current_tab==index ? 'active-item' : 'item'"
  77. @click="changTab(index)">
  78. <view class="week">
  79. {{item}}
  80. </view>
  81. <text class="line" v-if="current_tab==index">
  82. </text>
  83. </view>
  84. </view>
  85. <view class="content">
  86. <view class="top">
  87. <view :class="current_date==index ? 'active-item':'item'" v-for="(item,index) in table_week"
  88. :key='index' @click="changeDate(index,item)">
  89. <view class="week">
  90. {{item.week}}
  91. </view>
  92. <view class="date">
  93. {{getDay(item.day)}}
  94. </view>
  95. </view>
  96. </view>
  97. <view class="shedule">
  98. <view class="left">
  99. <view class="left_1">
  100. <view :class="current_time==-1 ? 'active-item':'item'" @click="changeTime(-1)">
  101. <image class="all" v-if="current_time==-1" src="../../static/images/all.png" mode=""></image>
  102. 全部时间
  103. <image class="jian" v-if="current_time==-1" src="../../static/images/01.png" mode=""></image>
  104. </view>
  105. <view :class="current_time==index? 'active-item':'item'" v-for="(item,index) in time_list"
  106. :key='index' @click="changeTime(item,index)">
  107. {{item.start_time}}-{{item.end_time}}
  108. <image v-if="current_time==index" class="jian" src="../../static/images/01.png" mode="">
  109. <!-- <image v-if="current_time==item.id" class="jian" src="../../static/images/01.png" mode=""> -->
  110. </image>
  111. </view>
  112. </view>
  113. </view>
  114. <view class="right">
  115. <view class="" v-for="(item,index) in shedule_list" :key='index'>
  116. <view class="item" v-if="item.scheduling && index==current_time && index!=-1">
  117. <view class="item-left">
  118. <view class="image" :style="{backgroundImage:'url('+ (item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png') +')'}">
  119. </view>
  120. <!-- <image
  121. :src="item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png'"
  122. mode=""></image> -->
  123. <view class="name">
  124. {{item.scheduling ? item.scheduling.teacher.truename : ''}}
  125. </view>
  126. </view>
  127. <!-- {{item}} -->
  128. <view class="item-right">
  129. <view class="text">
  130. <view class="tips" v-if="item.scheduling.student"
  131. @click="stuDetail(item.scheduling)">
  132. 查看学生
  133. </view>
  134. <image src="../../static/images/icon-1.png" mode=""></image>
  135. <view class="time">
  136. {{item.scheduling.start_time}}-{{item.scheduling.end_time}}
  137. </view>
  138. </view>
  139. <view class="text">
  140. <image src="../../static/images/icon-2.png" mode=""></image>
  141. <view class="time">
  142. {{item.scheduling.day}}
  143. </view>
  144. </view>
  145. <view class="text">
  146. <image src="../../static/images/icon-3.png" mode=""></image>
  147. <view class="time">
  148. {{item.scheduling.student ? '有预约' :'无预约' }}
  149. </view>
  150. </view>
  151. </view>
  152. <view class="cancel" @click="cancelShedule(item)"
  153. v-if="item.is_del==true && item.is_me==true">
  154. 取消
  155. </view>
  156. <view class="" v-if="!item.scheduling">
  157. {{ item.is_scheduling == false ? '已过期' : '立即排班' }}
  158. </view>
  159. </view>
  160. <!-- 当时间未全部index==0 -->
  161. <view class="item" v-if="item.scheduling && current_time==-1">
  162. <view class="item-left">
  163. <view class="image" :style="{backgroundImage:'url('+ (item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png') +')'}">
  164. </view>
  165. <!-- <image
  166. :src="item.scheduling ? item.scheduling.teacher.headimg :'../../static/images/add.png'"
  167. mode=""></image> -->
  168. <view class="name">
  169. {{item.scheduling ? item.scheduling.teacher.truename : ''}}
  170. </view>
  171. </view>
  172. <!-- {{item}} -->
  173. <view class="item-right">
  174. <view class="text">
  175. <view class="tips" v-if="item.scheduling.student"
  176. @click="stuDetail(item.scheduling)">
  177. 查看学生
  178. </view>
  179. <image src="../../static/images/icon-1.png" mode=""></image>
  180. <view class="time">
  181. {{item.scheduling.start_time}}-{{item.scheduling.end_time}}
  182. </view>
  183. </view>
  184. <view class="text">
  185. <image src="../../static/images/icon-2.png" mode=""></image>
  186. <view class="time">
  187. {{item.scheduling.day}}
  188. </view>
  189. </view>
  190. <view class="text">
  191. <image src="../../static/images/icon-3.png" mode=""></image>
  192. <view class="time">
  193. {{item.scheduling.student ? '有预约' :'无预约' }}
  194. </view>
  195. </view>
  196. </view>
  197. <view class="cancel" @click="cancelShedule(item)"
  198. v-if="item.is_del==true && item.is_me==true">
  199. 取消
  200. </view>
  201. <view class="" v-if="!item.scheduling">
  202. {{ item.is_scheduling == false ? '已过期' : '立即排班' }}
  203. </view>
  204. </view>
  205. <view class="add add1" v-if=" item.is_scheduling == true && index == current_time">
  206. <image src="../../static/images/pass1.png" mode="widthFix"></image>
  207. <view class="add-buttom" v-if="current_time != -1" @click="teacher_show = true">
  208. <!-- <image src="../../static/images/add_duty.png" mode=""></image> -->
  209. 添加排班
  210. </view>
  211. </view>
  212. <view class="add"
  213. v-if="!item.scheduling &&item.is_scheduling == false && index == current_time ">
  214. <image src="../../static/images/pass1.png" mode="widthFix"></image>
  215. <view class="add-text">
  216. 已截止
  217. </view>
  218. </view>
  219. </view>
  220. <view class="add" v-if="getEmpty && current_time==-1">
  221. <image src="../../static/images/pass1.png" mode="widthFix"></image>
  222. <view class="add-text">
  223. 暂无排班
  224. </view>
  225. </view>
  226. </view>
  227. </view>
  228. <view class="table">
  229. <view class="title">
  230. 工作排班信息
  231. </view>
  232. <view class="table_1">
  233. <view class="table-week">
  234. <view class="table-item" v-for="(item,index) in table_week" :key='index'>
  235. <view>{{ item.week ? item.week.slice(1) : '--'}}</view>
  236. <view>{{getDay(item.day)}}</view>
  237. </view>
  238. </view>
  239. <view class="table-tr">
  240. <view class="table-time" v-for="(item1,index1) in table_list" :key='index1'>
  241. <view v-for="(item,index) in item1" :key='index'
  242. :class="item.scheduling && item.is_me==false ? 'active-time-item' :item.scheduling&&item.is_me==true ? 'me-item' : 'time-item'">
  243. <view class="" v-if="item.scheduling">
  244. <view class="teacher">
  245. {{getName(item.scheduling.teacher)}}
  246. </view>
  247. <view class="stu">
  248. {{getName(item.scheduling.student)}}
  249. </view>
  250. </view>
  251. </view>
  252. </view>
  253. </view>
  254. </view>
  255. <view class="tips">
  256. <view class="tip-item">
  257. <span class="yellow">*</span>第一行上面显示的是导师
  258. </view>
  259. <view class="tip-item">
  260. <span class="yellow">*</span>第二行下方显示的是学生
  261. </view>
  262. </view>
  263. </view>
  264. </view>
  265. <tab-bar :current="1"></tab-bar>
  266. </view>
  267. </template>
  268. <script>
  269. export default {
  270. data() {
  271. return {
  272. teacher_show: false,
  273. time_detail: '', //预约时间弹框
  274. stu_show: false, //学生信息弹框
  275. stu_detail: '', //查看学生详情
  276. date: [1, 1, 1, 1, 1, 1, 1],
  277. time_list: [1, 1, 1, 1, 1, 1],
  278. current_time: 0, //当前时间
  279. current_date: 0,
  280. current_tab: 0, //本周下周
  281. tab_list: ['本周', '下周'],
  282. table_week: 7,
  283. time_list: [],
  284. current_item: 0, //当前周索引
  285. now_date: '', //今天日期日期
  286. shedule_list: [], //排班列表
  287. teacher_id: '',
  288. time: '', //当前选中的时间段的内容--传参添加页面使用
  289. table_list: [], //表格列数
  290. day: '', //当天日期
  291. notice: '', //通知公告
  292. now_time: '',
  293. now_list: [],
  294. cancel_detail: '',
  295. cancel_show: false, //取消排班
  296. }
  297. },
  298. async onShow() {
  299. await this.getNowDate()
  300. await this.getSheuling()
  301. //await this.getList()
  302. },
  303. onLoad() {
  304. if (this.is_weixin()) {
  305. this.navTitle()
  306. }
  307. this.notice = []
  308. this.teacher_id = this.$store.state.vuex_user.type_id
  309. this.getNotice()
  310. },
  311. computed: {
  312. getEmpty() {
  313. let a = true
  314. for (let i in this.shedule_list) {
  315. console.log(i, this.shedule_list[i].scheduling, 'YYYYYYYY')
  316. // console.log(this.shedule_list[i-1], 'YYTTTTTTTT')
  317. if (this.shedule_list[i].scheduling != null) {
  318. a = false
  319. break
  320. }
  321. }
  322. return a
  323. },
  324. },
  325. methods: {
  326. //判断是否是微信
  327. is_weixin() {
  328. let ua = navigator.userAgent.toLowerCase();
  329. return ua.indexOf('micromessenger') != -1;
  330. },
  331. navTitle() {
  332. let navTitle = document.getElementsByTagName('uni-page-head');
  333. navTitle[0].style.display = 'none'
  334. },
  335. //取消排班
  336. cancelShedule(item) {
  337. console.log(item.scheduling, 'ppp')
  338. this.cancel_detail = item.scheduling
  339. this.cancel_show = true
  340. },
  341. sure_cancel() {
  342. let id = this.cancel_detail.id
  343. this.$u.delete('/mentor/scheduling/' + id).then(res => {
  344. console.log(res, 'ppp')
  345. if (res.code == 200) {
  346. uni.showToast({
  347. title: '取消排班成功',
  348. icon: 'none'
  349. })
  350. }
  351. this.cancel_show = false
  352. this.getSheuling()
  353. })
  354. },
  355. //获取通知公告
  356. getNotice() {
  357. this.$u.get('/notice').then(res => {
  358. console.log(res, 'pppppp')
  359. if (res.data.notice) {
  360. this.notice.push(res.data.notice)
  361. }
  362. })
  363. },
  364. //姓名截取 获取前三个字
  365. getName(name) {
  366. if (name) {
  367. return name.truename.substr(0, 3)
  368. } else {
  369. return '--'
  370. }
  371. },
  372. //日期截取
  373. getDay(day) {
  374. if (day) {
  375. return day.slice(5)
  376. }
  377. },
  378. //查看学生信息
  379. stuDetail(item) {
  380. console.log(item, 'item')
  381. this.stu_show = true
  382. this.stu_detail = item
  383. },
  384. //获取值班列表
  385. // async getList() {
  386. // console.log(this.current_tab, '当前时间')
  387. // if (this.current_tab == 1) {
  388. // if (this.current_date != 0) {
  389. // } else {
  390. // this.now_date = this.table_week[0].day
  391. // this.current_date = 0
  392. // }
  393. // }
  394. // console.log(this.now_date, '当前时间')
  395. // let data = {
  396. // day: this.now_date,
  397. // time_id: this.current_time == 0 ? '' : this.current_time,
  398. // }
  399. // await this.$u.get('/mentor/scheduling', data).then(res => {
  400. // console.log(res, '我的值班信息')
  401. // this.shedule_list = res.data.list
  402. // })
  403. // },
  404. //获取排班信息
  405. async getSheuling() {
  406. await this.$u.get('/mentor/scheduling-calendar', {
  407. type: this.current_tab
  408. }).then(res => {
  409. console.log(res, '排班信息')
  410. this.time_list = res.data.times
  411. this.table_list = res.data.list
  412. let table_week = res.data.days
  413. table_week.map((item, index) => {
  414. // if (this.current_tab == 0) {
  415. // this.now_date = this.day
  416. // }
  417. // this.now_date = this.table_week[this.current_date].day
  418. if (this.now_date == item.day) {
  419. this.current_date = index
  420. console.log(this.now_date, 'this.now_date---------')
  421. }
  422. console.log(this.current_date, 'this.now_date---------')
  423. switch (item.week) {
  424. case 0:
  425. item.week = '周日'
  426. break
  427. case 1:
  428. item.week = '周一'
  429. break
  430. case 2:
  431. item.week = '周二'
  432. break
  433. case 3:
  434. item.week = '周三'
  435. break
  436. case 4:
  437. item.week = '周四'
  438. break
  439. case 5:
  440. item.week = '周五'
  441. break
  442. case 6:
  443. item.week = '周六'
  444. break
  445. }
  446. return item
  447. })
  448. this.table_week = table_week
  449. this.now_date = this.table_week[this.current_date].day
  450. let data = res.data.list
  451. this.shedule_list = data[this.current_date]
  452. console.log(this.current_date, 'YYYYYYYYYYY')
  453. })
  454. },
  455. //获取当前年月日
  456. getNowDate() {
  457. //获取当前年月日
  458. let nowDate = new Date()
  459. let year = nowDate.getFullYear()
  460. let month = nowDate.getMonth() + 1
  461. let date = nowDate.getDate()
  462. month = month >= 10 ? month : '0' + month
  463. date = date >= 10 ? date : '0' + date
  464. this.day = this.now_date = year + '-' + month + '-' + date
  465. console.log(this.now_date, '09--25')
  466. },
  467. //选择日期
  468. changeDate(index, item) {
  469. console.log(index, 'index----')
  470. console.log(item, 'index----')
  471. this.current_date = index
  472. this.now_date = item.day
  473. this.getSheuling()
  474. },
  475. //选择时间段
  476. changeTime(item, index) {
  477. console.log(item,'llllllll')
  478. if (item.id) {
  479. this.current_time =index
  480. this.time = item
  481. } else {
  482. this.current_time = item
  483. }
  484. },
  485. //选择本周还是下周
  486. async changTab(index) {
  487. this.current_tab = index
  488. if (index == 0) {
  489. this.now_date = this.day
  490. }
  491. if (index == 1) {
  492. this.current_date = 0
  493. this.now_date = this.table_week[0].day
  494. console.log(this.now_date, 'pppp')
  495. }
  496. console.log(this.now_date, 'pppp')
  497. this.getSheuling();
  498. },
  499. // //添加排班
  500. // add() {
  501. // uni.navigateTo({
  502. // url: './add?time_id=' + this.current_time + '&day=' + this.now_date +
  503. // '&start_time=' + this
  504. // .time.start_time + '&end_time=' + this.time.end_time
  505. // })
  506. // },
  507. //确认添加排班
  508. sure_choose() {
  509. let data = {
  510. status: 1,
  511. teacher_id: this.$store.state.vuex_user.type_id,
  512. day: this.now_date,
  513. time_ids: this.time.id
  514. }
  515. this.$u.post('/mentor/scheduling', data).then(res => {
  516. console.log(res, '添加排班')
  517. if (res.code == 200) {
  518. uni.showToast({
  519. title: '添加成功',
  520. icon: 'none'
  521. })
  522. this.teacher_show = false
  523. this.getSheuling()
  524. } else {
  525. }
  526. })
  527. }
  528. }
  529. }
  530. </script>
  531. <style lang="scss" scoped>
  532. .sheduling {
  533. padding-bottom: 70px;
  534. //添加排班弹框
  535. .pop_wrap {
  536. width: 290px;
  537. height: 250px;
  538. display: flex;
  539. flex-direction: column;
  540. align-items: center;
  541. .pop_top {
  542. margin-top: 32px;
  543. text {
  544. display: block;
  545. font-size: 13px;
  546. color: rgba(40, 40, 40, 0.5);
  547. text-align: center;
  548. line-height: 18px;
  549. }
  550. .title {
  551. font-size: 18px;
  552. font-weight: bold;
  553. color: #282828;
  554. line-height: 25px;
  555. margin-bottom: 2px;
  556. }
  557. }
  558. .pop_center {
  559. margin-top: 22px;
  560. text {
  561. font-size: 16px;
  562. font-family: PingFang SC;
  563. font-weight: 400;
  564. line-height: 20px;
  565. color: #353535;
  566. opacity: 0.79;
  567. display: block;
  568. margin-bottom: 6px;
  569. }
  570. }
  571. .pop_bootom {
  572. margin-top: 30px;
  573. button {
  574. border: 1px solid #FF5A26;
  575. width: 98px;
  576. // height: 36px;
  577. padding: 0 5px;
  578. line-height: 36px;
  579. background-color: #fff;
  580. color: #FF5A26;
  581. }
  582. }
  583. }
  584. //查看学生信息弹框
  585. .student-show {
  586. padding-bottom: 5px;
  587. .stu-title {
  588. font-size: 20px;
  589. font-family: PingFang SC;
  590. font-weight: bold;
  591. line-height: 20px;
  592. color: #282828;
  593. opacity: 1;
  594. text-align: center;
  595. padding: 20px 0 30px;
  596. }
  597. .stu-mess {
  598. display: flex;
  599. padding: 0 22px;
  600. image {
  601. height: 75px;
  602. width: 75px;
  603. margin-right: 14px;
  604. border-radius: 9px;
  605. }
  606. .right {
  607. flex: 1;
  608. .stu-text {
  609. font-size: 13px;
  610. font-family: PingFang SC;
  611. font-weight: 400;
  612. line-height: 20px;
  613. color: #282828;
  614. overflow: hidden;
  615. display: -webkit-box; //将对象作为弹性伸缩盒子模型显示;
  616. text-overflow: ellipsis; //溢出部分用省略号代替
  617. -webkit-line-clamp: 2; //设置文本显示两行
  618. -webkit-box-orient: vertical; //从上到下排列子元素;
  619. white-space: normal;
  620. }
  621. }
  622. }
  623. .e-mail {
  624. margin: 18px 22px 10px;
  625. height: 36px;
  626. line-height: 36px;
  627. font-size: 14px;
  628. font-family: PingFang SC;
  629. font-weight: bold;
  630. color: rgba(40, 40, 40, .78);
  631. border-bottom: 1px solid rgba(112, 112, 112, .06);
  632. }
  633. .remark-title {
  634. margin: 10px 22px 0px;
  635. padding: 5px;
  636. font-size: 13px;
  637. font-family: PingFang SC;
  638. font-weight: bold;
  639. line-height: 20px;
  640. color: #282828;
  641. opacity: 0.61;
  642. }
  643. .remark {
  644. margin: 0px 22px 22px;
  645. font-size: 12px;
  646. font-family: PingFang SC;
  647. font-weight: 400;
  648. line-height: 20px;
  649. color: #282828;
  650. opacity: 0.54;
  651. padding: 5px;
  652. overflow: hidden;
  653. display: -webkit-box; //将对象作为弹性伸缩盒子模型显示;
  654. text-overflow: ellipsis; //溢出部分用省略号代替
  655. -webkit-line-clamp: 3; //设置文本显示两行
  656. -webkit-box-orient: vertical; //从上到下排列子元素;
  657. white-space: normal;
  658. // border-bottom: 1px solid rgba(112, 112, 112, .06);
  659. }
  660. }
  661. .sheduling-top {
  662. display: flex;
  663. align-items: center;
  664. justify-items: center;
  665. height: 46px;
  666. background-color: #E6FFF0;
  667. padding: 0 30px;
  668. font-size: 13px;
  669. font-family: PingFang SC;
  670. font-weight: 400;
  671. color: #2B9155;
  672. image {
  673. height: 20px;
  674. width: 20px;
  675. margin-right: 9px;
  676. }
  677. .title {
  678. flex: 1;
  679. white-space: nowrap;
  680. /*设置不换行*/
  681. overflow: hidden;
  682. /*设置隐藏*/
  683. text-overflow: ellipsis;
  684. /*设置隐藏部分为省略号*/
  685. }
  686. }
  687. .tab {
  688. display: flex;
  689. align-items: center;
  690. width: 50%;
  691. margin: 0 auto;
  692. // background-color: #18B566;
  693. .item,
  694. .active-item {
  695. margin-top: 17px;
  696. view {
  697. display: block;
  698. }
  699. font-size: 18px;
  700. font-family: PingFang SC;
  701. font-weight: bold;
  702. line-height: 20px;
  703. color: rgba(113, 113, 113, .43);
  704. opacity: 0.43;
  705. opacity: 1;
  706. flex: 1;
  707. text-align: center;
  708. .week {
  709. padding-bottom: 12px;
  710. }
  711. .line {
  712. width: 25px;
  713. height: 4px;
  714. background: #3B7653;
  715. opacity: 1;
  716. border-radius: 1px;
  717. display: block;
  718. margin: 0 auto;
  719. }
  720. }
  721. .active-item {
  722. font-size: 18px;
  723. font-family: PingFang SC;
  724. font-weight: bold;
  725. line-height: 20px;
  726. color: #3B7653;
  727. .week {
  728. padding-bottom: 8px;
  729. }
  730. }
  731. }
  732. .content {
  733. padding: 17px;
  734. .top {
  735. display: flex;
  736. align-items: center;
  737. justify-items: center;
  738. background: rgba(238, 238, 238, .46);
  739. border-radius: 12px 12px 0 0;
  740. overflow: hidden;
  741. .item,
  742. .active-item {
  743. padding: 9px 0;
  744. flex: 1;
  745. text-align: center;
  746. .week {
  747. font-size: 14px;
  748. font-family: PingFang SC;
  749. font-weight: 500;
  750. line-height: 20px;
  751. color: #282828;
  752. opacity: 1;
  753. }
  754. .date {
  755. font-size: 12px;
  756. font-family: PingFang SC;
  757. font-weight: 400;
  758. line-height: 20px;
  759. color: #282828;
  760. opacity: 0.6;
  761. }
  762. }
  763. .active-item {
  764. background-color: rgba(59, 118, 83, 1);
  765. .week,
  766. .date {
  767. color: #fff;
  768. }
  769. }
  770. }
  771. .shedule {
  772. display: flex;
  773. position: relative;
  774. .add {
  775. display: flex;
  776. text-align: center;
  777. align-items: center;
  778. flex-direction: column;
  779. color: #FFFFFF;
  780. opacity: 1;
  781. image {
  782. width: 60%;
  783. margin-top: 25%;
  784. }
  785. .add-buttom {
  786. font-size: 14px;
  787. color: #292929;
  788. padding: 10px 20px;
  789. background-color: #3E7855;
  790. color: #fff;
  791. margin-top: 30px;
  792. border-radius: 10px;
  793. }
  794. .add-text {
  795. color: #3E7855;
  796. font-size: 14px;
  797. margin-top: 40px;
  798. }
  799. }
  800. .left {
  801. flex: 0 0 100px;
  802. height: 425px;
  803. opacity: 1;
  804. overflow-y: auto;
  805. border-radius: 0px 0px 0px 12px;
  806. .left_1 {
  807. height: 100%;
  808. width: 92px;
  809. background: #F7F7F7;
  810. }
  811. .item,
  812. .active-item {
  813. font-size: 13px;
  814. padding: 15px 0;
  815. text-align: center;
  816. display: flex;
  817. justify-content: center;
  818. align-items: center;
  819. position: relative;
  820. .all {
  821. height: 13px;
  822. width: 13px;
  823. margin-right: 6px;
  824. }
  825. .jian {
  826. position: absolute;
  827. height: 14px;
  828. width: 8px;
  829. right: -8px;
  830. }
  831. }
  832. .active-item {
  833. background-color: rgba(59, 118, 83, 1);
  834. color: #FFFFFF;
  835. }
  836. }
  837. .right {
  838. flex: 1;
  839. margin-left:3px;
  840. height: 425px;
  841. overflow-y: scroll;
  842. .item {
  843. display: flex;
  844. position: relative;
  845. align-items: center;
  846. padding: 10px;
  847. margin-top: 12px;
  848. font-size: 13px;
  849. background: rgba(234, 237, 242, .28);
  850. border-radius: 7px;
  851. .tips {
  852. position: absolute;
  853. width: 57px;
  854. height: 20px;
  855. background: #C1915A;
  856. line-height: 20px;
  857. font-size: 12px;
  858. font-family: PingFang SC;
  859. font-weight: 400;
  860. color: #FFFFFF;
  861. opacity: 1;
  862. opacity: 1;
  863. right: 12px;
  864. z-index: 2;
  865. top: 0;
  866. text-align: center;
  867. border-radius: 0px 0px 6px 6px;
  868. }
  869. .item-left {
  870. margin-right: 10px;
  871. .image {
  872. height: 42px;
  873. width: 42px;
  874. border: solid 1px;
  875. border-radius: 50%;
  876. background-position: center;
  877. background-repeat: no-repeat;
  878. background-size: cover;
  879. }
  880. .name {
  881. font-size: 10px;
  882. font-family: PingFang SC;
  883. font-weight: 400;
  884. text-align: center;
  885. line-height: 20px;
  886. color: #292929;
  887. opacity: 1;
  888. width: 50px;
  889. /*指定宽度*/
  890. word-break: keep-all;
  891. /* 不换行 */
  892. white-space: nowrap;
  893. /* 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。不换行 */
  894. overflow: hidden;
  895. /* 内容超出宽度时隐藏超出部分的内容 */
  896. text-overflow: ellipsis;
  897. /* IE 专有属性,当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。*/
  898. }
  899. }
  900. .item-right {
  901. flex: 1;
  902. .text {
  903. line-height: 17px;
  904. font-size: 12px;
  905. font-family: PingFang SC;
  906. font-weight: 400;
  907. color: #282828;
  908. opacity: 1;
  909. image {
  910. height: 13px;
  911. width: 13px;
  912. display: inline-block;
  913. margin-right: 4px;
  914. }
  915. .time {
  916. font-family: PingFang SC;
  917. font-weight: 400;
  918. color: #282828;
  919. opacity: 1;
  920. display: inline-block;
  921. margin-top: 4px;
  922. }
  923. }
  924. }
  925. .cancel {
  926. width: 58px;
  927. height: 23px;
  928. line-height: 23px;
  929. border: 1px solid rgba(193, 145, 90, 0.44);
  930. border-radius: 12px;
  931. font-size: 12px;
  932. font-family: PingFang SC;
  933. font-weight: 500;
  934. line-height: 20px;
  935. color: #C1915A;
  936. opacity: 1;
  937. text-align: center;
  938. }
  939. }
  940. }
  941. }
  942. .table {
  943. .tips {
  944. display: flex;
  945. margin-top: 25px;
  946. .tip-item {
  947. flex: 1;
  948. font-size: 11px;
  949. font-family: PingFang SC;
  950. font-weight: 400;
  951. line-height: 20px;
  952. color: rgba(40, 40, 40, .56);
  953. opacity: 1;
  954. .yellow {
  955. color: #3E7855;
  956. }
  957. }
  958. }
  959. .title {
  960. font-size: 18px;
  961. font-family: PingFang SC;
  962. font-weight: bold;
  963. line-height: 20px;
  964. color: #282828;
  965. opacity: 1;
  966. margin: 30px 0
  967. }
  968. .table_1 {
  969. background-color: rgba(249, 250, 252, 1);
  970. .table-week {
  971. display: flex;
  972. align-items: center;
  973. justify-content: center;
  974. .table-item {
  975. display: flex;
  976. justify-content: center;
  977. flex-direction: column;
  978. height: 53px;
  979. // line-height: 53px;
  980. text-align: center;
  981. flex: 1;
  982. border-right: solid 1px rgba(112, 112, 112, .08);
  983. view:last-child {
  984. font-size: 10px;
  985. }
  986. }
  987. }
  988. .table-tr {
  989. display: flex;
  990. .table-time {
  991. flex: 1;
  992. .time-item {
  993. display: flex;
  994. justify-content: center;
  995. align-items: center;
  996. flex-flow: column;
  997. height: 53px;
  998. border-top: solid 1px rgba(112, 112, 112, .08);
  999. border-right: solid 1px rgba(112, 112, 112, .08);
  1000. font-size: 10px;
  1001. font-family: PingFang SC;
  1002. font-weight: 400;
  1003. color: #333;
  1004. opacity: 1;
  1005. }
  1006. .active-time-item {
  1007. display: flex;
  1008. justify-content: center;
  1009. align-items: center;
  1010. flex-flow: column;
  1011. height: 53px;
  1012. border-top: solid 1px rgba(255, 255, 255, .08);
  1013. border-right: solid 1px rgba(255, 255, 255, .08);
  1014. font-size: 10px;
  1015. font-family: PingFang SC;
  1016. font-weight: 400;
  1017. color: #333;
  1018. opacity: 1;
  1019. background-color: rgba(62, 120, 85, 1);
  1020. .teacher {
  1021. font-size: 10px;
  1022. font-family: PingFang SC;
  1023. font-weight: 500;
  1024. line-height: 20px;
  1025. color: #FFFFFF;
  1026. opacity: 1;
  1027. text-align: center;
  1028. white-space: nowrap;
  1029. /*设置不换行*/
  1030. overflow: hidden;
  1031. opacity: 1;
  1032. }
  1033. .stu {
  1034. text-align: center;
  1035. font-size: 10px;
  1036. font-family: PingFang SC;
  1037. font-weight: 400;
  1038. line-height: 20px;
  1039. color: #FEEF7E;
  1040. opacity: 1;
  1041. }
  1042. }
  1043. .me-item {
  1044. display: flex;
  1045. justify-content: center;
  1046. align-items: center;
  1047. flex-flow: column;
  1048. height: 53px;
  1049. border-top: solid 1px rgba(255, 255, 255, .08);
  1050. border-right: solid 1px rgba(255, 255, 255, .08);
  1051. font-size: 10px;
  1052. font-family: PingFang SC;
  1053. font-weight: 400;
  1054. color: #333;
  1055. opacity: 1;
  1056. background-color: rgba(193, 145, 90, 1);
  1057. .teacher {
  1058. font-size: 10px;
  1059. font-family: PingFang SC;
  1060. font-weight: 500;
  1061. line-height: 20px;
  1062. color: #FFFFFF;
  1063. opacity: 1;
  1064. }
  1065. .stu {
  1066. font-size: 10px;
  1067. font-family: PingFang SC;
  1068. font-weight: 400;
  1069. line-height: 20px;
  1070. color: #FEEF7E;
  1071. opacity: 1;
  1072. text-align: center;
  1073. }
  1074. }
  1075. }
  1076. }
  1077. }
  1078. }
  1079. }
  1080. }
  1081. </style>