TeamWorkLists.vue 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468
  1. <template>
  2. <div>
  3. <el-col :span="18" class="main" v-if="NextOrNewMonthStatus.NextOrNewMonthStatus == false">
  4. <el-row :gutter="20" class="main-header">
  5. <el-col :span="24">
  6. <el-col :span="10">
  7. <div class="selectBox">
  8. <div
  9. class="Ageclass"
  10. @click="choiceclass()"
  11. @mouseover="selectStyle()"
  12. @mouseout="outStyle()"
  13. >
  14. <span class="age-tip">{{selecttitlepag}}</span>
  15. <span :class="[gardeListDown ?'el-icon-caret-top':'el-icon-caret-bottom']"></span>
  16. </div>
  17. <div
  18. class="class-download"
  19. v-show="gardeListDown"
  20. @mouseover="selectStyle()"
  21. @mouseout="outStyle()"
  22. >
  23. <ul v-for="(item, k) in options" :key="k">
  24. <li @click="selectTip(item)">{{item.label}}</li>
  25. </ul>
  26. </div>
  27. </div>
  28. <div class="selectBox">
  29. <div
  30. class="Ageclass"
  31. @click="choiceclass()"
  32. @mouseover="selectStyle1()"
  33. @mouseout="outStyle1()"
  34. >
  35. <span class="age-tip">{{selecttitleage}}</span>
  36. <span :class="[gardeListDownage ?'el-icon-caret-top':'el-icon-caret-bottom']"></span>
  37. </div>
  38. <div
  39. class="class-download"
  40. v-show="gardeListDownage"
  41. @mouseover="selectStyle1()"
  42. @mouseout="outStyle1()"
  43. >
  44. <ul v-for="(item, k) in grades" :key="k">
  45. <li @click="selectTipage(item)">{{item.label}}</li>
  46. </ul>
  47. </div>
  48. </div>
  49. </el-col>
  50. <el-col :span="4" :offset="0">
  51. <h1 class="tiplog">{{this.Nowmonth}}月排班情况</h1>
  52. </el-col>
  53. <el-col :span="10" class="month" :offset="0">
  54. <div
  55. v-if="FindCalendarList.isNextMonth ==1"
  56. @click="shoeNextOrlastMOntlist(1)"
  57. class="NextMonthList"
  58. >
  59. 查看下月排班情况
  60. <span class="el-icon-arrow-right"></span>
  61. </div>
  62. <div v-if="FindCalendarList.isNextMonth ==0" class="NextMonthListMax">25号至月底前一天可查看老师下月排班</div>
  63. </el-col>
  64. </el-col>
  65. <el-col :span="24">
  66. <div class="canlender" id="canlender">
  67. <div class="tablebox1">
  68. <div class="date">
  69. <div class="calendar-week">
  70. <div class="week-item" v-for="item of weekList" :key="item">
  71. <span :class="[item == '六' || item == '日'?'grayRed':'']">{{item}}</span>
  72. </div>
  73. </div>
  74. <div
  75. class="calendar-inner"
  76. v-if="FindCalendarList.list && FindCalendarList.list.length>0"
  77. >
  78. <div
  79. class="calendar-item"
  80. v-for="(item, index) of calendarList"
  81. :key="index"
  82. :class="[item.disable ? 'disabled' : '']"
  83. >
  84. <el-popover placement="bottom" width="500" trigger="click">
  85. <div class="month-day">{{month}}月{{today}}日</div>
  86. <el-table
  87. :data="gridData"
  88. :header-cell-style="{
  89. 'color': '#393939',
  90. 'font-size': '14px'
  91. }"
  92. >
  93. <el-table-column
  94. width="150"
  95. label="日期"
  96. header-align="center"
  97. align="center"
  98. >
  99. <template slot-scope="scope">
  100. <span
  101. :class="[DaytimeFn(scope.row.arrangeDate) >0 ||timeFn(Nowyear+'-'+Nowmonth+'-' + D +scope.row.startInterval+':' + '00') >= -4 && DaytimeFn(scope.row.arrangeDate)>=0?'date-time-active':'']"
  102. >{{scope.row.startInterval}}-{{scope.row.endInterval}}</span>
  103. </template>
  104. </el-table-column>
  105. <el-table-column width="60" label="最少" header-align="center" align="center">
  106. <template slot-scope="scope">
  107. <span
  108. :class="[DaytimeFn(scope.row.arrangeDate) >0 ||timeFn(Nowyear+'-'+Nowmonth+'-' + D +scope.row.startInterval+':' + '00') >= -4 && DaytimeFn(scope.row.arrangeDate)>=0?'date-time-active':'']"
  109. >{{scope.row.miniNum}}</span>
  110. </template>
  111. </el-table-column>
  112. <el-table-column width="60" label="饱和" header-align="center" align="center">
  113. <template slot-scope="scope">
  114. <span
  115. :class="[DaytimeFn(scope.row.arrangeDate) >0 ||timeFn(Nowyear+'-'+Nowmonth+'-' + D +scope.row.startInterval+':' + '00') >= -4 && DaytimeFn(scope.row.arrangeDate)>=0?'date-time-active':'']"
  116. >{{scope.row.maxNum}}</span>
  117. </template>
  118. </el-table-column>
  119. <el-table-column width="60" label="已选" header-align="center" align="center">
  120. <template slot-scope="scope">
  121. <span
  122. :class="[DaytimeFn(scope.row.arrangeDate) >0 ||timeFn(Nowyear+'-'+Nowmonth+'-' + D +scope.row.startInterval+':' + '00') >= -4 && DaytimeFn(scope.row.arrangeDate)>=0?'date-time-active':'']"
  123. >{{scope.row.haveNum}}</span>
  124. </template>
  125. </el-table-column>
  126. <el-table-column
  127. width="130"
  128. property
  129. label
  130. header-align="center"
  131. align="center"
  132. >
  133. <template slot-scope="scope">
  134. <div
  135. :class="[DaytimeFn(scope.row.arrangeDate) >0 ||timeFn(Nowyear+'-'+Nowmonth+'-' + D +scope.row.startInterval+':' + '00') >= -4 && DaytimeFn(scope.row.arrangeDate)>=0?'date-btn-active':'Buttonhole']"
  136. @click="isShow(1,scope.row.id,timeFn(Nowyear+'-'+Nowmonth+'-' + D +scope.row.startInterval+':' + '00'),DaytimeFn(scope.row.arrangeDate))"
  137. >排班</div>
  138. </template>
  139. </el-table-column>
  140. </el-table>
  141. <!-- v-if='item.dateList && item.dateList.intervalList' -->
  142. <div
  143. slot="reference"
  144. @click="classSet(index,item.date,item.month,item.dateList.intervalList)"
  145. :class="[item.pastDay ? 'psatchecked' : '']"
  146. class="day-setting"
  147. >
  148. <!-- {{FindCalendarList}} -->
  149. <div class="date-day">{{ item.date }}</div>
  150. <div class="people" v-if="item.dateList.isOpen ==0">
  151. <div class="people-items">
  152. <div style="color:#999999" class="people-items-text">不开放</div>
  153. </div>
  154. </div>
  155. <div class="people" v-if="item.dateList.isOpen ==1">
  156. <div class="people-items">
  157. <div
  158. class="people-items-num"
  159. v-if="item.dateList && item.dateList.miniNum"
  160. >{{item.dateList.miniNum}}</div>
  161. <div class="people-items-text">最少</div>
  162. </div>
  163. <div class="people-items">
  164. <div
  165. class="people-items-num"
  166. v-if="item.dateList && item.dateList.maxNum"
  167. >{{item.dateList.maxNum}}</div>
  168. <div class="people-items-text">饱和</div>
  169. </div>
  170. <div class="people-items">
  171. <div
  172. class="people-items-num"
  173. :class="[item.dateList.haveNum < item.dateList.miniNum?'num-red':'']"
  174. >{{item.dateList.haveNum}}</div>
  175. <div class="people-items-text">已选</div>
  176. </div>
  177. </div>
  178. </div>
  179. </el-popover>
  180. </div>
  181. </div>
  182. </div>
  183. </div>
  184. </div>
  185. </el-col>
  186. </el-row>
  187. </el-col>
  188. <!-- 下个月排班实施动态 -->
  189. <NextMonthList v-if="NextOrNewMonthStatus.NextOrNewMonthStatus == true"></NextMonthList>
  190. <!-- 添加移除老师弹框 -->
  191. <div class="showModel" @click="allShowModel(3)" v-if="isApporTeacher"></div>
  192. <div class="model" style="width:40%; top:10%;" v-if="isApporTeacher">
  193. <div class="model-text">
  194. <div class="model-text-head">
  195. <div class="teach-block">
  196. <div class="Daylog">
  197. <span>{{month}}月{{today}}日</span>
  198. <!-- {{FindHaveTeacherList}} -->
  199. <span>{{FindHaveTeacherList.arrangeDetail.startInterval}}-{{FindHaveTeacherList.arrangeDetail.endInterval}}</span>
  200. </div>
  201. <div class="Dayteach-Allot">
  202. <input
  203. type="text"
  204. placeholder="请输入老师名字"
  205. v-model="HaveTeacherList.teacherName"
  206. class="Dayinput-with-Allot"
  207. />
  208. <span
  209. @click="SearchFindHaveTeacher()"
  210. style="right:10%;"
  211. class="DaySeachIcon el-icon-search"
  212. ></span>
  213. </div>
  214. <div class>
  215. <span class="tr-slogn">最少:{{FindHaveTeacherList.arrangeDetail.miniNum}}</span>
  216. <span class="tr-slogn">已选:{{FindHaveTeacherList.arrangeDetail.haveNum}}</span>
  217. <span class="tr-slogn">饱和:{{FindHaveTeacherList.arrangeDetail.maxNum}}</span>
  218. </div>
  219. </div>
  220. <div>
  221. <img src="../assets/img/del@2x.png" alt @click="allShowModel(3)" />
  222. </div>
  223. </div>
  224. <div>
  225. <div class="tr-set table-heads2">
  226. <div class="tr-secon1">老师</div>
  227. <div class="tr-secon1">科目</div>
  228. <div class="tr-secon1">出勤率</div>
  229. <div class="tr-secon1">在岗率</div>
  230. <div class="tr-secon1" style="width:25%">当月已选时段</div>
  231. </div>
  232. <div class="abbTeachers" @click="showAddTeacherModel">
  233. <span class="addLogicon">+</span> 添加老师
  234. </div>
  235. <div
  236. class="scrollBox"
  237. v-if="FindHaveTeacherList.list && FindHaveTeacherList.list.length >0"
  238. >
  239. <div
  240. class="tr-set"
  241. :class="{BgcColor:index%2 !== 1}"
  242. v-for="(item, index) of FindHaveTeacherList.list"
  243. :key="index"
  244. >
  245. <div class="tr-secon">
  246. <img :src="BASE_URL + item.photo" alt class="table-img" v-if="item.photo" />
  247. <img src="../assets/img/attt.png" alt v-if="item.photo ==''" class="table-img" />
  248. </div>
  249. <div class="tr-secon tr-sw200">{{item.teacherName}}</div>
  250. <div class="tr-secon tr-sw100">{{item.subject}}</div>
  251. <div class="tr-secon tr-sw100">{{item.attendanceRatio}}%</div>
  252. <div class="tr-secon tr-sw100">{{item.dutyRatio}}%</div>
  253. <div class="tr-secon tr-sw100" style="color:#7297FF">{{item.haveCount }}</div>
  254. <div v-if="item.isEdit==1" class="Buttonhole" @click="detailTeacherTeam(item)">移除</div>
  255. <div v-if="item.isEdit==0" class="NoButtonhole"></div>
  256. </div>
  257. </div>
  258. <div
  259. class="scrollBox"
  260. v-if="FindHaveTeacherList.list && FindHaveTeacherList.list.length <=0"
  261. >
  262. <div class="tr-set">暂无可移除老师!</div>
  263. </div>
  264. </div>
  265. </div>
  266. </div>
  267. <!-- 移除弹框 -->
  268. <div class="showModel" @click="allShowModel(1)" v-if="hiddenModel"></div>
  269. <div class="model" style="width:30%; top:30%;" v-if="hiddenModel">
  270. <div class="model-text">
  271. <div class="model-text-items">
  272. <div>
  273. <img
  274. src="../assets/img/del@2x.png"
  275. alt
  276. @click="allShowModel(1)"
  277. class="model-text-items-close"
  278. />
  279. </div>
  280. <div>是否确定将{{this.DetailteacherName}}老师移除?</div>
  281. </div>
  282. <div class="model-btn">
  283. <div class="model-btn-items main-gay" @click="DetetaiApplyOperate()">是</div>
  284. <div class="model-btn-items model-grdeen" @click="allShowModel(1)">否</div>
  285. </div>
  286. </div>
  287. </div>
  288. <!-- 添加老师弹框 -->
  289. <div class="showModel" @click="allShowModel(4)" v-if="AddTeacherModel"></div>
  290. <div class="model" style="width:40%; top:10%;" v-if="AddTeacherModel">
  291. <div class="model-text">
  292. <div class="model-text-head">
  293. <div class="selectTeacher">选择老师</div>
  294. <div class="teach-block1">
  295. <div class="Dayteach-Allot1">
  296. <input
  297. type="text"
  298. placeholder="请输入老师名字"
  299. v-model="NoHaveTeacherList.teacherName"
  300. class="Dayinput-with-Allot1"
  301. />
  302. <span
  303. @click="SearchNoHaveTeacher()"
  304. style="right:5%; margin-top:15%;"
  305. class="DaySeachIcon el-icon-search"
  306. ></span>
  307. </div>
  308. <div class="tiplogslogn">
  309. <span class="tr-slogn1">最少:{{FindNoHaveTeacherList.arrangeDetail.miniNum}}</span>
  310. <span class="tr-slogn1">饱和:{{FindNoHaveTeacherList.arrangeDetail.maxNum}}</span>
  311. <span class="tr-slogn1">已选:{{FindNoHaveTeacherList.arrangeDetail.haveNum}}</span>
  312. </div>
  313. </div>
  314. <div>
  315. <img src="../assets/img/del@2x.png" alt @click="allShowModel(4)" />
  316. </div>
  317. </div>
  318. <div>
  319. <div class="tr-set table-heads2">
  320. <div class="tr-secon1">老师</div>
  321. <div class="tr-secon1">科目</div>
  322. <div class="tr-secon1">出勤率</div>
  323. <div class="tr-secon1">在岗率</div>
  324. <div class="tr-secon1" style="width:25%">当月已选时段</div>
  325. </div>
  326. <div
  327. class="scrollBox"
  328. v-if="FindNoHaveTeacherList.list && FindNoHaveTeacherList.list.length >0"
  329. >
  330. <div
  331. class="tr-set"
  332. :class="{BgcColor:index%2 !== 1}"
  333. v-for="(item, index) of FindNoHaveTeacherList.list"
  334. :key="index"
  335. >
  336. <div class="tr-secon">
  337. <img :src="BASE_URL + item.photo" alt class="table-img" v-if="item.photo" />
  338. <img src="../assets/img/attt.png" alt v-if="item.photo ==''" class="table-img" />
  339. </div>
  340. <div class="tr-secon tr-sw100">{{item.teacherName}}</div>
  341. <div class="tr-secon tr-sw100">{{item.subject}}</div>
  342. <div class="tr-secon tr-sw100">{{item.attendanceRatio}}%</div>
  343. <div class="tr-secon tr-sw100">{{item.dutyRatio}}%</div>
  344. <div class="tr-secon tr-sw100" style="color:#7297FF">{{item.haveCount}}</div>
  345. <div class="Selectradius">
  346. <img
  347. @click="DetetaiOrAddeacherTeam(item,2)"
  348. v-if="teacherIds.indexOf(item.teacherId) == -1"
  349. class="Littleicon"
  350. src="../assets/img/normal.png"
  351. />
  352. <img
  353. @click="DetetaiOrAddeacherTeam(item,1)"
  354. v-if="teacherIds.indexOf(item.teacherId) != -1"
  355. class="Littleicon"
  356. src="../assets/img/correct -hint.png"
  357. />
  358. </div>
  359. </div>
  360. </div>
  361. <div
  362. class="scrollBox"
  363. v-if="FindNoHaveTeacherList.list && FindNoHaveTeacherList.list.length <=0"
  364. >
  365. <span>暂无可添加老师!</span>
  366. </div>
  367. <div class="btsnius">
  368. <div @click="GetAddArrangeByTeacherStatus()" class="yesBtn">确定</div>
  369. <div @click="allShowModel(4)" class="closeBtn">取消</div>
  370. </div>
  371. </div>
  372. </div>
  373. </div>
  374. </div>
  375. </template>
  376. <script>
  377. import { mapGetters, mapActions } from "vuex";
  378. import { Message } from "element-ui";
  379. import { IMG_BASE_URL } from "@/config";
  380. import NextMonthList from "./NextMonthList.vue";
  381. export default {
  382. name: "model",
  383. components: { NextMonthList },
  384. props: {},
  385. data() {
  386. return {
  387. weekList: ["一", "二", "三", "四", "五", "六", "日"],
  388. //本月的本期构成
  389. BASE_URL: IMG_BASE_URL,
  390. dayarr: [],
  391. // year: new Date().getFullYear(),
  392. D: new Date().getDate() + " ",
  393. Nowyear: new Date().getFullYear(),
  394. Nowmonth: new Date().getMonth() + 1,
  395. NowHours: new Date().getHours(),
  396. NewDay: "",
  397. gardeListDownage: false,
  398. gardeListDown: false,
  399. selecttitlepag: "批改老师",
  400. selecttitleage: "语文",
  401. teacherIds: [],
  402. gridData: [],
  403. DetailteacherName: "",
  404. inputValue: "",
  405. isSelected: false,
  406. isPigai: false,
  407. detetaiTeacherid: [],
  408. isApporTeacher: false, //移除添加老师
  409. hiddenModel: false, //移除弹框
  410. AddTeacherModel: false, //添加老师弹框
  411. current: {}, // 当前时间
  412. calendarList: [], // 排班列表
  413. setCalendarList: [], // 排班设置列表
  414. shareDate: new Date(), // 享元模式,用来做优化的
  415. month: "",
  416. today: "",
  417. filters: {
  418. OptionsValue: 8,
  419. gradesValue: "语文",
  420. inputValue: ""
  421. },
  422. HaveTeacherList: {
  423. Teacherid: "",
  424. teacherName: ""
  425. },
  426. NoHaveTeacherList: {
  427. teacherName: ""
  428. },
  429. options: [
  430. {
  431. value: "0",
  432. label: "匹配知识点",
  433. str: "13"
  434. },
  435. {
  436. value: "1",
  437. label: "批改老师",
  438. str: "8"
  439. }
  440. ],
  441. grades: [
  442. {
  443. value: "0",
  444. label: "语文",
  445. str: "语文"
  446. },
  447. {
  448. value: "1",
  449. label: "数学",
  450. str: "数学"
  451. },
  452. {
  453. value: "2",
  454. label: "英语",
  455. str: "英语"
  456. }
  457. ]
  458. };
  459. },
  460. watch: {
  461. DutyTemplateListSTUS(val, oldVal) {
  462. // debugger
  463. this.Datainit();
  464. },
  465. DeleteArrangeByTeacher(val, oldVal) {
  466. // debugger
  467. this.GetFindCalendarListInfo();
  468. },
  469. AddArrangeByTeacherStatus(val, oldVal) {
  470. // debugger
  471. this.GetFindCalendarListInfo();
  472. },
  473. NextOrNewMonthStatus(val, oldVal) {
  474. // debugger
  475. this.GetFindCalendarListInfo();
  476. }
  477. },
  478. computed: {
  479. ...mapGetters([
  480. "UnallotHomeworkInfo",
  481. "DeleteArrangeByTeacher",
  482. "FindCalendarList",
  483. "FindHaveTeacherList",
  484. "FindNoHaveTeacherList",
  485. "DutyTemplateListSTUS",
  486. "AddArrangeByTeacherStatus",
  487. "NextOrNewMonthStatus"
  488. ])
  489. },
  490. methods: {
  491. //关闭弹框
  492. allShowModel(str) {
  493. let _this = this;
  494. if (str == 1) {
  495. _this.hiddenModel = false;
  496. _this.isApporTeacher = true;
  497. } else if (str == 2) {
  498. _this.isPigai = false;
  499. } else if (str == 3) {
  500. _this.isApporTeacher = false;
  501. } else if (str == 4) {
  502. this.teacherIds = [];
  503. _this.AddTeacherModel = false;
  504. _this.isApporTeacher = true;
  505. } else if (str == 5) {
  506. _this.NoAllotManagerModel = false;
  507. }
  508. },
  509. timeFn(d1) {
  510. //di作为一个变量传进来
  511. //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
  512. var dateBegin = new Date(d1.replace(/-/g, "/")); //将-转化为/,使用new Date
  513. var dateEnd = new Date(); //获取当前时间
  514. var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
  515. var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
  516. var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
  517. var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
  518. //计算相差分钟数
  519. var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
  520. var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
  521. //计算相差秒数
  522. var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
  523. var seconds = Math.round(leave3 / 1000);
  524. return hours;
  525. },
  526. DaytimeFn(d1) {
  527. //di作为一个变量传进来
  528. //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
  529. var dateBegin = new Date(d1.replace(/-/g, "/")); //将-转化为/,使用new Date
  530. var dateEnd = new Date(); //获取当前时间
  531. var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
  532. var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
  533. var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
  534. var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
  535. //计算相差分钟数
  536. var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
  537. var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
  538. //计算相差秒数
  539. var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
  540. var seconds = Math.round(leave3 / 1000);
  541. // return hours
  542. return dayDiff;
  543. },
  544. showdetailModel(item) {
  545. if (!item.prevmonth && !item.nextmonth) {
  546. this.NewDay = item.day;
  547. this.isPigai = true;
  548. }
  549. if (item.prevmonth) {
  550. Message.error("当前月份已关闭,禁止操作!");
  551. }
  552. if (item.nextmonth) {
  553. Message.error("当前月份未开启,禁止操作!");
  554. }
  555. },
  556. //弹框
  557. isShow(str, id, timeFnd, DaytimeFn) {
  558. let _this = this;
  559. if (str == 1) {
  560. if ((timeFnd < -4 && DaytimeFn <= 0) || DaytimeFn < 0) {
  561. _this.isApporTeacher = true;
  562. this.HaveTeacherList.teacherName = "";
  563. this.HaveTeacherList.Teacherid = id;
  564. this.GetFindHaveTeacherListInfo();
  565. } else {
  566. Message.error("请提前4小时开始排班,当前时间已关闭不可操作!");
  567. }
  568. }
  569. },
  570. AddeacherTeam() {
  571. this.isSelected = true;
  572. },
  573. selectTip(item) {
  574. this.filters.OptionsValue = item.str;
  575. this.selecttitlepag = item.label;
  576. this.gardeListDown = false;
  577. this.GetFindCalendarListInfo();
  578. },
  579. selectTipage(item) {
  580. this.filters.gradesValue = item.str;
  581. this.selecttitleage = item.label;
  582. this.gardeListDownage = false;
  583. this.GetFindCalendarListInfo();
  584. },
  585. selectStyle1() {
  586. this.gardeListDownage = true;
  587. },
  588. outStyle1() {
  589. this.gardeListDownage = false;
  590. },
  591. selectStyle() {
  592. this.gardeListDown = true;
  593. },
  594. outStyle() {
  595. this.gardeListDown = false;
  596. },
  597. choiceclass() {
  598. this.gardeListDown = true;
  599. },
  600. SearchNoHaveTeacher() {
  601. this.GetFindNoHaveTeacherListInfo();
  602. },
  603. // 添加老师勾选数组
  604. async DetetaiOrAddeacherTeam(item, type) {
  605. if (type == 1) {
  606. const index = this.teacherIds.indexOf(item.teacherId);
  607. if (index > -1) {
  608. this.teacherIds.splice(index, 1);
  609. }
  610. // item.dateList.isOpen = 1
  611. // this.$set(this.setCalendarList.dateList, Setindex, item);
  612. }
  613. if (type == 2) {
  614. const index = this.teacherIds.indexOf(item.teacherId);
  615. if (index == -1) {
  616. this.teacherIds.push(item.teacherId);
  617. }
  618. console.log(this.teacherIds);
  619. // item.dateList.isOpen = 0
  620. // this.$set(this.setCalendarList.dateList, Setindex, item);
  621. }
  622. },
  623. // 获取校区管理员排班表
  624. async GetFindCalendarListInfo() {
  625. // this.gridData = []
  626. this.$store.dispatch("GetFindCalendarList", {
  627. type: this.filters.OptionsValue,
  628. subject: this.filters.gradesValue,
  629. month: ""
  630. });
  631. },
  632. // 选中时段老师列表
  633. async GetFindHaveTeacherListInfo() {
  634. this.$store.dispatch("GetFindHaveTeacherList", {
  635. id: this.HaveTeacherList.Teacherid,
  636. teacherName: this.HaveTeacherList.teacherName
  637. });
  638. },
  639. // 未选时段老师列表(添加老师)
  640. async GetFindNoHaveTeacherListInfo() {
  641. this.$store.dispatch("GetFindNoHaveTeacherList", {
  642. id: this.HaveTeacherList.Teacherid,
  643. teacherName: this.NoHaveTeacherList.teacherName
  644. });
  645. },
  646. // 时段添加老师
  647. async GetAddArrangeByTeacherStatus() {
  648. // debugger
  649. this.AddTeacherModel = false;
  650. this.$store.dispatch("GetAddArrangeByTeacher", {
  651. id: this.HaveTeacherList.Teacherid,
  652. teacherIds: this.teacherIds
  653. });
  654. },
  655. // 时段移除老师
  656. detailTeacherTeam(item) {
  657. this.DetailteacherName = item.teacherName;
  658. this.isApporTeacher = false;
  659. this.hiddenModel = true;
  660. this.detetaiTeacherid = item.teacherId;
  661. },
  662. // 移除老师
  663. DetetaiApplyOperate() {
  664. this.hiddenModel = false;
  665. this.$store.dispatch("GetDeleteArrangeByTeacher", {
  666. id: this.HaveTeacherList.Teacherid,
  667. teacherId: this.detetaiTeacherid
  668. });
  669. },
  670. showAddTeacherModel() {
  671. this.isApporTeacher = false;
  672. this.AddTeacherModel = true;
  673. this.teacherIds = [];
  674. this.NoHaveTeacherList.teacherName = "";
  675. this.GetFindNoHaveTeacherListInfo();
  676. },
  677. SearchFindHaveTeacher() {
  678. this.GetFindHaveTeacherListInfo();
  679. },
  680. // 日期处理
  681. Datainit() {
  682. // 初始化当前时间
  683. this.setCurrent();
  684. this.calendarCreator();
  685. },
  686. // 切换下月当月排班表
  687. shoeNextOrlastMOntlist(str) {
  688. if (str == 1) {
  689. this.$store.dispatch("NextOrNewMonthAction", {
  690. NextOrNewMonthStatus: true
  691. });
  692. }
  693. },
  694. // 判断当前月有多少天
  695. getDaysByMonth(year, month) {
  696. return new Date(year, month + 1, 0).getDate();
  697. },
  698. getFirstDayByMonths(year, month) {
  699. return new Date(year, month, 1).getDay();
  700. },
  701. getLastDayByMonth(year, month) {
  702. return new Date(year, month + 1, 0).getDay();
  703. },
  704. // 对小于 10 的数字,前面补 0
  705. pad(str) {
  706. return str < 10 ? `0${str}` : str;
  707. },
  708. // 点击上一月
  709. prevMonth() {
  710. this.current.month--;
  711. // 因为 month的变化 会超出 0-11 的范围, 所以需要重新计算
  712. this.correctCurrent();
  713. // 生成新日期
  714. this.calendarCreator();
  715. },
  716. // 点击下一月
  717. nextMonth() {
  718. this.current.month++;
  719. // 因为 month的变化 会超出 0-11 的范围, 所以需要重新计算
  720. this.correctCurrent();
  721. // 生成新日期
  722. this.calendarCreator();
  723. },
  724. // 格式化时间,与主逻辑无关
  725. stringify(year, month, date) {
  726. let str = [year, this.pad(month + 1), this.pad(date)].join("-");
  727. return str;
  728. },
  729. // 排班点击
  730. classSet(k, d, m, intervalList) {
  731. // console.log(k,d,m)
  732. // this.gridData = [];
  733. this.month = m + 1;
  734. this.today = d;
  735. for (var i in this.calendarList) {
  736. this.calendarList[i].status = false;
  737. }
  738. this.calendarList[k].status = !this.calendarList[k].status;
  739. this.gridData = intervalList;
  740. },
  741. // 设置或初始化 current
  742. setCurrent(d = new Date()) {
  743. let year = d.getFullYear();
  744. let month = d.getMonth();
  745. let date = d.getDate();
  746. this.current = {
  747. year,
  748. month,
  749. date
  750. };
  751. },
  752. // 修正 current
  753. correctCurrent() {
  754. let { year, month, date } = this.current;
  755. let maxDate = this.getDaysByMonth(year, month);
  756. // 预防其他月跳转到2月,2月最多只有29天,没有30-31
  757. date = Math.min(maxDate, date);
  758. let instance = new Date(year, month, date);
  759. this.setCurrent(instance);
  760. },
  761. // 生成日期
  762. calendarCreator() {
  763. // 一天有多少毫秒
  764. const oneDayMS = 24 * 60 * 60 * 1000;
  765. let list = [];
  766. let setList = [];
  767. let { year, month } = this.current;
  768. // 当前月份第一天是星期几, 0-6
  769. let firstDay = this.getFirstDayByMonths(year, month);
  770. // 填充多少天
  771. let prefixDaysLen = firstDay === 0 ? 6 : firstDay - 1;
  772. // 毫秒数
  773. let begin = new Date(year, month, 1).getTime() - oneDayMS * prefixDaysLen;
  774. // 当前月份最后一天是星期几, 0-6
  775. let lastDay = this.getLastDayByMonth(year, month);
  776. // 填充多少天, 和星期的排放顺序有关
  777. let suffixDaysLen = lastDay === 0 ? 0 : 7 - lastDay;
  778. // 毫秒数
  779. let end =
  780. new Date(year, month + 1, 0).getTime() + oneDayMS * suffixDaysLen;
  781. // 计算今天几号
  782. let today = new Date().getDate();
  783. // 饱和度
  784. // console.log(today)
  785. while (begin <= end) {
  786. // 享元模式,避免重复 new Date
  787. this.shareDate.setTime(begin);
  788. let year = this.shareDate.getFullYear();
  789. let curMonth = this.shareDate.getMonth();
  790. let date = this.shareDate.getDate();
  791. // console.log(FindCalendarList)
  792. // || date < today
  793. // 排班
  794. list.push({
  795. year: year,
  796. month: curMonth,
  797. date: date,
  798. disable: curMonth !== month,
  799. status: false,
  800. pastDay: date < today && curMonth == month,
  801. value: this.stringify(year, curMonth, date)
  802. });
  803. // 排班设置
  804. setList.push({
  805. year: year,
  806. month: curMonth,
  807. date: date,
  808. status: false,
  809. disable: curMonth !== month,
  810. value: this.stringify(year, curMonth, date)
  811. });
  812. begin += oneDayMS;
  813. }
  814. var that = this;
  815. for (let i = 0; i < list.length; i++) {
  816. if (!list[i].disable) {
  817. const dateValue = list[i].value;
  818. for (let t = 0; t < that.FindCalendarList.list.length; t++) {
  819. if (dateValue == that.FindCalendarList.list[t].arrangeDate) {
  820. list[i].dateList = that.FindCalendarList.list[t];
  821. }
  822. }
  823. } else {
  824. list[i].dateList = {};
  825. }
  826. }
  827. this.calendarList = list;
  828. this.setCalendarList = setList;
  829. }
  830. },
  831. created() {
  832. this.GetFindCalendarListInfo();
  833. },
  834. mounted() {
  835. this.$store.dispatch("NextOrNewMonthAction", {
  836. NextOrNewMonthStatus: false
  837. });
  838. }
  839. };
  840. </script>
  841. <!-- Add "scoped" attribute to limit CSS to this component only -->
  842. <style scoped>
  843. caption,
  844. th {
  845. text-align: center !important;
  846. }
  847. .is-selected {
  848. color: #1989fa;
  849. }
  850. .main {
  851. background-color: #fff;
  852. margin: 16px;
  853. padding: 0 !important;
  854. min-height: 1480px;
  855. }
  856. .selectBox {
  857. position: relative;
  858. float: left;
  859. display: inline-block;
  860. }
  861. .date-btn-active {
  862. background: rgba(114, 151, 255, 0.3);
  863. border: none;
  864. cursor: pointer;
  865. margin-top: 10px;
  866. width: 80px;
  867. height: 30px;
  868. line-height: 30px;
  869. border-radius: 15px;
  870. color: #fff;
  871. }
  872. .date-time-active {
  873. color: #e5e5e5;
  874. }
  875. /* .date-btn-active {
  876. background: rgba(114, 151, 255, 0.3);
  877. border: none;
  878. cursor: pointer;
  879. } */
  880. .Ageclass {
  881. display: inline-block;
  882. height: 40px;
  883. width: 160px;
  884. background-color: #f1f2f4;
  885. line-height: 40px;
  886. font-size: 16px;
  887. cursor: pointer;
  888. }
  889. .class-download {
  890. background-color: #fff;
  891. width: 160px;
  892. z-index: 999999;
  893. position: absolute;
  894. border: 1px solid #e0dddd;
  895. border-radius: 5px;
  896. top: 58px;
  897. }
  898. .class-download ul li {
  899. height: 40px;
  900. line-height: 40px;
  901. text-align: center;
  902. cursor: pointer;
  903. color: #b6b6b6;
  904. }
  905. .class-download ul li:hover {
  906. background-color: #52cc60;
  907. color: #ffff;
  908. }
  909. .teach-block {
  910. display: inline-block;
  911. }
  912. .teach-block1 {
  913. display: inline-block;
  914. width: 100%;
  915. }
  916. .miniorteach-Allot {
  917. float: left;
  918. width: 280px;
  919. position: relative;
  920. height: 40px;
  921. top: 15px;
  922. }
  923. .miinorSeachIcon {
  924. position: absolute;
  925. font-size: 20px;
  926. color: #b6b6b6;
  927. right: 5%;
  928. margin-top: 10px;
  929. cursor: pointer;
  930. }
  931. .miniorinput-with-Allot {
  932. border: #b6b6b6;
  933. border-radius: 5px;
  934. height: 40px;
  935. width: 280px;
  936. font-size: 8px;
  937. color: #b6b6b6;
  938. text-align: left;
  939. line-height: 40px;
  940. background: #f1f2f4;
  941. padding: 0 10px;
  942. float: left;
  943. outline: none !important;
  944. box-shadow: none;
  945. }
  946. .age-tip {
  947. width: 80%;
  948. height: 40px;
  949. color: #747070;
  950. font-size: 12px;
  951. }
  952. * {
  953. margin: 0;
  954. padding: 0;
  955. }
  956. .canlender {
  957. width: 1500px;
  958. height: 400px;
  959. margin: 0 auto;
  960. }
  961. table {
  962. border-collapse: collapse;
  963. width: 100%;
  964. border: 1px solid #e5e5e5;
  965. }
  966. table.bgtable thead tr th {
  967. height: 20px;
  968. text-align: center;
  969. background-color: #f9f9f9;
  970. border: 1px solid #e5e5e5;
  971. cursor: pointer;
  972. }
  973. table.bgtable tbody tr td {
  974. box-sizing: border-box;
  975. border: 1px solid #e5e5e5;
  976. text-align: center;
  977. vertical-align: top;
  978. font-weight: 700;
  979. cursor: pointer;
  980. }
  981. table.bgtable tbody tr td.gray {
  982. color: rgb(175, 166, 166);
  983. /* visibility:hidden; */
  984. background: #ffff;
  985. }
  986. .number {
  987. width: 100%;
  988. height: 100px;
  989. }
  990. .number .numberItem {
  991. width: 100%;
  992. height: 30px;
  993. }
  994. .number .numberItem span {
  995. display: inline-block;
  996. width: 40px;
  997. height: 30px;
  998. /* background-color: #FF6465; */
  999. border-radius: 10px;
  1000. }
  1001. .showModel {
  1002. width: 100%;
  1003. height: 100%;
  1004. position: fixed;
  1005. top: 0;
  1006. left: 0;
  1007. background: #000000;
  1008. opacity: 0.2;
  1009. overflow: hidden;
  1010. z-index: 3000;
  1011. color: #fff;
  1012. }
  1013. .model {
  1014. z-index: 10000;
  1015. height: auto;
  1016. position: fixed;
  1017. left: 30%;
  1018. margin: auto;
  1019. background: #fff;
  1020. border-radius: 10px;
  1021. text-align: center;
  1022. min-width: 450px !important;
  1023. padding: 20px;
  1024. }
  1025. .grayRed {
  1026. color: #ff6465;
  1027. }
  1028. .grayRedBoder {
  1029. color: #fff;
  1030. background-color: #ff6465;
  1031. height: 30px;
  1032. width: 40px;
  1033. display: inline-block;
  1034. border-radius: 15px;
  1035. line-height: 30px;
  1036. }
  1037. .model-text {
  1038. background: rgba(255, 255, 255, 1);
  1039. border-radius: 10px;
  1040. }
  1041. .model-text-head {
  1042. padding: 0 !important;
  1043. display: flex;
  1044. color: #393939;
  1045. font-size: 24px;
  1046. justify-content: space-between;
  1047. }
  1048. .table-heads1 {
  1049. margin-left: 150px !important;
  1050. width: 80%;
  1051. font-weight: 700;
  1052. color: #393939 !important;
  1053. font-size: 18px;
  1054. text-align: center;
  1055. display: flex;
  1056. justify-content: space-around;
  1057. }
  1058. .table-heads2 {
  1059. background-color: #fff;
  1060. margin-left: 110px;
  1061. width: 80%;
  1062. font-weight: 700;
  1063. color: #393939 !important;
  1064. font-size: 18px;
  1065. text-align: center;
  1066. display: flex;
  1067. justify-content: space-around;
  1068. }
  1069. .table-heads1 > div {
  1070. width: 30%;
  1071. }
  1072. .BgcColor {
  1073. background-color: #f7fbfc;
  1074. }
  1075. .tr-secon1 {
  1076. font-size: 12px;
  1077. text-align: center;
  1078. word-wrap: break-word;
  1079. width: 20%;
  1080. line-height: 50px;
  1081. }
  1082. .tr-secon {
  1083. font-size: 12px;
  1084. text-align: center;
  1085. word-wrap: break-word;
  1086. width: 60px;
  1087. line-height: 50px;
  1088. }
  1089. .tr-sw100 {
  1090. width: 13%;
  1091. text-align: center;
  1092. }
  1093. .tr-sw200 {
  1094. width: 13%;
  1095. text-align: center;
  1096. white-space: nowrap;
  1097. overflow: hidden;
  1098. text-overflow: ellipsis;
  1099. padding: 10px;
  1100. line-height: 25px;
  1101. }
  1102. .width120 {
  1103. width: 200px;
  1104. }
  1105. .tr-sw80 {
  1106. width: 120px;
  1107. text-align: center;
  1108. }
  1109. .width140 {
  1110. width: 140px !important;
  1111. }
  1112. .width400 {
  1113. width: 350px;
  1114. padding: 10px;
  1115. text-align: right !important;
  1116. }
  1117. .tiplog {
  1118. height: 100px;
  1119. width: 200px;
  1120. padding: 15px;
  1121. margin: 30px;
  1122. font-size: 25px;
  1123. font-weight: 700;
  1124. margin: 0 auto;
  1125. }
  1126. .Buttonhole {
  1127. cursor: pointer;
  1128. margin-top: 10px;
  1129. width: 80px;
  1130. height: 30px;
  1131. line-height: 30px;
  1132. border-radius: 15px;
  1133. background-color: #7297ff;
  1134. color: #fff;
  1135. }
  1136. .NoButtonhole {
  1137. cursor: pointer;
  1138. margin-top: 10px;
  1139. width: 80px;
  1140. height: 30px;
  1141. line-height: 30px;
  1142. border-radius: 15px;
  1143. color: #fff;
  1144. }
  1145. .table-img {
  1146. width: 36px;
  1147. height: 36px;
  1148. border-radius: 6px;
  1149. /* margin-left: 14px; */
  1150. cursor: pointer;
  1151. }
  1152. .teach-block1 {
  1153. display: inline-block;
  1154. width: 100%;
  1155. }
  1156. .Dayteach-Allot {
  1157. width: 260px;
  1158. position: relative;
  1159. height: 40px;
  1160. top: 15px;
  1161. display: inline-block;
  1162. }
  1163. .Dayteach-Allot1 {
  1164. display: inline-block;
  1165. width: 30%;
  1166. float: left;
  1167. position: relative;
  1168. height: 30px;
  1169. top: 5px;
  1170. }
  1171. .selectTeacher {
  1172. font-size: 12px;
  1173. text-align: left;
  1174. font-weight: 700;
  1175. width: 160px;
  1176. color: #7297ff;
  1177. /* margin-top: 10px; */
  1178. }
  1179. .tiplogslogn {
  1180. display: inline-block;
  1181. float: right;
  1182. margin-top: 0px;
  1183. height: 30px;
  1184. margin-right: 20px;
  1185. }
  1186. .tr-slogn {
  1187. display: inline-block;
  1188. margin-right: 30px;
  1189. font-size: 12px;
  1190. text-align: left;
  1191. float: left;
  1192. font-weight: 700;
  1193. }
  1194. .tr-slogn1 {
  1195. display: inline-block;
  1196. margin-right: 10px;
  1197. font-size: 12px;
  1198. text-align: left;
  1199. float: left;
  1200. font-weight: 700;
  1201. }
  1202. .Daylog {
  1203. font-size: 16px;
  1204. color: #7297ff;
  1205. height: 40px;
  1206. display: inline-block;
  1207. }
  1208. .DaySeachIcon {
  1209. position: absolute;
  1210. font-size: 20px;
  1211. color: #b6b6b6;
  1212. right: 15%;
  1213. margin-top: 10px;
  1214. cursor: pointer;
  1215. }
  1216. .Dayinput-with-Allot {
  1217. border: #b6b6b6;
  1218. border-radius: 20px;
  1219. height: 40px;
  1220. width: 260px;
  1221. font-size: 8px;
  1222. color: #b6b6b6;
  1223. text-align: left;
  1224. line-height: 40px;
  1225. background: #f1f2f4;
  1226. padding: 0 10px;
  1227. float: left;
  1228. outline: none !important;
  1229. box-shadow: none;
  1230. }
  1231. .Dayinput-with-Allot1 {
  1232. margin-top: 20px;
  1233. border: #b6b6b6;
  1234. border-radius: 20px;
  1235. height: 30px;
  1236. width: 200px;
  1237. font-size: 8px;
  1238. color: #b6b6b6;
  1239. text-align: left;
  1240. line-height: 30px;
  1241. background: #f1f2f4;
  1242. padding: 0 10px;
  1243. float: left;
  1244. outline: none !important;
  1245. box-shadow: none;
  1246. }
  1247. .abbTeachers {
  1248. width: 100%;
  1249. height: 40px;
  1250. background-color: #f6f7fb;
  1251. border-radius: 20px;
  1252. text-align: left;
  1253. line-height: 30px;
  1254. font-size: 14px;
  1255. padding: 0 20px;
  1256. margin: 10px 0px;
  1257. cursor: pointer;
  1258. }
  1259. .addLogicon {
  1260. font-size: 30px;
  1261. color: #1989fa;
  1262. margin: 0px 20px;
  1263. }
  1264. .scrollBox {
  1265. height: 400px;
  1266. overflow: auto;
  1267. padding: 0 15px;
  1268. }
  1269. /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
  1270. ::-webkit-scrollbar {
  1271. width: 5px; /*滚动条宽度*/
  1272. height: 15px; /*滚动条高度*/
  1273. }
  1274. /*定义滚动条轨道 内阴影+圆角*/
  1275. ::-webkit-scrollbar-track {
  1276. -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);
  1277. border-radius: 10px; /*滚动条的背景区域的圆角*/
  1278. background-color: #fff; /*滚动条的背景颜色*/
  1279. }
  1280. /*定义滑块 内阴影+圆角*/
  1281. ::-webkit-scrollbar-thumb {
  1282. border-radius: 10px; /*滚动条的圆角*/
  1283. -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);
  1284. background-color: #bcbaba; /*滚动条的背景颜色*/
  1285. }
  1286. .btsnius {
  1287. width: 100%;
  1288. height: 60px;
  1289. }
  1290. .yesBtn {
  1291. margin-right: 30px;
  1292. height: 40px;
  1293. width: 100px;
  1294. background-color: #52cc60;
  1295. border-radius: 10px;
  1296. color: #fff;
  1297. line-height: 40px;
  1298. text-align: center;
  1299. display: inline-block;
  1300. cursor: pointer;
  1301. }
  1302. .closeBtn {
  1303. height: 40px;
  1304. width: 100px;
  1305. background-color: #fff;
  1306. border-radius: 10px;
  1307. color: #52cc60;
  1308. line-height: 40px;
  1309. text-align: center;
  1310. display: inline-block;
  1311. border: 1px solid #52cc60;
  1312. cursor: pointer;
  1313. }
  1314. .model-grdeen {
  1315. background-color: #52cc60;
  1316. color: #fff;
  1317. }
  1318. .model-text-items-close {
  1319. cursor: pointer;
  1320. position: absolute;
  1321. top: 10px;
  1322. right: -5px;
  1323. }
  1324. .model-text-items {
  1325. position: relative;
  1326. color: #000000;
  1327. font-size: 24px;
  1328. text-align: center;
  1329. padding: 40px 0 50px 0;
  1330. margin: 0 33px;
  1331. }
  1332. .model-btn {
  1333. display: flex;
  1334. justify-content: space-around;
  1335. margin-bottom: 44px;
  1336. cursor: pointer;
  1337. }
  1338. .model-btn-items {
  1339. width: 154px;
  1340. height: 50px;
  1341. line-height: 50px;
  1342. text-align: center;
  1343. font-size: 18px;
  1344. border-radius: 4px;
  1345. }
  1346. .main-gay {
  1347. background: rgba(246, 247, 251, 1);
  1348. color: #7e7e7e;
  1349. }
  1350. .Littleicon {
  1351. height: 20px;
  1352. width: 20px;
  1353. position: relative;
  1354. top: 0;
  1355. }
  1356. .date {
  1357. margin-top: 68px;
  1358. }
  1359. .calendar-week {
  1360. border: 1px solid #e5e5e5;
  1361. text-align: center;
  1362. border-right: none;
  1363. display: flex;
  1364. }
  1365. .week-item {
  1366. display: inline-block;
  1367. background: #f9f9f9;
  1368. width: 14.28%;
  1369. border-right: 1px solid #e5e5e5;
  1370. }
  1371. .calendar-inner {
  1372. border-left: 1px solid #e5e5e5;
  1373. }
  1374. .calendar-item {
  1375. cursor: pointer;
  1376. float: left;
  1377. width: 14.28%;
  1378. height: 130px;
  1379. line-height: 130px;
  1380. text-align: center;
  1381. border-bottom: 1px solid #e5e5e5;
  1382. border-right: 1px solid #e5e5e5;
  1383. border-left: 1px solid #e5e5e5;
  1384. }
  1385. .day-setting {
  1386. height: 130px;
  1387. line-height: 130px;
  1388. }
  1389. .calendar-item.disabled {
  1390. /* color: rgba(0, 0, 0, 0.3); */
  1391. color: #ffff;
  1392. }
  1393. .psatchecked {
  1394. color: rgba(0, 0, 0, 0.3);
  1395. opacity: 0.5;
  1396. }
  1397. .checked {
  1398. background: #f6f7fb;
  1399. }
  1400. .date-day {
  1401. font-size: 16px;
  1402. line-height: 60px;
  1403. color: #aaa;
  1404. }
  1405. .num-red {
  1406. background: rgba(255, 100, 101, 1);
  1407. border-radius: 9px;
  1408. color: #fff;
  1409. }
  1410. .people {
  1411. display: flex;
  1412. justify-content: space-around;
  1413. font-size: 14px;
  1414. }
  1415. .people-items {
  1416. display: inline-block;
  1417. line-height: 70px;
  1418. margin-top: 10px;
  1419. }
  1420. .people-items-num {
  1421. line-height: 15px;
  1422. padding: 3px 8px;
  1423. }
  1424. .people-items-text {
  1425. line-height: 30px;
  1426. font-size: 14px;
  1427. font-weight: normal;
  1428. }
  1429. .NextMonthList {
  1430. float: right;
  1431. cursor: pointer;
  1432. margin-top: 20px;
  1433. width: 250px;
  1434. height: 40px;
  1435. border-radius: 20px;
  1436. line-height: 40px;
  1437. background-color: #e7f3ff;
  1438. color: #7297ff;
  1439. font-size: 12px;
  1440. }
  1441. .NextMonthListMax {
  1442. float: right;
  1443. cursor: pointer;
  1444. margin-top: 20px;
  1445. width: 300px;
  1446. height: 40px;
  1447. border-radius: 20px;
  1448. line-height: 40px;
  1449. background-color: #e7f3ff;
  1450. color: #7297ff;
  1451. font-size: 12px;
  1452. }
  1453. </style>