StoTtransfer.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958
  1. <template>
  2. <view class="box">
  3. <view class="table-list">
  4. <!-- 停调可弹框 -->
  5. <view class="prop-title">
  6. <view class="">
  7. 课程名称:{{ detail.lesson ? detail.lesson.name : "--" }}
  8. </view>
  9. <view class="">
  10. 指导教师:{{ detail.teacher ? detail.teacher.name : "--" }}
  11. </view>
  12. <view class="">
  13. 授课内容:{{ detail.teach_title ? detail.teach_title : "--" }}
  14. </view>
  15. <view class="">
  16. 上课时间:{{ detail.day}} / 第{{detail.week}}周 / {{detail.week_index}} / {{detail.time_id.name}}
  17. </view>
  18. <view class="">
  19. 上课班级:{{ detail.grade ? detail.grade.name : "--" }}
  20. </view>
  21. </view>
  22. <view class="prop-content" v-if="zindex == 1">
  23. <!-- <image src="../../static/image/index/icon_6.png" mode="" class="prop-image"></image> -->
  24. <view style="width: 100%">
  25. <!-- <scroll-view scroll-y="true" style="height: 200px;"> -->
  26. <view class="content-item">
  27. <view class="prop-label"> 停调课类型: </view>
  28. <view class="prop-text">
  29. <u-radio-group v-model="type" @change="radioGroupChange">
  30. <u-radio @change="radioChange" v-for="(item, index) in list_sel" :key="index"
  31. :name="item.id">
  32. {{ item.name }}
  33. </u-radio>
  34. </u-radio-group>
  35. </view>
  36. </view>
  37. <view class="content-item" v-if="type == 2">
  38. <view class="prop-label"> 调课时间: </view>
  39. <view class="prop-text">
  40. <view class="change-time" @click="chaneTime"> 选择时间 </view>
  41. </view>
  42. </view>
  43. <view class="content-item" v-if="migrate_data.length > 0 && type == 2">
  44. <view class="prop-text">
  45. <view class="table-title">
  46. <view class="title-item"> 实验室 </view>
  47. <view class="title-item"> 日期 </view>
  48. <view class="title-item"> 节次 </view>
  49. </view>
  50. <view class="table-title" v-for="(item, index) in migrate_data" :key="index">
  51. <view class="title-item">
  52. {{ item.room_name }}
  53. </view>
  54. <view class="title-item">
  55. {{ item.day }} · 第{{ item.week }}周 · 星期{{
  56. $transformWeek(item.week_index)
  57. }}
  58. </view>
  59. <view class="title-item">
  60. {{ getTime(item.time_id) }}
  61. </view>
  62. </view>
  63. </view>
  64. </view>
  65. <view class="content-item">
  66. <view class="prop-label" @click="show = true"> 停调课原因:
  67. {{selIndex==null ? '请选择停调课原因':selector[selIndex].name}} </view>
  68. <u-picker mode="selector" v-model="show" :default-selector="[selIndex==null ? 0 : selIndex]"
  69. :range="list" @confirm="confirm" @cancel="cancel"></u-picker>
  70. </view>
  71. <view class="content-item" v-if="selector[selIndex].name=='其他'">
  72. <view class="prop-text">
  73. <textarea v-model="body" rows="2" placeholder="请输入停调课原因"></textarea>
  74. <!-- <u-input v-model="body" type="textarea" border height="150" auto-height /> -->
  75. </view>
  76. </view>
  77. </view>
  78. <!-- </scroll-view> -->
  79. <view class="pop-btn">
  80. <view @click="returns" style="
  81. opacity: 1;
  82. background: #f5f5f5;
  83. color: #333333;
  84. ">
  85. <text>取消</text>
  86. </view>
  87. <view style="background: #3665ff; color: #fff" @click="sureHandle">
  88. <text>确定</text>
  89. </view>
  90. </view>
  91. </view>
  92. <!-- 选择时间弹框 -->
  93. <view class="change-time-prop" v-if="simpleShow" @touchmove.stop.prevent="disabledScroll">
  94. <view
  95. style="font-size: #333333; font-weight: 550; font-size: 17px;padding-left: 10px;display:flex;align-items:center;">
  96. 第{{ simple_week }}周
  97. <view style="font-weight: 550; font-size: 15px;color:red;padding-left: 10px;">
  98. *可用座位数:{{roomList[simple_currentRoom].use_student_nums}}
  99. </view>
  100. </view>
  101. <view class="table_1">
  102. <u-tabs :list="roomList" :current="simple_currentRoom" @change="simpleChangeRoom"></u-tabs>
  103. <view class="table-border">
  104. <view class="jie">
  105. <view class="jie-item" style="height: 55px; line-height: 20px">
  106. </view>
  107. <view class="jie-item" v-for="(item, index) in simple_left" :key="index">
  108. {{ item.name }}
  109. </view>
  110. </view>
  111. <view class="day">
  112. <view v-for="(item, index) in simple_weekList" :key="index" class="day-item"
  113. :class="[checkOld(item.day) ? 'day-item-1' : '']">
  114. <view class="time" :class="checkToday(item.day) ? 'today' : ''"
  115. style="height: 55px; line-height: 20px">
  116. <view style="padding-top: 8px">{{ item.week }}</view>
  117. <view>{{ item.day }}</view>
  118. </view>
  119. <view v-for="(course, index1) in simple_calendar[index].lists" :key="index1"
  120. class="jie-item">
  121. <!-- 时间段已过期 -->
  122. <view v-if="checkOld(item.day)"></view>
  123. <view v-else class="course" @click="selectTime(simple_calendar[index], index1)">
  124. <view v-if="!course.is_lesson" class="course kong" :class="
  125. checkIselect(
  126. simple_calendar[index].week_index,
  127. simple_jieList[index1].id
  128. )
  129. ? 'xuan'
  130. : ''
  131. ">
  132. <view>{{
  133. checkIselect(
  134. simple_calendar[index].week_index,
  135. simple_jieList[index1].id
  136. )
  137. ? "已选"
  138. : "可选"
  139. }}</view>
  140. </view>
  141. <view v-if="
  142. current_course.week == simple_week &&
  143. current_course.room_id == simple_room_id &&
  144. simple_calendar[index].week_index ==
  145. current_course.week_index &&
  146. current_course.time_id == simple_jieList[index1].id
  147. " class="course current-course">
  148. 当前课程
  149. </view>
  150. </view>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. <view class="simple-week">
  156. <view :class="simple_week == 1 ? 'disable-buttom' : 'change-buttom'" @click="simpleLastWeek">
  157. 上一周
  158. </view>
  159. <view :class="simple_week == maxWeek ? 'disable-buttom' : 'change-buttom'"
  160. @click="simpleNextWeek">
  161. 下一周
  162. </view>
  163. </view>
  164. <view class="sure-buttom">
  165. <view class="cancel" @click="cancelSelectTime"> 取消 </view>
  166. <view class="sure" @click="sureSelectTime"> 确定 </view>
  167. </view>
  168. </view>
  169. </view>
  170. <!-- 补课弹框 -->
  171. <view class="prop-content" v-if="zindex==2">
  172. <!-- <image src="../../static/image/index/icon_6.png" mode="" class="prop-image"></image> -->
  173. <!-- <view class="prop-title">
  174. {{ detail.lesson ? detail.lesson.name : "--" }}
  175. </view> -->
  176. <view style="width: 100%">
  177. <!-- <scroll-view scroll-y="true" style="height: 200px;"> -->
  178. <view class="content-item" style="align-items: center;">
  179. <view class="prop-label"> 补课时间: </view>
  180. <view class="prop-text">
  181. <view class="change-time" @click="chaneTime"> 选择时间 </view>
  182. </view>
  183. </view>
  184. <view class="content-item" v-if="migrate_data.length > 0">
  185. <view class="prop-text">
  186. <view class="table-title">
  187. <view class="title-item"> 实验室 </view>
  188. <view class="title-item"> 日期 </view>
  189. <view class="title-item"> 节次 </view>
  190. </view>
  191. <view class="table-title" v-for="(item, index) in migrate_data" :key="index">
  192. <view class="title-item">
  193. {{ item.room_name }}
  194. </view>
  195. <view class="title-item">
  196. {{ item.day }} · 第{{ item.week }}周 · 星期{{
  197. $transformWeek(item.week_index)
  198. }}
  199. </view>
  200. <view class="title-item">
  201. {{ getTime(item.time_id) }}
  202. </view>
  203. </view>
  204. </view>
  205. </view>
  206. <view class="content-item">
  207. <view class="prop-label" @click="show = true"> 补课原因:
  208. {{selIndex==null ? '请选择补课原因':selector[selIndex].name}} </view>
  209. <u-picker mode="selector" v-model="show" :default-selector="[selIndex==null ? 0 : selIndex]"
  210. :range="list" @confirm="confirm" @cancel="cancel"></u-picker>
  211. </view>
  212. <view class="content-item" v-if="selector[selIndex].name=='其他'">
  213. <view class="prop-text">
  214. <textarea v-model="body" rows="2" placeholder="请输入补课原因"></textarea>
  215. <!-- <u-input v-model="body" type="textarea" border height="150" auto-height /> -->
  216. </view>
  217. </view>
  218. </view>
  219. <!-- </scroll-view> -->
  220. <view class="pop-btn">
  221. <view @click="returns" style="
  222. opacity: 1;
  223. background: #f5f5f5;
  224. color: #333333;
  225. ">
  226. <text>取消</text>
  227. </view>
  228. <view style="background: #3665ff; color: #fff" @click="make_les">
  229. <text>确定</text>
  230. </view>
  231. </view>
  232. </view>
  233. </view>
  234. </view>
  235. </template>
  236. <script>
  237. var app = getApp();
  238. export default {
  239. data() {
  240. return {
  241. meta: '',
  242. list_sel: [{
  243. id: 1,
  244. name: "停课",
  245. },
  246. {
  247. id: 2,
  248. name: "调课",
  249. },
  250. ],
  251. type: "", //停调课类型、1停课,2调课
  252. detail: '',
  253. simple_week: 0,
  254. simple_currentRoom: 0,
  255. simpleShow: false,
  256. room_id: 18,
  257. week: 0,
  258. currentRoom: 0,
  259. migrate_data: [],
  260. simple_weekList: [],
  261. today: "", //今日日期
  262. selected: [], //已选择
  263. jieList: [],
  264. roomList: [],
  265. simple_left: [],
  266. body: '',
  267. maxWeek: 0,
  268. zindex: '',
  269. selector: [],
  270. selIndex: null,
  271. list: [],
  272. show: false
  273. }
  274. },
  275. onLoad(detail) {
  276. this.maxWeek = Number(this.vuex_term_weeks);
  277. this.getRoomList();
  278. this.user_id = this.vuex_user.id;
  279. this.detail = JSON.parse(detail.detail)
  280. this.zindex = Number(detail.type);
  281. this.$u.get('/base/category-select-options?key=du2r3YxK').then(res => {
  282. console.log(res)
  283. var data = res.data;
  284. var obj = {
  285. name: '其他',
  286. id: 0
  287. }
  288. data.push(obj)
  289. this.selector = data;
  290. var arr = []
  291. data.map(item => {
  292. arr.push(item.name)
  293. })
  294. this.list = arr;
  295. console.log(this.selector)
  296. })
  297. },
  298. methods: {
  299. //返回上一页
  300. returns() {
  301. uni.navigateBack()
  302. },
  303. //原因选择确定
  304. confirm(e) {
  305. this.selIndex = e[0];
  306. if (this.selector[this.selIndex].name != '其他') {
  307. this.body = this.list[this.selIndex]
  308. } else {
  309. this.body = ''
  310. }
  311. },
  312. cancel() {
  313. //原因选择取消
  314. },
  315. //获取实验室列表
  316. async getRoomList() {
  317. await this.$u
  318. .get("/school/room-select-options", {
  319. status: 1,
  320. })
  321. .then((res) => {
  322. this.roomList = res.data;
  323. this.room_id = res.data[this.currentRoom].id;
  324. this.simple_room_id = res.data[this.currentRoom].id;
  325. });
  326. },
  327. //获取时间选择列表
  328. getChangeTime() {
  329. this.$u
  330. .post("/school/schedule/calendar-simple", {
  331. room_id: this.simple_room_id,
  332. week: this.simple_week,
  333. })
  334. .then((res) => {
  335. this.simple_jieList = res.data.times;
  336. var head = res.data.headers;
  337. var xingqi = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
  338. for (var i = 0; i < head.length; i++) {
  339. head[i].week = xingqi[i];
  340. head[i].day = head[i].day.slice(5, 11).replace("-", "/");
  341. }
  342. this.simple_weekList = head;
  343. this.simple_calendar = res.data.calendar;
  344. this.simple_week = res.data.week;
  345. this.simple_left = res.data.times;
  346. // console.log(this.simple_jieList)
  347. });
  348. },
  349. //选择时间切换实验室
  350. simpleChangeRoom(item) {
  351. this.simple_currentRoom = item;
  352. this.simple_room_id = this.roomList[item].id;
  353. this.getChangeTime();
  354. },
  355. //点击选择时间
  356. chaneTime() {
  357. this.simpleShow = true;
  358. this.simple_room_id = this.room_id;
  359. this.simple_week = this.week;
  360. this.simple_currentRoom = this.currentRoom;
  361. this.getChangeTime();
  362. },
  363. //匹配节次
  364. getTime(time) {
  365. console.log(time)
  366. var time1 = "";
  367. this.simple_jieList.map((item) => {
  368. if (item.id == time) {
  369. time1 = item.name;
  370. }
  371. });
  372. return time1;
  373. },
  374. //判断是否已选择
  375. checkIselect(week_index, time_id) {
  376. var status = false;
  377. if (this.selected.length == 0) return false;
  378. this.selected.map((item) => {
  379. if (
  380. this.simple_week == item.week &&
  381. this.simple_room_id == item.room_id &&
  382. week_index == item.week_index &&
  383. time_id == item.time_id
  384. ) {
  385. status = true;
  386. }
  387. });
  388. return status;
  389. },
  390. //选择时间点
  391. selectTime(row, index1) {
  392. this.selected = [];
  393. this.migrate_data = [];
  394. let id =
  395. row.week_index.toString() +
  396. this.simple_jieList[index1].id.toString() +
  397. this.simple_room_id.toString();
  398. let index = false;
  399. this.migrate_data.map((item) => {
  400. if (item.id == id) index = true;
  401. });
  402. console.log(index, "000", id);
  403. if (!index) {
  404. let arr1 = [{
  405. id: id,
  406. week: row.week,
  407. day: row.day,
  408. week_index: row.week_index,
  409. time_id: this.simple_jieList[index1].id,
  410. time_name: this.simple_jieList[index1].name,
  411. room_id: this.simple_room_id,
  412. room_name: this.roomList[this.simple_currentRoom].name,
  413. }, ];
  414. this.migrate_data = this.migrate_data.concat(arr1);
  415. let arr = [{
  416. id: row.week_index.toString() +
  417. this.simple_jieList[index1].id.toString() +
  418. this.simple_room_id.toString(),
  419. time_id: this.simple_jieList[index1].id,
  420. week_index: row.week_index,
  421. week: row.week,
  422. room_id: this.simple_room_id,
  423. }, ];
  424. // this.selected = this.selected.concat(arr) //开放预约可多选
  425. this.selected = arr;
  426. // this.$forceUpdate()
  427. // this.$set(this.selected, this.selected.concat(arr))
  428. } else {
  429. this.selected = this.selected.filter((item) => {
  430. return item.id !== id;
  431. });
  432. this.migrate_data = this.migrate_data.filter((item) => {
  433. return item.id !== id;
  434. });
  435. }
  436. },
  437. disabledScroll() {
  438. return;
  439. },
  440. foreach(lesson) {
  441. for (var i = 0; i < lesson.length; i++) {
  442. if (lesson[i].week_index == 0) {
  443. lesson[i].week_index = '星期一'
  444. }
  445. if (lesson[i].week_index == 1) {
  446. lesson[i].week_index = '星期二'
  447. }
  448. if (lesson[i].week_index == 2) {
  449. lesson[i].week_index = '星期三'
  450. }
  451. if (lesson[i].week_index == 3) {
  452. lesson[i].week_index = '星期四'
  453. }
  454. if (lesson[i].week_index == 4) {
  455. lesson[i].week_index = '星期五'
  456. }
  457. if (lesson[i].week_index == 5) {
  458. lesson[i].week_index = '星期六'
  459. }
  460. if (lesson[i].week_index == 6) {
  461. lesson[i].week_index = '星期日'
  462. }
  463. }
  464. return lesson;
  465. },
  466. radioGroupChange(e) {
  467. console.log(e);
  468. },
  469. radioChange(e) {
  470. //单选按钮事件
  471. },
  472. //判断是否为当天日期
  473. checkToday(tableDay) {
  474. var nowDay = Number(this.today.replace(/-/g, ""));
  475. //表格日期
  476. var day2 = Number(tableDay.replace(/-/g, ""));
  477. if (nowDay == day2) {
  478. return true;
  479. } else {
  480. return false;
  481. }
  482. },
  483. //选择时间上一周
  484. simpleLastWeek() {
  485. if (this.simple_week > 1) {
  486. this.simple_week--;
  487. this.getChangeTime();
  488. }
  489. },
  490. //选择时间下一周
  491. simpleNextWeek() {
  492. if (this.simple_week < this.maxWeek) {
  493. this.simple_week++;
  494. this.getChangeTime();
  495. }
  496. },
  497. //判断课程是否过期
  498. checkOld(tableDay) {
  499. var nowDay = Number(this.today.replace(/-/g, ""));
  500. //表格日期
  501. var day2 = Number(tableDay.replace(/-/g, ""));
  502. if (nowDay > day2) {
  503. return true;
  504. } else {
  505. return false;
  506. }
  507. },
  508. //取消选择时间
  509. cancelSelectTime() {
  510. (this.selected = []), (this.migrate_data = []);
  511. this.simpleShow = false;
  512. },
  513. //确定选择
  514. sureSelectTime() {
  515. this.simpleShow = false;
  516. },
  517. // 补课申请
  518. make_les() {
  519. if (this.migrate_data.length == 0) {
  520. uni.showToast({
  521. title: "请选择补课时间",
  522. icon: "none",
  523. })
  524. return;
  525. }
  526. if (this.selIndex == null) {
  527. uni.showToast({
  528. title: "请选择补课原因",
  529. icon: "none",
  530. });
  531. return;
  532. }
  533. if (!this.body) {
  534. uni.showToast({
  535. title: "请输入补课原因",
  536. icon: "none",
  537. });
  538. return;
  539. }
  540. let data = {
  541. type: 3,
  542. body: this.body,
  543. id: this.detail.id,
  544. migrate_data: this.migrate_data[0],
  545. apply_type: this.selector[this.selIndex].id
  546. };
  547. this.$u.post("/school/schedule/change", data).then((res) => {
  548. uni.showToast({
  549. title: "提交成功,请等待管理员审核!",
  550. icon: "none",
  551. })
  552. uni.navigateBack()
  553. });
  554. },
  555. //确定停调课
  556. sureHandle() {
  557. if (!this.type) {
  558. uni.showToast({
  559. title: "请选择类型",
  560. icon: "none",
  561. });
  562. return;
  563. }
  564. if (this.type == 2 && this.migrate_data.length == 0) {
  565. uni.showToast({
  566. title: "请选择调课时间",
  567. icon: "none",
  568. });
  569. return;
  570. }
  571. if (this.selIndex == null) {
  572. uni.showToast({
  573. title: "请选择停调课原因",
  574. icon: "none",
  575. });
  576. return;
  577. }
  578. if (!this.body) {
  579. uni.showToast({
  580. title: "请输入停调课原因",
  581. icon: "none",
  582. });
  583. return;
  584. }
  585. let data = {
  586. type: this.type,
  587. body: this.body,
  588. id: this.detail.id,
  589. migrate_data: this.migrate_data[0],
  590. apply_type: this.selector[this.selIndex].id
  591. };
  592. this.$u.post("/school/schedule/change", data).then((res) => {
  593. uni.showToast({
  594. title: "提交成功,请等待管理员审核!",
  595. icon: "none",
  596. });
  597. uni.navigateBack()
  598. });
  599. }, //取消停调可
  600. }
  601. }
  602. </script>
  603. <style scoped lang="scss">
  604. .table-item {
  605. padding: 15px 12px;
  606. border-top: solid 1px #F2F2F2;
  607. display: flex;
  608. width: 100%;
  609. box-sizing: border-box;
  610. .room-name {
  611. display: flex;
  612. align-items: center;
  613. justify-content: space-between;
  614. color: #333333;
  615. font-size: 13px;
  616. font-weight: 800;
  617. }
  618. .teacher {
  619. display: flex;
  620. flex-wrap: wrap;
  621. color: #333;
  622. width: 100%;
  623. font-size: 13px;
  624. text {
  625. width: 100%;
  626. display: -webkit-box;
  627. -webkit-box-orient: vertical;
  628. -webkit-line-clamp: 1;
  629. overflow: hidden;
  630. padding-top: 5px;
  631. }
  632. }
  633. .right {
  634. display: flex;
  635. justify-content: flex-end;
  636. align-items: center;
  637. view {
  638. width: 64px;
  639. height: 28px;
  640. border-radius: 14px;
  641. opacity: 1;
  642. display: flex;
  643. align-items: center;
  644. justify-content: center;
  645. font-size: 12px;
  646. color: #FFFFFF;
  647. font-weight: 400;
  648. }
  649. }
  650. }
  651. .prop-title {
  652. font-size: 15px;
  653. margin: 0 auto;
  654. margin-bottom: 20px;
  655. font-weight: 550;
  656. color: #333333;
  657. width: 90%;
  658. view {
  659. padding-top: 6px;
  660. }
  661. }
  662. .prop-content {
  663. padding: 15px;
  664. display: flex;
  665. flex-direction: column;
  666. align-items: center;
  667. .content-item {
  668. display: flex;
  669. color: #333333;
  670. margin-top: 8px;
  671. width: 100%;
  672. .prop-label {
  673. font-size: 15px;
  674. font-weight: 550;
  675. }
  676. .prop-text {
  677. flex: 1;
  678. .change-time {
  679. display: inline-block;
  680. padding: 0 8px;
  681. line-height: 30px;
  682. height: 30px;
  683. font-size: 12px;
  684. color: #ffffff;
  685. background-color: #3665ff;
  686. border-radius: 5px;
  687. }
  688. .table-title {
  689. display: flex;
  690. border-left: solid 1px#b3b3b3;
  691. .title-item {
  692. flex: 1;
  693. padding: 5px 0;
  694. text-align: center;
  695. border-right: solid 1px #b3b3b3;
  696. border-bottom: solid 1px#b3b3b3;
  697. }
  698. }
  699. .table-title:first-child {
  700. background-color: #e3e3e3;
  701. border-top: solid 1px #b3b3b3;
  702. }
  703. textarea {
  704. border: solid 1px #b3b3b3;
  705. width: auto;
  706. border-radius: 8px;
  707. padding: 8px;
  708. height: 100px;
  709. }
  710. }
  711. .prop-content {
  712. font-size: 15px;
  713. }
  714. }
  715. .prop-srue {
  716. width: 279px;
  717. height: 44px;
  718. background: #3665ff;
  719. text-align: center;
  720. margin-top: 30px;
  721. line-height: 44px;
  722. color: #ffffff;
  723. border-radius: 22px;
  724. font-size: 16px;
  725. margin-bottom: 5px;
  726. }
  727. .pop-btn {
  728. // margin-top: 40px;
  729. width: 84%;
  730. display: flex;
  731. align-items: center;
  732. justify-content: space-between;
  733. position: fixed;
  734. bottom: 46px;
  735. view {
  736. display: flex;
  737. align-items: center;
  738. justify-content: center;
  739. width: 130px;
  740. height: 44px;
  741. font-size: 16px;
  742. font-weight: bold;
  743. border-radius: 22px;
  744. opacity: 1;
  745. }
  746. }
  747. }
  748. //时间选择弹框
  749. .change-time-prop {
  750. // height: 100%;
  751. height: 100vh;
  752. width: 100%;
  753. background-color: #fff;
  754. position: fixed;
  755. top: 0;
  756. left: 0;
  757. z-index: 99999999999;
  758. overflow-y: auto;
  759. .table_1 {
  760. .simple-week {
  761. text-align: right;
  762. padding: 10px;
  763. background-color: #fff;
  764. border-bottom: solid 1px #dddcdc;
  765. .change-buttom,
  766. .disable-buttom {
  767. display: inline-block;
  768. padding: 8px 30px;
  769. background-color: #3665ff;
  770. color: #ffffff;
  771. // margin-left: 10px;
  772. border-radius: 18px;
  773. }
  774. .week-text {
  775. display: inline-block;
  776. font-size: 15px;
  777. margin: 0 10px;
  778. font-weight: bold;
  779. }
  780. .disable-buttom {
  781. background-color: #dddcdc;
  782. color: #7c7b7b;
  783. }
  784. }
  785. .sure-buttom {
  786. text-align: center;
  787. margin-top: 20px;
  788. .cancel {
  789. display: inline-block;
  790. width: 150px;
  791. height: 45px;
  792. line-height: 45px;
  793. border: solid 1px #3665ff;
  794. color: #3665ff;
  795. border-radius: 22px;
  796. }
  797. .sure {
  798. display: inline-block;
  799. width: 150px;
  800. height: 45px;
  801. line-height: 45px;
  802. background-color: #3665ff;
  803. color: #ffffff;
  804. margin-left: 10px;
  805. border-radius: 22px;
  806. }
  807. }
  808. .table-border {
  809. display: flex;
  810. .week {
  811. display: flex;
  812. padding: 8px;
  813. color: #333333;
  814. font-size: 12px;
  815. border-bottom: solid 1px #f2f2f2;
  816. border-top: solid 1px #f2f2f2;
  817. background-color: #fbfcff;
  818. .week-item {
  819. flex: 1;
  820. text-align: center;
  821. .week-day {
  822. margin-top: 3px;
  823. }
  824. }
  825. }
  826. .jie {
  827. text-align: center;
  828. background-color: #fbfcff;
  829. }
  830. .jie-item:first-child {
  831. background-color: #fbfcff;
  832. display: flex;
  833. align-items: center;
  834. justify-content: center;
  835. }
  836. .jie-item {
  837. flex: 1;
  838. display: flex;
  839. align-items: center;
  840. justify-content: center;
  841. border: 1px dashed #f2f2f2;
  842. border-right: none;
  843. border-top: none;
  844. height: 50px;
  845. border-left: none;
  846. text-align: center;
  847. }
  848. .kong {
  849. text-align: center;
  850. // background-color: #0077ff;
  851. color: #0077ff;
  852. cursor: pointer;
  853. // border-bottom: solid 1px #fff;
  854. }
  855. .course {
  856. flex: 1;
  857. display: flex;
  858. align-items: center;
  859. justify-content: center;
  860. height: 50px;
  861. border-left: none;
  862. text-align: center;
  863. width: 100%;
  864. }
  865. .current-course {
  866. text-align: center;
  867. background-color: #0077ff;
  868. color: #fff;
  869. display: flex;
  870. align-items: center;
  871. justify-content: center;
  872. }
  873. .xuan {
  874. text-align: center;
  875. background-color: #00b315;
  876. color: #fff;
  877. display: flex;
  878. align-items: center;
  879. justify-content: center;
  880. }
  881. .jie-item:last-child {
  882. border-bottom: none;
  883. }
  884. .day {
  885. flex: 1;
  886. display: flex;
  887. text-align: center;
  888. .day-item {
  889. flex: 1;
  890. .time {
  891. border-bottom: 1px dashed #f2f2f2;
  892. background-color: #fbfcff;
  893. }
  894. .today {
  895. color: #df4d76;
  896. }
  897. background-color: #fff;
  898. border: 1px dashed #f2f2f2;
  899. }
  900. .day-item-1 {
  901. background-color: #cdced0;
  902. }
  903. }
  904. }
  905. }
  906. }
  907. </style>