myAnli.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791
  1. <template>
  2. <div class="center_content">
  3. <!-- <div
  4. style="
  5. display: flex;
  6. flex-direction: row;
  7. flex-wrap: nowrap;
  8. justify-content: space-between;
  9. align-items: center;
  10. "
  11. >
  12. <div></div>
  13. <el-button
  14. type="primary"
  15. style="background: rgb(112, 135, 228); width: 100px; margin-right: 3%"
  16. @click="goTo('/addRace')"
  17. >案例设计</el-button
  18. >
  19. </div> -->
  20. <div v-if="!isLoading">
  21. <div class="myAnliBox" v-if="anliBox.length > 0">
  22. <div
  23. :class="{ isAnliAll: an.isAll }"
  24. class="anLi"
  25. v-for="(an, anIndex) in anliBox"
  26. :key="anIndex"
  27. >
  28. <div class="anliTop">
  29. <div class="anliTopLeft">
  30. <div>名称:广东省PBL案例征集</div>
  31. <div>案例组别:{{ an.typename ? an.typename : "暂无分类" }}</div>
  32. </div>
  33. <div class="anliTopRight">创建人:{{ an.name }}</div>
  34. </div>
  35. <div class="anliMiddle">
  36. <div class="anliBox">
  37. <div class="anliImg">
  38. <img
  39. :src="
  40. JSON.parse(an.info).cover &&
  41. JSON.parse(an.info).cover.length
  42. ? JSON.parse(an.info).cover[0].url
  43. : noBanner
  44. "
  45. alt=""
  46. />
  47. </div>
  48. <div class="anliNav">
  49. <div>项目名称:{{ JSON.parse(an.info).title }}</div>
  50. <div>单位:{{ an.schoolName }}</div>
  51. <div>
  52. <div
  53. :class="{ isAll: an.isAll }"
  54. class="xmjj"
  55. v-if="JSON.parse(an.info).courseText"
  56. >
  57. {{ JSON.parse(an.info).courseText }}
  58. </div>
  59. <div v-if="JSON.parse(an.info).courseText.length > 90">
  60. <div
  61. class="selectJj"
  62. @click="selectJj(anIndex, 1)"
  63. v-if="!an.isAll"
  64. >
  65. 展开
  66. <!-- <img src="../../../../assets/icon/expand.png" alt="" /> -->
  67. </div>
  68. <div class="selectJj" @click="selectJj(anIndex, 0)" v-else>
  69. 收缩
  70. <!-- <img src="../../../../assets/icon/fold.png" alt="" /> -->
  71. </div>
  72. </div>
  73. </div>
  74. <div class="personAndAutor">
  75. <div>总人数:</div>
  76. <div class="people">
  77. <div class="man">
  78. <img src="../../../../assets/people.png" alt />
  79. </div>
  80. <div class="person">
  81. {{
  82. an.info
  83. ? JSON.parse(an.info).autor.length +
  84. JSON.parse(an.info).tableData.length
  85. : 0
  86. }}人
  87. </div>
  88. </div>
  89. <div class="autorBox" v-if="JSON.parse(an.info).autor.length">
  90. <div>联系人:</div>
  91. <div
  92. class="Autor"
  93. v-for="(a, aIndex) in JSON.parse(an.info).autor"
  94. :key="aIndex"
  95. >
  96. {{ a.sn }}
  97. </div>
  98. </div>
  99. <div
  100. class="autorBox"
  101. v-if="JSON.parse(an.info).tableData.length"
  102. >
  103. <div>协作者:</div>
  104. <div
  105. class="Autor"
  106. v-for="(a, aIndex) in JSON.parse(an.info).tableData"
  107. :key="aIndex"
  108. >
  109. {{ a.sn }}
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. <div class="anliBottom">
  117. <div style="margin-top: 5px" :class="{ isSubmit: an.state == 1 }">
  118. 当前状态:{{ an.state == 0 ? "未提交" : "已提交" }}
  119. </div>
  120. <div class="bottomRight">
  121. <div
  122. class="rightButton"
  123. @click="updateState(an.id, 0)"
  124. v-if="an.state == 0"
  125. >
  126. 提交
  127. </div>
  128. <div class="rightButton" @click="updateState(an.id, 1)" v-else>
  129. 取消提交
  130. </div>
  131. <div class="rightButton" @click="exportAnli(an)">导出</div>
  132. <!-- <div class="rightButton" @click="goTo('/anliDetail?aid=' + an.id)">
  133. 开始教学
  134. </div> -->
  135. <div class="rightButton" @click="goTo('/addRace?aid=' + an.id)">
  136. 编辑
  137. </div>
  138. <div class="rightButton" @click="deleteAnli(an.id)">删除</div>
  139. <div
  140. class="rightButton"
  141. style="background: #225ac7"
  142. @click="lookDetail(an.id)"
  143. >
  144. 查看详情
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div class="noAnliBox" v-else>
  151. <img src="../../../../assets/icon/race/isNoMessage.png" alt="" />
  152. </div>
  153. </div>
  154. <div class="noAnliBox" style="width: 100%; text-align: center" v-else>
  155. 正在加载数据中,请稍等...
  156. </div>
  157. </div>
  158. </template>
  159. <script>
  160. export default {
  161. props: ["userid", "oid", "type"],
  162. data() {
  163. return {
  164. isLoading: false,
  165. anliBox: [],
  166. noBanner: require("../../../../assets/noBanner.jpg"),
  167. };
  168. },
  169. methods: {
  170. goTo(path) {
  171. this.$router.push(path);
  172. },
  173. selectAnLi() {
  174. this.isLoading = true;
  175. let params = {
  176. uid: this.userid,
  177. t: this.type,
  178. };
  179. this.ajax
  180. .get(this.$store.state.api + "selectRaceList", params)
  181. .then((res) => {
  182. this.isLoading = false;
  183. this.anliBox = res.data[0];
  184. for (var i = 0; i < this.anliBox.length; i++) {
  185. this.anliBox[i].isAll = "";
  186. this.anliBox[i].isAll = false;
  187. }
  188. })
  189. .catch((err) => {
  190. this.isLoading = false;
  191. console.error(err);
  192. });
  193. },
  194. updateState(id, t) {
  195. var a = 0;
  196. if (t == 0) {
  197. a = 1;
  198. }
  199. if (t == 0) {
  200. this.$confirm("确定提交此案例吗?", "提示", {
  201. confirmButtonText: "确定",
  202. cancelButtonText: "取消",
  203. type: "warning",
  204. })
  205. .then(() => {
  206. let paramsa = {
  207. id: id,
  208. s: a,
  209. };
  210. this.ajax
  211. .get(this.$store.state.api + "updateRaceState", paramsa)
  212. .then((res) => {
  213. this.$message({
  214. message: "提交成功",
  215. type: "success",
  216. });
  217. this.selectAnLi();
  218. })
  219. .catch((err) => {
  220. console.error(err);
  221. });
  222. // let params = {
  223. // sid: this.oid,
  224. // };
  225. // this.ajax
  226. // .get(this.$store.state.api + "selectRaceByOid", params)
  227. // .then((res) => {
  228. // if (res.data[0].length == 0) {
  229. // let paramsa = {
  230. // id: id,
  231. // s: a,
  232. // };
  233. // this.ajax
  234. // .get(this.$store.state.api + "updateRaceState", paramsa)
  235. // .then((res) => {
  236. // this.$message({
  237. // message: "提交成功",
  238. // type: "success",
  239. // });
  240. // this.selectAnLi();
  241. // })
  242. // .catch((err) => {
  243. // console.error(err);
  244. // });
  245. // }
  246. // else {
  247. // var inType = [];
  248. // for (var i = 0; i < res.data[0].length; i++) {
  249. // if (inType.length == 0) {
  250. // inType = JSON.parse(res.data[0][i].info).type;
  251. // } else {
  252. // inType += JSON.parse(res.data[0][i].info).type;
  253. // }
  254. // }
  255. // var oldType = [];
  256. // for (var j = 0; j < this.anliBox.length; j++) {
  257. // if (id == this.anliBox[j].id) {
  258. // oldType = JSON.parse(this.anliBox[j].info).type;
  259. // break;
  260. // }
  261. // }
  262. // if (
  263. // res.data[0][0].name != "华南师大附属中学" ||
  264. // res.data[0][0].name != "广东实验中学" ||
  265. // res.data[0][0].name != "华南师大附属小学"
  266. // ) {
  267. // var isIndex = 0;
  268. // for (var k = 0; k < oldType.length; k++) {
  269. // if (inType.indexOf(oldType[k]) != -1) {
  270. // this.$message({
  271. // message: "每校每类别案例限报一项!",
  272. // type: "error",
  273. // });
  274. // isIndex = 1;
  275. // break;
  276. // }
  277. // }
  278. // if (isIndex == 0) {
  279. // let paramsb = {
  280. // id: id,
  281. // s: a,
  282. // };
  283. // this.ajax
  284. // .get(this.$store.state.api + "updateRaceState", paramsb)
  285. // .then((res) => {
  286. // this.$message({
  287. // message: "提交成功",
  288. // type: "success",
  289. // });
  290. // this.selectAnLi();
  291. // })
  292. // .catch((err) => {
  293. // console.error(err);
  294. // });
  295. // }
  296. // } else {
  297. // var isNum = 0;
  298. // for (var z = 0; z < res.data[0].length; z++) {
  299. // for (var p = 0; p < oldType.length; p++) {
  300. // if (
  301. // JSON.parse(res.data[0][z].info).type.indexOf(
  302. // oldType[p]
  303. // ) != -1
  304. // ) {
  305. // isNum++;
  306. // }
  307. // }
  308. // }
  309. // if (isNum < 2) {
  310. // let paramsb = {
  311. // id: id,
  312. // s: a,
  313. // };
  314. // this.ajax
  315. // .get(this.$store.state.api + "updateRaceState", paramsb)
  316. // .then((res) => {
  317. // this.$message({
  318. // message: "提交成功",
  319. // type: "success",
  320. // });
  321. // this.selectAnLi();
  322. // })
  323. // .catch((err) => {
  324. // console.error(err);
  325. // });
  326. // } else {
  327. // this.$message({
  328. // message: "每校每类别案例限报两项!",
  329. // type: "error",
  330. // });
  331. // }
  332. // }
  333. // }
  334. // })
  335. // .catch((err) => {
  336. // console.error(err);
  337. // });
  338. })
  339. .catch(() => {});
  340. } else {
  341. this.$confirm("确定取消提交此案例吗?", "提示", {
  342. confirmButtonText: "确定",
  343. cancelButtonText: "取消",
  344. type: "warning",
  345. })
  346. .then(() => {
  347. let paramsd = {
  348. id: id,
  349. s: a,
  350. };
  351. this.ajax
  352. .get(this.$store.state.api + "updateRaceState", paramsd)
  353. .then((res) => {
  354. this.$message({
  355. message: "取消提交成功",
  356. type: "success",
  357. });
  358. this.selectAnLi();
  359. })
  360. .catch((err) => {
  361. console.error(err);
  362. });
  363. })
  364. .catch(() => {});
  365. }
  366. },
  367. deleteAnli(id) {
  368. this.$confirm("确定删除此案例吗?", "提示", {
  369. confirmButtonText: "确定",
  370. cancelButtonText: "取消",
  371. type: "warning",
  372. })
  373. .then(() => {
  374. let params = {
  375. id: id,
  376. };
  377. this.ajax
  378. .get(this.$store.state.api + "deleteAnli", params)
  379. .then((res) => {
  380. this.$message({
  381. message: "删除成功",
  382. type: "success",
  383. });
  384. this.selectAnLi();
  385. })
  386. .catch((err) => {
  387. console.error(err);
  388. });
  389. })
  390. .catch(() => {});
  391. },
  392. exportAnli(res) {
  393. console.log(res);
  394. let _html = "";
  395. var _title = "<h1>项目基础信息</h1>";
  396. let info = JSON.parse(res.info);
  397. _title += `
  398. <iframe style="display: none;" name="downloadFile"></iframe>
  399. <h2>项目名称:${info.title}</h2>
  400. `;
  401. _title += `<h3>比赛类别:${res.typename}</h3>`;
  402. _title += `<h4>单位:${res.schoolName}</h4>`;
  403. _title += `<div>项目简介:${info.courseText}</div>`;
  404. _title += `<h4>文件:`;
  405. var _div = document.createElement("div");
  406. for (var i = 0; i < info.data.length; i++) {
  407. var _div2 = document.createElement("div");
  408. _div2.innerHTML = ` <a href="JavaScript:void(0)" onclick="downloadFile2('${info.data[i].url}')">${info.data[i].name}</a>`;
  409. _div.appendChild(_div2);
  410. }
  411. _title += `<div>${_div.innerHTML}</div>`;
  412. let overview = JSON.parse(res.overview);
  413. var _overview = "<h1>项目概况</h1>";
  414. var oArray = [
  415. { j: "driQuestion", name: "驱动性问题" },
  416. { j: "tarDesign", name: "学习目标" },
  417. { j: "actiDesign", name: "评价设计" },
  418. // { j: "evaDesign", name: "评价设计" },
  419. // { j: "other", name: "其他补充" },
  420. ];
  421. for (var k = 0; k < oArray.length; k++) {
  422. _overview += `<h2>${oArray[k].name}</h2>`;
  423. // <a :href="`${完整的下载地址}`" onclick="downloadFile2>{{文件名称}}</a>
  424. // <iframe style="display: none;" name="downloadFile"></iframe>
  425. _overview += `<div>${overview[oArray[k].j].brief}</div>`;
  426. var _div = document.createElement("div");
  427. for (var i = 0; i < overview[oArray[k].j].data.length; i++) {
  428. var _div2 = document.createElement("div");
  429. _div2.innerHTML = ` <a href="JavaScript:void(0)" onclick="downloadFile2('${
  430. overview[oArray[k].j].data[i].url
  431. }')">${overview[oArray[k].j].data[i].name}</a>`;
  432. _div.appendChild(_div2);
  433. }
  434. _overview += `<div>${_div.innerHTML}</div>`;
  435. }
  436. let process = JSON.parse(res.process).stageBox;
  437. var _process = "<h1>项目安排</h1>";
  438. for (var pz = 0; pz < process.length; pz++) {
  439. _process += `<h2>阶段${pz + 1}:${process[pz].staTitle}</h2>`;
  440. _process += `<h2>总课时:${process[pz].allTime}</h2>`;
  441. let _act = process[pz].actBox;
  442. for (var z = 0; z < _act.length; z++) {
  443. _process += `<h2>活动${z + 1}</h2>`;
  444. _process += `<h3>活动名称:${_act[z].actName} 课时:${_act[z].actTime}</h3>`;
  445. let pAarray = [
  446. { j: "driQuestion", name: "活动目标" },
  447. { j: "tarDesign", name: "活动内容" },
  448. { j: "actiDesign", name: "预期成果" },
  449. { j: "evaDesign", name: "活动评价" },
  450. ];
  451. for (var i = 0; i < pAarray.length; i++) {
  452. _process += `<h3>${pAarray[i].name}</h3>`;
  453. _process += `<div>描述</div>`;
  454. _process += `<div>${_act[z][pAarray[i].j].brief}</div>`;
  455. _process += `<div>资料补充</div>`;
  456. var _div = document.createElement("div");
  457. for (var c = 0; c < _act[z][pAarray[i].j].data.length; c++) {
  458. var _div2 = document.createElement("div");
  459. _div2.innerHTML = ` <a href="JavaScript:void(0)" onclick="downloadFile2('${
  460. _act[z][pAarray[i].j].data[c].url
  461. }')">${_act[z][pAarray[i].j].data[c].name}</a>`;
  462. _div.appendChild(_div2);
  463. }
  464. _process += `<div>${_div.innerHTML}</div>`;
  465. }
  466. }
  467. }
  468. let _proact = "<h1>项目活动过程</h1>";
  469. for (var pz = 0; pz < process.length; pz++) {
  470. _proact += `<h2>阶段${pz + 1}</h2>`;
  471. _proact += `<h2>描述</h2>`;
  472. _proact += `<div>${process[pz].brief}</div>`;
  473. _proact += `<h4>附件:`;
  474. var _div = document.createElement("div");
  475. for (var i = 0; i < process[pz].data.length; i++) {
  476. var _div2 = document.createElement("div");
  477. _div2.innerHTML = ` <a href="JavaScript:void(0)" onclick="downloadFile2('${process[pz].data[i].url}')">${process[pz].data[i].name}</a>`;
  478. _div.appendChild(_div2);
  479. }
  480. _proact += `<div>${_div.innerHTML}</div>`;
  481. }
  482. let proexc = JSON.parse(res.proexc);
  483. let _proexc = "<h1>项目成果交流与评价</h1>";
  484. _proexc += `<div>描述</div>`;
  485. _proexc += `<div>${proexc.brief}</div>`;
  486. _proexc += `<div>附件</div>`;
  487. var _div = document.createElement("div");
  488. for (var i = 0; i < proexc.data.length; i++) {
  489. var _div2 = document.createElement("div");
  490. _div2.innerHTML = ` <a href="JavaScript:void(0)" onclick="downloadFile2('${proexc.data[i].url}')">${proexc.data[i].name}</a>`;
  491. _div.appendChild(_div2);
  492. }
  493. _proexc += `<div>${_div.innerHTML}</div>`;
  494. let results = JSON.parse(res.results);
  495. let _results = "<h1>项目成效与反思</h1>";
  496. _results += `<div>描述</div>`;
  497. _results += `<div>${results.brief}</div>`;
  498. _results += `<div>附件</div>`;
  499. var _div = document.createElement("div");
  500. for (var i = 0; i < results.data.length; i++) {
  501. var _div2 = document.createElement("div");
  502. _div2.innerHTML = ` <a href="JavaScript:void(0)" onclick="downloadFile2('${results.data[i].url}')">${results.data[i].name}</a>`;
  503. _div.appendChild(_div2);
  504. }
  505. _results += `<div>${_div.innerHTML}</div>`;
  506. // _results += `<h3>项目成效</h3>`;
  507. // _results += `<div>${results.proEffText}</div>`;
  508. // _results += `<h3>项目反思</h3>`;
  509. // _results += `<div>${results.proRefText}</div>`;
  510. _html = _title + _overview + _process + _proact + _proexc + _results;
  511. console.log("_overview", overview);
  512. console.log("_process", process);
  513. console.log("_results", results);
  514. this.generate(_html, { title: info.title, username: res.name });
  515. },
  516. async generate(a, data) {
  517. // 将html文件中需要用到的数据挂载到store上
  518. this.$store.commit("update", ["report", a]);
  519. console.log(this.$store.state.report);
  520. const content =
  521. '<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>报告</title>\n </head> \n <body>' +
  522. this.$store.state.report +
  523. '</body>\n \x3Cscript>\n function downloadFile2(url) {\n let _url = "";\n _url = url;\n const x = new XMLHttpRequest();\n x.open("GET", _url, true);\n x.responseType = "blob";\n x.onload = function (e) {\n let content = x.response;\n let elink = document.createElement("a");\n elink.download = decodeURI(\n _url.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1]\n );\n elink.style.display = "none";\n let blob = new Blob([content]);\n elink.href = URL.createObjectURL(blob);\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n };\n x.send();\n }\n \x3C/script>\n </html>';
  524. // debugger
  525. // 生成报告
  526. const link = document.createElement("a");
  527. let dname = data.title + "-" + data.username + ".html";
  528. // link.download = "报告.html"; // 文件名
  529. link.download = dname; // 文件名
  530. link.style.display = "none";
  531. // 创建文件流
  532. // 创建bolb实例时,内容一定要放在[]中
  533. const blob = new Blob([content], {
  534. type: "text/plain;charset='utf-8'",
  535. });
  536. link.href = window.URL.createObjectURL(blob);
  537. document.body.appendChild(link);
  538. link.click();
  539. document.body.removeChild(link);
  540. },
  541. lookDetail(aid) {
  542. window.open(
  543. window.location.origin +
  544. window.location.pathname +
  545. "/#/anliDetail?aid=" +
  546. aid
  547. );
  548. },
  549. selectJj(i, type) {
  550. if (type == 1) {
  551. this.anliBox[i].isAll = true;
  552. } else {
  553. this.anliBox[i].isAll = false;
  554. }
  555. this.$forceUpdate();
  556. },
  557. },
  558. created() {
  559. this.selectAnLi();
  560. },
  561. };
  562. </script>
  563. <style scoped>
  564. @media screen and (max-width: 1280px) {
  565. .xmjj {
  566. width: 70% !important;
  567. }
  568. .noAnliBox {
  569. width: 300px !important;
  570. }
  571. }
  572. .myAnliBox {
  573. /* height: 500px; */
  574. overflow: auto;
  575. overflow-x: hidden;
  576. height: 100%;
  577. /* box-shadow: inset 0px 14px 7px -14px #b9b9b9; */
  578. }
  579. .center_content {
  580. width: 100%;
  581. height: 100%;
  582. }
  583. .anLi,
  584. .isAnliAll {
  585. background: #fff;
  586. width: 95%;
  587. margin: 20px auto 30px;
  588. border-radius: 10px;
  589. height: auto;
  590. }
  591. /*
  592. .isAnliAll {
  593. height: auto;
  594. } */
  595. .anliTop {
  596. display: flex;
  597. flex-direction: row;
  598. flex-wrap: nowrap;
  599. align-items: center;
  600. justify-content: space-between;
  601. }
  602. .anliTopLeft {
  603. display: flex;
  604. flex-direction: row;
  605. flex-wrap: nowrap;
  606. align-items: center;
  607. color: #afafaf;
  608. padding: 20px 0 10px 30px;
  609. }
  610. .anliTopLeft > div:nth-child(2) {
  611. padding-left: 20px;
  612. }
  613. .anliTopRight {
  614. padding: 20px 30px 10px 0;
  615. }
  616. .anliMiddle {
  617. padding: 0 0 5px 30px;
  618. }
  619. .anliImg {
  620. width: 200px;
  621. height: 115px;
  622. min-width: 200px;
  623. }
  624. .anliImg > img {
  625. width: 100%;
  626. height: 100%;
  627. object-fit: contain;
  628. }
  629. .people {
  630. display: flex;
  631. }
  632. .person {
  633. margin-left: 10px;
  634. line-height: 18px;
  635. }
  636. .man {
  637. width: 16px;
  638. height: 16px;
  639. }
  640. .man > img {
  641. width: 100%;
  642. height: 100%;
  643. }
  644. .anliBox {
  645. display: flex;
  646. flex-direction: row;
  647. flex-wrap: nowrap;
  648. align-items: flex-start;
  649. }
  650. .anliNav {
  651. padding-left: 30px;
  652. width: 100%;
  653. }
  654. .anliNav > div:nth-child(1) {
  655. font-size: 20px;
  656. /* font-weight: bold; */
  657. }
  658. .anliNav > div:nth-child(2) {
  659. /* font-weight: bold; */
  660. margin: 10px 0 10px 0;
  661. }
  662. .anliNav > div:nth-child(3) {
  663. display: flex;
  664. flex-direction: row;
  665. flex-wrap: nowrap;
  666. align-items: flex-start;
  667. }
  668. .xmjj {
  669. color: #aba8a8;
  670. margin-bottom: 10px;
  671. white-space: nowrap;
  672. overflow: hidden;
  673. text-overflow: ellipsis;
  674. width: 80%;
  675. }
  676. .isAll {
  677. color: #aba8a8;
  678. margin-bottom: 10px;
  679. width: 90%;
  680. white-space: unset;
  681. overflow: unset;
  682. text-overflow: unset;
  683. word-break: break-word;
  684. }
  685. .anliBottom {
  686. display: flex;
  687. flex-direction: row;
  688. flex-wrap: nowrap;
  689. align-items: center;
  690. justify-content: space-between;
  691. margin: -10px 10px 0 30px;
  692. padding: 15px 0;
  693. }
  694. .isSubmit {
  695. color: red;
  696. }
  697. .bottomRight {
  698. display: flex;
  699. flex-direction: row;
  700. flex-wrap: nowrap;
  701. align-items: center;
  702. }
  703. .rightButton {
  704. background: #499eef;
  705. color: #fff;
  706. /* width: 60px; */
  707. height: 30px;
  708. text-align: center;
  709. line-height: 30px;
  710. font-size: 14px;
  711. border-radius: 5px;
  712. cursor: pointer;
  713. margin-right: 20px;
  714. padding: 0 15px;
  715. }
  716. .noAnliBox {
  717. width: 500px;
  718. margin: 20px auto;
  719. }
  720. .noAnliBox > img {
  721. width: 100%;
  722. height: 100%;
  723. }
  724. .personAndAutor {
  725. display: flex;
  726. flex-direction: row;
  727. flex-wrap: nowrap;
  728. align-items: center;
  729. }
  730. .autorBox {
  731. display: flex;
  732. flex-direction: row;
  733. flex-wrap: nowrap;
  734. align-items: center;
  735. margin-left: 10px;
  736. }
  737. .Autor {
  738. margin: 0 5px;
  739. }
  740. .selectJj {
  741. cursor: pointer;
  742. color: #ccc;
  743. min-width: 32px;
  744. }
  745. .selectJj > img {
  746. width: 100%;
  747. height: 100%;
  748. }
  749. </style>