ConferenceNetwork.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. <template>
  2. <div class="autoBox container-box">
  3. <div class="bread-crumb">
  4. <el-breadcrumb separator="/" style="float: left; margin: 15px">
  5. <el-breadcrumb-item :to="{ path: 'home' }">{{
  6. $i18n.locale == "en" ? "Home" : "首页"
  7. }}</el-breadcrumb-item>
  8. <el-breadcrumb-item :to="{ path: 'ConferenceServices' }">{{
  9. $i18n.locale == "en" ? "Conferences" : "会议"
  10. }}</el-breadcrumb-item>
  11. <el-breadcrumb-item>{{
  12. $i18n.locale == "en" ? "The information provided" : "信息填报"
  13. }}</el-breadcrumb-item>
  14. </el-breadcrumb>
  15. </div>
  16. <div class="content-box" v-if="$i18n.locale == 'en'">
  17. <div class="content-item">
  18. <div class="category-body">
  19. <el-form
  20. :model="meetingApply"
  21. :rules="rulesEn"
  22. ref="meetingApplyEn"
  23. label-width="260px"
  24. key="1"
  25. >
  26. <!-- 邀请码 -->
  27. <el-form-item label="Invitation Code" prop="invitationCode">
  28. <el-input
  29. v-model="meetingApply.invitationCode"
  30. placeholder="Please enter Invitation Code.If not, please enter 000000."
  31. ></el-input>
  32. </el-form-item>
  33. <!-- 名 -->
  34. <el-form-item label="Given Name" prop="givenName">
  35. <el-input
  36. v-model="meetingApply.givenName"
  37. placeholder=""
  38. ></el-input>
  39. </el-form-item>
  40. <!-- 中间名 -->
  41. <el-form-item label="Middle Name">
  42. <el-input
  43. v-model="meetingApply.middleName"
  44. placeholder=""
  45. ></el-input>
  46. </el-form-item>
  47. <!-- 姓 -->
  48. <el-form-item label="Surname" prop="sumame">
  49. <el-input v-model="meetingApply.sumame" placeholder=""></el-input>
  50. </el-form-item>
  51. <!-- 所在国家 -->
  52. <el-form-item label="Country/Region" prop="unitCountryDcit">
  53. <el-select
  54. v-model="meetingApply.unitCountryDcit"
  55. filterable
  56. placeholder=""
  57. style="width: 100%"
  58. >
  59. <el-option
  60. :label="item.label"
  61. :value="item.value"
  62. v-for="item in unitCountryDictEns"
  63. ></el-option>
  64. </el-select>
  65. </el-form-item>
  66. <!-- 单位名称 -->
  67. <el-form-item label="Name of Company/Organization" prop="filmName">
  68. <el-input
  69. v-model="meetingApply.filmName"
  70. placeholder=""
  71. ></el-input>
  72. </el-form-item>
  73. <!-- 单位类型 -->
  74. <el-form-item label="Company/Organization Type" prop="filmTypeDict">
  75. <el-select
  76. v-model="meetingApply.filmTypeDict"
  77. placeholder=""
  78. style="width: 100%"
  79. >
  80. <el-option
  81. :label="item.label"
  82. :value="item.value"
  83. v-for="(item, i) in meetingUnitTypeDictEns"
  84. :key="i"
  85. ></el-option>
  86. </el-select>
  87. </el-form-item>
  88. <!-- 职务 -->
  89. <el-form-item label="Title" prop="title">
  90. <el-input v-model="meetingApply.title" placeholder=""></el-input>
  91. </el-form-item>
  92. <!-- 邮箱 -->
  93. <el-form-item label="E-mail" prop="mail">
  94. <el-input v-model="meetingApply.mail" placeholder=""></el-input>
  95. </el-form-item>
  96. <el-form-item
  97. label-width="198px"
  98. v-if="
  99. gridData.length && intentions.isShowEnOnlineIntention == 'Yes'
  100. "
  101. >
  102. <p style="font-size: 16px">
  103. Among multiple events of our conference, please kindly choose
  104. your preferable events to attend to(Multiple choice).
  105. </p>
  106. <el-table
  107. :data="gridData"
  108. :border="false"
  109. @selection-change="checkRow"
  110. @row-click="setSelectEn"
  111. size="small"
  112. ref="multipleTableEn"
  113. :empty-text="'Sorry no date.'"
  114. class="active-grid"
  115. >
  116. <el-table-column type="selection" width="50"></el-table-column>
  117. <el-table-column property="activityName" label="ALL">
  118. <template slot-scope="scope">
  119. <p style="font-weight: bold">
  120. {{ momentDate(scope.row.activityStartTime) }} ~
  121. {{ momentDate(scope.row.activityEndTime) }}
  122. </p>
  123. <p>{{ scope.row.activityNameEn }}</p>
  124. </template>
  125. </el-table-column>
  126. </el-table>
  127. </el-form-item>
  128. <el-form-item style="text-align: center" label-width="0">
  129. <el-button
  130. type="primary"
  131. @click="submitFormEn('meetingApplyEn')"
  132. :key="btnKey"
  133. >Submit</el-button
  134. >
  135. </el-form-item>
  136. </el-form>
  137. </div>
  138. </div>
  139. </div>
  140. <div class="content-box" v-else>
  141. <div class="content-item">
  142. <div class="category-body">
  143. <el-form
  144. :model="meetingApply"
  145. :rules="rulesZh"
  146. ref="meetingApplyZh"
  147. label-width="100px"
  148. key="2"
  149. >
  150. <el-form-item label="邀请码" prop="invitationCode">
  151. <el-input
  152. v-model="meetingApply.invitationCode"
  153. placeholder="请输入邀请码,如果没有,请输入000000。"
  154. ></el-input>
  155. </el-form-item>
  156. <el-form-item label="姓名" prop="name">
  157. <el-input v-model="meetingApply.name" placeholder=""></el-input>
  158. </el-form-item>
  159. <el-form-item label="国家" prop="unitCountryDcit">
  160. <el-select
  161. v-model="meetingApply.unitCountryDcit"
  162. filterable
  163. placeholder="请选择"
  164. style="width: 100%"
  165. >
  166. <el-option
  167. :label="item.label"
  168. :value="item.value"
  169. v-for="item in unitCountryDicts"
  170. ></el-option>
  171. </el-select>
  172. </el-form-item>
  173. <el-form-item label="单位名称" prop="filmName">
  174. <el-input
  175. v-model="meetingApply.filmName"
  176. placeholder=""
  177. ></el-input>
  178. </el-form-item>
  179. <el-form-item label="单位类型" prop="filmTypeDict">
  180. <el-select
  181. v-model="meetingApply.filmTypeDict"
  182. placeholder=""
  183. style="width: 100%"
  184. >
  185. <el-option
  186. :label="item.label"
  187. :value="item.value"
  188. v-for="(item, i) in meetingUnitTypeDicts"
  189. :key="i"
  190. ></el-option>
  191. </el-select>
  192. </el-form-item>
  193. <el-form-item label="职务" prop="title">
  194. <el-input v-model="meetingApply.title" placeholder=""></el-input>
  195. </el-form-item>
  196. <el-form-item label="邮箱" prop="mail">
  197. <el-input v-model="meetingApply.mail" placeholder=""></el-input>
  198. </el-form-item>
  199. <el-form-item
  200. label-width="36px"
  201. v-if="
  202. gridData.length && intentions.isShowZhOnlineIntention == 'Yes'
  203. "
  204. >
  205. <p style="font-size: 16px">
  206. 此次大会包括多场会议活动,请勾选您希望参加的场次(可多选)。
  207. </p>
  208. <el-table
  209. :data="gridData"
  210. :border="false"
  211. @selection-change="checkRow"
  212. @row-click="setSelect"
  213. size="small"
  214. ref="multipleTable"
  215. class="active-grid"
  216. >
  217. <el-table-column type="selection" width="50"></el-table-column>
  218. <el-table-column property="activityName" label="全选">
  219. <template slot-scope="scope">
  220. <p style="font-weight: bold">
  221. {{ momentDate(scope.row.activityStartTime) }} ~
  222. {{ momentDate(scope.row.activityEndTime) }}
  223. </p>
  224. <p>{{ scope.row.activityName }}</p>
  225. </template>
  226. </el-table-column>
  227. </el-table>
  228. </el-form-item>
  229. <el-form-item style="text-align: center" label-width="0">
  230. <el-button type="primary" @click="submitForm('meetingApplyZh')"
  231. >提交</el-button
  232. >
  233. </el-form-item>
  234. </el-form>
  235. </div>
  236. </div>
  237. </div>
  238. <el-dialog :show-close="false" :visible.sync="dialogVisible" width="600px">
  239. <div class="category-body submit-success">
  240. <p>
  241. <img
  242. src="@/assets/img/conference/submit-success.png"
  243. alt=""
  244. width="200"
  245. />
  246. </p>
  247. <p style="font-size: 24px; color: #666; margin-bottom: 20px">
  248. {{ $i18n.locale == "en" ? "Registered!" : "报名成功!" }}
  249. </p>
  250. <p>
  251. <el-button
  252. style="background: #2c558a; color: #fff"
  253. @click="toView('ConferenceDetail', $route.query.key)"
  254. >
  255. {{ $i18n.locale == "en" ? "Back" : "返回" }}({{ num }}s)
  256. </el-button>
  257. <el-button @click="ContinueRegister">{{
  258. $i18n.locale == "en" ? "Continue" : "继续报名"
  259. }}</el-button>
  260. </p>
  261. </div>
  262. </el-dialog>
  263. <div class="apply-history" v-if="applyHistoryInfo.length">
  264. <span style="font-size: 14px; margin-right: 20px">{{
  265. $i18n.locale == "en" ? "Registration History" : "报名历史"
  266. }}</span>
  267. <el-select
  268. v-model="applyHistorySelected"
  269. @change="applyHistoryChanged"
  270. :placeholder="$i18n.locale == 'en' ? 'Please Select' : '请选择'"
  271. >
  272. <el-option
  273. v-for="(item, i) in applyHistoryInfo"
  274. :key="i"
  275. :label="item.name"
  276. :value="i"
  277. >
  278. <span style="float: left">{{ item.name }}</span>
  279. </el-option>
  280. </el-select>
  281. </div>
  282. </div>
  283. </template>
  284. <script>
  285. import Base from "@/views/base/Base";
  286. import {
  287. registerOnline,
  288. getMeetingApplyActivityInfos,
  289. getOlApplyHistoryInfosByLoginAccount,
  290. } from "@/api/meeting/meetingApply";
  291. import { getConfrenceDetail } from "@/api/meeting/meetingOutInfo";
  292. import { getToken } from "@/utils/auth";
  293. import { getDicts } from "@/api/dict";
  294. import moment from "moment-timezone";
  295. import { addIntegral, addGrowth } from "@/utils/toCompleteTask";
  296. export default {
  297. extends: Base,
  298. data() {
  299. var checkInvitationCode = (rule, value, callback) => {
  300. if (!value) {
  301. let errorTxt =
  302. this.$i18n.locale == "en"
  303. ? "Please enter Invitation Code.If not, please enter 000000."
  304. : "请输入邀请码";
  305. callback(new Error(errorTxt));
  306. } else if (!this.invitationCodeArr.includes(value)) {
  307. let errorTxt =
  308. this.$i18n.locale == "en"
  309. ? "Please enter the correct Invitation Code. If not, please enter 000000."
  310. : "请输入正确的邀请码。如果没有,请输入000000";
  311. callback(new Error(errorTxt));
  312. } else {
  313. callback();
  314. }
  315. };
  316. var checkEmail = (rule, value, callback) => {
  317. let reg = /^\w+.*\w+@[a-zA-Z0-9]+.*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/gm;
  318. if (!value) {
  319. let errorTxt =
  320. this.$i18n.locale == "en" ? "Please enter E-mail." : "请输入邮箱";
  321. return callback(new Error(errorTxt));
  322. } else if (!reg.test(value)) {
  323. let errorTxt =
  324. this.$i18n.locale == "en"
  325. ? "Please enter the correct E-mail address."
  326. : "邮箱格式不正确";
  327. callback(new Error(errorTxt));
  328. } else {
  329. callback();
  330. }
  331. };
  332. return {
  333. newChecked:[],
  334. applyHistorySelected: "", //被选择的报名历史
  335. applyHistoryInfo: [], //报名历史信息
  336. btnKey: 1,
  337. dialogVisible: false,
  338. num: 5,
  339. timer: "",
  340. meetingUnitTypeDictEns: [],
  341. meetingUnitTypeDicts: [],
  342. invitationCodePrefix: [],
  343. invitationCodeArr: ["000000"],
  344. unitCountryDicts: [],
  345. unitCountryDictEns: [],
  346. gridData: [],
  347. checkedIds: [],
  348. baseInfo: {},
  349. intentions: {},
  350. meetingApply: {
  351. // meetingId: window.localStorage.getItem('conferenceId'),
  352. meetingId: this.$route.query.key,
  353. invitationCode: "",
  354. name: "",
  355. middleName: "",
  356. givenName: "",
  357. sumame: "",
  358. filmName: "",
  359. filmType: "",
  360. filmTypeDict: "",
  361. title: "",
  362. mail: "",
  363. unitCountryDcit: "",
  364. applyWay: "",
  365. isSendNotice: "No",
  366. },
  367. rulesEn: {
  368. invitationCode: [
  369. { required: true, validator: checkInvitationCode, trigger: "blur" },
  370. ],
  371. givenName: [
  372. {
  373. required: true,
  374. message: "Please enter Given Name.",
  375. trigger: "blur",
  376. },
  377. ],
  378. sumame: [
  379. { required: true, message: "Please enter Surname.", trigger: "blur" },
  380. ],
  381. mail: [{ required: true, validator: checkEmail, trigger: "blur" }],
  382. unitCountryDcit: [
  383. {
  384. required: true,
  385. message: "Please select Country/Region.",
  386. trigger: "change",
  387. },
  388. ],
  389. filmName: [
  390. {
  391. required: true,
  392. message: "Please enter Name of Company/Organization.",
  393. trigger: "blur",
  394. },
  395. ],
  396. filmTypeDict: [
  397. {
  398. required: true,
  399. message: "Company/Organization Type.",
  400. trigger: "change",
  401. },
  402. ],
  403. title: [
  404. { required: true, message: "Please enter Title.", trigger: "blur" },
  405. ],
  406. },
  407. rulesZh: {
  408. invitationCode: [
  409. { required: true, validator: checkInvitationCode, trigger: "blur" },
  410. ],
  411. name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
  412. unitCountryDcit: [
  413. { required: true, message: "请选择国家", trigger: "change" },
  414. ],
  415. mail: [{ required: true, validator: checkEmail, trigger: "blur" }],
  416. filmName: [
  417. { required: true, message: "请输入单位名称", trigger: "blur" },
  418. ],
  419. filmTypeDict: [
  420. { required: true, message: "请选择单位类型", trigger: "change" },
  421. ],
  422. title: [{ required: true, message: "请输入职务", trigger: "blur" }],
  423. },
  424. user: {
  425. umsUser: {},
  426. },
  427. };
  428. },
  429. watch: {
  430. "$i18n.locale"(val) {
  431. this.meetingApply.unitCountryDcit =
  432. this.$i18n.locale == "en" ? "" : "china";
  433. this.getApplyHistoryInfos();
  434. },
  435. dialogVisible() {
  436. if (this.dialogVisible == true) {
  437. this.loginTipsChange();
  438. }
  439. },
  440. },
  441. mounted() {
  442. this.initData();
  443. if (this.$route.query) {
  444. localStorage.setItem("conferenceId", this.$route.query.key);
  445. }
  446. this.getIntentions();
  447. this.meetingApply.unitCountryDcit =
  448. this.$i18n.locale == "en" ? "" : "china";
  449. getDicts(
  450. "meeting_unit_type_dict_en, meeting_unit_type_dict, geidco_dept_dict, unit_country_dict, unit_country_dict_en"
  451. )
  452. .then((result) => {
  453. var data = result.data;
  454. if (data) {
  455. this.meetingUnitTypeDictEns = result.data[0] || [];
  456. this.meetingUnitTypeDicts = result.data[1] || [];
  457. this.invitationCodePrefix = result.data[2] || [];
  458. this.unitCountryDicts = result.data[3] || [];
  459. this.unitCountryDictEns = result.data[4] || [];
  460. if (this.unitCountryDictEns.length) {
  461. this.unitCountryDictEns.sort(function (a, b) {
  462. return a.value.charCodeAt() - b.value.charCodeAt();
  463. });
  464. }
  465. }
  466. })
  467. .then((res) => {
  468. getConfrenceDetail(localStorage.getItem("conferenceId")).then((res) => {
  469. this.baseInfo = res.data.basicInfo;
  470. // console.log('会议数据', res)
  471. // 邀请码集合
  472. this.invitationCodePrefix.forEach((item) => {
  473. this.invitationCodeArr.push(
  474. `${item.value}${res.data.basicInfo.meetingRand}`
  475. );
  476. });
  477. // console.log('邀请码集合', this.invitationCodeArr)
  478. });
  479. getMeetingApplyActivityInfos(localStorage.getItem("conferenceId"))
  480. .then((_res) => {
  481. console.log("_res", _res);
  482. this.gridData = _res.data.allMeetingActivitys || [];
  483. })
  484. .catch((err) => {
  485. this.gridData = [];
  486. });
  487. });
  488. this.getApplyHistoryInfos();
  489. },
  490. methods: {
  491. initData() {
  492. this.user = JSON.parse(window.localStorage.getItem("user"));
  493. },
  494. applyHistoryChanged(i) {
  495. Object.keys(this.applyHistoryInfo[i]).forEach((key) => {
  496. this.meetingApply[key] = this.applyHistoryInfo[i][key];
  497. });
  498. },
  499. //获取报名历史信息
  500. getApplyHistoryInfos() {
  501. this.applyHistorySelected = "";
  502. getOlApplyHistoryInfosByLoginAccount(this.$i18n.locale).then((res) => {
  503. this.applyHistoryInfo = res.data.olApplyHistoryInfos;
  504. console.log("ApplyHistoryInfos", res);
  505. });
  506. },
  507. getIntentions() {
  508. this.intentions = JSON.parse(
  509. sessionStorage.getItem("pathReminder")
  510. ).query.intentions;
  511. },
  512. momentDate(date) {
  513. if (this.$i18n.locale == "zh") {
  514. moment.locale("zh-cn");
  515. return moment(date).format("YYYY MM DD, H:mm");
  516. } else {
  517. moment.locale("en");
  518. return moment(date).format("lll");
  519. }
  520. },
  521. checkRow(checkedData) {
  522. this.checkedIds = [];
  523. this.newChecked = [];
  524. const date = []
  525. checkedData.forEach((item) => {
  526. date.find(i=>{
  527. if(i===this.momentDate(item.activityStartTime)){
  528. let msgTxt = this.$i18n.locale=='en'? 'Kind Reminder: participants can only register for one parallel session. Hope you enjoy the conference.': '温馨提示:同一时段平行召开的会议仅限选择一场参加,祝您参会愉快!';
  529. this.$message({
  530. message: msgTxt,
  531. type:'error'
  532. })
  533. }
  534. })
  535. date.push(this.momentDate(item.activityStartTime))
  536. this.checkedIds.push(item.id)
  537. this.newChecked.push(item.activityStartTime)
  538. });
  539. },
  540. setSelect(row) {
  541. this.$refs.multipleTable.toggleRowSelection(row);
  542. },
  543. setSelectEn(row) {
  544. this.$refs.multipleTableEn.toggleRowSelection(row);
  545. },
  546. ContinueRegister() {
  547. clearInterval(this.timer);
  548. this.dialogVisible = false;
  549. this.btnKey = Math.random();
  550. // this.$refs.meetingApplyEn.resetFields();
  551. },
  552. loginTipsChange() {
  553. const that = this;
  554. this.num = 5;
  555. this.timer = setInterval(function () {
  556. if (that.num > 0) {
  557. that.num--;
  558. } else {
  559. clearInterval(that.timer);
  560. that.dialogVisible = false;
  561. that.toView("ConferenceDetail", that.$route.query.key);
  562. }
  563. }, 1000);
  564. },
  565. toView(router, json) {
  566. this.$router.push({ path: router, query: { key: json } });
  567. },
  568. formatDate(t) {
  569. if (!t) {
  570. return "";
  571. } else {
  572. var original = new Date(t);
  573. var year = original.getFullYear();
  574. var month = original.getMonth() + 1;
  575. var date = original.getDate();
  576. return year + "-" + month + "-" + date;
  577. }
  578. },
  579. submitForm(formName) {
  580. this.$refs[formName].validate((valid) => {
  581. if (!valid) {
  582. this.$message.error("请填写完整信息");
  583. return false;
  584. }
  585. this.save();
  586. });
  587. },
  588. submitFormEn(formName) {
  589. // alert(this.$route.params.key)
  590. this.$refs[formName].validate((valid) => {
  591. if (!valid) {
  592. this.$message.error("Please fill in the complete information");
  593. return false;
  594. }
  595. this.meetingApply.name = `${this.meetingApply.givenName} ${this.meetingApply.middleName} ${this.meetingApply.sumame}`;
  596. this.save();
  597. });
  598. },
  599. save: function () {
  600. var arr1=this.newChecked
  601. var arr2=arr1.sort()
  602. for(var i=0;i<arr2.length-1;i++){
  603. if(arr2[i]==arr2[i+1]){
  604. let msgTxt = this.$i18n.locale=='en'? 'Kind Reminder: participants can only register for one parallel session. Hope you enjoy the conference.': '温馨提示:同一时段平行召开的会议仅限选择一场参加,祝您参会愉快!';
  605. this.$message.error(msgTxt)
  606. return false
  607. }else{
  608. console.log('hello');
  609. }
  610. }
  611. // console.log("filmName:", this.meetingApply.filmName)
  612. this.meetingApply.applyWay = this.$i18n.locale;
  613. // console.log('this.meetingApply', this.meetingApply);
  614. // return
  615. this.submitHandler((token) => {
  616. registerOnline(
  617. JSON.stringify(this.meetingApply),
  618. token,
  619. this.checkedIds.join(",")
  620. )
  621. .then((result) => {
  622. console.log("result", result);
  623. if (result.status == "200") {
  624. if (this.user.umsUser.userUsertypeDict !== "2") {
  625. addIntegral("meeting_registration_successful", "10");
  626. addGrowth("meeting_registration_successful");
  627. }
  628. if (result.data.isRepeat) {
  629. let errorMsg =
  630. this.$i18n.locale == "en"
  631. ? "The guest has registered, please do not fill in again."
  632. : "该嘉宾已报名,请勿重复填写!";
  633. this.$message.error(errorMsg);
  634. this.resetToken();
  635. } else {
  636. this.dialogVisible = true;
  637. this.resetToken();
  638. }
  639. }
  640. console.log("result", result);
  641. })
  642. .catch((error) => {
  643. this.resetToken();
  644. });
  645. });
  646. },
  647. },
  648. };
  649. </script>
  650. <style scoped>
  651. /deep/ .el-table thead{
  652. display: none;
  653. }
  654. * {
  655. box-sizing: border-box;
  656. }
  657. .container-box {
  658. width: 1200px;
  659. margin: 10px auto;
  660. position: relative;
  661. }
  662. .bread-crumb {
  663. height: 40px;
  664. background: #fff;
  665. margin: 10px 0;
  666. }
  667. .content-box {
  668. width: 100%;
  669. box-sizing: border-box;
  670. padding: 60px 150px 20px 150px;
  671. background: #fff;
  672. }
  673. .content-item {
  674. padding-bottom: 20px;
  675. border-radius: 12px;
  676. overflow: hidden;
  677. }
  678. /deep/ .content-box .el-input__inner {
  679. border-top: none;
  680. border-left: none;
  681. border-right: none;
  682. border-radius: 0;
  683. }
  684. .submit-success {
  685. text-align: center;
  686. font-size: 20px;
  687. color: #999;
  688. }
  689. .submit-success p {
  690. margin: 0;
  691. }
  692. .submit-success .el-button {
  693. width: 150px;
  694. font-size: 20px;
  695. margin: 10px;
  696. }
  697. .down-load a {
  698. font-size: 28px;
  699. color: #49a2f2;
  700. text-decoration: none;
  701. }
  702. .down-load a:hover {
  703. color: #de551a;
  704. }
  705. /deep/ .el-dialog {
  706. display: flex;
  707. flex-direction: column;
  708. margin: 0 !important;
  709. position: absolute;
  710. top: 50%;
  711. left: 50%;
  712. transform: translate(-50%, -50%);
  713. max-height: calc(100% - 30px);
  714. max-width: calc(100% - 30px);
  715. }
  716. /deep/ .el-dialog .el-dialog__body {
  717. flex: 1;
  718. overflow: auto;
  719. }
  720. .active-grid p {
  721. margin: 0;
  722. }
  723. /deep/ .el-table th > .cell {
  724. padding-left: 14px;
  725. }
  726. .apply-history {
  727. position: absolute;
  728. top: 60px;
  729. right: 20px;
  730. }
  731. .apply-history .el-select {
  732. width: 300px;
  733. }
  734. </style>