diff --git a/public/css/font-awesome.css b/public/css/font-awesome.css deleted file mode 100755 index 8539c00d..00000000 --- a/public/css/font-awesome.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */ -.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:a 2s infinite linear}.fa-pulse{animation:a 1s infinite steps(8)}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-book:before{content:"\f02d"}.fa-book-open:before{content:"\f518"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-excel:before{content:"\f1c3"}.fa-file-image:before{content:"\f1c5"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-fulcrum:before{content:"\f50b"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-meh:before{content:"\f11a"}.fa-memory:before{content:"\f538"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-moon:before{content:"\f186"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-r-project:before{content:"\f4f7"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before{content:"\f156"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shower:before{content:"\f2cc"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-spotify:before{content:"\f1bc"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toolbox:before{content:"\f552"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-moving:before{content:"\f4df"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/public/css/taskstyle.css b/public/css/taskstyle.css deleted file mode 100755 index d5a9fe4a..00000000 --- a/public/css/taskstyle.css +++ /dev/null @@ -1,2482 +0,0 @@ -html { - height: 100%; -} - -.w20_center { - width: 20px; - text-align: center; -} - -.task-container { - min-width: 1300px; - margin: 0 auto; - background: #f5f9fc; - position: relative; -} - -/*左侧导航*/ -.leftbar { - height: 100%; - background: #1f212d; - width: 80px; -} - -.user-info { - width: 80px; - height: 100px; - padding-top: 15px; -} - -a.user-info-img { - display: block; - width: 50px; - height: 50px; - margin: 0 auto; -} - -a.user-info-img img { - border-radius: 100px; - border: 2px solid #666; -} - -a.user-info-img img:hover { - border: 2px solid #888; -} - -a.user-info-name { - display: block; - font-size: 16px; - color: #fff; - max-width: 100px; - margin: 10px auto; - text-align: center; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.leftnav-box { - width: 80px; - height: 60px; - background: #292b3a; - padding: 10px 0; - margin-bottom: 2px; -} - -a.leftnav-box-inner { - display: block; - width: 77px; - border-left: 3px solid #292b3a; - background: #292b3a; - text-align: center; - padding: 10px 0; - color: #575f6c; -} - -a:hover.leftnav-box-inner, -a.leftnav-active { - border-left: 3px solid #3498db; - color: #fff !important; -} - -a:hover.leftnav-box-inner .btn-cir { - background: #fff; - color: #333333 -} - -a.leftnav-box-reset-inner { - display: block; - width: 77px; - border-left: 3px solid #292b3a; - background: #292b3a; - text-align: center; - color: #575f6c; -} - -a:hover.leftnav-box-reset-inner { - border-left: 3px solid #3498db; - color: #fff !important; -} - - - -/*右侧头部*/ -.rightbar-header { - width: 100%; - background: #282c37; - height: 60px; - min-width: 1000px; -} - -.rightbar-score { - margin-top: 17px; - font-size: 14px; - margin-right: 20px; -} - -.rightbar-score li { - float: left; - color: #fff; - margin-right: 20px; -} - -.rightbar-score li a { - color: #fff; -} - -a.rightbar-pause { - color: #29bd8b; - font-size: 18px; - margin-right: 15px; - margin-top: 12px; -} - -.rightbar-h2 { - color: #fff; - margin: 12px 0 0 20px; - font-weight: normal; -} - -.rightbar { - background: #f5f9fc; - color: #333; - position: relative; -} - -/*右侧内容*/ -.content { - min-width: 1000px; -} - -.content-row { - padding: 15px; -} - -.content-info { - width: 49.5%; - min-width: 250px; -} - -.content-editor { - width: 49.3%; - min-width: 250px; - margin-left: 15px; -} - -.panel-header { - border-bottom: 1px solid #eee; - padding: 10px 15px; - color: #898989; -} - -.panel-header-border { - border: 1px solid #eee; - padding: 10px 15px; - border-bottom: none; -} - -/* tab */ -.tab_content { - width: 100%; - margin: 0 auto; - background: #fff; -} - -#tab_nav { - height: 42px; - background: #fff; - border-bottom: 1px solid #EEEEEE -} - -#tab_nav li { - float: left; - padding: 0 30px; - text-align: center; - height: 40px; - line-height: 40px; -} - -#tab_nav li a { - font-size: 14px; -} - -.tab_hover { - border-bottom: 2px solid #3498db; - background: #fff; - color: #3498db -} - -/*.tab_hover_setting{background:#FC7033;}*/ -.tab_hover a { - color: #3498db !important; -} - -/*.tab_hover_setting a{color:#fff;}*/ -.undis { - display: none; -} - -.dis { - display: block; -} - -.tab-info {} - -.content-editor-inner { - overflow: auto; -} - -.tab-info-inner { - overflow: auto; - height: 600px; - margin: 0 0 0px 15px; - padding-top: 15px -} - -.content-history-inner { - height: 120px; - overflow: auto; - padding: 15px; -} - -.content-history { - width: 48.7%; - min-width: 500px; -} - -.history-success { - width: 100%; - height: 40px; - line-height: 40px; - background: #eef1f2; - color: #666; -} - -.history-fail { - width: 100%; - height: 40px; - line-height: 40px; - background: #fdebeb; - color: #e53238; -} - -.icon-fail { - display: inline-block; - padding: 0 8px; - background: #e53238; - color: #fff; -} - -.icon-success { - display: inline-block; - padding: 0 8px; - background: #252e38; - color: #fff; -} - -.info-partly { - display: block; - box-flex: 1; - flex: 1; - -webkit-flex: 1; - position: relative; -} - -.content-output { - width: 37.5%; - min-width: 200px; -} - -.content-submit { - width: 10%; - min-width: 135px; -} - -.content-submitbox { - width: 120px; - margin: 15px auto; - height: 135px; -} - -.panel-inner { - background: #EFF2F7; - margin: 15px; - padding: 15px; -} - -.panel-inner-title { - font-size: 14px; - color: #666; - max-width: 85%; - line-height: 30px; - word-wrap: break-word; - margin-bottom: 10px -} - -.panel-footer { - min-width: 1000px; - height: 210px !important; -} - -/* 弹框 */ -.task-popup-text-center { - text-align: center; - color: #333; -} - -.task-popup-title { - border-bottom: 1px solid #eee; - padding: 10px 15px; -} - -.task-popup-submit { - margin: 0 auto 15px; - width: 120px; -} - -/* TPM */ -.task-header { - width: 100%; - min-width: 1200px; - background: url("/images/task/task-bg-header.png"); - height: 180px; - background-size: cover; - display: flex; - align-items: center; -} - -.task-header-info { - width: 1200px; - margin: 0 auto; - color: #fff -} - -.task-header-info h2 a, -.task-header-info h2 { - font-weight: normal; - color: #fff; -} - -a.task-header-name { - max-width: 200px; -} - -.task-header-title { - display: block; - max-width: 750px; - word-wrap: break-word; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.task-header-nav { - width: 100%; - min-width: 1200px; - height: 50px; -} - -.task-header-navs { - width: 1200px; - margin: 0 auto; -} - -.task-header-navs li { - float: left; -} - -.task-header-navs li { - display: block; - height: 50px; - padding: 0 50px; - color: #666; - text-align: center; - font-size: 16px; - line-height: 50px; -} - -.task-header-navs li:hover, -.task-header-navs li:hover a { - color: #FC7033 !important; -} - -.task-header-navs li.active { - border-bottom: 2px solid #FC7033; - color: #FC7033; -} - -.task-header-navs li.active a { - color: #FC7033 !important; -} - -.task-header-navs li.active .edu-cir-grey, -.task-header-navs li:hover .edu-cir-grey, -.edu-cir-grey.active { - background: #FF7500; - color: #FFFFff -} - -.task-pm-content { - width: 1200px; - margin: 0 auto; - min-height: 566px -} - -.task-pm-box { - width: 100%; - background: #fff; - border: 1px solid #e8e8e8; -} - -.task-paner-con { - padding: 15px; - color: #666; - line-height: 2.0; -} - -.task-paner-con img { - max-width: 100% -} - -.panel-form { - margin: 0 30px 0px 20px; - padding: 30px 0; -} - -.panel-form li { - margin-bottom: 20px; - font-size: 14px; - color: #666; -} - - -.panel-form-label { - display: inline-block; - width: 10%; - min-width: 90px; - text-align: right; - line-height: 40px; - color: #666; -} - -.panel-form-label1 { - display: inline-block; - width: 20%; - min-width: 90px; - text-align: right; - line-height: 40px; -} - -.panel-form input, -.panel-form textarea { - border: 1px solid #e2e2e2; - color: #666; - line-height: 1.9; -} - -.panel-box-sizing { - -moz-box-sizing: border-box; - /*Firefox3.5+*/ - -webkit-box-sizing: border-box; - /*Safari3.2+*/ - -o-box-sizing: border-box; - /*Opera9.6*/ - -ms-box-sizing: border-box; - /*IE8*/ - box-sizing: border-box; -} - -input.panel-form-width-690 { - padding: 5px; - width: 90%; - height: 40px; - min-width: 700px; -} - -input.panel-form-width-200 { - padding: 5px; - height: 40px; - width: 200px; -} - -input.panel-form-width-100 { - padding: 5px; - width: 100%; - height: 40px; - min-width: 700px; -} - -textarea.panel-form-width-100 { - padding: 5px; - width: 100%; - height: 150px; - min-width: 700px; -} - -textarea.panel-form-width-40 { - padding: 5px; - width: 100%; - height: 40px; - min-width: 700px; -} - -textarea.panel-form-width-690 { - padding: 5px; - width: 90%; - height: 150px; - min-width: 700px; -} - -textarea.panel-form-width2-100 { - padding: 5px; - width: 100%; - height: 40px; - min-width: 700px; -} - -textarea.panel-form-width2-690 { - padding: 5px; - width: 90%; - height: 40px; - min-width: 700px; -} - -textarea.panel-form-width2-695 { - padding: 5px; - width: 95%; - height: 40px; - min-width: 700px; -} - -.panel-form-width-670 { - width: 670px; - padding: 5px; -} - -.panel-form-height-150 { - height: 150px; -} - -.panel-form-height-30 { - height: 30px; -} - -.task-bg-grey { - background: #f3f3f3 !important; - width: 90%; - min-width: 700px; - padding: 10px; - border: 1px solid #f3f3f3; -} - -.task-bg-grey-ligh { - line-height: 1.9; - padding: 5px 10px; -} - -.task-bg-grey li { - margin-bottom: 0 -} - -.task-bd-grey { - width: 680px; - padding: 10 0px; -} - -.panel-form-width-690 { - padding: 5px; - width: 90%; - min-height: 40px; - min-width: 700px; -} - -input.task-tag-input { - border: none; - background: none; - height: 30px; - padding: 0 5px; - color: #888; - line-height: 30px; -} - -textarea.task-textarea-pd { - padding-bottom: 0; - padding-top: 0; -} - -.task-setting-tab { - min-height: 600px; -} - -.task-pd15-box { - padding: 15px; -} - -.mb20 { - margin-bottom: 20px; -} - -input.knowledge_frame { - height: 28px; - line-height: 28px; - border: none; - background: #f3f5f7; -} - -/* TPi全屏展示css */ -.content-all-fix { - position: absolute; - top: 75px; - left: 15px; - right: 15px; - z-index: 99; - height: 91%; - width: 98.5%; -} - -.content-all-fix .big-tab-info-inner { - display: block; - height: 50%; - overflow: auto; - margin: 15px 0 0px 15px; -} - -.content-half-fix { - min-width: 450px; - margin: 0; - position: absolute; - top: 75px; - left: 15px; - z-index: 99; -} - -.content-half-fix .content-history-inner { - height: 100%; - overflow: auto; -} - -.content-half-fix02 { - margin: 0; - position: absolute; - top: 65px; - z-index: 99; - right: 45px; -} - -.content-history-extend { - height: 98%; - overflow: auto; -} - -.task-bg-grey .prettyprint { - font-size: 9pt; - font-family: Courier New, Arial; - border: 1px solid #ddd; - border-left: 5px solid #6CE26C; - background: #f6f6f6; - padding: 5px; -} - -/* 左右版TPI 20170410byLB */ -#game_task_pass img { - cursor: pointer -} - -.-fit { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.-layout-v { - display: flex; - flex-direction: column; - -webkit-flex-direction: column; -} - -.page--header { - position: fixed; - top: 0; - right: 0; - z-index: 7000; - height: 44px; - color: #fff; - background: #05101A; - left: 0px; - padding: 5px 0; -} - -.page--leftnav { - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 9001; - width: 80px; - height: 100%; - background: #282c37; -} - -.page--body { - position: relative; - margin-top: 54px; -} - -.-margin-t-64 { - margin-top: 64px; -} - -.-flex { - box-flex: 1; - flex: 1; - -webkit-flex: 1; -} - -/*.-flex-auto{flex-basis:100%;}*/ -.split-panel.-fit { - position: absolute; -} - -.split-panel { - position: relative; - overflow: hidden; - min-height: 200px; - height: 100%; -} - -.-stretch { - align-items: stretch; -} - -.-layout { - display: flex; -} - -.split-panel--first { - overflow: hidden; -} - -.-relative { - position: relative; -} - -.-bg-white { - background-color: #eee; -} - -.split-panel.-handle .split-panel--second { - padding-left: 2px; -} - -.task-answer-view { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: flex; - flex-direction: column; - border-top: 1px solid #515151; -} - -.-vertical { - flex-direction: column; - box-flex-direction: column; - -webkit-flex-direction: column; -} - -.-layout-h { - display: flex; - flex-direction: row; - box-flex-direction: row; - -webkit-flex-direction: row; -} - -.-horizontal { - flex-direction: row-reverse; - box-flex-direction: row-reverse; - -webkit-flex-direction: row-reverse; -} - -.-scroll { - overflow: auto; -} - -.-flex-basic0 { - flex-basis: 0% !important; - box-flex-basis: 0% !important; - -webkit-flex-basis: 0% !important; - display: none -} - -/*王昌------------拖拽增加样式---------------修改*/ -.-flex-basic40 { - width: 40%; - box-flex: auto; - flex: auto; - -webkit-flex: auto; -} - -.-flex-basic50 { - width: 60%; - box-flex: auto; - flex: auto; - -webkit-flex: auto; -} - -.b-label { - width: 4px; - cursor: ew-resize; - background: #2b2b2b; -} - -.h-center { - height: 4px; - cursor: ns-resize; - background: #333; -} - -.-changebg { - height: 3px; -} - -.-brother { - width: 100%; - height: 100%; - position: absolute; - left: 0; - top: 0; - z-index: 999; -} - -.-bg-weightblack { - background: #000; -} - -.-flex-basic70 { - box-flex: 4 9 auto; - flex: 4 9 auto; - -webkit-flex: 4 9 auto; - height: 70%; -} - -/*---------------------------------------------*/ -.-flex-basic60 { - box-flex: 2 1 auto; - flex: 2 1 auto; - -webkit-flex: 2 1 auto; - height: 30%; -} - -.-flex-basic100 { - flex-basis: 100% !important; - box-flex-basis: 100% !important; - -webkit-flex-basis: 100% !important; -} - -.-header-title { - max-width: 500px; - font-weight: normal; -} - -.-header-right { - background: #333; - border-radius: 25px; - padding: 5px 15px; - height: 30px; - position: absolute; - right: 10px; - line-height: 30px; -} - -.-header-right-info { - padding: 10px; - background: #fff; - border-radius: 3px; - top: 50px; - right: 10px; - position: relative; - display: none; - color: #666; -} - -.-header-right-info font { - border: 1px solid #dddddd; - display: block; - border-width: 8px; - position: absolute; - top: -15px; - right: 20px; - border-style: solid; - border-color: transparent transparent #fff transparent; - font-size: 0; - line-height: 0; -} - -.-header-right-box:hover .-header-right-info { - display: block; -} - -.-task-bar-bg { - width: 160px; - height: 15px; - border-radius: 15px; - background: #ff9932; - color: #fff; - font-size: 12px; - line-height: 15px; - text-align: right; - position: relative; - padding-right: 10px; -} - -.-task-bar-inner { - background: #ffc100; - display: block; - height: 15px; - border-radius: 15px; - position: absolute; - top: 0; - left: 0; -} - -.-task-widht-10 { - width: 10%; -} - -.-task-widht-20 { - width: 20%; -} - -.-task-widht-30 { - width: 30%; -} - -.-task-widht-40 { - width: 40%; -} - -.-task-widht-50 { - width: 50%; -} - -.-task-widht-60 { - width: 60%; -} - -.-task-widht-70 { - width: 70%; -} - -.-task-widht-80 { - width: 80%; -} - -.-task-widht-90 { - width: 90%; -} - -.-task-widht-100 { - width: 100%; -} - -.-footer-left { - min-height: 48px; - background: #f5f5f5; -} - -.-footer-left ul { - width: 100% -} - -.-footer-left ul li { - cursor: pointer; - color: #666; -} - -.-footer-left ul li:hover { - color: #888; -} - -.-bg-black { - background: #2b2b2b; - color: #f4f1ed; -} - -.-bg-darkblack { - background: #1D1D1D; - color: #fff; -} - -.task-answer-view { - border-top: 1px solid #515151; - background: #333; -} - -#blacktab_nav { - height: 40px; - background: #292929; -} - -#blacktab_nav li { - float: left; - padding: 0px 50px; - text-align: center; - height: 40px; - line-height: 40px; -} - -#blacktab_nav .add-webssh { - position: relative; -} - -#blacktab_nav .add-webssh span { - position: absolute; - top: 0; - right: 5px; - color: #fff; - cursor: pointer; -} - -#blacktab_nav li a { - font-size: 14px; -} - -#blacktab_nav li.code-file-tab { - padding: 0px; - width: 120px; - box-sizing: border-box; - padding: 0px 15px; -} - -.code-flie-list { - display: none; - position: absolute; - z-index: 5; - top: 40px; - background: #515151; - width: 300px; - left: 0px; - color: #fff; -} - -.blue-line { - border-left: 3px solid #199ED8 !important; - padding-left: 5px; -} - -.codefile-all { - max-height: 122px; - overflow-y: auto; - overflow-x: hidden; -} - -.codefile-all p { - text-align: left; - cursor: pointer; - height: 22px; - line-height: 22px; - margin-bottom: 3px; - padding-left: 5px; - border-left: 3px solid #515151; - width: 273px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.codefile-all p:hover { - background: #CCCCCC; - color: #333; -} - -.blacktab_hover a { - color: #fff; -} - -.-task-ces-top { - padding: 5px 15px; - background: #515151; - color: #bfbfbf; -} - -.-task-ces-info-left { - display: inline-block; - width: 100px; - text-align: right; -} - -.-position-a-r15 { - position: absolute; - top: 5px; - right: 15px; -} - -.-task-ml80 { - margin-left: 80px; -} - -.page--over { - position: fixed; - top: 0; - left: 80px; - right: 0; - z-index: 8000; - height: 100%; - color: #fff; -} - -.-task-list-header { - border-bottom: 1px solid #eee; - padding: 5px 15px; - color: #898989; - font-size: 14px; - font-weight: normal; -} - -.-task-list-header h3 { - font-weight: normal; - font-size: 16px; - color: #333; -} - -.-task-list-inner { - background: #EFF2F7; - margin: 10px; - padding: 5px; -} - -.-task-list-title { - font-size: 14px; - color: #666; - word-wrap: break-word; - font-weight: normal; - max-width: 80%; -} - -.greytab-inner { - background: #fff; -} - -.blacktab-inner { - background: #333; -} - -.task-padding16 { - padding: 16px; -} - -.task-padding10 { - padding: 10px; -} - -.task-padding-new { - padding-top: 16px -} - -/* TPM统计 20170321byLB */ -.panel-warp-3 { - width: 30%; - background: #23b181; - color: #fff; - margin: 2.5%; - margin-right: 0; - position: relative; -} - -.panel-warp-3-over { - background: #fff; - opacity: 0.8; - color: #29bd8b; - width: 100%; - height: 135px; - position: absolute; - top: 0; - left: 0; - text-align: center; - padding-top: 130px; -} - -.panel-warp-3-over a { - color: #29bd8b; - font-size: 18px; - text-align: center; - font-weight: bold; -} - -.panel-warp-img { - width: 30px; - height: 30px; - border-radius: 100px; -} - -.panel-warp-name { - display: block; - max-width: 100px; -} - -.panel-warp-inner { - padding: 15px; -} - -.panel-warp-dbg { - background: #29bd8b; - padding: 15px; - height: 120px; -} - -.panel-warp-dbg li { - margin-bottom: 15px; -} - -.panel-warp-dbg li:last-child { - margin-bottom: 0; -} - -.fa-icons-trophy { - position: relative; - padding-top: 10px; -} - -.fa-icons-trophy span { - position: absolute; - top: 12px; - right: 10px; - color: #f04b27; - font-size: 14px; - font-weight: bold; -} - -.fa-icons-flower { - display: inline-block; - width: 14px; - height: 14px; - background: url("../images/task/icons-flower.png") 0 0 no-repeat; -} - -.fa-icons-flower:hover { - display: inline-block; - width: 14px; - height: 14px; - background: url("../images/task/icons-flower.png") -18px 0 no-repeat; -} - -/* 实训首页 20170330byLB */ -.task-index { - width: 1200px; - margin: 0 auto; -} - -.task-index-head { - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); -} - -.task-index-head-top { - padding: 30px; - background: #FCA24B; - background: linear-gradient(to right, rgb(104, 177, 215) 0%, rgb(1, 75, 79) 100%); -} - -/*.task-index-head-top{ padding:30px;background:#FFA65E;}*/ -.top-xz { - position: absolute; - border: 14px solid #FFFFFF; - border-radius: 50%; - box-shadow: 0px 2px 10px rgba(142, 142, 142, 0.6); - opacity: 0.4; -} - -.task-index-head-top-course { - padding: 30px; - background: linear-gradient(to right, rgb(69, 191, 165) 0%, rgb(164, 175, 247) 100%); -} - -.task-inde-head-title { - color: #fff; -} - -.task-index-head-info { - background: #fff; - padding: 10px 30px; -} - -.task-index-head-info li { - width: 100px; - float: left; - text-align: center; - color: #666; -} - -.task-index-list { - width: 1200px; -} - - -.task-index-list-box { - box-sizing: border-box; - width: 23.87%; - margin: 0 1.5% 30px 0px; - border-radius: 2px; - border: 1px solid #eee; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); - color: #666; - position: relative; -} - -.task-index-list-box:hover { - -webkit-animation: bounce-down 1s linear 1; - animation: bounce-down 1s linear 1; -} - -.task-index-list-box:hover .black-half { - display: block; -} - -.task-index-list-box:nth-child(4n+0) { - margin: 0 0 30px 0; -} - -.task-mg8 { - margin: 0 15px 15px 0px; - border-radius: 2px; - border: 1px solid #eee; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); - color: #666; - position: relative; -} - -.task-index-list-box-top { - padding: 16px; - padding-top: 30px; - background: #fff; - text-align: center; - position: relative; - height: 160px; -} - -.task-index-list-title { - max-width: 80%; - display: block; - margin: 10px auto 0px; - font-size: 14px; - font-weight: bold; -} - -.task-index-list-user { - padding: 5px 10px; - border-radius: 25px; - background: #F5F6F7; - margin: 0px auto 20px; - display: inline-block; -} - -.task-index-list-box-bottom { - background: #F5F6F7; - color: #666; - padding: 10px 10%; - text-align: center; -} - -.task-index-list-box-bottom li { - display: inline; - margin: 0 5px; -} - -.task-index-list-box-bottom2 { - background: #fff; - color: #666; - padding: 10px 10%; - text-align: center; -} - -.task-index-list-box-bottom2 li { - display: inline; - margin: 0 5px; -} - -.task-vip { - position: absolute; - right: 15px; - top: 15px; -} - -@-webkit-keyframes bounce-down { - 25% { - -webkit-transform: translateY(-10px); - } - - 50%, - 100% { - -webkit-transform: translateY(0); - } -} - -@keyframes bounce-down { - 25% { - transform: translateY(-10px); - } - - 50%, - 100% { - transform: translateY(0); - } -} - -.task-index-list-hover { - position: absolute; - top: 0; - left: 0; - color: #fff; - width: 100%; - height: 100%; - border-radius: 2px 2px 0 0; -} - -.task-index-list-hover p { - margin: 15px; - overflow: hidden; - text-align: left; - height: 85%; -} - -.task-index-list-hover { - display: none; -} - -.task-mg8:hover .task-index-list-hover { - display: block; -} - -.task-mg8:hover { - box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.15); - cursor: pointer; -} - -.task-dropdown {} - -.task-dropdown-menu { - min-width: 100px; - border: 1px solid rgba(0, 0, 0, .05); - box-shadow: 0 6px 12px rgba(0, 0, 0, .15); -} - -.task-dropdown-menu li a { - color: #666; -} - -/* 伸展型搜索 20170330byLB */ -.search-wrapper { - position: absolute; - font-size: 14px; -} - -.search-wrapper .input-holder { - overflow: hidden; - height: 30px; - position: relative; - width: 32px; - background: none; -} - -.search-wrapper.active .input-holder { - width: 320px; - border: none; - border-bottom: 2px solid #ccc; -} - -.search-wrapper .input-holder .search-input { - width: 100%; - height: 30px; - font-size: 14px; - position: absolute; - top: 0px; - left: 0; - border: none; - opacity: 0; -} - -.search-wrapper.active .input-holder .search-input { - opacity: 1; - outline: none; - background: none; -} - -.search-wrapper .search-icon { - width: 20px; - height: 20px; - border: none; - padding: 0px; - outline: none; - position: relative; - z-index: 2; - float: right; - cursor: pointer; - background: none; - color: #666; - top: 2px; -} - -.search-wrapper .close { - position: absolute; - z-index: 1; - top: 2px; - right: 20px; - width: 25px; - height: 25px; - cursor: pointer; - opacity: 0; - color: #666; -} - -.search-wrapper.active .close { - right: -35px; - opacity: 1; -} - -a.sortArrowActiveD { - background: url(../images/post_image_list.png) -0px -20px no-repeat; - width: 7px; - height: 9px; - float: left; - margin-top: 10px; - margin-left: 5px; -} - -a.sortArrowActiveU { - background: url(../images/post_image_list.png) -17px -20px no-repeat; - width: 7px; - height: 9px; - float: left; - margin-left: 5px; - margin-top: 10px; -} - -.postSort { - width: 75px; - float: right -} - -.shixunPostSort { - width: 60px; - float: right -} - -.remove_li li { - list-style-type: none !important; -} - -a.shixun-task-btn { - display: inline-block; - font-weight: bold; - border: none; - padding: 0 12px; - color: #666; - letter-spacing: 1px; - text-align: center; - font-size: 14px; - height: 30px; - line-height: 30px; - border-radius: 3px; -} - -a.shixun-task-ban-btn { - background-color: #c2c4c6; - display: inline-block; - font-weight: bold; - border: none; - padding: 0 12px; - color: #666; - letter-spacing: 1px; - text-align: center; - font-size: 14px; - height: 30px; - line-height: 30px; - border-radius: 3px; - cursor: default; -} - -.shixun-panel-list>div:nth-child(odd) { - background: #f9f9f9; -} - -.shixun-panel-list>div:nth-child(even) { - background: #fff; -} - -.shixun-panel-list { - background: #fff; - margin: 0 1px; -} - -.shixun-panel-inner { - background: #EFF2F7; - padding: 15px; - height: 70px; -} - -.challange_operate { - display: none -} - -.shixun-panel-inner:hover .challange_operate { - display: block -} - -.shixun_title { - color: #333; - font-size: 16px; -} - -.g_frame { - border: 1px solid #29bd8b; - color: #29bd8b; - padding: 0 5px; - border-radius: 3px; - text-align: center; -} - -.loading-center { - text-align: center; - align-items: center; - justify-content: center; -} - -.center { - vertical-align: middle; - text-align: center; -} - -.itoblock_w150 { - display: block; - float: left; - width: 150px -} - -.itoblock_w75 { - display: block; - float: left; - width: 75px -} - -/*实训--技能勋章*/ -.modal-list li { - float: left; - padding: 0px 15px; - background: #ff7500; - color: #ffffff; - border-radius: 4px; - margin-right: 10px -} - -.modal-list li:before { - content: '●'; - color: #FFFFFF; - margin-right: 5px; - font-size: 14px -} - -.modal-list span { - width: 8px; - height: 8px; - border-radius: 50%; - background: #ffffff; - display: block; - float: left; - margin-right: 5px; - margin-top: 10px; -} - -/* 合作者 20170516byLB */ -.task-partner-list { - padding: 15px; - border-bottom: 1px solid #eee; -} - -.task-width33 { - width: 33.3%; -} - -.read_only { - -moz-user-select: none; - -webkit-user-select: none; -} - -.task-form-28 { - width: 28%; - padding: 0px 10px -} - - -/* 实训首页的搜索 */ -.xy_box { - padding: 16px; - height: 180px -} - -.task_yx_bo { - margin: 0px auto 13px; -} - -.course-nav-box { - padding: 0px 10px; - margin: 30px 0px -} - -.xy_level { - width: 80%; - margin: 0px auto; - border-top: 1px solid #eee; - margin-top: 5px; - line-height: 35px; -} - -.course-nav-row { - padding: 7px 0px -} - -.course-nav-row_item li { - width: auto; - height: 30px; - line-height: 30px; - margin: 5px; - padding: 0px 15px; -} - -.course-nav-row_item label { - cursor: pointer; -} - -.check_item { - height: 40px; - line-height: 40px; - padding: 0px 15px; -} - -.more_check { - position: absolute; - bottom: 5px; - right: 10px; - cursor: pointer; -} - - -.bottomdashed1 { - border-bottom: 1px dashed #eeeeee; -} - -/*更多和收起*/ -.two_line_lesson { - height: 80px; - overflow: hidden; -} - -.more_line_lesson { - max-height: 200px; - display: block; -} - -.scroll_lesson { - overflow-x: hidden; - overflow-y: scroll; -} - -.searchFor { - width: auto; -} - -.searchFor .searchCon { - width: 250px; - border-bottom: 1px solid #cccccc; - float: left; - height: 30px; -} - -.searchFor .searchCon input { - border: none; - outline: none; - height: 29px; - width: 91%; -} - -.searchFor .searchImg { - margin: 5px 10px 0px 0px; - cursor: pointer; -} - -.searchFor .search_close { - font-size: 18px; - float: right; - color: #666; - height: 29px; - line-height: 29px; - cursor: pointer; -} - -.tab_color { - color: #bfbfbf !important; -} - -/*_game_show.html.erb页面新增的一个tab*/ -.comments_item_content img { - border-radius: 50%; - margin-right: 5px -} - -.comment_item_one { - flex: 1; -} - -.comment_item_bottom { - border-bottom: 1px solid #efefef; - display: flex -} - -.comment_item_top { - border-top: 1px solid #efefef -} - -.comment_item_left_green { - border-left: 3px solid #29bd8b -} - -.return_item { - height: 20px; - line-height: 20px; - margin-top: 5px; -} - -.comment-input { - width: 100%; - margin: 10px; - margin-right: 17px; -} - -.comment-input textarea { - border: none !important; - width: 100%; - outline: none; - height: 30px; - border-radius: 4px; - padding-left: 5px; - float: left -} - -.comment_position { - position: absolute; - bottom: 8px; - right: 20px -} - -/*-------新建阶段添加选项部分----------*/ -.option-item { - border: 1px solid #e2e2e2; -} - -.option-item, -.add-option-item { - display: block; - width: 38px; - height: 38px; - text-align: center; - line-height: 38px; - border-radius: 4px -} - -.check-option-bg { - background: #FF7500; - color: #ffffff !important; - border: 1px solid #FF7500 -} - -.add-option-input { - padding: 5px; - width: 90%; - height: 40px; - min-width: 700px; -} - -.add-option-input a { - display: block; - width: 100%; - height: 100%; - cursor: pointer -} - -.position-delete { - position: absolute; - right: -22px; - top: 12px; - cursor: pointer -} - -/*--------TPI的答案选项卡------*/ -.quiz-task-options:not(.-compact) { - padding: 10px; -} - -.card { - position: relative; - border-radius: 2px; - overflow: hidden; -} - -/*.card:hover{background: #3f3f3f;}*/ -.card-check { - background: #3498db !important; -} - -.-justify { - justify-content: space-between; -} - -.-center { - align-items: center; - min-height: 66px; -} - -.markdown { - letter-spacing: 0; - line-height: 1.6; - word-wrap: break-word; - word-break: break-word; -} - -.markdown code { - padding: 0; - line-height: 23px; - margin: 0; - font-family: "微软雅黑", "宋体"; -} - - -/*模拟实战---加载等待*/ -.loading_all { - background: #ffffff; - z-index: 100000; - width: 100%; - height: 100%; - position: fixed; - left: 0px; - top: 0px; - text-align: center; -} - -.loading_main img { - border-radius: 4px; -} - -.loading_main span { - font-size: 44px; - font-weight: bold; - color: #ff7500; - letter-spacing: 5px; - margin-left: 5px; -} - -.load { - width: auto; - top: 50%; - margin-top: -100px; - position: relative; -} - -.loading_seconde { - color: #ff7500; - letter-spacing: 3px; - font-size: 16px; -} - -#ajax-indicator-base { - position: absolute; - /* fixed not supported by IE*/ - /* - - top: 50%; - left: 50%; - margin-left: -20px; - margin-top: -40px; - width: 20%; - height: 5%; */ - width: 100%; - height: 100%; - font-weight: bold; - text-align: center; - /*padding:0.6em;*/ - z-index: 9999; - background: rgba(225, 225, 225, 0); -} - -html>body #ajax-indicator-base { - position: fixed; -} - -#ajax-indicator-base embed { - position: relative; - top: 40%; - width: 40px; - height: 40px; - margin-left: -40px; - left: 50%; -} - -/*#ajax-indicator-base span{ - color:#fff; - background-position: 0% 40%; - background-repeat: no-repeat; - */ -/*background-image: url(/images/loading.gif);*/ -/* - padding-left: 26px; - vertical-align: bottom; - z-index:999; -}*/ - -.save-tip { - display: none; - position: fixed; - top: 0px; - left: 0px; - width: 100%; - height: 100%; -} - -.save-tip-content { - position: absolute; - top: 50%; - left: 50%; - margin-left: -36px; - margin-top: -19px; - background: rgba(0, 0, 0, 0.7); - color: #fff; - padding: 5px 15px; - border-radius: 4px -} - -.empty { - background: #494A4C; - display: inline; - margin: 0 2px; - padding: 0 3px; -} - -.tab-key { - background: #494A4C; - display: inline; - margin: 0 2px; - padding: 0 6px; -} - -/*二次回复的提示语的样式*/ -.points-data-tip-top { - position: absolute; - left: 100px; - top: -30px; - opacity: .7; - width: 150px; - height: 30px; - z-index: 9999; - display: none; -} - -.data-tip-top1 { - position: relative; - box-shadow: 0px 0px 8px #000; - background: #000; - color: #fff; - word-wrap: break-word; - text-align: center; - border-radius: 4px; - padding: 0 10px; - border: 1px solid #000; -} - -.data-tip-top1:after, -.data-tip-top1:before { - position: absolute; - content: ''; - width: 0; - height: 0; - left: 45%; - bottom: -10px; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 10px solid #000; -} - -.data-tip-top1:before { - bottom: -11px; -} - -/*选择题tab切换*/ -.nav_option li { - overflow: hidden; - width: 110px; - text-align: center; - cursor: pointer; - height: 38px; - line-height: 38px; - border-top-right-radius: 5px; - border-top-left-radius: 5px; - border: 1px solid #e2e2e2; - border-bottom: 0px; - color: #FF7500; - border-right: none; -} - -.nav_option li:last-child { - border-right: 1px solid #e2e2e2; -} - -.nav_option li a { - width: 100%; - height: 100%; - display: block; -} - -/*---------------------试卷----------------------*/ -.question_item_con { - font-weight: normal !important; - border: 1px solid #EEEEEE !important; - color: #333 !important; - background: #FFFFff !important; - position: relative -} - -.exam_operator { - cursor: pointer; - position: absolute; - right: 15px; - top: 11px; -} - -.question_item_con .write_answer { - border-top: 1px solid #EEEEEE; - background: #EFF9FD; - padding: 10px 15px; - text-align: justify; -} - -.add_item_part { - width: auto; - padding: 2px 20px; - border: 1px solid #ff7500; - border-radius: 3px; - margin-left: 15px; - cursor: pointer; - color: #ff7500 !important; -} - -.add_item_part:hover { - color: #fff !important; - background-color: #ff7500 -} - -/*作业问答*/ -.work_search_ul { - border: 1px solid #EEEEEE; - border-radius: 4px; -} - -.work_search_ul li span { - display: block; - float: left; - height: 38px; - line-height: 38px -} - -.work_search_ul li { - border-bottom: 1px dashed #EEEEEE; -} - -.work_search_ul li:last-child { - border-bottom: none -} - -.work_search_ul .magic-radio+label, -.work_search_ul .magic-checkbox+label { - top: 5px -} - -/*更新提示*/ -.update_back_main { - display: none; - position: fixed; - left: 0px; - top: 0px; - background: rgba(0, 0, 0, 0.3); - width: 100%; - z-index: 7001; - height: 100%; -} - -.tip-panel-animate-left { - position: absolute; - z-index: 9000; - left: 80px; - top: 290px; - background: #FFFFff; - width: 430px; - height: 140px; - border-radius: 3px; -} - -.tip-panel-animate { - position: absolute; - z-index: 10001; - right: 4px; - top: 40px; - background: #FFFFff; - width: 430px; - height: 140px; - border-radius: 3px; - display: none -} - -.tip-panel-animate .tip-img, -.tip-panel-animate-left .tip-img { - width: 130px; - text-align: center; - background-color: #E8E9ED; - height: 100%; -} - -.tip-panel-animate .tip-img img, -.tip-panel-animate-left .tip-img img { - width: 70px; - height: 70px; - margin: 35px 30px; -} - -.tip-right-con { - width: 69.7%; - height: 100%; -} - -.tip-operator-btn { - width: 100%; - border-top: 1px solid #eee; - height: 40px; - position: absolute; - right: 0px; - bottom: 0px; - text-align: center; -} - -.tip-operator-btn a, -.tip-operator-btn span { - height: 100%; - text-align: center; - line-height: 40px; - width: 50% -} - -.tip-operator-btn a:hover, -.tip-operator-btn span:hover { - background-color: #f9f9f9 -} - -.tip-operator-btn a:first-child, -.tip-operator-btn span:first-child { - border-right: 1px solid #eee; - width: 49.5% -} - -.animate-tip { - animation: rightToleft 1s; -} - -.animate-tip-hide { - animation: leftToright 1s; -} - -@keyframes rightToleft { - from { - right: -400px; - } - - to { - right: 4px; - } -} - -@keyframes leftToright { - from { - right: 4px; - } - - to { - right: -420px; - } -} - -.animate-tip-l { - animation: rightToleft-l 1s; -} - -.animate-tip-hide-l { - animation: leftToright-l 1s; -} - -@keyframes rightToleft-l { - from { - left: -400px; - } - - to { - left: 80px; - } -} - -@keyframes leftToright-l { - from { - left: 80px; - } - - to { - left: -420px; - } -} - -/*----------实训TPI图片查看效果--------------*/ -.photo_display { - box-sizing: border-box; - width: 100%; - position: fixed; - top: 0px; - left: 0px; - padding-top: 64px; - padding-left: 80px; - background: rgba(0, 0, 0, 0); - height: 100%; - z-index: 100 -} - -.photo_display .task-popup { - width: 100% !important; - height: 100% !important; -} - -#picture-content img { - max-width: 100%; - height: 400px; - display: block; - margin: 0px auto; - margin-bottom: 20px; -} - -#box-img { - width: 100%; - height: 100%; - display: table; - text-align: center; - background: #fff; -} - -#box-img span { - display: table-cell; - vertical-align: middle; -} - -/*-------------学员统计 通关排行榜------------*/ -.rankings_num { - position: absolute; - width: 100%; - top: 3px; - height: 15px; - line-height: 15px; - left: 0px; - font-size: 12px; - color: #F24B27; - text-align: center -} - -.census_main { - width: 1086px; - overflow: hidden; - position: relative; - min-height: 350px; - margin: 0px 45px; -} - -.census_main ul { - position: absolute; - min-width: 1086px; -} - -.census_main ul>li { - float: left; - width: 260px; - margin: 6px 6px; - min-height: 335px -} - -.census_main ul>li:nth-child(4n) { - margin-right: 0px; -} - -.part_main { - border-radius: 5px; - background: #FFFFff; - border: 1px solid #EEEEEE -} - -.part_main .part_top { - background: #FF9E6A; - color: #FFFFff; - padding: 10px 15px; - border-radius: 5px 5px 0px 0px; -} - -.wipe { - display: none; - cursor: pointer; - line-height: 332px; - color: #FFFFff !important; - font-size: 16px; - width: 100%; - position: absolute; - left: 0px; - top: 0px; - background: rgba(0, 0, 0, 0.3); - height: 100%; - z-index: 3; - text-align: center; - border-radius: 5px; -} - -.part_main:hover .wipe { - display: block; -} - - -#census_left, -#census_right { - display: none; - position: absolute; - cursor: pointer; - background: #FCF2EC; - padding: 10px 5px; - width: 35px; - box-sizing: border-box; - top: 122.5px; - text-align: center -} - -#census_left i, -#census_right i { - color: #FBBD81; -} - - -/*-----------实训配置、评测脚本-------------*/ -.edit_script_text .test_script_text { - word-break: break-all; - background-color: #f7f7f7; -} - -.edit_script_text .CodeMirror-lines { - padding: 0px !important; - padding-bottom: 4px -} \ No newline at end of file diff --git a/src/AppConfig.js b/src/AppConfig.js index 12abacae..434b1f9d 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -100,7 +100,7 @@ export function initAxiosInterceptors(props) { // TODO 读取到package.json中的配置? var proxy = "http://localhost:3000" // proxy = "https://pre-newweb.educoder.net" - proxy = "https://testforgeplus.trustie.net/" + proxy = "https://testforgeplus.trustie.net" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; diff --git a/src/forge/Component/SearchUser.jsx b/src/forge/Component/SearchUser.jsx new file mode 100644 index 00000000..1df7ec64 --- /dev/null +++ b/src/forge/Component/SearchUser.jsx @@ -0,0 +1,70 @@ +import React , { useState , useEffect } from 'react'; +import { AutoComplete } from 'antd'; +import { getImageUrl } from "educoder"; +import axios from 'axios'; +const Option = AutoComplete.Option; + +export default ({ getUser })=>{ + const [ searchKey , setSearchKey ] = useState(undefined); + const [ userDataSource , setUserDataSource ] = useState(undefined); + + function getUserList(e){ + const url = `/users/list.json`; + axios.get(url, { + params: { + search: e, + }, + }) + .then((result) => { + if (result) { + setUserDataSource(result.data.users); + } + }) + .catch((error) => { + console.log(error); + }); + }; + + function changeInputUser(value){ + setSearchKey(value); + getUserList(value); + } + + function selectInputUser(id, option){ + setSearchKey(option.props.searchValue); + getUserList(option.props.searchValue); + getUser && getUser(id); + } + const source = + userDataSource && userDataSource.map((item, key) => { + return ( + + ); + }); + return( + + ) +} \ No newline at end of file diff --git a/src/forge/Component/layout.jsx b/src/forge/Component/layout.jsx index a2eece9f..6d4e2365 100644 --- a/src/forge/Component/layout.jsx +++ b/src/forge/Component/layout.jsx @@ -49,11 +49,12 @@ export const WhiteBack = styled.div`{ }` export const Blueline = styled.a`{ height:32px; - line-height:32px; + line-height:30px; border-radius:2px; border:1px solid rgba(80,145,255,1); color:rgba(80,145,255,1); padding:0px 12px; + display:inline-block; }` export const Redline = styled.a`{ height:32px; diff --git a/src/forge/Main/CoderRootFileDetail.js b/src/forge/Main/CoderRootFileDetail.js index c296e703..7430d0bb 100644 --- a/src/forge/Main/CoderRootFileDetail.js +++ b/src/forge/Main/CoderRootFileDetail.js @@ -1,5 +1,5 @@ import React, { Component } from "react"; -import { Popconfirm, Select } from "antd"; +import { Popconfirm, Select } from "antd"; import "./list.css"; import axios from "axios"; import Meditor from "../Newfile/m_editor"; @@ -16,17 +16,85 @@ class CoderRootFileDetail extends Component { super(props); this.state = { value: undefined, - language: undefined + language: undefined, + languages: undefined, }; } componentDidMount = () => { const { detail } = this.props; - this.setState({ value: detail.content, }); + this.languages_total(); }; + + languages_total = () => { + const { detail } = this.props; + const file_name = detail.path.split("/").pop().split(".").pop(); + let languages = []; + let default_language = "javascript"; + let all_languages = { + apex: ["apex", "apxc"], + azcli: ["azcli"], + bat: ["bat"], + clojure: ["clj"], + coffee: ["coffee"], + cpp: ["cpp"], + csharp: ["cs"], + csp: ["csp"], + css: ["css"], + dockerfile: ["dockerfile", "docker", "yml"], + fsharp: ["fs"], + go: ["go"], + html: ["html", "htm", "erb"], + ini: ["ini"], + java: ["java", "class"], + javascript: ["js"], + json: ["json"], + less: ["less"], + lua: ["lua"], + markdown: ["markdown", "md", "rmd"], + msdax: ["dax"], + mysql: ["sql"], + objective: ["m", "mm", "o", "out"], + perl: ["perl"], + pgsql: ["sql"], + php: ["php"], + postiats: ["postiats"], + powerquery: [""], + powershell: ["ps1"], + pug: ["pug"], + python: ["py"], + r: ["r"], + razor: ["cshtml"], + redis: ["rdb"], + ruby: ["rb"], + rust: ["rs"], + sb: ["sb"], + scheme: ["scm", "ss"], + scss: ["scss"], + shell: ["sh"], + solidity: ["sol"], + sql: ["sql"], + st: ["st"], + swift: ["swift"], + typescript: ["ts"], + vb: ["vbp", "frm", "frx", "bas", "cls"], + xml: ["xml"], + yaml: ["yml"], + }; + for (var item in all_languages) { + languages.push(item); + let item_values = all_languages[item]; + if (item_values.indexOf(file_name) !== -1) { + default_language = item; + } + } + this.state.languages = languages; + this.state.language = default_language; + }; + select_language = (e) => { this.setState({ language: e, @@ -39,7 +107,6 @@ class CoderRootFileDetail extends Component { // readOnly: false, // }); }; - // 编辑文件 @@ -73,7 +140,6 @@ class CoderRootFileDetail extends Component { }); }; - updateCode = (value) => { this.setState({ value, @@ -81,73 +147,30 @@ class CoderRootFileDetail extends Component { }; render() { - const { readOnly , detail, current_user, isManager, isDeveloper } = this.props; - const { language } = this.state; + const { + readOnly, + detail, + current_user, + isManager, + isDeveloper, + } = this.props; + const { language, languages } = this.state; let flag = current_user && current_user.login && (isManager || isDeveloper); const Option = Select.Option; - const languages = [ - "apex", - "azcli", - "bat", - "clojure", - "coffee", - "cpp", - "csharp", - "csp", - "css", - "dockerfile", - "fsharp", - "go", - "handlebars", - "html", - "ini", - "java", - "javascript", - "json", - "less", - "lua", - "markdown", - "msdax", - "mysql", - "objective", - "perl", - "pgsql", - "php", - "postiats", - "powerquery", - "powershell", - "pug", - "python", - "r", - "razor", - "redis", - "redshift", - "ruby", - "rust", - "sb", - "scheme", - "scss", - "shell", - "solidity", - "sql", - "st", - "swift", - "typescript", - "vb", - "xml", - "yaml", - ]; + return (
- {bytesToSize(detail && detail.size)} + + {bytesToSize(detail && detail.size)} +

{flag && (

{readOnly ? ( - this.EditFile(false)} className="ml20"> + this.EditFile(false)} className="ml20"> ) : ( @@ -160,14 +183,19 @@ class CoderRootFileDetail extends Component { onChange={this.select_language} > - {languages.map((item, key) => { - return ; - })} + {languages && + languages.map((item, key) => { + return ( + + ); + })} @@ -187,20 +215,22 @@ class CoderRootFileDetail extends Component {
)} - { - detail.image_type && detail.direct_download ? -
- - 下载原始文件 - -
:"" - }

- {detail.image_type && detail.direct_download ? ( + {detail.image_type ? (
- + +
+ ) : detail.direct_download ? ( +
+ + 下载原始文件 +
) : ( { - this.setState({ - filename: e.target.value, - }); - }; + // 命名文件 + changeFileName = (e) => { + this.setState({ + filename: e.target.value, + }); + }; // 提交变更 subMitFrom = () => { - const { filepath, content,editor_type } = this.props; + const { filepath, content, editor_type } = this.props; const { branch, projectsId } = this.props.match.params; const { submitType, filename } = this.state; - this.setState({isSpin: true}) + this.setState({ isSpin: true }); let path = editor_type === "upload" ? filepath : filepath.substr(1); this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { @@ -48,28 +48,28 @@ class UserSubmitComponent extends Component { message: values.desc, }) .then((result) => { - this.setState({isSpin: false}) + this.setState({ isSpin: false }); if (result.data && result.data.name) { let url = values.branchname - ? `/projects/${projectsId}/coders?branch=${values.branchname}` - : `/projects/${projectsId}/coders`; + ? `/projects/${projectsId}/coders?branch=${values.branchname}` + : `/projects/${projectsId}/coders`; this.props.history.push(url); this.props.showNotification("文件新建成功!"); } }) .catch((error) => { - this.setState({isSpin: false}) + this.setState({ isSpin: false }); console.log(error); }); - }else{ - this.setState({isSpin: false}) + } else { + this.setState({ isSpin: false }); } }); }; // 确认修改文件 UpdateFile = () => { - this.setState({isSpin: true}) + this.setState({ isSpin: true }); const { branch, detail, content, filepath } = this.props; const { projectsId } = this.props.match.params; const { submitType } = this.state; @@ -86,28 +86,28 @@ class UserSubmitComponent extends Component { message: values.desc, }) .then((result) => { - this.setState({isSpin: false}) + this.setState({ isSpin: false }); if (result.data && result.data.status === 1) { let url = values.branchname ? `/projects/${projectsId}/coders?branch=${values.branchname}` : `/projects/${projectsId}/coders`; - + this.props.history.push(url); this.props.showNotification("修改成功!"); } }) .catch((error) => { - this.setState({isSpin: false}) + this.setState({ isSpin: false }); console.log(error); }); - }else{ - this.setState({isSpin: false}) + } else { + this.setState({ isSpin: false }); } }); }; render() { - const { submitType,filename, isSpin } = this.state; + const { submitType, filename, isSpin } = this.state; const { getFieldDecorator } = this.props.form; const { branch, projectsId } = this.props.match.params; @@ -160,81 +160,89 @@ class UserSubmitComponent extends Component { 提交变更 -
-
-
- - {getFieldDecorator("path", { - rules: [], - })( - // -
- -
- )} -
- - {getFieldDecorator("desc", { - rules: [ - { - required: true, - message: "请添加描述信息", - }, - ], - })( - - )} - {helper( - "公司介绍", - "intro", - [{ max: 5000, message: "超过5000字符" }], - - )} - - ); -}); diff --git a/src/modules/recruitment/jobForm/popup/AddClass.js b/src/modules/recruitment/jobForm/popup/AddClass.js deleted file mode 100644 index 5924188a..00000000 --- a/src/modules/recruitment/jobForm/popup/AddClass.js +++ /dev/null @@ -1,51 +0,0 @@ -import React, { useCallback } from "react"; -import { Input, Form } from "antd"; -import Modal from "../../util/Modal"; -import { CenterBtnGrp, OkBtn, CancelBtn } from "../../util/GeneralButton"; - -const InnerForm = Form.create()(({ form, onCancel, setValue }) => { - const { getFieldDecorator, validateFields } = form; - const rules = [ - { required: true, message: "请输入职业分类" }, - { max: 10, message: "超过10字符" }, - { whitespace: true, message: "不能全空" }, - ]; - const formLayout = { - labelCol: { span: 5 }, - wrapperCol: { span: 17 }, - }; - const onOk = useCallback(() => { - validateFields((e, v) => { - if (e) { - return; - } - setValue(v); - onCancel(); - }); - }, []); - return ( -
- - {getFieldDecorator("father", { rules })( - - )} - - - {getFieldDecorator("son", { rules })( - - )} - - - - - -
- ); -}); - -//visible, setValue, onCancel -export default ({ setValue, ...props }) => ( - - - -); diff --git a/src/modules/recruitment/jobForm/popup/SelectClass.js b/src/modules/recruitment/jobForm/popup/SelectClass.js deleted file mode 100644 index 3252a777..00000000 --- a/src/modules/recruitment/jobForm/popup/SelectClass.js +++ /dev/null @@ -1,66 +0,0 @@ -import { Row, Col } from 'antd'; -import React, { useState, useCallback, useRef, useEffect } from 'react'; -import Loading from '../../util/Loading'; -import { getJobCate } from '../../data/getJobCate'; -import Modal from '../../util/Modal'; -import { CenterBtnGrp, OkBtn, CancelBtn } from '../../util/GeneralButton'; -import FatherNav from './selectWidget/FatherNav'; -import SonArea from './selectWidget/SonArea'; - - -//visible, setValue, onCancel -export default ({ setValue, ...props }) => { - const [isloaded, setLoaded] = useState(false); - const dataRef = useRef(null); - useEffect(() => { - const f = async () => { - const map = await getJobCate(); - //const map = mock; - dataRef.current = map; - setLoaded(true); - } - f(); - return () => { setLoaded(false); }; - }, []); - const [selectedCate, setCate] = useState(null); - const [selectedJob, setJob] = useState(null); - const selectCate = useCallback(text => { - if (text === selectedCate) { - return; - } - setCate(text); - setJob(null); - }, []); - const selectJob = useCallback(text => { - if (text === selectedJob) { - return; - } - setJob(text); - }, []); - const onOk = useCallback(() => { - if (selectedJob === null) { - return; - } - props.onCancel(); - setValue({ father: selectedCate, son: selectedJob }); - }, [selectedCate, selectedJob]); - const Content = - - - - -
- -
- - - - - -
; - return - {!isloaded ? : Content} - ; -}; \ No newline at end of file diff --git a/src/modules/recruitment/jobForm/popup/selectWidget/FatherItem.js b/src/modules/recruitment/jobForm/popup/selectWidget/FatherItem.js deleted file mode 100644 index 3455e387..00000000 --- a/src/modules/recruitment/jobForm/popup/selectWidget/FatherItem.js +++ /dev/null @@ -1,29 +0,0 @@ -import styled from 'styled-components'; -import React from 'react'; -import { Icon as AdIcon } from "antd"; -import { pointerMixin, betweenMixin } from "../../../util/cssMixin"; - -const Item = styled.div` - height:57px; - background:${p => p.isSelected ? "rgba(241,241,241,1)" : "transparent"}; - ${pointerMixin} - ${betweenMixin} -`; -const Name = styled.div` - color:rgba(51,51,51,1); - font-size:16px; - font-family:MicrosoftYaHei; - margin-left:30px; -`; -const Icon = styled(AdIcon)` - display:block; - color:rgba(187,187,187,1); - margin-right:20px; -`; - -//onClick, isSelected -export default ({ children, ...props }) => - - {children} - - ; \ No newline at end of file diff --git a/src/modules/recruitment/jobForm/popup/selectWidget/FatherNav.js b/src/modules/recruitment/jobForm/popup/selectWidget/FatherNav.js deleted file mode 100644 index 5d492d9f..00000000 --- a/src/modules/recruitment/jobForm/popup/selectWidget/FatherNav.js +++ /dev/null @@ -1,14 +0,0 @@ -import styled from 'styled-components'; -import React from 'react'; -import Item from './FatherItem'; - -const Column = styled.div` - background:rgba(250,250,250,1); - height:100%; - overflow:auto; -`; - -export default ({ data, selectCate, selectedCate }) => //data is a map - - {Array.from(data.keys()).map(i => { selectCate(i); }} isSelected={selectedCate === i}>{i})} - ; \ No newline at end of file diff --git a/src/modules/recruitment/jobForm/popup/selectWidget/SonArea.js b/src/modules/recruitment/jobForm/popup/selectWidget/SonArea.js deleted file mode 100644 index facb25ad..00000000 --- a/src/modules/recruitment/jobForm/popup/selectWidget/SonArea.js +++ /dev/null @@ -1,19 +0,0 @@ -import { Row } from "antd"; -import React from "react"; -import { JobBtn } from "../../../util/GeneralButton"; - -export default ({ data, selectedJob, selectJob }) => ( - - {Array.from(data.keys()).map((i) => ( - { - selectJob(i); - }} - isSelected={selectedJob === i} - > - {i} - - ))} - -); diff --git a/src/modules/recruitment/jobForm/widget/CateSelect.js b/src/modules/recruitment/jobForm/widget/CateSelect.js deleted file mode 100644 index 55b8d570..00000000 --- a/src/modules/recruitment/jobForm/widget/CateSelect.js +++ /dev/null @@ -1,61 +0,0 @@ -import React, { forwardRef } from "react"; -import { Icon, Row } from "antd"; -import { useToggle } from "../../util/hooks"; -import styled from "styled-components"; -import { BtnBase } from "../../util/Button"; -import AddClassPopup from "../popup/AddClass"; -import SelectClassPopup from "../popup/SelectClass"; - -const SimulateInput = styled(BtnBase)` - border-radius: 4px; - border: 1px solid rgba(221, 221, 221, 1); - width: 252px; - padding-left: 10px; - padding-right: 10px; - margin-bottom: 5px; - &:hover { - border: 1px solid #40a9ff; - } - &.has-error { - border: 1px solid #f5222d; - } -`; - -const SI = ({ children }) => ( - {children} -); - -const Value = styled.span` - font-size: 14px; - color: rgba(51, 51, 51, 1); - font-family: MicrosoftYaHei; -`; -const Placeholder = styled(Value)` - color: rgba(187, 187, 187, 1); -`; - -export default forwardRef(({ onChange, value, placeholder }, ref) => { - const [v1, sv1] = useToggle(); - const [v2, sv2] = useToggle(); - return ( - - - - {!value || !value.father || !value.son ? ( - 请选择职位类别 - ) : ( - {`${value.father}/${value.son}`} - )} - - - - - - - - ); -}); diff --git a/src/modules/recruitment/jobForm/widget/InputWithLen.js b/src/modules/recruitment/jobForm/widget/InputWithLen.js deleted file mode 100644 index dfa26f02..00000000 --- a/src/modules/recruitment/jobForm/widget/InputWithLen.js +++ /dev/null @@ -1,7 +0,0 @@ -import React, { forwardRef } from "react"; -import { Input } from "antd"; - -export default forwardRef(({ maxLen, ...props }, ref) => { - const len = !props.value ? 0 : props.value.length; - return {`${len}/${maxLen}`}} ref={ref} /> -}); \ No newline at end of file diff --git a/src/modules/recruitment/jobForm/widget/TextArea.js b/src/modules/recruitment/jobForm/widget/TextArea.js deleted file mode 100644 index de4e1423..00000000 --- a/src/modules/recruitment/jobForm/widget/TextArea.js +++ /dev/null @@ -1,6 +0,0 @@ -import styled from 'styled-components'; -import { Input } from "antd"; - -export default styled(Input.TextArea)` - resize:none; -`; \ No newline at end of file diff --git a/src/modules/recruitment/recrulistcss/recrulistcss.scss b/src/modules/recruitment/recrulistcss/recrulistcss.scss deleted file mode 100644 index 8540ab4c..00000000 --- a/src/modules/recruitment/recrulistcss/recrulistcss.scss +++ /dev/null @@ -1,260 +0,0 @@ - -.IntermediateCenter { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - -} - -.JianDcentered { - display: flex; - align-items: center; -} - -.spacearound { - display: flex; - justify-content: space-around; - -} - -.spacebetween { - display: flex; - justify-content: space-between; -} - -.topcenter { - display: -webkit-flex; - flex-direction: column; - align-items: center; - -} - -.sortinxdirection { - display: flex; - flex-direction: row; -} - -.xaxisreverseorder { - display: flex; - flex-direction: row-reverse; -} - -.verticallayout { - display: flex; - flex-direction: column; -} - -.reversedirection { - display: flex; - flex-direction: column-reverse; -} - -.color88 { - color: #888888; -} - -.mr7 { - margin-right: 7px; -} -.ml21{ - margin-left: 21px; -} - -.mt22 { - margin-top: 22px; -} - -.w50s { - width: 50%; -} -.w70s { - width: 70%; -} -.w80s { - width: 80%; -} - -.w20s { - width: 20%; -} - -.w83s { - width: 83%; -} - -.w17s { - width: 17%; -} - -.iconcolor { - color: #4CADFF !important; -} - -.lh45s { - line-height: 45px; -} - -.lh48s { - line-height: 48px; - -} - -.lh40s { - line-height: 40px; -} - -.titless100 { - max-width: 100px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - -.w1199dbl { - width: 1200px; - min-height: 60px; - background: rgba(255, 255, 255, 1); - -webkit-box-shadow: 0px 6px 8px 0px rgba(0, 0, 0, 0.03); - box-shadow: 0px 6px 8px 0px rgba(0, 0, 0, 0.03); - border-radius: 2px; -} -.divgreens{ - color: #42B366; - background: #D8F7E2 !important; - border: 1px solid #D8F7E2 !important; -} -.divViolets{ - color: #5B36D1; - border: 1px solid #E8E1FF !important; - background: #E8E1FF !important; - -} -.divoranges{ - color: #E65A18; - border: 1px solid #FFF2EC !important; - background: #FFF2EC!important; - -} -.divreds{ - color: #F30F0F; - border: 1px solid #FFE6E6 !important; - background: #FFE6E6 !important; -} - -.xiaoshou { - cursor: pointer !important; -} - -.xiaoshout { - cursor: default !important; -} - -.pdtop30 { - padding-top: 30px !important; -} -.pd30{ - padding: 30px; -} -.ptabo{ - .ant-input-wrapper { - .ant-input { - height: 48px !important; - line-height: 46px !important; - } - } - - .ant-input-group-addon { - width: 48px !important; - - .ant-btn-lg { - height: 46px !important; - width: 108px; - border-left: 1px solid #1890ff !important; - border-bottom: 1px solid #1890ff !important; - border-right: 1px solid #1890ff !important; - border-top: 1px solid #1890ff !important; - } - } - - .ant-popover-inner-content { - padding: 0px !important; - } - -} -.tabone { - border-bottom: 1px solid #EEEEEE; - - .pdtab { - padding-top: 15px; - padding-left: 15px; - padding-right: 30px; - - - .ant-tabs { - width: 50% !important; - - .ant-tabs-bar { - border-bottom: 1px solid #ffffff; - - .ant-tabs-tab { - font-size: 16px; - } - } - - } - } - - .pdtabs { - - .searchwidth { - width: 100%; - } - } - - .pdtabss { - .divgreen{ - color: #42B366; - border: 1px solid #42B366; - - - } - .divViolet{ - color: #5B36D1; - border: 1px solid #5B36D1; - - - - } - .divorange{ - color: #E65A18; - border: 1px solid #E65A18; - - - } - .divred{ - color: #F30F0F; - border: 1px solid #F30F0F; - - - } - .brodersdiv{ - - background: #ffffff; - border-radius:25px; - min-width: 170px; - text-align: center; - height: 46px; - line-height: 46px; - } - - - .searchwidth { - width:347px; - } - } - .pdtabsss { - padding: 30px; - } -} diff --git a/src/modules/recruitment/resumeForm/CompanyHeader.js b/src/modules/recruitment/resumeForm/CompanyHeader.js deleted file mode 100644 index 32ed9232..00000000 --- a/src/modules/recruitment/resumeForm/CompanyHeader.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from "react"; -import styled from "styled-components"; -import { Divider, Row } from "antd"; - -const Header = styled.div` - width: 1200px; - height: 145px; - background: rgba(255, 255, 255, 1); - border-radius: 2px; - padding: 40px; - margin:0 auto; - margin-bottom: 20px; -`; -const Job = styled.div` - font-size: 20px; - font-family: MicrosoftYaHeiSemibold; - color: rgba(51, 51, 51, 1); - margin-bottom:15px; -`; - -const Item = styled.span` - font-size: 14px; - font-family: MicrosoftYaHei; - color: rgba(51, 51, 51, 1); -`; - -export default ({ jobName, company, city }) => { - return ( -
- {jobName} -
- {company} - - {city} -
-
- ); -}; diff --git a/src/modules/recruitment/resumeForm/Form.js b/src/modules/recruitment/resumeForm/Form.js deleted file mode 100644 index f22a4a53..00000000 --- a/src/modules/recruitment/resumeForm/Form.js +++ /dev/null @@ -1,7 +0,0 @@ -import React, { - createContext, - forwardRef, - useImperativeHandle, - useCallback, - } from "react"; -export const FormCtx = createContext(); \ No newline at end of file diff --git a/src/modules/recruitment/resumeForm/NormalForm.js b/src/modules/recruitment/resumeForm/NormalForm.js deleted file mode 100644 index 3a4cb636..00000000 --- a/src/modules/recruitment/resumeForm/NormalForm.js +++ /dev/null @@ -1,240 +0,0 @@ -import _ from "lodash"; -import React, { forwardRef, useImperativeHandle, useCallback } from "react"; -import { Form, Input, Radio, Row, DatePicker, Icon } from "antd"; -import styled from "styled-components"; -import ImageUploader from "./widget/ImageUploader"; -import ResumesUploader from "./widget/ResumesUploader"; -import JobExpect from "./widget/JobExpect"; -import EduItem from "./widget/EduItem"; -import WorkItem from "./widget/WorkItem"; -import { FormCtx } from "./Form"; -import { AddButton } from "./widget/Button"; -import { useSet } from "../util/hooks"; -import { genUuid } from "../data/genUuid"; -import { mapPropsToFields } from "../data/mapResumeData"; -import moment from "moment"; - -const Label = styled.div` - &::before { - content: ${(p) => (p.required ? '"*"' : '""')}; - color: ${(p) => (p.required ? "red" : "black")}; - } - &::after { - content: ":"; - } - margin-bottom: 5px; - font-size: 16px; - font-family: MicrosoftYaHeiSemibold; - color: rgba(51, 51, 51, 1); -`; -const Tip = styled.div` - font-size: 12px; - font-family: MicrosoftYaHei; - color: rgba(136, 136, 136, 1); - margin-left: 10px; -`; - -export default Form.create({ mapPropsToFields })( - forwardRef(({ form, attachment_name, logo_url, attachment_url, attachment_id }, ref) => { - const { - getFieldDecorator, - validateFields, - getFieldValue, - setFields, - getFieldsValue - } = form; - const { set: eduSet, add: eduAdd, remove: eduRm } = useSet(); - const { set: wkSet, add: wkAdd, remove: wkRm } = useSet(); - const addEdu = useCallback(() => { - const uuid = genUuid(); - eduAdd(uuid); - return uuid; - }, []); - const addWk = useCallback(() => { - const uuid = genUuid(); - wkAdd(uuid); - return uuid; - }, []); - const set = useCallback((education, experience) => { - const object = {}; - if (experience !== undefined) { - experience.forEach((exp) => { - const id = addWk(); - ["company", "desc"].forEach((k) => { - object[`experience[${id}].${k}`] = { value: exp[k] }; - }); - ["begin_on", "end_on"].forEach((k) => { - object[`experience[${id}].${k}`] = { value: moment(exp[k]) }; - }); - }); - } - if (education !== undefined) { - let isFirst = true; - education.forEach((edu) => { - const id = isFirst ? "base" : addEdu(); - ["edu_bg", "edu_category", "major", "school"].forEach((k) => { - object[`education[${id}].${k}`] = { value: edu[k] }; - }); - ["begin_on", "end_on"].forEach((k) => { - object[`education[${id}].${k}`] = { value: moment(edu[k]) }; - }); - isFirst = false; - }); - } - setTimeout(() => { - setFields(object); - }, 1000); - }, []); - const genVerArr = useCallback(() => { - const genWk = (key) => - ["begin_on", "end_on", "company", "desc"].map( - (k) => `experience[${key}].${k}` - ); - const genEdu = (key) => - ["begin_on", "end_on", "edu_bg", "edu_category", "major", "school"].map( - (k) => `education[${key}].${k}` - ); - const field = [ - "name", - "sex", - "logo", - "birth_on", - "mobile", - "evaluate", - "attachment_id", - "job_position", - "city", - "salary", - "job_category", - "job_year", - ]; - const baseEdu = genEdu("base"); - const wk = _.flatten(Array.from(wkSet.keys()).map(genWk)); - const edu = _.flatten(Array.from(eduSet.keys()).map(genEdu)); - return _.concat(wk, edu, field, baseEdu); - }, []); - useImperativeHandle(ref, () => ({ - verify: (callback) => { - validateFields(genVerArr(), callback); - }, - set, - })); - const helper = useCallback( - (label, name, rules, widget, isRequired = true) => ( - - - - {getFieldDecorator(name, { rules, validateFirst: true })(widget)} - - - ), - [] - ); - return ( - -
- {helper( - "姓名", - "name", - [ - { max: 60, message: "超过60字符" }, - { required: true, message: "请输入姓名" }, - { whitespace: true, message: "不能全空" }, - ], - - )} - {helper( - "性别", - "sex", - [{ required: true, message: "请选择性别" }], - - - - - )} - - - 只支持JPG,JPEG格式,大小不要超过2MB,建议使用证件照 - - {getFieldDecorator("logo", {})()} - {helper( - "出生日期", - "birth_on", - [{ required: true, message: "请选择日期" }], - m > moment()} /> - )} - {helper( - "手机号", - "mobile", - [ - { required: true, message: "请输入手机号" }, - { min: 11, message: "号码不正确" }, - { max: 11, message: "号码不正确" }, - { pattern: /^\d+$/, message: "请输入数字" }, - ], - - )} - {helper( - "参加工作时间", - "job_year", - [], - , - false - )} - - - - - {Array.from(eduSet.values()).map((k) => ( - { - eduRm(k); - }} - /> - ))} - - - 添加教育经历 - - - {Array.from(wkSet.values()).map((k) => ( - { - wkRm(k); - }} - /> - ))} - - - 添加工作经验 - - {helper( - "自我评价", - "evaluate", - [{ max: 5000, message: "超过5000字符" }], - , - false - )} - - - (上传简历可以提高应聘成功率) - - {getFieldDecorator("attachment_id", { rules: [] })( - - )} - -
- ); - }) -); diff --git a/src/modules/recruitment/resumeForm/popup/CityPopup.js b/src/modules/recruitment/resumeForm/popup/CityPopup.js deleted file mode 100644 index e5ba5983..00000000 --- a/src/modules/recruitment/resumeForm/popup/CityPopup.js +++ /dev/null @@ -1,51 +0,0 @@ -import React, { useEffect,useCallback } from "react"; -import {message} from 'antd'; -import Modal from "./Modal"; -import { useLoaded, useMap } from "../../util/hooks"; -import { getCurrCity } from "../../data/getCurrCity"; -import { CenterBtnGrp, OkBtn, CancelBtn } from "../../util/GeneralButton"; -import CityList from "./city/CityList"; -import SelectedCity from "./city/SelectedCity"; -import { getHotCity } from "../../data/getHotCity"; -import Loading from "../../util/Loading"; - -//visible, setValue, onCancel -export default ({ setValue, ...props }) => { - const { isLoaded: isCurrCityLoaded, data: currCity } = useLoaded( - getCurrCity, - [] - ); - const { isLoaded: isCityLoaded, data: cityLst } = useLoaded(getHotCity, []); - const { map, add, remove } = useMap((m) => { - if (m.size >= 5) { - message.error("最多选择5项"); - return false; - } - return true; - }); - useEffect(() => { - if (isCurrCityLoaded) { - add(currCity, true); - } - }, [isCurrCityLoaded]); - const onOk = useCallback(() => { - props.onCancel(); - setValue(Array.from(map.keys())); - }, []); - const content = - !isCurrCityLoaded || !isCityLoaded ? ( - - ) : ( - - - - - - - - - ); - return - {content} - ; -}; diff --git a/src/modules/recruitment/resumeForm/popup/JobPopup.js b/src/modules/recruitment/resumeForm/popup/JobPopup.js deleted file mode 100644 index 29781b60..00000000 --- a/src/modules/recruitment/resumeForm/popup/JobPopup.js +++ /dev/null @@ -1,68 +0,0 @@ -import React, { useCallback, useState,useEffect } from "react"; -import { Row, Col, message } from "antd"; -import Modal from "../../util/Modal"; -import Nav from "./jobClass/FatherNav"; -import SonNav from "./jobClass/SonArea"; -import Tiltle from "./jobClass/Tiltle"; -import Loading from "../../util/Loading"; -import { useLoaded, useSet } from "../../util/hooks"; -import { CenterBtnGrp, OkBtn, CancelBtn } from "../../util/GeneralButton"; -import { getJobCate } from "../../data/getJobCate"; - -//visible, setValue, onCancel -export default ({ setValue, initArr, ...props }) => { - const { isLoaded, data } = useLoaded(getJobCate, []); - const { set, add, remove } = useSet((s) => { - if (s.size >= 5) { - message.error("最多选择5项"); - return false; - } - return true; - }); - const [selectedCate, selectCate] = useState(null); - const onOk = useCallback(() => { - props.onCancel(); - setValue(Array.from(set.values())); - }, []); - useEffect(() => { - if (Array.isArray(initArr)) { - initArr.forEach((i) => add(i)); - } - }, []); - const content = !isLoaded ? ( - - ) : ( - - - - - - -
- -
- - - - - -
-
- ); - return ( - } - {...props} getContainer={false} - > - {content} - - ); -}; diff --git a/src/modules/recruitment/resumeForm/popup/Modal.js b/src/modules/recruitment/resumeForm/popup/Modal.js deleted file mode 100644 index da5972e2..00000000 --- a/src/modules/recruitment/resumeForm/popup/Modal.js +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; -import { Modal } from 'antd'; -import styled from 'styled-components'; - -const Box = styled.div` - width:clac(100%+80px); - margin:-24px -24px; -`; - -//visible,title,onCancel,width -export default ({ children, ...props }) => { - return - {children} - ; -}; diff --git a/src/modules/recruitment/resumeForm/popup/city/CityList.js b/src/modules/recruitment/resumeForm/popup/city/CityList.js deleted file mode 100644 index c0ba7303..00000000 --- a/src/modules/recruitment/resumeForm/popup/city/CityList.js +++ /dev/null @@ -1,49 +0,0 @@ -import styled from "styled-components"; -import React from "react"; -import { Row } from "antd"; - -const Button = styled.div` - width: 100px; - height: 46px; - background: rgba(255, 255, 255, 1); - border-radius: 2px; - border: 1px solid rgba(221, 221, 221, 1); - font-size: 14px; - font-family: MicrosoftYaHei; - color: rgba(51, 51, 51, 1); - margin-left: 30px; - margin-top: 10px; - display: flex; - justify-content: center; - align-items: center; - &:hover { - cursor: pointer; - } -`; -const Title = styled.div` - font-size: 16px; - font-family: Microsoft YaHei; - color: rgba(51, 51, 51, 1); - margin:15px 30px; - margin-bottom:5px; -`; - -export default ({ select, data }) => { - return ( - - 热门城市: - - {data.map((city) => ( - - ))} - - - ); -}; diff --git a/src/modules/recruitment/resumeForm/popup/city/SelectedCity.js b/src/modules/recruitment/resumeForm/popup/city/SelectedCity.js deleted file mode 100644 index c12d802b..00000000 --- a/src/modules/recruitment/resumeForm/popup/city/SelectedCity.js +++ /dev/null @@ -1,47 +0,0 @@ -import styled from "styled-components"; -import React, { useCallback } from "react"; -import { Tag, Tooltip, Icon } from "antd"; - -const Title = styled.div` - font-size: 16px; - font-family: Microsoft YaHei; - color: rgba(51, 51, 51, 1); - margin: 15px 30px; - margin-top:30px; -`; -const Tip = styled.span` - font-size: 12px; - -`; -const tagConfig = { - color: "blue", - closable: true, - style:{border:"0"}, -}; - -export default ({ selected, remove }) => { - return ( - - 选择期望工作城市: -
- {Array.from(selected.entries()).map(([key, isCurrCity]) => { - if (isCurrCity) { - return ( - remove(key)}> - - {key} - (当前定位城市) - - ); - } else { - return ( - remove(key)}> - {key} - - ); - } - })} -
-
- ); -}; diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/FatherItem.js b/src/modules/recruitment/resumeForm/popup/jobClass/FatherItem.js deleted file mode 100644 index dcb47cc9..00000000 --- a/src/modules/recruitment/resumeForm/popup/jobClass/FatherItem.js +++ /dev/null @@ -1,32 +0,0 @@ -import styled from 'styled-components'; -import React from 'react'; -import { Icon as AdIcon } from "antd"; - -const Item = styled.div` - height:57px; - background:${p => p.isSelected ? "rgba(241,241,241,1)" : "transparent"}; - &:hover{ - cursor:pointer; - } - display:flex; - justify-content:space-between; - align-items:center; -`; -const Name = styled.div` - color:rgba(51,51,51,1); - font-size:16px; - font-family:MicrosoftYaHei; - margin-left:30px; -`; -const Icon = styled(AdIcon)` - display:block; - color:rgba(187,187,187,1); - margin-right:20px; -`; - -//onClick, isSelected -export default ({ children, ...props }) => - - {children} - - ; \ No newline at end of file diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/FatherNav.js b/src/modules/recruitment/resumeForm/popup/jobClass/FatherNav.js deleted file mode 100644 index 5d492d9f..00000000 --- a/src/modules/recruitment/resumeForm/popup/jobClass/FatherNav.js +++ /dev/null @@ -1,14 +0,0 @@ -import styled from 'styled-components'; -import React from 'react'; -import Item from './FatherItem'; - -const Column = styled.div` - background:rgba(250,250,250,1); - height:100%; - overflow:auto; -`; - -export default ({ data, selectCate, selectedCate }) => //data is a map - - {Array.from(data.keys()).map(i => { selectCate(i); }} isSelected={selectedCate === i}>{i})} - ; \ No newline at end of file diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/SonArea.js b/src/modules/recruitment/resumeForm/popup/jobClass/SonArea.js deleted file mode 100644 index 0ad4f99f..00000000 --- a/src/modules/recruitment/resumeForm/popup/jobClass/SonArea.js +++ /dev/null @@ -1,13 +0,0 @@ -import { Row } from "antd"; -import React from "react"; -import { JobBtn } from "../../../util/GeneralButton"; - -export default ({ data, select }) => ( - - {Array.from(data.values()).map((v) => ( - select(v)}> - {v} - - ))} - -); diff --git a/src/modules/recruitment/resumeForm/popup/jobClass/Tiltle.js b/src/modules/recruitment/resumeForm/popup/jobClass/Tiltle.js deleted file mode 100644 index cff7ffca..00000000 --- a/src/modules/recruitment/resumeForm/popup/jobClass/Tiltle.js +++ /dev/null @@ -1,41 +0,0 @@ -import styled from "styled-components"; -import React from "react"; -import { Tag, Tooltip } from "antd"; - -const Header = styled.div` - display: flex; - justify-content: space-between; - align-items: center; -`; - -const Title = styled.div` - font-size: 16px; - font-family: Microsoft YaHei; - font-weight: bold; - color: rgba(51, 51, 51, 1); -`; -const tagConfig = { - color: "blue", - closable: true, - style:{border:"0"}, -}; -export default ({ selected, remove }) => { - const tag = (key) => ( - remove(key)}> - {key.length >= 4 ? `${key.substring(0, 4)}...` : key} - - ); - const wrapper = (key) => { - if (key.length >= 4) { - return {tag(key)}; - } else { - return tag(key); - } - }; - return ( -
- 选择职位类别 -
{Array.from(selected.keys()).map((key) => wrapper(key))}
-
- ); -}; diff --git a/src/modules/recruitment/resumeForm/widget/Button.js b/src/modules/recruitment/resumeForm/widget/Button.js deleted file mode 100644 index 89c36481..00000000 --- a/src/modules/recruitment/resumeForm/widget/Button.js +++ /dev/null @@ -1,37 +0,0 @@ -import styled from "styled-components"; - -export const AddButton = styled.div` - display:flex; - justify-content:center; - align-items:center; - width:169px; - height:40px; - background:rgba(236,246,255,1); - border-radius:20px; - border:1px solid rgba(76,172,255,1); - font-size:14px; - font-family:MicrosoftYaHeiSemibold; - color:rgba(76,172,255,1); - margin-bottom:20px; - &:hover{ - cursor:pointer; - } -`; - -export const UploadButton = styled.div` - display:flex; - justify-content:center; - align-items:center; - width:87px; - height:40px; - background:rgba(236,246,255,1); - border-radius:2px; - border:1px solid rgba(76,172,255,1); - font-size:14px; - font-family:MicrosoftYaHeiSemibold; - color:rgba(76,172,255,1); - margin-right:20px; - &:hover{ - cursor:pointer; - } -`; diff --git a/src/modules/recruitment/resumeForm/widget/EduItem.js b/src/modules/recruitment/resumeForm/widget/EduItem.js deleted file mode 100644 index e028bbb5..00000000 --- a/src/modules/recruitment/resumeForm/widget/EduItem.js +++ /dev/null @@ -1,101 +0,0 @@ -import React, { useContext, useCallback } from "react"; -import { FormCtx } from "../Form"; -import { Row, Col, Form, Select, Input, Icon } from "antd"; -import MonthPicker from "./MothPicker"; - -const edu_bg = ["本科", "硕士", "博士", "大专", "其他"]; -const edu_category = ["统招全日制", "统招非全日制", "自考", "其他"]; - -export default ({ nameKey, onDelete }) => { - const { getFieldDecorator, getFieldValue } = useContext(FormCtx); - const greatValidater = useCallback((r, v, cb) => { - if (v >= getFieldValue(`education[${nameKey}].begin_on`)) { - cb(); - } else { - cb("时间范围不正确"); - } - }, []); - return ( -
- - - - {getFieldDecorator(`education[${nameKey}].begin_on`, { - rules: [{ required: true, message: "请选择开始日期" }], - })()} - - - - - {getFieldDecorator(`education[${nameKey}].end_on`, { - rules: [ - { required: true, message: "请选择结束日期" }, - { validator: greatValidater }, - ], - validateFirst: true, - })()} - - - - {onDelete ? ( - - ) : null} - - - - - - {getFieldDecorator(`education[${nameKey}].edu_bg`, { - rules: [{ required: true, message: "请选择学历" }], - })( - - )} - - - - - {getFieldDecorator(`education[${nameKey}].edu_category`, { - rules: [{ required: true, message: "请选择学历类型" }], - })( - - )} - - - - - {getFieldDecorator(`education[${nameKey}].major`, { - rules: [ - { required: true, message: "请输入专业" }, - { max: 60, message: "超过60字符" }, - { whitespace: true, message: "不能全空" }, - ], - validateFirst: true, - })()} - - - - - {getFieldDecorator(`education[${nameKey}].school`, { - rules: [ - { required: true, message: "请输入学校名称" }, - { max: 60, message: "超过60字符" }, - { whitespace: true, message: "不能全空" }, - ], - validateFirst: true, - })()} - -
- ); -}; diff --git a/src/modules/recruitment/resumeForm/widget/ImageUploader.js b/src/modules/recruitment/resumeForm/widget/ImageUploader.js deleted file mode 100644 index eb0e6557..00000000 --- a/src/modules/recruitment/resumeForm/widget/ImageUploader.js +++ /dev/null @@ -1,73 +0,0 @@ -import React, { useState, useRef, useCallback } from "react"; -import { getUploadLogoActionUrl, getUrl } from "educoder"; -import { Upload, Icon, message } from "antd"; -import axios from 'axios'; - -export default ({ logo_url, onChange }) => { - const base64Ref = useRef(null); - const getBase64 = useCallback((file) => { - return new Promise((resolve) => { - const reader = new FileReader(); - reader.addEventListener("load", () => { - base64Ref.current = reader.result; - resolve(reader.result); - }); - reader.readAsDataURL(file); - }); - }, []); - const [isLoading, setLoading] = useState(() => { - if (logo_url) { - return true; - } - return false; - }); - const [imageUrl, setUrl] = useState(() => { - if (logo_url) { - return getUrl("/"+logo_url); - } - return undefined; - }); - const handleChange = useCallback(({ file }) => { - if (file.status === "uploading") { - setLoading(true); - return; - }else if (file.status === "done") { - onChange("t"); - setLoading(false); - setUrl(base64Ref.current); - }else if (file.size > 2 ** 20 * 2) { - setLoading(false); - setUrl(""); - } - }, []); - const verifyFile = useCallback((f) => { - if(imageUrl){ - axios.post('/resumes/destroy_logo.json'); - } - const isProperSize = f.size / 1024 / 1024 < 2; //2MB - if (!isProperSize) { - message.error("照片超过2MB"); - } - return isProperSize; - },[imageUrl]); - return ( - - - {imageUrl ? ( - avatar - ) : ( - - )} - - - ); -}; diff --git a/src/modules/recruitment/resumeForm/widget/JobExpect.js b/src/modules/recruitment/resumeForm/widget/JobExpect.js deleted file mode 100644 index 6581db0c..00000000 --- a/src/modules/recruitment/resumeForm/widget/JobExpect.js +++ /dev/null @@ -1,138 +0,0 @@ -import React, { forwardRef, useContext } from "react"; -import { Row, Icon, Form, Select, Checkbox } from "antd"; -import styled from "styled-components"; -import { useToggle } from "../../util/hooks"; -import JobPopup from "../popup/JobPopup"; -import CityPopup from "../popup/CityPopup"; -import { FormCtx } from "../Form"; - -const Input = styled.div` - border-radius: 4px; - border: 1px solid rgba(221, 221, 221, 1); - width: 534px; - height: 33px; - padding-left: 10px; - padding-right: 10px; - margin-bottom: 5px; - display: flex; - justify-content: space-between; - align-items: center; - &:hover { - cursor: pointer; - border: 1px solid #40a9ff; - } - & .has-error { - border: 1px solid #f5222d; - } -`; - -const Value = styled.div` - font-size: 14px; - color: rgba(51, 51, 51, 1); - font-family: MicrosoftYaHei; -`; -const Placeholder = styled(Value)` - color: rgba(187, 187, 187, 1); -`; -const Content = ({ placeholder, value, onClick }) => ( - - {!value ? {placeholder} : {value}} - - -); - -const ExpJob = forwardRef(({ onChange, value }, ref) => { - const [jobVis, setJobVis] = useToggle(); - return ( - - - - - - - ); -}); -const ExpCity = forwardRef(({ onChange, value }, ref) => { - const [cityVis, setCityVis] = useToggle(); - return ( - - - - - - - ); -}); - -const salary = [ - "1000元/月以下", - "1000—2000元/月", - "2001—4000元/月", - "4001—6000元/月", - "6001—8000元/月", - "8001—10000元/月", - "10001—15000元/月", - "15001—25000元/月", - "25001—35000元/月", - "35001—50000元/月", - "50001—70000元/月", - "70001—100000元/月", - "100000元/月以上", -]; -const job_category = ["全职", "兼职", "实习"]; - -export default () => { - const { getFieldDecorator } = useContext(FormCtx); - return ( -
- - {getFieldDecorator("job_position", { - rules: [{ required: true, message: "请选择期望职位" }], - })()} - - - {getFieldDecorator("city", { - rules: [{ required: true, message: "请选择期望工作城市" }], - })()} - - - {getFieldDecorator("salary", { - rules: [{ required: true, message: "请选择期望薪资" }], - })( - - )} - - - {getFieldDecorator("job_category", { - rules: [{ required: true, message: "请选择求职类型" }], - })( - - {job_category.map((j) => ( - - {j} - - ))} - - )} - -
- ); -}; diff --git a/src/modules/recruitment/resumeForm/widget/MothPicker.js b/src/modules/recruitment/resumeForm/widget/MothPicker.js deleted file mode 100644 index d87144e4..00000000 --- a/src/modules/recruitment/resumeForm/widget/MothPicker.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; -import { DatePicker } from "antd"; -import styled from "styled-components"; - -const Box = styled.div` - position: relative; - z-index: 1; -`; - -export default ({ ...props }) => { - return ( - - - - ); -}; diff --git a/src/modules/recruitment/resumeForm/widget/ResumesUploader.js b/src/modules/recruitment/resumeForm/widget/ResumesUploader.js deleted file mode 100644 index 44124a6a..00000000 --- a/src/modules/recruitment/resumeForm/widget/ResumesUploader.js +++ /dev/null @@ -1,82 +0,0 @@ -import React, { useCallback, useState } from "react"; -import { Upload, Row, message } from "antd"; -import styled from "styled-components"; -import { UploadButton } from "./Button"; -import { getUploadActionUrl } from "educoder"; - -const Info = styled.div` - font-size: 14px; - font-family: MicrosoftYaHei; - color: rgba(231, 114, 52, 1); - margin-top: 10px; -`; - -const verifyFile = (f, fLst) => { - if (fLst.length === 1 && fLst[0].status === "uploading") { - message.error("请等待上传完成"); - return false; - } - const isProperSize = f.size / (2 ** 20 * 10); - if (!isProperSize) { - message.error("简历超过10MB"); - return false; - } - return true; -}; -export default ({ - attachment_name, - attachment_url, - attachment_id, - onChange, -}) => { - const [fileLst, setFlieLst] = useState(() => { - if (attachment_name) { - return [ - { - uid: "-1", - status: "done", - name: attachment_name, - url: attachment_url, - }, - ]; - } - return []; - }); - const handleChange = useCallback(async ({ file }) => { - if (file.status === "removed") { - setFlieLst([]); - const id = file.response ? file.response.id : attachment_id; - //axios.delete(`/attachments/${id}.json`); - onChange(""); - } else if (file.size > 2 ** 20 * 10) { - setFlieLst([]); - } else { - setFlieLst([file]); - if (file.status === "done") { - onChange(file.response.id); - } - } - }, []); - return ( - - - - - - {fileLst.length === 1 ? "重新上传" : "上传"} - - - 提示:不超过10MB,扩展名为pdf、doc、docx、ppt、pptx、png、jpg、jpeg - - - - - - ); -}; diff --git a/src/modules/recruitment/resumeForm/widget/WorkItem.js b/src/modules/recruitment/resumeForm/widget/WorkItem.js deleted file mode 100644 index 541b0ad6..00000000 --- a/src/modules/recruitment/resumeForm/widget/WorkItem.js +++ /dev/null @@ -1,72 +0,0 @@ -import React, { useContext, useCallback } from "react"; -import { FormCtx } from "../Form"; -import { Row, Col, Form, Input, Icon } from "antd"; -import MonthPicker from "./MothPicker"; - -export default ({ nameKey, onDelete }) => { - const { getFieldDecorator, getFieldValue } = useContext(FormCtx); - const greatValidater = useCallback((r, v, cb) => { - if (v >= getFieldValue(`experience[${nameKey}].begin_on`)) { - cb(); - } else { - cb("时间范围不正确"); - } - }, []); - return ( -
- - - - {getFieldDecorator(`experience[${nameKey}].begin_on`, { - rules: [{ required: true, message: "请选择开始日期" }], - })()} - - - - - {getFieldDecorator(`experience[${nameKey}].end_on`, { - rules: [ - { required: true, message: "请选择结束日期" }, - { validator: greatValidater }, - ], - validateFirst: true, - })()} - - - - {onDelete ? ( - - ) : null} - - - - {getFieldDecorator(`experience[${nameKey}].company`, { - rules: [ - { max: 60, message: "超过60字符" }, - { required: true, message: "请输入公司名称" }, - { whitespace: true, message: "不能全空" }, - ], - validateFirst: true, - })()} - - - {getFieldDecorator(`experience[${nameKey}].desc`, { - rules: [ - { max: 5000, message: "超过5000字符" }, - { required: true, message: "请输入工作描述" }, - ], - validateFirst: true, - })( - - )} - -
- ); -}; diff --git a/src/modules/recruitment/routePage/AddJobPage.js b/src/modules/recruitment/routePage/AddJobPage.js deleted file mode 100644 index 84209889..00000000 --- a/src/modules/recruitment/routePage/AddJobPage.js +++ /dev/null @@ -1,52 +0,0 @@ -import React, { useCallback } from "react"; -import FormPage from "../jobForm/FormPage"; -import { submitJobInfo } from "../data/submitData"; -import { useLoaded } from "../util/hooks"; -import { getProfileLoc } from "../data/getProfileLoc"; -import Loading from "../util/Loading"; -import styled from "styled-components"; -import { FullScreen } from "../util/Layout"; -import { notification } from "antd"; - -const Backgroud = styled(FullScreen)` - background: rgba(245, 246, 249, 1); -`; - -export default ({ history, user }) => { - console.log(user); - const { isLoaded, data: city } = useLoaded(getProfileLoc, [user]); - const submit = useCallback((v) => { - const f = async () => { - await submitJobInfo(v); - notification.open({ - message: "成功", - description: "提交职位成功,请耐心等待审核", - }); - const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - await wait(1000); - history.push("/recruitment?tab=1&jobstate=drafted"); - }; - f(); - }, []); - const data = { - education: "学历不限", - work_year: "经验不限", - city, - }; - if (!isLoaded) { - return ( - - - - ); - } - return ( - { - history.goBack(); - }} - > - ); -}; diff --git a/src/modules/recruitment/routePage/AddResumePage.js b/src/modules/recruitment/routePage/AddResumePage.js deleted file mode 100644 index 58c2b9e0..00000000 --- a/src/modules/recruitment/routePage/AddResumePage.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, { useRef, useCallback } from "react"; -import styled from "styled-components"; -import Form from "../resumeForm/NormalForm"; -import { CenterBtnGrp, SaveBtn, CancelBtn } from "../util/GeneralButton"; -import { sumitResume } from "../data/sumitResume"; -import Nav from "../util/Nav"; - -const Background = styled.div` - width: 100%; - background: rgba(245, 246, 249, 1); - min-height: 100vh; - padding: 20px; - padding-bottom: 70px; -`; -const Content = styled.div` - width: 1200px; - padding: 40px; - background: rgba(255, 255, 255, 1); - border-radius: 2px; - margin: 0 auto; - margin-bottom: 40px; -`; -const Margin = styled.div` - height: 80px; -`; - -export default ({ history }) => { - console.log(history[0]); - const validator = useRef(null); - const submit = useCallback((v) => { - const f = async () => { - await sumitResume(v); - history.goBack(); - }; - f(); - }, []); - const onOk = useCallback(() => { - validator.current.verify((e, v) => { - if (e) { - return; - } - submit(v); - }); - }, []); - return ( - - - -
-
- - { - history.push("/recruitment"); - }} - /> - - - -
-
- ); -}; diff --git a/src/modules/recruitment/routePage/ApplierPage.js b/src/modules/recruitment/routePage/ApplierPage.js deleted file mode 100644 index 99d18805..00000000 --- a/src/modules/recruitment/routePage/ApplierPage.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, { useState, useCallback } from "react"; -import styled from "styled-components"; -import { Pagination } from "antd"; -import Header from "../jobAppliers/Header"; -import List from "../jobAppliers/List"; -import Loading from "../util/Loading"; -import { getAppliers } from "../data/getAppliers"; -import Nav from "../util/Nav"; -import { useLoaded } from "../util/hooks"; -import { Link } from "react-router-dom"; - -const GreyBg = styled.div` - width: 100%; - background: rgba(245, 246, 249, 1); - min-height: 100vh; -`; -const Paper = styled.div` - width: 1200px; - padding: 30px; - background: rgba(255, 255, 255, 1); - border-radius: 2px; - margin: 0 auto; - min-height:500px; -`; - -export default ({ jobId, history }) => { - console.log("render"); - const [page, setPage] = useState(1); - const { isLoaded, data } = useLoaded(getAppliers, [jobId, page, history]); - const back = useCallback(() => { - history.push("/recruitment?tab=1&jobstate=published"); - }, []); - let appliers, count; - if (data) { - [appliers, count] = data; - } - return ( - - -