addRace.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800
  1. <template>
  2. <div style="height: 100%; width: 100%; overflow: hidden">
  3. <div class="race_nav">
  4. <div class="first" @click="checkSteps(1)" :class="{ active: steps == 1 }">
  5. <div class="navImg">
  6. <img src="../../../assets/icon/anliDetail/first.png" alt="" />
  7. </div>
  8. <div>课程基础信息</div>
  9. </div>
  10. <div class="first" @click="checkSteps(2)" :class="{ active: steps == 2 }">
  11. <div class="navImg">
  12. <img src="../../../assets/icon/anliDetail/second.png" alt="" />
  13. </div>
  14. <div>项目概况</div>
  15. </div>
  16. <div class="first" @click="checkSteps(3)" :class="{ active: steps == 3 }">
  17. <div class="navImg">
  18. <img src="../../../assets/icon/anliDetail/third.png" alt="" />
  19. </div>
  20. <div>项目安排</div>
  21. </div>
  22. <!-- <div class="first" @click="checkSteps(4)" :class="{ active: steps == 4 }">
  23. <div class="navImg">
  24. <img src="../../../assets/icon/anliDetail/fouth.png" alt="" />
  25. </div>
  26. <div>项目过程记录</div>
  27. </div>
  28. <div class="first" @click="checkSteps(5)" :class="{ active: steps == 5 }">
  29. <div class="navImg">
  30. <img src="../../../assets/icon/anliDetail/five.png" alt="" />
  31. </div>
  32. <div>项目成效</div>
  33. </div>
  34. <div class="first" @click="checkSteps(6)" :class="{ active: steps == 6 }">
  35. <div class="navImg">
  36. <img src="../../../assets/icon/anliDetail/six.png" alt="" />
  37. </div>
  38. <div>项目反思</div>
  39. </div> -->
  40. </div>
  41. <div class="race_body">
  42. <RaceDetail
  43. v-if="steps == 1"
  44. :raceInfo="raceInfo"
  45. @updateTitle="updateRaceInfoTitle"
  46. ></RaceDetail>
  47. <RaceOverview
  48. v-if="steps == 2"
  49. :raceOverView="raceOverView"
  50. @upRaceOver="updateRaceOver"
  51. ></RaceOverview>
  52. <ProjectProcess
  53. @upRacePro="updateRacePro"
  54. :raceProcess="raceProcess"
  55. v-if="steps == 3"
  56. ></ProjectProcess>
  57. <ProjectActpro
  58. @upRaceAct="updateRaceAct"
  59. :raceProcess="raceProcess"
  60. v-if="steps == 4"
  61. ></ProjectActpro>
  62. <ProjectExceva
  63. @upExc="updateProExc"
  64. :raceExceva="raceExceva"
  65. v-if="steps == 5"
  66. ></ProjectExceva>
  67. <ProjectEffect
  68. @upproEff="updateProEff"
  69. :raceEffect="raceEffect"
  70. v-if="steps == 6"
  71. ></ProjectEffect>
  72. </div>
  73. <div class="race_btn">
  74. <el-button type="primary" @click="isGoto">活动信息</el-button>
  75. <div
  76. style="
  77. display: flex;
  78. flex-direction: row;
  79. flex-wrap: nowrap;
  80. align-items: center;
  81. "
  82. >
  83. <el-button type="primary" @click="setTime" v-if="steps == 2"
  84. >跳过</el-button
  85. >
  86. <el-button type="primary" @click="saveRace(1)">保存</el-button>
  87. <el-button type="primary" @click="lastSteps" v-if="steps != 1"
  88. >上一步</el-button
  89. >
  90. <el-button type="primary" @click="nextSteps" v-if="steps != 6"
  91. >下一步</el-button
  92. >
  93. <el-button type="primary" @click="isAddOrUpRace(0)" v-if="steps == 6"
  94. >确认上传</el-button
  95. >
  96. </div>
  97. </div>
  98. <el-dialog
  99. title="提示"
  100. :visible.sync="dialogVisible"
  101. :append-to-body="true"
  102. width="650px"
  103. :before-close="handleClose"
  104. class="dialog_diy"
  105. >
  106. <div class="createBox">
  107. <div class="success">
  108. <img src="../../../assets/icon/success.png" alt="" />
  109. </div>
  110. <div class="cresteMessage">
  111. 案例征集必填内容已完成,请在
  112. <span>"活动管理 > 我的案例"中查看。</span> 你可以点击
  113. <span>"平台实施填报入口"</span> ,提交选填内容。<span
  114. style="color: #9a9a9a"
  115. >(填报后可以运用平台进行教学,调用平台工具,收集过程性数据并生成数据报告。)</span
  116. >
  117. </div>
  118. </div>
  119. <span slot="footer" class="dialog-footer">
  120. <el-button @click="goTo('/eventCenter?steps=' + '2')">取 消</el-button>
  121. <el-button type="primary" @click="goTo('/eventCenter?steps=' + '2')"
  122. >确 定</el-button
  123. >
  124. </span>
  125. </el-dialog>
  126. <el-dialog
  127. title="提示"
  128. :visible.sync="dialogVisible1"
  129. :append-to-body="true"
  130. width="650px"
  131. :before-close="handleClose"
  132. class="dialog_diy"
  133. >
  134. <div class="createBox">
  135. <div class="success">
  136. <img src="../../../assets/icon/success.png" alt="" />
  137. </div>
  138. <div class="cresteMessage">
  139. 您确定要跳过网页端填写吗?<span style="color: #ccc"
  140. >( {{ lastTime + 1 }}秒自动关闭 )</span
  141. >
  142. <div style="color: #9a9a9a; line-height: 25px">
  143. 本次案例征集必填内容已提交,为实现更佳的展示效果,建议您根据平台指引完成网页端资料填写。
  144. </div>
  145. </div>
  146. </div>
  147. <span slot="footer" class="dialog-footer">
  148. <el-button @click="isAddOrUpRace(1)">跳过并保存</el-button>
  149. <el-button type="primary" @click="goNow">继续填写</el-button>
  150. </span>
  151. </el-dialog>
  152. <el-dialog
  153. title="提示"
  154. :visible.sync="dialogVisible2"
  155. :append-to-body="true"
  156. width="650px"
  157. :before-close="handleClose"
  158. class="dialog_diy"
  159. >
  160. <div class="createBox" style="align-items: center">
  161. <div class="success">
  162. <img src="../../../assets/icon/success.png" alt="" />
  163. </div>
  164. <div class="cresteMessage">
  165. 您当前所编辑的内容尚未保存,确定离开当前页吗?
  166. </div>
  167. </div>
  168. <span slot="footer" class="dialog-footer">
  169. <el-button type="primary" @click="dialogVisible2 = false"
  170. >继续填写</el-button
  171. >
  172. <el-button @click="isAddOrUpRace(1)">保存并离开</el-button>
  173. </span>
  174. </el-dialog>
  175. </div>
  176. </template>
  177. <script>
  178. import RaceDetail from "./addRace/raceDetail.vue";
  179. import RaceOverview from "./addRace/raceOverview.vue";
  180. import ProjectProcess from "./addRace/projectProcess.vue";
  181. import ProjectActpro from "./addRace/projectActpro.vue";
  182. import ProjectExceva from "./addRace/projectExceva.vue";
  183. import ProjectEffect from "./addRace/projectEffect.vue";
  184. export default {
  185. components: {
  186. RaceDetail,
  187. RaceOverview,
  188. ProjectProcess,
  189. ProjectActpro,
  190. ProjectExceva,
  191. ProjectEffect,
  192. },
  193. data() {
  194. return {
  195. steps: 1,
  196. userid: this.$store.state.userInfo.userid,
  197. oid: this.$store.state.userInfo.oid,
  198. aid: this.$route.query.aid ? this.$route.query.aid : "",
  199. dialogVisible: false,
  200. dialogVisible1: false,
  201. dialogVisible2: false,
  202. isNoDia: 0,
  203. isJump: 0,
  204. raceInfo: {
  205. title: "",
  206. type: [],
  207. typeOtherName: "",
  208. cover: [],
  209. autor: [],
  210. tableData: [],
  211. courseText: "",
  212. data: [],
  213. },
  214. raceOverView: {
  215. driQuestion: { brief: "", data: [] },
  216. tarDesign: { brief: "", data: [] },
  217. actiDesign: { brief: "", data: [] },
  218. },
  219. raceProcess: {
  220. stageBox: [
  221. {
  222. staTitle: "",
  223. allTime: "",
  224. brief: "",
  225. data: [],
  226. actBox: [
  227. {
  228. actName: "",
  229. actTime: "",
  230. driQuestion: { brief: "", data: [] },
  231. tarDesign: { brief: "", data: [] },
  232. actiDesign: { brief: "", data: [] },
  233. evaDesign: { brief: "", data: [] },
  234. },
  235. ],
  236. },
  237. ],
  238. },
  239. raceExceva: {
  240. brief: "",
  241. data: [],
  242. },
  243. raceEffect: {
  244. brief: "",
  245. data: [],
  246. },
  247. lastTime: 10,
  248. timer: null,
  249. };
  250. },
  251. methods: {
  252. handleClose(done) {
  253. done();
  254. },
  255. goTo(path) {
  256. this.$router.push(path);
  257. },
  258. setTime() {
  259. if (this.timer) {
  260. clearInterval(this.timer);
  261. }
  262. this.timer = null;
  263. this.lastTime = 10;
  264. this.dialogVisible1 = true;
  265. this.timeLoading();
  266. this.timer = setInterval(() => {
  267. if (this.lastTime == 0) {
  268. this.dialogVisible1 = false;
  269. this.timer && this.clearTime();
  270. } else {
  271. this.timeLoading();
  272. }
  273. }, 1000);
  274. },
  275. clearTime() {
  276. clearInterval(this.timer);
  277. this.timer = null;
  278. this.lastTime = 10;
  279. this.steps++;
  280. },
  281. timeLoading() {
  282. this.lastTime -= 1;
  283. // this.timeText = this.lastTime + "秒倒计时自动关闭";
  284. },
  285. goNow() {
  286. if (this.timer) {
  287. clearInterval(this.timer);
  288. }
  289. this.timer = null;
  290. this.lastTime = 5;
  291. this.dialogVisible1 = false;
  292. this.steps++;
  293. },
  294. checkSteps(steps) {
  295. if (steps > 1) {
  296. if (this.raceInfo.title == "") {
  297. this.$message.error("标题不能为空");
  298. return;
  299. } else if (this.raceInfo.type.length == 0) {
  300. // this.$message.error("课程分类不能为空");
  301. this.$message.error("案例组别不能为空");
  302. return;
  303. } else if (this.raceInfo.autor.length == 0) {
  304. this.$message.error("请添加联系人");
  305. return;
  306. } else if (this.raceInfo.courseText == "") {
  307. this.$message.error("请填写项目简介");
  308. return;
  309. } else if (this.raceInfo.data.length == 0) {
  310. this.$message.error("上传文件不能为空");
  311. return;
  312. } else if (this.raceInfo.type.length > 0) {
  313. var t = 1;
  314. var a = [
  315. "24d162b0-d030-11ec-8c78-005056b86db5",
  316. "264bd103-d030-11ec-8c78-005056b86db5",
  317. "28d2c456-d030-11ec-8c78-005056b86db5",
  318. "2ad17d24-d030-11ec-8c78-005056b86db5",
  319. ];
  320. for (var i = 0; i < this.raceInfo.type.length; i++) {
  321. if (t == 1) {
  322. if (this.raceInfo.type[i] != "") {
  323. if (a.indexOf(this.raceInfo.type[i]) == -1) {
  324. console.log(this.raceInfo.type[i]);
  325. } else {
  326. t = 2;
  327. }
  328. }
  329. }
  330. }
  331. if (t == 1) {
  332. this.$message.error("案例组别不能为空");
  333. return;
  334. } else if (t == 2) {
  335. this.steps = steps;
  336. }
  337. // this.$message.error("课程分类不能为空");
  338. }
  339. // else {
  340. // this.steps = steps;
  341. // }
  342. // else if (this.raceInfo.tableData.length == 0) {
  343. // this.$message.error("请添加协作者");
  344. // return;
  345. // }
  346. } else {
  347. this.steps = steps;
  348. }
  349. },
  350. nextSteps() {
  351. if (this.steps == 1) {
  352. if (this.raceInfo.title == "") {
  353. this.$message.error("标题不能为空");
  354. return;
  355. } else if (this.raceInfo.type.length == 0) {
  356. // this.$message.error("课程分类不能为空");
  357. this.$message.error("案例组别不能为空");
  358. return;
  359. } else if (this.raceInfo.autor.length == 0) {
  360. this.$message.error("请添加联系人");
  361. return;
  362. } else if (this.raceInfo.courseText == "") {
  363. this.$message.error("请填写项目简介");
  364. return;
  365. } else if (this.raceInfo.data.length == 0) {
  366. this.$message.error("上传文件不能为空");
  367. return;
  368. } else if (this.raceInfo.type.length > 0) {
  369. var t = 1;
  370. var a = [
  371. "24d162b0-d030-11ec-8c78-005056b86db5",
  372. "264bd103-d030-11ec-8c78-005056b86db5",
  373. "28d2c456-d030-11ec-8c78-005056b86db5",
  374. "2ad17d24-d030-11ec-8c78-005056b86db5",
  375. ];
  376. for (var i = 0; i < this.raceInfo.type.length; i++) {
  377. if (t == 1) {
  378. if (this.raceInfo.type[i] != "") {
  379. if (a.indexOf(this.raceInfo.type[i]) == -1) {
  380. } else {
  381. t = 2;
  382. }
  383. }
  384. }
  385. }
  386. if (t == 1) {
  387. this.$message.error("案例组别不能为空");
  388. return;
  389. } else if (t == 2) {
  390. if (this.timer) {
  391. clearInterval(this.timer);
  392. }
  393. this.timer = null;
  394. this.lastTime = 5;
  395. this.dialogVisible1 = true;
  396. this.setTime();
  397. // setTimeout(() => {
  398. // this.dialogVisible1 = false;
  399. // this.steps++;
  400. // }, 5000);
  401. // this.steps++;
  402. }
  403. // this.$message.error("课程分类不能为空");
  404. }
  405. } else {
  406. this.steps++;
  407. }
  408. // else if(2 <= this.steps < 6) {
  409. // this.dialogVisible1 = true;
  410. // this.steps++;
  411. // }
  412. // this.isAddOrUpRace1(3);
  413. },
  414. lastSteps() {
  415. this.steps--;
  416. },
  417. goTo(path) {
  418. this.$router.push(path);
  419. },
  420. updateRaceInfoTitle(raceInfo) {
  421. this.raceInfo = raceInfo;
  422. },
  423. updateRaceOver(raceOver) {
  424. this.raceOverView = raceOver;
  425. },
  426. updateRacePro(racePro) {
  427. this.raceProcess = racePro;
  428. },
  429. updateRaceAct(raceAct) {
  430. this.raceProcess = raceAct;
  431. },
  432. updateProEff(raceEff) {
  433. this.raceEffect = raceEff;
  434. },
  435. updateProExc(raceExc) {
  436. this.raceExceva = raceExc;
  437. },
  438. isAddOrUpRace(q) {
  439. if (this.raceInfo.title == "") {
  440. this.$message.error("标题不能为空");
  441. return;
  442. } else if (this.raceInfo.type.length == 0) {
  443. // this.$message.error("课程分类不能为空");
  444. this.$message.error("案例组别不能为空");
  445. return;
  446. } else if (this.raceInfo.autor.length == 0) {
  447. this.$message.error("请添加联系人");
  448. return;
  449. } else if (this.raceInfo.courseText == "") {
  450. this.$message.error("请填写项目简介");
  451. return;
  452. } else if (this.raceInfo.data.length == 0) {
  453. this.$message.error("上传文件不能为空");
  454. return;
  455. } else if (this.raceInfo.type.length > 0) {
  456. var t = 1;
  457. var a = [
  458. "24d162b0-d030-11ec-8c78-005056b86db5",
  459. "264bd103-d030-11ec-8c78-005056b86db5",
  460. "28d2c456-d030-11ec-8c78-005056b86db5",
  461. "2ad17d24-d030-11ec-8c78-005056b86db5",
  462. ];
  463. for (var i = 0; i < this.raceInfo.type.length; i++) {
  464. if (t == 1) {
  465. if (this.raceInfo.type[i] != "") {
  466. if (a.indexOf(this.raceInfo.type[i]) == -1) {
  467. } else {
  468. t = 2;
  469. }
  470. }
  471. }
  472. }
  473. if (t == 1) {
  474. this.$message.error("案例组别不能为空");
  475. return;
  476. } else if (t == 2) {
  477. this.isJump = q;
  478. if (this.aid == "" || this.aid == undefined) {
  479. this.addRace();
  480. } else {
  481. this.updateRace();
  482. }
  483. }
  484. // this.$message.error("课程分类不能为空");
  485. }
  486. },
  487. saveRace(noDia) {
  488. this.isNoDia = noDia;
  489. if (this.aid == "" || this.aid == undefined) {
  490. this.isAddOrUpRace(0);
  491. // this.addRace();
  492. } else {
  493. this.updateRace();
  494. }
  495. },
  496. isAddOrUpRace1(t) {
  497. this.isJump = t;
  498. if (this.aid == "" || this.aid == undefined) {
  499. this.addRace();
  500. } else {
  501. this.updateRace();
  502. }
  503. },
  504. addRace() {
  505. let params = [
  506. {
  507. uid: this.userid,
  508. info: JSON.stringify(this.raceInfo).replace(/%/g, "%25"),
  509. over: JSON.stringify(this.raceOverView).replace(/%/g, "%25"),
  510. pro: JSON.stringify(this.raceProcess).replace(/%/g, "%25"),
  511. act: JSON.stringify(this.raceProcess).replace(/%/g, "%25"),
  512. exc: JSON.stringify(this.raceExceva).replace(/%/g, "%25"),
  513. courseType: JSON.stringify(this.raceInfo.type).replace(/%/g, "%25"),
  514. res: JSON.stringify(this.raceEffect).replace(/%/g, "%25"),
  515. },
  516. ];
  517. this.ajax
  518. .post(this.$store.state.api + "addRace", params)
  519. .then((res) => {
  520. this.aid = res.data.courseId;
  521. if (this.isJump == 0) {
  522. if (this.isNoDia == 0) {
  523. this.dialogVisible = true;
  524. this.$message({
  525. message: "新增成功",
  526. type: "success",
  527. });
  528. } else {
  529. this.$message({
  530. message: "保存成功",
  531. type: "success",
  532. });
  533. this.isNoDia = 0;
  534. }
  535. } else if (this.isJump == 1) {
  536. if (this.isNoDia == 0) {
  537. this.$message({
  538. message: "新增成功",
  539. type: "success",
  540. });
  541. this.goTo("/eventCenter?steps=" + "2");
  542. this.dialogVisible1 = false;
  543. } else {
  544. this.$message({
  545. message: "保存成功",
  546. type: "success",
  547. });
  548. this.isNoDia = 0;
  549. }
  550. } else {
  551. console.log("下一步");
  552. }
  553. })
  554. .catch((err) => {
  555. this.$message.error("网络不佳");
  556. console.error(err);
  557. });
  558. },
  559. updateRace() {
  560. let params = [
  561. {
  562. id: this.aid,
  563. info: JSON.stringify(this.raceInfo).replace(/%/g, "%25"),
  564. over: JSON.stringify(this.raceOverView).replace(/%/g, "%25"),
  565. pro: JSON.stringify(this.raceProcess).replace(/%/g, "%25"),
  566. act: JSON.stringify(this.raceProcess).replace(/%/g, "%25"),
  567. exc: JSON.stringify(this.raceExceva).replace(/%/g, "%25"),
  568. res: JSON.stringify(this.raceEffect).replace(/%/g, "%25"),
  569. courseType: JSON.stringify(this.raceInfo.type).replace(/%/g, "%25"),
  570. uid: this.userid,
  571. },
  572. ];
  573. this.ajax
  574. .post(this.$store.state.api + "updateRace", params)
  575. .then((res) => {
  576. if (this.isJump == 0) {
  577. if (this.isNoDia == 0) {
  578. this.dialogVisible = true;
  579. this.$message({
  580. message: "修改成功",
  581. type: "success",
  582. });
  583. } else {
  584. this.$message({
  585. message: "保存成功",
  586. type: "success",
  587. });
  588. this.isNoDia = 0;
  589. }
  590. } else if (this.isJump == 1) {
  591. if (this.isNoDia == 0) {
  592. this.$message({
  593. message: "修改成功",
  594. type: "success",
  595. });
  596. this.goTo("/eventCenter?steps=" + "2");
  597. this.dialogVisible1 = false;
  598. } else {
  599. this.$message({
  600. message: "保存成功",
  601. type: "success",
  602. });
  603. this.isNoDia = 0;
  604. }
  605. } else {
  606. console.log("下一步");
  607. }
  608. })
  609. .catch((err) => {
  610. this.$message.error("网络不佳");
  611. console.error(err);
  612. });
  613. },
  614. selectAnLi() {
  615. if (this.aid != "") {
  616. let params = {
  617. id: this.aid,
  618. };
  619. this.ajax
  620. .get(this.$store.state.api + "selectRaceDetail", params)
  621. .then((res) => {
  622. if (res.data.length > 0) {
  623. this.raceInfo = JSON.parse(res.data[0][0].info);
  624. this.raceOverView = JSON.parse(res.data[0][0].overview);
  625. this.raceProcess = JSON.parse(res.data[0][0].process);
  626. this.raceExceva = JSON.parse(res.data[0][0].proexc);
  627. this.raceEffect = JSON.parse(res.data[0][0].results);
  628. }
  629. })
  630. .catch((err) => {
  631. console.error(err);
  632. });
  633. }
  634. },
  635. isGoto() {
  636. this.steps = 1;
  637. if (
  638. this.raceInfo.title != "" ||
  639. this.raceInfo.type.length > 0 ||
  640. this.raceInfo.autor.length > 0 ||
  641. this.raceInfo.courseText != "" ||
  642. this.raceInfo.data.length > 0
  643. ) {
  644. this.dialogVisible2 = true;
  645. } else {
  646. this.goTo("/eventCenter?steps=" + "1");
  647. }
  648. },
  649. },
  650. created() {
  651. this.selectAnLi();
  652. },
  653. };
  654. </script>
  655. <style scoped>
  656. @media screen and (max-width: 1280px) {
  657. .first > div:nth-child(2) {
  658. width: 80px;
  659. white-space: nowrap;
  660. overflow: hidden;
  661. text-overflow: ellipsis;
  662. }
  663. }
  664. .dialog_diy >>> .el-dialog__header {
  665. background: #3c3c3c !important;
  666. padding: 15px 20px;
  667. }
  668. .dialog_diy >>> .el-dialog__title {
  669. color: #fff;
  670. }
  671. .race_nav {
  672. display: flex;
  673. align-items: center;
  674. justify-content: center;
  675. width: 90%;
  676. margin: 10px auto;
  677. background: #fff;
  678. border-radius: 10px;
  679. padding: 10px 0;
  680. }
  681. .race_nav span {
  682. border: 1px solid #929292;
  683. border-radius: 5px;
  684. padding: 10px 15px;
  685. cursor: pointer;
  686. color: #4988bf;
  687. }
  688. .race_nav span + span {
  689. margin-left: 10px;
  690. }
  691. .race_nav .active {
  692. background: #3d5ea1;
  693. }
  694. .race_body {
  695. display: flex;
  696. width: 90%;
  697. justify-content: center;
  698. margin: 0 auto;
  699. height: calc(100% - 145px);
  700. }
  701. .race_btn {
  702. width: 90%;
  703. margin: 0 auto;
  704. display: flex;
  705. justify-content: space-between;
  706. flex-direction: row;
  707. flex-wrap: nowrap;
  708. padding-top: 10px;
  709. }
  710. .race_btn > button {
  711. z-index: 9;
  712. }
  713. .createSuccessCss {
  714. position: fixed;
  715. right: 30%;
  716. top: 50%;
  717. width: 717px;
  718. height: 346px;
  719. z-index: 999;
  720. background: #fff;
  721. border-radius: 30px;
  722. overflow: hidden;
  723. transform: translateY(-50%);
  724. box-shadow: 0px 0 8px 0px #c5c5c5;
  725. }
  726. .createBox {
  727. padding: 0 10px 0 10px;
  728. display: flex;
  729. flex-direction: row;
  730. flex-wrap: nowrap;
  731. align-items: flex-start;
  732. }
  733. .success {
  734. width: 68px;
  735. height: 68px;
  736. }
  737. .success > img {
  738. width: 100%;
  739. height: 100%;
  740. }
  741. .cresteMessage {
  742. width: 500px;
  743. margin-left: 22px;
  744. line-height: 50px;
  745. font-size: 16px;
  746. }
  747. .cresteMessage > span {
  748. color: #0f40f5;
  749. }
  750. .createButton {
  751. width: 163px;
  752. height: 35px;
  753. text-align: center;
  754. line-height: 35px;
  755. background: #0f40f5 100%;
  756. color: #fff;
  757. font-size: 14px;
  758. border-radius: 4px;
  759. position: absolute;
  760. right: 74px;
  761. bottom: 19px;
  762. }
  763. .first {
  764. background: #6e9cd8;
  765. width: 200px;
  766. display: flex;
  767. flex-direction: row;
  768. flex-wrap: nowrap;
  769. align-items: center;
  770. color: #fff;
  771. height: 53px;
  772. justify-content: center;
  773. border-radius: 10px;
  774. margin: 0 15px;
  775. cursor: pointer;
  776. }
  777. .navImg {
  778. width: 30px;
  779. height: 30px;
  780. }
  781. .navImg > img {
  782. width: 100%;
  783. height: 100%;
  784. }
  785. </style>