diary.vue 25 KB

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