diary.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916
  1. <template>
  2. <div class="diary">
  3. <div class="diary-content">
  4. <!-- 分类与导出 -->
  5. <div class="top" :style="{ marginBottom: !ftypeId ? 0 : 80 + 'px' }">
  6. <div class="oneType">
  7. <div class="all_choose" style="margin: 0;">
  8. <div
  9. @click="clickFtypeId('')"
  10. :class="ftypeId == '' ? 'onTypeTxt' : 'onTypeTxt2'"
  11. style="position: relative;"
  12. >
  13. <span>全部</span>
  14. <!-- <div
  15. class="line"
  16. :style="{ display: ftypeId == '' ? 'block' : 'none' }"
  17. ></div> -->
  18. </div>
  19. </div>
  20. <div
  21. class="all_choose"
  22. v-for="(item, index) in VeidooList"
  23. :key="index"
  24. :style="{ margin: !VeidooJson[item.id].length && 0 }"
  25. >
  26. <!-- 大分类 -->
  27. <div
  28. v-if="VeidooJson[item.id].length"
  29. @click="clickFtypeId(item.id)"
  30. :class="ftypeId == item.id ? 'onTypeTxt' : 'onTypeTxt2'"
  31. style="position: relative"
  32. >
  33. <span>{{ item.name }}</span>
  34. <!-- <div
  35. class="line"
  36. :style="{ display: ftypeId == item.id ? 'block' : 'none' }"
  37. ></div> -->
  38. </div>
  39. <!-- 子分类 -->
  40. <div class="typeCss" v-if="VeidooJson[item.id].length">
  41. <div
  42. v-for="(item1, index1) in VeidooJson[item.id]"
  43. v-if="item1.pid == ftypeId"
  44. :key="index + '-' + index1"
  45. :label="item1.id"
  46. >
  47. <div
  48. class="cName"
  49. @click="clickStypeId(item1.id)"
  50. :class="stypeId == item1.id ? 'twoTypeTxt' : 'twoTypeTxt2'"
  51. >
  52. {{ item1.name }}
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. <div style="display: flex;">
  59. <div class="wordBtn" @click="addRecord">添加记录</div>
  60. <div class="wordBtn" @click="judgeExport">导出Excel</div>
  61. </div>
  62. </div>
  63. <div class="selectSty">
  64. <div style="margin-right: 10px">学期</div>
  65. <el-select v-model="termId" placeholder="请选择" @change="getData">
  66. <el-option label="所有学期" value=""></el-option>
  67. <el-option
  68. v-for="item in termList"
  69. :key="item.id"
  70. :label="item.name"
  71. :value="item.id"
  72. >
  73. </el-option>
  74. </el-select>
  75. </div>
  76. <el-table
  77. ref="multipleTable"
  78. :data="tableData"
  79. tooltip-effect="dark"
  80. style="width: 100%"
  81. border
  82. v-loading="isLoading"
  83. header-align="center"
  84. :header-cell-style="{
  85. background: '#E0EAFB',
  86. color: 'rgba(0, 0, 0, 0.90)'
  87. }"
  88. @selection-change="handleSelectionChange"
  89. >
  90. <el-table-column
  91. type="selection"
  92. align="center"
  93. label="全选"
  94. width="55"
  95. >
  96. </el-table-column>
  97. <el-table-column
  98. prop="create_at"
  99. label="创建时间"
  100. align="center"
  101. width="150"
  102. >
  103. <!-- <template slot-scope="scope">{{ scope.row.date }}</template> -->
  104. </el-table-column>
  105. <el-table-column
  106. prop="recordTit"
  107. label="观察内容"
  108. align="center"
  109. width="170"
  110. show-overflow-tooltip
  111. >
  112. </el-table-column>
  113. <el-table-column
  114. prop="place"
  115. label="观察地点"
  116. align="center"
  117. width="120"
  118. show-overflow-tooltip
  119. >
  120. </el-table-column>
  121. <el-table-column
  122. prop="tname"
  123. label="维度"
  124. align="center"
  125. width="260"
  126. show-overflow-tooltip
  127. >
  128. </el-table-column>
  129. <el-table-column
  130. prop="recordContent"
  131. label="内容"
  132. align="center"
  133. show-overflow-tooltip
  134. >
  135. </el-table-column>
  136. <el-table-column label="操作" align="center" width="185px">
  137. <template slot-scope="scope">
  138. <div class="evaluate">
  139. <div
  140. class="TableBtn"
  141. style="color: #3681fc"
  142. @click="updateCred(scope.row, 0)"
  143. >
  144. 查看
  145. </div>
  146. <div
  147. class="TableBtn"
  148. style="color: #3681fc"
  149. @click="updateCred(scope.row, 1)"
  150. >
  151. 修改
  152. </div>
  153. <div
  154. class="TableBtn"
  155. style="color: #ee3e3e"
  156. @click="delRecord(scope.row)"
  157. >
  158. 删除
  159. </div>
  160. </div>
  161. </template>
  162. </el-table-column>
  163. </el-table>
  164. <!-- 分页 -->
  165. <el-pagination
  166. @current-change="handleCurrentChange"
  167. background
  168. :page-size="10"
  169. layout="prev, pager, next"
  170. :total="total"
  171. class="pagination"
  172. >
  173. </el-pagination>
  174. </div>
  175. <!-- <div v-if="isPop" @click="closePop" class="shade"></div> -->
  176. <!-- v-if="isPop" -->
  177. <el-dialog
  178. :title="judgeNum == 1 ? '修改' : judgeNum == 2 ? '添加' : '查看'"
  179. :visible.sync="isPop"
  180. :append-to-body="true"
  181. width="700px"
  182. :destroy-on-close="true"
  183. :close-on-click-modal="true"
  184. :before-close="closePop"
  185. class="dialog_diy"
  186. >
  187. <popbox
  188. ref="refPop"
  189. :judgeNum="judgeNum"
  190. :recordDataCopy="recordData"
  191. :sUserId="userid"
  192. :termList="termList"
  193. :weiList="weiList"
  194. :studentList="studentList"
  195. @closePop="closePop"
  196. @getData="getData"
  197. @updatePanelB="updatePanelB"
  198. ></popbox>
  199. </el-dialog>
  200. <!-- <el-dialog
  201. title="添加"
  202. :visible.sync="AddIsPop"
  203. :append-to-body="true"
  204. width="700px"
  205. :destroy-on-close="true"
  206. :close-on-click-modal="true"
  207. :before-close="closePop"
  208. class="dialog_diy"
  209. >
  210. 添加新纪录
  211. </el-dialog> -->
  212. </div>
  213. </template>
  214. <script>
  215. import popbox from "./component/popbox";
  216. export default {
  217. components: {
  218. popbox
  219. },
  220. props: {
  221. userid: {
  222. type: String
  223. },
  224. oid: {
  225. type: String
  226. },
  227. org: {
  228. type: String
  229. },
  230. cid: {
  231. type: String
  232. }
  233. },
  234. data() {
  235. return {
  236. // 筛选数据
  237. VeidooList: [],
  238. VeidooJson: {},
  239. VeidooListChild: [],
  240. isLoading: true,
  241. classid: "",
  242. // 当前时间
  243. visitTime: "",
  244. // 学生详情信息
  245. info: {},
  246. // 默认选择项
  247. // VeidooValue:{},
  248. // 默认选择项
  249. termValue: "",
  250. // 学期数据
  251. termList: [],
  252. // 要提交的筛选数据项
  253. Veidoo: "",
  254. VeidooChild: "",
  255. termId: "",
  256. page: 1, //当前页数,默认为第一页
  257. // 本页多少条数
  258. total: 0,
  259. tableData: [],
  260. multipleSelection: [],
  261. // 组件信息数据
  262. isPop: false,
  263. // 添加记录弹窗
  264. AddIsPop: false,
  265. // 查看,修改弹窗数据
  266. recordData: {},
  267. // recordDataCopy: {},
  268. // 维度数据
  269. weiList: [],
  270. // 班级学生数据(包括多个班)
  271. studentList: [],
  272. // 判断显示查看,修改
  273. judgeNum: 0,
  274. ftypeId: "",
  275. stypeId: ""
  276. };
  277. },
  278. // watch: {
  279. // total(newVal, oldVal) {
  280. // this.$emit("updatePanelA", newVal);
  281. // }
  282. // },
  283. methods: {
  284. // 大分类点击
  285. clickFtypeId(e) {
  286. this.ftypeId = e;
  287. this.stypeId = "";
  288. this.page = 1;
  289. this.total = 0;
  290. this.getData();
  291. },
  292. clickStypeId(e) {
  293. // console.log("点击小分类", e);
  294. if (this.stypeId === e) {
  295. this.stypeId = "";
  296. } else {
  297. this.stypeId = e;
  298. }
  299. this.getData();
  300. },
  301. closePop() {
  302. this.isPop = false;
  303. this.AddIsPop = false;
  304. },
  305. // 切换页
  306. handleCurrentChange(val) {
  307. //当页数发生改变的时候调用获取列表数据请求
  308. // console.log(`当前页: ${val}`);
  309. this.page = val;
  310. this.getData();
  311. },
  312. //获取分类
  313. getVeidooType() {
  314. let params = {
  315. org: this.org,
  316. oid: this.oid
  317. };
  318. this.ajax
  319. .get(this.$store.state.api + "selectSTEType", params)
  320. .then(res => {
  321. var ftype = res.data[0]; //公共父级分类
  322. var stype = res.data[1]; //公共子级分类
  323. var sctype = res.data[2]; //该学校子级分类
  324. var fctype = res.data[3]; //该学校父级分类
  325. var fotype = res.data[4]; //组织父级分类
  326. var sotype = res.data[5]; //组织子级分类
  327. var allfType = [];
  328. var allsType = [];
  329. if (fotype.length == 0 && sotype.length == 0) {
  330. if (fctype.length == 0 && sctype.length == 0) {
  331. for (var i = 0; i < ftype.length; i++) {
  332. allfType.push(ftype[i]);
  333. }
  334. for (var i = 0; i < stype.length; i++) {
  335. allsType.push(stype[[i]]);
  336. }
  337. } else {
  338. for (var i = 0; i < fctype.length; i++) {
  339. allfType.push(fctype[i]);
  340. }
  341. for (var i = 0; i < sctype.length; i++) {
  342. allsType.push(sctype[[i]]);
  343. }
  344. }
  345. } else {
  346. for (var i = 0; i < fotype.length; i++) {
  347. allfType.push(fotype[i]);
  348. }
  349. for (var i = 0; i < sotype.length; i++) {
  350. allsType.push(sctysotypepe[[i]]);
  351. }
  352. }
  353. this.ftypeId = "";
  354. this.sftypeId = "";
  355. this.page = 1;
  356. var VeidooJson = {};
  357. for (var i = 0; i < allfType.length; i++) {
  358. if (!VeidooJson[allfType[i].id]) {
  359. VeidooJson[allfType[i].id] = [];
  360. }
  361. for (var j = 0; j < allsType.length; j++) {
  362. if (allfType[i].id == allsType[j].pid) {
  363. VeidooJson[allfType[i].id].push(allsType[j]); // 去除公共分类
  364. }
  365. }
  366. }
  367. this.VeidooList = allfType;
  368. this.VeidooJson = VeidooJson;
  369. this.$forceUpdate();
  370. this.getData();
  371. // console.log("小分类", this.VeidooJson, "大分类", this.VeidooList);
  372. })
  373. .catch(err => {
  374. this.isLoading = false;
  375. console.error(err);
  376. });
  377. },
  378. // 获取数据
  379. getData() {
  380. this.isLoading = true;
  381. let params = {
  382. uid: this.userid,
  383. cid: this.cid,
  384. cu: this.ftypeId,
  385. cn: this.stypeId,
  386. cm: this.termId,
  387. page: this.page
  388. };
  389. // console.log(params);
  390. this.ajax
  391. .get(this.$store.state.api + "selectVeidooType", params)
  392. .then(res => {
  393. this.isLoading = false;
  394. this.tableData = res.data[0];
  395. this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  396. // console.log(" 获取筛选数据", res.data[0]);
  397. })
  398. .catch(err => {
  399. this.isLoading = false;
  400. console.error(err);
  401. });
  402. },
  403. // 选择导出哪些记录
  404. handleSelectionChange(val) {
  405. this.multipleSelection = val;
  406. // console.log(this.multipleSelection);
  407. },
  408. // 获取学生详情,为了添加记录用
  409. // getStuDetail(){
  410. // let params = {
  411. // uid: this.userid
  412. // };
  413. // this.ajax
  414. // .get(this.$store.state.api + "selectSDetail", params)
  415. // .then(res => {
  416. // this.info = res.data[0][0];
  417. // console.log("this.info ", this.info);
  418. // // 用于存储归类后的数据的对象
  419. // })
  420. // .catch(err => {
  421. // console.error(err);
  422. // });
  423. // },
  424. // 添加新纪录
  425. addRecord() {
  426. this.getPresentDate();
  427. this.judgeNum = 2;
  428. this.recordData = {
  429. classId: this.info.classid,
  430. className: this.info.cname,
  431. contact: [],
  432. place: "",
  433. recordContent: "",
  434. recordDate: this.visitTime,
  435. recordImg: [],
  436. recordTit: "",
  437. semName: "",
  438. studentName: this.info.username,
  439. term: this.termValue,
  440. tname: "",
  441. type: ""
  442. };
  443. // this.AddIsPop = true;
  444. this.isPop = true;
  445. },
  446. // 获取当前时间
  447. getPresentDate() {
  448. const currentTime = new Date();
  449. const year = currentTime.getFullYear();
  450. let month = currentTime.getMonth() + 1; // 月份从0开始,因此需要加1
  451. month = (month < 10 ? "0" : "") + month;
  452. let day = currentTime.getDate();
  453. day = (day < 10 ? "0" : "") + day;
  454. let hours = currentTime.getHours();
  455. hours = (hours < 10 ? "0" : "") + hours;
  456. let minutes = currentTime.getMinutes();
  457. minutes = (minutes < 10 ? "0" : "") + minutes;
  458. console.log(year, month, day, hours, minutes);
  459. this.visitTime = `${year}-${month}-${day} ${hours}:${minutes}`;
  460. // console.log(this.visitTime)
  461. },
  462. // 修改与查看记录
  463. updateCred(e, t) {
  464. // console.log("eeeeeeeeeeee", e);
  465. this.judgeNum = t;
  466. if (!Array.isArray(e.type)) {
  467. if (!e.type) {
  468. e.type = [];
  469. } else {
  470. e.type = e.type.split(",");
  471. }
  472. }
  473. if (!Array.isArray(e.contact)) {
  474. if (!e.contact) {
  475. e.contact = [];
  476. } else {
  477. e.contact = e.contact.split(",");
  478. }
  479. }
  480. if (!Array.isArray(e.recordImg)) {
  481. if (!e.recordImg) {
  482. e.recordImg = [];
  483. } else {
  484. e.recordImg = e.recordImg.split(",");
  485. }
  486. }
  487. this.recordData = e;
  488. // console.log('recordData',this.recordData);
  489. this.$forceUpdate();
  490. this.isPop = true;
  491. },
  492. // 获取纬度列表
  493. getWeiList() {
  494. // 获取纬度筛选框
  495. const data = {
  496. oid: this.org,
  497. cla: 0
  498. };
  499. this.ajax.get(this.$store.state.api + "selectVeiDoo", data).then(res => {
  500. // console.log(res);
  501. this.weiList = res.data[0];
  502. // console.log("this.weiList", res);
  503. });
  504. },
  505. // 获取学生详情,主要获取他的班级id,然后查询他的关联列表同学
  506. getStudentDetail() {
  507. const data2 = {
  508. uid: this.userid
  509. };
  510. // console.log("获取班学生列表", data2);
  511. this.ajax
  512. .get(this.$store.state.api + "selectStudentDetail", data2)
  513. .then(res => {
  514. // console.log('学生详情',res.data[0][0]);
  515. this.info = res.data[0][0];
  516. this.classid = res.data[0][0].classid;
  517. this.getClassStudent();
  518. // console.log("this.studentList", res);
  519. });
  520. },
  521. // 获取班学生列表
  522. getClassStudent() {
  523. const data2 = {
  524. cid: this.classid,
  525. uid: this.userid
  526. };
  527. // console.log("获取班学生列表", data2);
  528. this.ajax
  529. .get(this.$store.state.api + "selectManyClassStudent", data2)
  530. .then(res => {
  531. // console.log(res);
  532. this.studentList = res.data[0];
  533. // console.log("this.studentList", res);
  534. });
  535. },
  536. getYear() {
  537. this.isLoading = true;
  538. this.ajax
  539. .get(this.$store.state.api + "selectTerm")
  540. .then(res => {
  541. this.isLoading = false;
  542. var yearJuri = res.data[0];
  543. for (var i = 0; i < yearJuri.length; i++) {
  544. if (yearJuri[i].defaultC == 1) {
  545. this.year = yearJuri[i].id;
  546. }
  547. }
  548. this.termList = yearJuri;
  549. this.termList.forEach(i => {
  550. if (i.defaultC === 1) {
  551. this.termValue = i.id;
  552. }
  553. });
  554. // console.log('termList',this.termList);
  555. })
  556. .catch(err => {
  557. this.isLoading = false;
  558. console.error(err);
  559. });
  560. },
  561. // 判断导出数据
  562. judgeExport() {
  563. // return console.log('导出数据',this.multipleSelection);
  564. if (this.multipleSelection.length) {
  565. this.$confirm("是否导出Excel?", "提示", {
  566. confirmButtonText: "确定",
  567. cancelButtonText: "取消"
  568. })
  569. .then(() => {
  570. this.exportExcel();
  571. })
  572. .catch(() => {});
  573. } else {
  574. this.$message({ message: "请先选择要导出的数据", type: "warning" });
  575. return;
  576. }
  577. },
  578. exportExcel() {
  579. // var res = res.data[0];
  580. var res = this.multipleSelection;
  581. console.log("this.termList", this.termList);
  582. let termName = "";
  583. this.termList.forEach(e => {
  584. if (e.id == this.termId) {
  585. termName = e.name;
  586. }
  587. });
  588. // console.log('导出数据',res);
  589. //如果value的json字段的key值和想要的headers值不一致时,可做如下更改
  590. //将和下面的Object.fromEntries结合,将json字段的key值改变为要求的excel的header值
  591. var array = [];
  592. for (var i = 0; i < res.length; i++) {
  593. var _json = {};
  594. _json["姓名"] = res[i].studentName;
  595. _json["班级"] = res[i].className;
  596. _json["记录时间"] = res[i].recordDate;
  597. _json["学期"] = res[i].semName;
  598. _json["关联"] = res[i].constus;
  599. _json["维度"] = res[i].tname;
  600. _json["观察地点"] = res[i].place;
  601. _json["观察内容"] = res[i].recordTit;
  602. _json["内容"] = res[i].recordContent;
  603. // _json["创建时间"] = res[i].create_at;
  604. array.push(_json);
  605. }
  606. var XLSX = require("xlsx");
  607. const workbook = XLSX.utils.book_new(); //创建一个新的工作簿对象
  608. let ws = XLSX.utils.json_to_sheet(array); //将json对象数组转化成工作表
  609. ws["!cols"] = [
  610. //设置每一列的宽度
  611. { wch: 20 },
  612. { wch: 30 },
  613. { wch: 30 },
  614. { wch: 30 },
  615. { wch: 30 },
  616. { wch: 30 },
  617. { wch: 30 },
  618. { wch: 30 },
  619. { wch: 30 }
  620. ];
  621. if (!termName) {
  622. termName = "所有学期";
  623. }
  624. XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
  625. XLSX.writeFile(workbook, this.info.name + termName + "观察记录.xlsx");
  626. // const wopts = { bookType: "xlsx", bookSST: false, type: "array" };//写入的样式bookType:输出的文件类型,type:输出的数据类型,bookSST: 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
  627. // const wbout = XLSX.write(workbook, wopts);// 浏览器端和node共有的API,实际上node可以直接使用xlsx.writeFile来写入文件,但是浏览器没有该API
  628. // FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }), `${title} demo.xlsx`);//保存文件
  629. this.$message({
  630. message: "导出成功",
  631. type: "success"
  632. });
  633. },
  634. updatePanelB(e) {
  635. // console.log('出嘎',e);
  636. this.$emit("updatePanelA", e);
  637. },
  638. // 删除记录
  639. delRecord(e) {
  640. this.$confirm("是否删除?", "提示", {
  641. confirmButtonText: "确定",
  642. cancelButtonText: "取消"
  643. })
  644. .then(() => {
  645. this.ajax
  646. .post(this.$store.state.api + "updateRecord", [{ rid: e.rid }])
  647. .then(res => {
  648. // console.log(res);
  649. // this.selectData();
  650. this.getData();
  651. this.$emit("updatePanelA", e);
  652. this.$message({
  653. type: "success",
  654. message: "已删除"
  655. });
  656. // this.isLoading = false; updateRecord
  657. });
  658. })
  659. .catch(() => {
  660. this.$message({
  661. type: "info",
  662. message: "已取消删除"
  663. });
  664. });
  665. // return console.log(e);
  666. }
  667. },
  668. created() {
  669. this.getWeiList();
  670. this.getStudentDetail();
  671. // 获取学生详情,为了添加记录用
  672. // this.getStuDetail()
  673. this.getYear();
  674. this.getVeidooType();
  675. },
  676. mounted() {
  677. // this.$nextTick(() => {
  678. // this.selectData();
  679. // });
  680. }
  681. };
  682. </script>
  683. <style scoped>
  684. .dialog_diy {
  685. box-sizing: border-box;
  686. /* padding: 0 10px 10px 10px; */
  687. }
  688. .dialog_diy >>> .el-dialog {
  689. /* height: 100%; */
  690. margin: 10vh auto !important;
  691. }
  692. .dialog_diy >>> .el-dialog__header {
  693. background: #454545 !important;
  694. padding: 15px 20px;
  695. }
  696. .dialog_diy >>> .el-dialog__body {
  697. height: calc(100% - 124px);
  698. box-sizing: border-box;
  699. display: flex;
  700. align-items: center;
  701. flex-direction: column;
  702. justify-content: space-between;
  703. /* padding: 0px; */
  704. }
  705. .dialog_diy >>> .el-dialog__title {
  706. color: #fff;
  707. }
  708. .dialog_diy >>> .el-dialog__headerbtn {
  709. top: 19px;
  710. }
  711. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  712. color: #fff;
  713. }
  714. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  715. color: #fff;
  716. }
  717. .dialog_diy >>> .el-dialog__body,
  718. .dialog_diy >>> .el-dialog__footer {
  719. background: #fafafa;
  720. }
  721. .shade {
  722. position: fixed;
  723. top: 0;
  724. left: 0;
  725. z-index: 3;
  726. width: 100%;
  727. height: 100%;
  728. background-color: rgba(0, 0, 0, 0.5);
  729. }
  730. /* .el-pager li{
  731. background-color: #fff !important;
  732. border: 1px solid #DCDCDC !important;
  733. }
  734. .el-pager li:nth-child(1){
  735. background-color: #fff !important;
  736. border: none !important;
  737. } */
  738. .el-table__cell {
  739. text-align: center !important;
  740. }
  741. .diary {
  742. box-sizing: border-box;
  743. padding: 15px;
  744. height: 100%;
  745. }
  746. .diary > .diary-content {
  747. background-color: #fff;
  748. width: 100%;
  749. height: 100%;
  750. box-sizing: border-box;
  751. padding: 15px;
  752. overflow: auto;
  753. }
  754. .top {
  755. width: 100%;
  756. display: flex;
  757. position: relative;
  758. justify-content: space-between;
  759. align-items: flex-end;
  760. }
  761. .oneType {
  762. position: relative;
  763. display: flex;
  764. justify-content: flex-start;
  765. /* flex-direction: column; */
  766. }
  767. .typeCss {
  768. position: absolute;
  769. top: 120%;
  770. left: 0;
  771. display: flex;
  772. }
  773. .onTypeTxt,
  774. .onTypeTxt2 {
  775. cursor: pointer;
  776. display: flex;
  777. font-size: 16px;
  778. position: relative;
  779. align-items: center;
  780. justify-content: center;
  781. margin-right: 30px;
  782. color: rgba(0, 0, 0, 0.9);
  783. }
  784. .onTypeTxt {
  785. padding-bottom: 10px;
  786. border-bottom: 3px solid #3681fc;
  787. color: rgba(54, 129, 252, 1);
  788. }
  789. .line {
  790. position: absolute;
  791. left: 50%;
  792. transform: translate(-50%, 0);
  793. bottom: 0;
  794. height: 3px;
  795. /* background-color: #3681fc; */
  796. width: 70%;
  797. }
  798. .wordBtn {
  799. cursor: pointer;
  800. background-color: #3681fc;
  801. color: #fff;
  802. width: 100px;
  803. height: 34px;
  804. border-radius: 3px;
  805. display: flex;
  806. justify-content: center;
  807. align-items: center;
  808. margin-left: 15px;
  809. }
  810. .twoType {
  811. position: absolute;
  812. display: flex;
  813. top: 120%;
  814. left: 0;
  815. }
  816. .twoTypeTxt {
  817. cursor: pointer;
  818. box-sizing: border-box;
  819. min-width: 76px;
  820. padding: 0 10px;
  821. height: 34px;
  822. overflow: hidden;
  823. white-space: nowrap;
  824. text-overflow: ellipsis;
  825. color: #fff;
  826. background-color: #3681fc;
  827. border-radius: 3px;
  828. border: 1px solid #e7e7e7;
  829. display: flex;
  830. justify-content: center;
  831. align-items: center;
  832. margin-right: 15px;
  833. }
  834. .twoTypeTxt2 {
  835. cursor: pointer;
  836. box-sizing: border-box;
  837. min-width: 76px;
  838. padding: 0 10px;
  839. height: 34px;
  840. overflow: hidden;
  841. white-space: nowrap;
  842. text-overflow: ellipsis;
  843. color: #000;
  844. border-radius: 3px;
  845. border: 1px solid #e7e7e7;
  846. border-radius: 3px;
  847. display: flex;
  848. justify-content: center;
  849. align-items: center;
  850. margin-right: 15px;
  851. }
  852. .selectSty {
  853. display: flex;
  854. justify-content: flex-start;
  855. align-items: center;
  856. /* margin-top: 60px; */
  857. margin: 10px 10px 40px 0;
  858. }
  859. .evaluate {
  860. text-align: center;
  861. font-family: "Microsoft YaHei";
  862. font-size: 14px;
  863. font-style: normal;
  864. font-weight: 400;
  865. line-height: 22px; /* 157.143% */
  866. display: flex;
  867. justify-content: space-around;
  868. }
  869. .TableBtn {
  870. cursor: pointer;
  871. }
  872. .pagination {
  873. padding: 30px 0;
  874. float: right;
  875. }
  876. </style>