studentDetail.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080
  1. <template>
  2. <!-- 学生详情 -->
  3. <div class="studentDetail" ref="tabs">
  4. <bar :tit="'学生记录'" :backPage="1"></bar>
  5. <div style="height: 50px;"></div>
  6. <!-- 顶部学生信息开始 -->
  7. <div class="top">
  8. <div class="UserInfo" style="flex: 1;">
  9. <div class="sInfo">
  10. <!-- {{ stuDetailList }} -->
  11. <!-- <van-dropdown-menu>
  12. <van-dropdown-item @change="handleUpdateStudent" v-model="studentInfo.userid" :options="stuDetailList" />
  13. </van-dropdown-menu> -->
  14. <div class="userName" @click="cutStuShowBtn">
  15. {{ studentInfo.name }}
  16. <img
  17. style="position: absolute;right: 0px;top: 50%;width: 25px; transform: translate(0,-50%);"
  18. src="../../assets/images/eva/arrow.png"
  19. alt=""
  20. />
  21. <!-- <van-icon size="14px" :name="cutListShow ? 'arrow-left' : 'arrow-down'" /> -->
  22. </div>
  23. <div class="sInfoList" v-if="cutListShow">
  24. <div class="stuBlock">
  25. <div
  26. class="stuCss"
  27. :style="{
  28. background: studentInfo.userid == i.value ? '#3271ae' : '',
  29. color: studentInfo.userid == i.value ? '#fff' : ''
  30. }"
  31. v-for="i in stuDetailList"
  32. @click="cutStu(i.value)"
  33. :key="i.value"
  34. >
  35. {{ i.text }}
  36. </div>
  37. </div>
  38. <!-- <div v-for="i in stuDetailList" :key="i.value">{{ i.text }}</div> -->
  39. </div>
  40. </div>
  41. <div class="cla">{{ studentInfo.cname }}</div>
  42. <!-- <div class="shade"></div> -->
  43. <!-- 遮罩层 -->
  44. <div class="backPage" v-if="isSelectShow" @click="fuClick1"></div>
  45. <!-- <selectStyle
  46. ref="claSel"
  47. @shadeIsShow="shadeIsShow"
  48. @update-search="handleUpdateSearch"
  49. :listCont="termList"
  50. :tit="'请选择学期'"
  51. :choose="termData"
  52. ></selectStyle> -->
  53. </div>
  54. <div class="rig" v-if="!cutListShow">
  55. <div class="topBtnS" v-if="this.stuList.length">
  56. <div>
  57. <div class="btnBack" v-if="num" @click="upStu">
  58. <img class="img" src="../../assets/images/eva/zuo01.png" alt="" />
  59. </div>
  60. <div class="btnBack" v-else>
  61. <img class="img" src="../../assets/images/eva/zuo01.png" alt="" />
  62. </div>
  63. </div>
  64. <div>
  65. <div class="btnBack" v-if="num != stuList.length - 1" @click="nextStu">
  66. <img class="img" src="../../assets/images/eva/you02.png" alt="" />
  67. </div>
  68. <div class="btnBack" v-else>
  69. <img class="img" src="../../assets/images/eva/you02.png" alt="" />
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. <!-- 顶部学生信息结束 -->
  76. <!-- 观察记录开始 -->
  77. <div style="position: relative;top: -15px;" v-if="!cutListShow">
  78. <div class="observe_tit">
  79. <div class="left">
  80. <img class="img" src="../../assets/images/eva/Frame (4).png" alt="" />
  81. <div><span style="margin-right: 5px;">观察记录</span>({{ conList.length }})</div>
  82. </div>
  83. <div class="weiSelectCss">
  84. <van-dropdown-menu>
  85. <van-dropdown-item @change="handleUpdateSearch" v-model="filtrateData" title="维度" :options="filtrate" />
  86. </van-dropdown-menu>
  87. <van-dropdown-menu>
  88. <van-dropdown-item @change="handleUpdateSearch" v-model="termId" title="学期" :options="termList" />
  89. </van-dropdown-menu>
  90. <!-- <img class="img" src="../../assets/images/eva/Frame (5).png" alt="" /> -->
  91. </div>
  92. </div>
  93. <!-- <div class="observe_box">
  94. <div
  95. class="observe_boxCon"
  96. v-for="(i, index) in filtrate"
  97. @click="addFil(i.id, index)"
  98. :class="{ active: activeItem === index }"
  99. :key="index"
  100. >
  101. <div class="txt">{{ i.name }}</div>
  102. </div>
  103. </div>
  104. </div> -->
  105. <!-- 观察内容开始 -->
  106. <van-swipe-cell :swipeable="true" v-show="TermRecord.length" v-for="(i, index) in TermRecord" :key="index">
  107. <div class="observe_content" @click.stop="recordContinue(i.rid)">
  108. <div class="observe_contentTit">
  109. {{ i.recordTit ? i.recordTit : '暂未设置标题' }}
  110. <!-- 观察内容 -->
  111. </div>
  112. <div class="observe_contentBir">
  113. <div>{{ i.username }}</div>
  114. <div>{{ i.recordDate }}</div>
  115. </div>
  116. <div class="observe_contentTxt">
  117. {{ i.recordContent }}
  118. </div>
  119. </div>
  120. <template #right>
  121. <div class="observe_contentDel" @click="delPop(i.rid)">
  122. <img src="../../assets/images/eva/del.png" style="width: 20px;height: 20px;" alt="" />
  123. </div>
  124. <!-- <van-button square text="删除" type="danger" class="delete-button" /> -->
  125. </template>
  126. </van-swipe-cell>
  127. <div v-show="!TermRecord.length" style="width: 100%;height: 10px;background-color: #F0F2F5;"></div>
  128. <div v-show="!TermRecord.length" class="observe_content observe_content2">
  129. <img src="../../assets//images/eva/rqq.png" alt="" />
  130. <div class="tit">暂无内容</div>
  131. <div class="tit2" @click="addRecord">快去添加新记录吧 ></div>
  132. </div>
  133. <!-- 观察内容结束 -->
  134. </div>
  135. <!-- 观察记录结束 -->
  136. <pop v-show="isShowMask">
  137. <template v-slot:tit>确定</template>
  138. <template v-slot:con>确定删除吗</template>
  139. <template v-slot:btn1>
  140. <div class="btn" style="color: rgba(136,136,136,1);" @click="isShowMask = false">取消</div>
  141. </template>
  142. <template v-slot:btn2>
  143. <div class="btn" style="color: rgba(251,67,25,1);" @click="delCon">确认</div>
  144. </template>
  145. </pop>
  146. <!-- 添加记录按钮开始 -->
  147. <div class="addRecord" @click="addRecord">
  148. <img src="../../assets/images/eva/add.png" alt="" />
  149. </div>
  150. <!-- 添加记录按钮结束 -->
  151. </div>
  152. </template>
  153. <script>
  154. import { selectStudentDetail } from '@/api/eva'
  155. import { selectClassStudent } from '@/api/eva'
  156. // import { selectVeiDoo } from '@/api/eva'
  157. import { selectSTEType } from '@/api/eva'
  158. import { selectRecord } from '@/api/eva'
  159. import { selectTerm } from '@/api/eva'
  160. import { updateRecord } from '@/api/eva'
  161. // 单选
  162. // import selectStyle from './components/selectStyle.vue'
  163. import bar from './components/bar.vue'
  164. // 弹窗组件
  165. import pop from './components/pop.vue'
  166. export default {
  167. components: {
  168. bar,
  169. pop
  170. // selectStyle
  171. },
  172. data() {
  173. return {
  174. // value1: 0,
  175. // option1: [
  176. // { text: '全部商品', value: 0 },
  177. // { text: '新款商品', value: 1 },
  178. // { text: '活动商品', value: 2 }
  179. // ],
  180. // 遮罩层
  181. isSelectShow: false,
  182. // 切换学生list
  183. cutListShow: false,
  184. // activeItem: null,
  185. // 这个是本学期总条数,单独写一个是因为他不因为观察记录的选择而改变
  186. conList: [],
  187. // 筛选项
  188. filtrate: [],
  189. // 纬度筛选项选择数据
  190. filtrateData: '',
  191. // 学生信息
  192. studentInfo: {},
  193. // 请求筛选条件
  194. fil: [],
  195. // 班级学生列表,左右切换用
  196. stuList: [],
  197. stuDetailList: [],
  198. // 学生id
  199. stuId: '',
  200. classId: '',
  201. // 传参班级数据
  202. classInfo: this.$route.query,
  203. num: null,
  204. // 弹窗的
  205. isShowMask: false,
  206. delRid: '',
  207. // 学期列表
  208. termList: [],
  209. // 学期筛选框所选择的数据
  210. termId: '',
  211. // 学期重置储存
  212. termData: '',
  213. // 记录渲染数据
  214. TermRecord: [],
  215. timeOutEvent: 0,
  216. scorllTaps: null
  217. }
  218. },
  219. methods: {
  220. // 获取学生信息
  221. getData() {
  222. const data = {
  223. uid: this.stuId
  224. }
  225. selectStudentDetail(data).then(res => {
  226. this.studentInfo = res[0][0]
  227. console.log('获取学生信息', this.studentInfo)
  228. })
  229. // 获取所有学生记录总条数
  230. this.selectCordS()
  231. },
  232. // 获取学期记录总条数
  233. selectCordS() {
  234. const data4 = {
  235. uid: this.stuId,
  236. trm: this.termId,
  237. txt: ''
  238. }
  239. // console.log('data4', data4)
  240. selectRecord(data4).then(res => {
  241. // console.log('获取所有学生记录', res[0])
  242. this.conList = res[0]
  243. })
  244. },
  245. // 获取筛选框
  246. selectVei() {
  247. const data3 = {
  248. org: this.$store.state.user.userinfo.org,
  249. oid: this.$store.state.user.userinfo.organizeid
  250. }
  251. // console.log('获取筛选项22222222', data3)
  252. selectSTEType(data3).then(res => {
  253. // this.filtrate = res[0]
  254. var ftype = res[0] // 公共父级分类
  255. var stype = res[1] // 公共子级分类
  256. var sctype = res[2] // 该学校子级分类
  257. var fctype = res[3] // 该学校父级分类
  258. var fotype = res[4] // 组织父级分类
  259. var sotype = res[5] // 组织子级分类
  260. var allfType = []
  261. var allsType = []
  262. if (fotype.length == 0 && sotype.length == 0) {
  263. if (fctype.length == 0 && sctype.length == 0) {
  264. for (var i = 0; i < ftype.length; i++) {
  265. allfType.push(ftype[i])
  266. }
  267. for (var i = 0; i < stype.length; i++) {
  268. allsType.push(stype[[i]])
  269. }
  270. } else {
  271. for (var i = 0; i < fctype.length; i++) {
  272. allfType.push(fctype[i])
  273. }
  274. for (var i = 0; i < sctype.length; i++) {
  275. allsType.push(sctype[[i]])
  276. }
  277. }
  278. } else {
  279. for (var i = 0; i < fotype.length; i++) {
  280. allfType.push(fotype[i])
  281. }
  282. for (var i = 0; i < sotype.length; i++) {
  283. allsType.push(sctysotypepe[[i]])
  284. }
  285. }
  286. allsType.forEach((e, index) => {
  287. let a = { value: '', text: '' }
  288. a.value = e.id
  289. a.text = e.name
  290. this.filtrate.push(a)
  291. })
  292. this.filtrate.unshift({ value: '', text: '全部' })
  293. // this.filtrate = allsType
  294. // this.filtrate.forEach(e => {
  295. // e.name=text
  296. // e.id=value
  297. // }
  298. console.log('filtrate', this.filtrate)
  299. })
  300. },
  301. // 获取班学生列表
  302. getStuList() {
  303. this.stuList = []
  304. const data2 = {
  305. cid: this.classId
  306. }
  307. selectClassStudent(data2).then(res => {
  308. res[0].forEach(e => {
  309. this.stuList.push(e.id)
  310. })
  311. // console.log('学生列表', res[0])
  312. res[0].forEach(e => {
  313. let a = { value: '', text: '' }
  314. a.value = e.id
  315. a.text = e.name
  316. this.stuDetailList.push(a)
  317. })
  318. // console.log('学生列表', this.stuDetailList)
  319. // console.log('获取班学生列表', this.stuList)
  320. // 查询学生在数组中的位置
  321. this.num = this.stuList.indexOf(this.stuId)
  322. })
  323. },
  324. // 获取学期筛选框
  325. selTerm() {
  326. this.termList = []
  327. selectTerm().then(res => {
  328. console.log('获取学期筛选框', res[0])
  329. res[0].forEach(e => {
  330. if (e.defaultC === 1) {
  331. this.termData = e.id
  332. this.termId = e.id
  333. }
  334. const a = { value: '', text: '' }
  335. a.value = e.id
  336. a.text = e.name
  337. this.termList.push(a)
  338. })
  339. // console.log('this.termData', this.termData)
  340. // this.termList = res[0]
  341. // res[0].forEach((e, index) => {
  342. // var val = { value: '', text: '' }
  343. // val.value = e.id
  344. // val.value.text = e.name
  345. // this.termList.push(val)
  346. // })
  347. // console.log('this.termList', this.termList)
  348. this.getData()
  349. this.getTermRecord()
  350. // 获取左右切换的学生列表
  351. // console.log('this.classId', this.classId)
  352. if (this.classId) {
  353. this.getStuList()
  354. }
  355. // console.log('this.termList', this.termList)
  356. })
  357. },
  358. // 上一个
  359. upStu() {
  360. this.filtrateData = ''
  361. // 判断学生在数组中的位置,获取班学生列表有初始值
  362. // this.activeItem = null
  363. // 刷新学期
  364. // this.termData.splice(0, 1, this.termId)
  365. this.termId = this.termData
  366. this.num = this.num - 1
  367. if (this.num >= 0) {
  368. this.stuId = this.stuList[this.num]
  369. localStorage.setItem('userId', this.stuList[this.num])
  370. this.getTermRecord()
  371. // 更新学生信息
  372. selectStudentDetail({ uid: this.stuId }).then(res => {
  373. this.studentInfo = res[0][0]
  374. })
  375. }
  376. this.selectCordS()
  377. },
  378. // 下一个
  379. nextStu() {
  380. this.filtrateData = ''
  381. // this.activeItem = null
  382. // 刷新学期
  383. // this.termData.splice(0, 1, this.termId)
  384. this.termId = this.termData
  385. this.num = this.num + 1
  386. if (this.num <= this.stuList.length - 1) {
  387. this.stuId = this.stuList[this.num]
  388. // console.log(this.stuId)
  389. localStorage.setItem('userId', this.stuList[this.num])
  390. this.getTermRecord()
  391. selectStudentDetail({ uid: this.stuId }).then(res => {
  392. this.studentInfo = res[0][0]
  393. // console.log(this.studentInfo)
  394. })
  395. }
  396. this.selectCordS()
  397. },
  398. // 左滑动删除弹框显示
  399. delPop(e) {
  400. this.delRid = e
  401. this.isShowMask = true
  402. },
  403. // 删除数据
  404. delCon() {
  405. // return console.log(this.delRid)
  406. const data = [{ rid: this.delRid }]
  407. updateRecord(data).then(res => {
  408. // console.log('删除数据', res)
  409. if (res === 1) {
  410. this.$toast({
  411. message: '删除成功',
  412. type: 'success'
  413. })
  414. this.isShowMask = false
  415. this.getTermRecord()
  416. setTimeout(() => {
  417. this.getData()
  418. }, 500)
  419. } else {
  420. this.$toast({
  421. message: '删除失败',
  422. type: 'fail'
  423. })
  424. }
  425. })
  426. },
  427. // 筛选按钮
  428. // addFil(e, index) {
  429. // // 同一个点击第二次时取消选择
  430. // if (this.activeItem === index) {
  431. // this.activeItem = null
  432. // e = ''
  433. // } else {
  434. // this.activeItem = index
  435. // }
  436. // const data4 = {
  437. // uid: this.stuId,
  438. // trm: this.termData[0],
  439. // txt: e
  440. // }
  441. // // console.log(data4)
  442. // selectRecord(data4).then(res => {
  443. // // console.log('获取所有学生记录', res)
  444. // this.TermRecord = res[0]
  445. // })
  446. // },
  447. // 父组件调用子组件方法,选择学期后关闭select框
  448. fuClick1() {
  449. this.isSelectShow = false
  450. this.cutListShow = false
  451. // this.selectCordS()
  452. // this.$refs.claSel.close()
  453. // this.$refs.weiSel.close()
  454. },
  455. // 子组件调用父组件方法显示遮罩层
  456. shadeIsShow() {
  457. this.isSelectShow = true
  458. },
  459. // 子组件调用父组件,进行学期查询
  460. handleUpdateSearch() {
  461. this.isSelectShow = false
  462. // 获取筛选学生记录
  463. this.getTermRecord()
  464. // 获取学期记录总条数
  465. this.selectCordS()
  466. },
  467. cutStuShowBtn() {
  468. this.cutListShow = true
  469. this.isSelectShow = true
  470. },
  471. cutStu(e) {
  472. this.filtrateData = ''
  473. // this.activeItem = null
  474. // 刷新学期
  475. // this.termData.splice(0, 1, this.termId)
  476. this.termId = this.termData
  477. // this.num = this.num + 1
  478. // if (this.num <= this.stuList.length - 1) {
  479. this.stuId = e
  480. this.num = this.stuList.indexOf(this.stuId)
  481. // console.log(this.stuId)
  482. localStorage.setItem('userId', e)
  483. this.getTermRecord()
  484. selectStudentDetail({ uid: this.stuId }).then(res => {
  485. this.studentInfo = res[0][0]
  486. this.cutListShow = false
  487. this.isSelectShow = false
  488. // console.log(this.studentInfo)
  489. })
  490. // }
  491. this.selectCordS()
  492. },
  493. // handleUpdateStudent() {
  494. // console.log('切换学生')
  495. // this.filtrateData = ''
  496. // // this.activeItem = null
  497. // // 刷新学期
  498. // this.termData.splice(0, 1, this.termId)
  499. // // this.num = this.num + 1
  500. // // if (this.num <= this.stuList.length - 1) {
  501. // this.stuId = this.studentInfo.userid
  502. // // console.log(this.stuId)
  503. // localStorage.setItem('userId', this.studentInfo.userid)
  504. // this.getTermRecord()
  505. // selectStudentDetail({ uid: this.stuId }).then(res => {
  506. // this.studentInfo = res[0][0]
  507. // // console.log(this.studentInfo)
  508. // })
  509. // // }
  510. // this.selectCordS()
  511. // },
  512. // 获取所有学生记录
  513. getTermRecord() {
  514. const data4 = {
  515. uid: this.stuId,
  516. trm: this.termId,
  517. txt: this.filtrateData
  518. }
  519. // return console.log('getTermRecord', data4)
  520. // console.log(' 获取所有学生记录aaaaaaaaaaaaaaaaaaaaaaa', data4)
  521. selectRecord(data4).then(res => {
  522. // console.log('获取所有学生记录', res)
  523. this.TermRecord = res[0]
  524. })
  525. },
  526. // 添加记录按钮跳转
  527. addRecord() {
  528. // this.$router.push(`/studentEvaluate?shareShow=${0}&cid=${this.$route.query.cid}`)
  529. this.$router.push(`/studentEvaluate?shareShow=${0}`)
  530. },
  531. // 已经写过的记录卡片点击跳转
  532. recordContinue(e) {
  533. // this.$router.push(`/studentEvaluate?shareShow=${1}&rid=${e}&cid=${this.$route.query.cid}`)
  534. this.$router.push(`/studentEvaluate?shareShow=${1}&rid=${e}`)
  535. }
  536. // touchStart(e) {
  537. // this.timeOutEvent = setTimeout(() => {
  538. // this.timeOutEvent = 0
  539. // const target = this.$refs.loop[e]
  540. // target.style.display = 'block'
  541. // if (e % 4 !== 0) {
  542. // console.log(0)
  543. // target.style.right = '0'
  544. // }
  545. // }, 500)
  546. // return false
  547. // },
  548. // // 如果手指有移动,则取消所有事件,此时说明用户只是要移动而不是长按
  549. // gtouchmove() {
  550. // clearTimeout(this.timeOutEvent) // 清除定时器
  551. // this.timeOutEvent = 0
  552. // // alert('取消了')
  553. // },
  554. // touchend(e) {
  555. // // 清除定时器
  556. // clearTimeout(this.timeOutEvent)
  557. // console.log(this.timeOutEvent)
  558. // if (this.timeOutEvent !== 0) {
  559. // // 这里写要执行的内容(尤如onclick事件)
  560. // console.log('你这是点击,不是长按')
  561. // } else {
  562. // setTimeout(() => {
  563. // const target = this.$refs.loop[e]
  564. // target.style.display = 'none'
  565. // }, 1000)
  566. // }
  567. // },
  568. // selectRecord(data4).then(res => {
  569. // console.log('获取所有学生记录', res[0])
  570. // this.conList = res[0]
  571. // })
  572. // // this.getTermRecord()
  573. // },
  574. },
  575. // beforeRouteEnter(to, from, next) {
  576. // document.addEventListener(
  577. // 'touchmove',
  578. // function(event) {
  579. // console.log('event', event)
  580. // event.preventDefault()
  581. // },
  582. // false
  583. // )
  584. // next(vm => {})
  585. // },
  586. mounted() {},
  587. created() {
  588. this.stuId = localStorage.getItem('userId')
  589. this.classId = localStorage.getItem('classId')
  590. // console.log(this.classId)
  591. this.selTerm()
  592. // 获取筛选框
  593. this.selectVei()
  594. // console.log('this.$route.query', this.$route.query)
  595. }
  596. }
  597. </script>
  598. <style lang="scss" scoped>
  599. .loopList {
  600. height: 20px;
  601. line-height: 20px;
  602. display: none;
  603. position: absolute;
  604. min-width: 80px;
  605. text-wrap: nowrap;
  606. font-size: 12px;
  607. border-radius: 5px;
  608. padding: 0 5px;
  609. background-color: #309cd6;
  610. top: -80%;
  611. color: #fff;
  612. // left: 0;
  613. }
  614. .btnBack {
  615. background-color: rgba(255, 255, 255, 0.5);
  616. border-radius: 50%;
  617. width: 30px;
  618. height: 30px;
  619. display: flex;
  620. align-items: center;
  621. justify-content: center;
  622. }
  623. .weiSelectCss {
  624. width: 100%;
  625. display: flex;
  626. font-size: 22px !important;
  627. align-items: center;
  628. justify-content: space-between;
  629. box-sizing: border-box;
  630. padding: 5px 15%;
  631. border-bottom: 1px solid #e7e7e7;
  632. }
  633. /deep/.van-dropdown-menu__bar {
  634. box-shadow: none;
  635. // padding-right: 20px;
  636. background: none;
  637. height: 1rem;
  638. // margin-left: 30px !important;
  639. }
  640. /deep/ .van-dropdown-item__content {
  641. border-radius: 0 0 10px 10px;
  642. }
  643. /deep/ .van-ellipsis {
  644. font-size: 14px;
  645. }
  646. /deep/ .van-dropdown-menu__title::after {
  647. border-color: transparent transparent #000 #000;
  648. opacity: 0.5;
  649. }
  650. /deep/ .van-dropdown-menu__title--active::after {
  651. border-color: transparent transparent currentColor currentColor;
  652. }
  653. /deep/ .van-cell__title,
  654. .van-cell__value {
  655. font-weight: normal;
  656. }
  657. /deep/ .van-dropdown-item__option--active .van-dropdown-item__icon {
  658. color: #3b84fc;
  659. }
  660. /deep/ .van-dropdown-item__option--active {
  661. color: #3b84fc;
  662. }
  663. /deep/ .van-dropdown-menu__title {
  664. padding-left: 0;
  665. }
  666. /deep/ .van-dropdown-menu__title--active {
  667. color: #3b84fc;
  668. }
  669. .goods-card {
  670. margin: 0;
  671. background-color: #fff;
  672. }
  673. .backPage {
  674. // background-color: aquamarine;
  675. position: absolute;
  676. top: 0;
  677. left: 0;
  678. width: 100%;
  679. height: 90vh;
  680. z-index: 98;
  681. }
  682. // .shade {
  683. // background-color: #005ccd;
  684. // position: absolute;
  685. // width: 100%;
  686. // height: 100vh;
  687. // }
  688. .delete-button {
  689. height: 100%;
  690. }
  691. .observe_contentDel {
  692. width: 50px;
  693. height: 100%;
  694. display: flex;
  695. justify-content: center;
  696. align-items: center;
  697. background-color: red;
  698. }
  699. .observe_content {
  700. // margin: 0 10px;
  701. width: 100%;
  702. min-height: 100px;
  703. // max-height: 95px;
  704. border-bottom: 1px solid #e7e7e7;
  705. box-sizing: border-box;
  706. padding: 0 15px;
  707. overflow: hidden;
  708. background-color: #fff;
  709. .observe_contentTit {
  710. // line-height: 20px;
  711. box-sizing: border-box;
  712. padding: 8px 0;
  713. font-weight: 550;
  714. color: rgba(16, 16, 16, 1);
  715. font-size: 14px;
  716. text-align: left;
  717. font-family: PingFangSC-regular;
  718. }
  719. .observe_contentBir {
  720. display: flex;
  721. // color: rgba(79, 79, 79, 1);
  722. color: rgba(0, 0, 0, 0.4);
  723. font-size: 10px;
  724. text-align: left;
  725. font-family: PingFangSC-regular;
  726. }
  727. .observe_contentBir :first-child {
  728. margin-right: 10px;
  729. }
  730. .observe_contentTxt {
  731. margin-top: 5px;
  732. // color: rgba(16, 16, 16, 1);
  733. color: rgba(0, 0, 0, 0.6);
  734. font-size: 12px;
  735. text-align: left;
  736. font-family: PingFangSC-regular;
  737. display: -webkit-box;
  738. -webkit-line-clamp: 2;
  739. -webkit-box-orient: vertical;
  740. overflow: hidden;
  741. text-overflow: ellipsis;
  742. }
  743. }
  744. .studentDetail {
  745. width: 100%;
  746. min-height: 100vh;
  747. background-color: #f0f2f5;
  748. overflow: hidden;
  749. // 顶部学生信息开始
  750. .top {
  751. margin: auto;
  752. width: 100vw;
  753. height: 140px;
  754. background-color: #005ccd;
  755. display: flex;
  756. justify-content: space-between;
  757. align-items: center;
  758. box-sizing: border-box;
  759. padding: 0 15px;
  760. color: #fff;
  761. .rig {
  762. display: flex;
  763. // width: 30%;
  764. height: 100%;
  765. justify-content: space-between;
  766. .topBtnS {
  767. width: 90px;
  768. display: flex;
  769. justify-content: space-between;
  770. align-items: center;
  771. .img {
  772. width: 30px;
  773. height: 30px;
  774. }
  775. }
  776. }
  777. .UserInfo {
  778. display: flex;
  779. flex-direction: column;
  780. // height: 55px;
  781. justify-content: space-between;
  782. .sInfo {
  783. position: relative;
  784. display: flex;
  785. margin-bottom: 5px;
  786. /deep/.van-ellipsis {
  787. color: #fff;
  788. font-size: 18px;
  789. }
  790. .userName {
  791. width: 140px;
  792. position: relative;
  793. color: #ffffff;
  794. font-size: 20px;
  795. white-space: nowrap;
  796. overflow: hidden;
  797. text-overflow: ellipsis;
  798. font-family: PingFangSC-regular;
  799. box-sizing: border-box;
  800. padding-right: 35px;
  801. display: flex;
  802. align-items: center;
  803. }
  804. .sInfoList {
  805. position: absolute;
  806. width: 100vw;
  807. bottom: -70px;
  808. transform: translate(0, calc(100% - 65px));
  809. left: -15px;
  810. z-index: 99;
  811. height: 90vh;
  812. color: #000;
  813. // opacity: 0.5;
  814. box-sizing: border-box;
  815. background-color: #fff;
  816. padding-bottom: 80px;
  817. overflow-y: scroll;
  818. .stuBlock {
  819. display: flex;
  820. width: 93%;
  821. margin: auto;
  822. // justify-content: space-between;
  823. flex-wrap: wrap;
  824. .stuCss {
  825. width: calc((100% - 20px) / 3);
  826. height: 30px !important;
  827. margin-top: 10px;
  828. display: flex;
  829. height: 30px;
  830. box-sizing: border-box;
  831. // padding: 4px 5px;
  832. justify-content: center;
  833. align-items: center;
  834. border-radius: 4px;
  835. margin-right: 10px;
  836. background: #f6fafb;
  837. color: rgba(0, 0, 0, 0.9);
  838. font-family: Microsoft YaHei;
  839. font-size: 14px;
  840. font-style: normal;
  841. }
  842. .stuCss:nth-child(3n) {
  843. margin-right: 0;
  844. }
  845. }
  846. }
  847. }
  848. .cla {
  849. overflow: hidden;
  850. width: 100%;
  851. font-weight: 200;
  852. // overflow-wrap: break-word;
  853. white-space: nowrap;
  854. text-overflow: ellipsis;
  855. height: 20px;
  856. line-height: 30px;
  857. font-size: 12px;
  858. color: #ffffff;
  859. }
  860. .dataNum {
  861. // width: 150px;
  862. height: 20px;
  863. line-height: 20px;
  864. color: #fff;
  865. font-size: 16px;
  866. text-align: left;
  867. font-family: PingFangSC-regular;
  868. }
  869. }
  870. }
  871. // 顶部学生信息结束
  872. .left {
  873. display: flex;
  874. align-items: center;
  875. justify-content: center;
  876. font-size: 16px;
  877. .img {
  878. width: 28px;
  879. }
  880. }
  881. // 观察记录开始
  882. .observe_tit {
  883. // position: relative;
  884. // top: -15px;
  885. width: 100%;
  886. box-sizing: border-box;
  887. padding: 10px;
  888. line-height: 20px;
  889. color: rgba(16, 16, 16, 1);
  890. font-size: 14px;
  891. text-align: left;
  892. font-family: PingFangSC-regular;
  893. align-items: center;
  894. border-radius: 15px 15px 0 0;
  895. // transform: translate(0, -10px);
  896. background-color: #fff;
  897. justify-content: space-between;
  898. font-weight: bold;
  899. }
  900. .observe_box {
  901. width: 100%;
  902. line-height: 20px;
  903. background-color: rgba(255, 255, 255, 1);
  904. color: rgba(16, 16, 16, 1);
  905. font-size: 14px;
  906. text-align: center;
  907. font-family: Roboto;
  908. box-sizing: border-box;
  909. padding: 0 10px;
  910. display: flex;
  911. justify-content: flex-start;
  912. flex-wrap: wrap;
  913. .observe_boxCon {
  914. position: relative;
  915. // width: calc(100% / 4 - (5px * 3));
  916. // width: calc(100% / 5);
  917. width: auto;
  918. height: 30px;
  919. border-radius: 4px;
  920. background-color: #fff;
  921. color: rgba(153, 152, 152, 1);
  922. font-size: 12px;
  923. font-family: Roboto;
  924. border: 1px solid rgba(231, 231, 231, 1);
  925. margin-bottom: 8px;
  926. margin-right: 10px;
  927. box-sizing: border-box;
  928. padding: 5px 10px;
  929. display: flex;
  930. justify-content: center;
  931. align-items: center;
  932. .txt {
  933. overflow: hidden;
  934. text-overflow: ellipsis;
  935. white-space: nowrap;
  936. }
  937. }
  938. // .observe_boxCon:nth-child(4n) {
  939. // margin-right: 0;
  940. // }
  941. .active {
  942. background-color: #e0eafb;
  943. color: #0061ff;
  944. }
  945. // .observe_boxSelect {
  946. // width: 100%;
  947. // display: flex;
  948. // justify-content: space-between;
  949. // align-items: center;
  950. // flex-wrap: wrap;
  951. // // height: 100%;
  952. // }
  953. }
  954. // 观察记录结束
  955. // 观察内容开始
  956. .observe_content2 {
  957. margin-top: 10px;
  958. border: none;
  959. height: 250px;
  960. text-align: center;
  961. display: flex;
  962. align-items: center;
  963. flex-direction: column;
  964. justify-content: center;
  965. background-color: #fff;
  966. .tit {
  967. margin: 5px 0;
  968. color: rgba(0, 0, 0, 0.4);
  969. font-family: Microsoft YaHei;
  970. font-size: 14px;
  971. font-style: normal;
  972. font-weight: 700;
  973. }
  974. .tit2 {
  975. color: #3681fc;
  976. font-family: Microsoft YaHei;
  977. font-size: 14px;
  978. font-style: normal;
  979. font-weight: 400;
  980. }
  981. img {
  982. width: 80px;
  983. height: 80px;
  984. }
  985. }
  986. // 观察内容结束
  987. // 添加记录按钮开始
  988. .addRecord {
  989. position: fixed;
  990. bottom: 20px;
  991. right: 10px;
  992. width: 50px;
  993. height: 50px;
  994. border-radius: 50%;
  995. background-color: #fff;
  996. font-size: 14px;
  997. font-family: Microsoft Yahei;
  998. display: flex;
  999. justify-content: center;
  1000. align-items: center;
  1001. box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1);
  1002. img {
  1003. width: 16px;
  1004. height: 16px;
  1005. }
  1006. }
  1007. // 添加记录按钮结束
  1008. }
  1009. </style>