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/forge/Team/GroupDetailMember.jsx b/src/forge/Team/Group/GroupDetailMember.jsx similarity index 95% rename from src/forge/Team/GroupDetailMember.jsx rename to src/forge/Team/Group/GroupDetailMember.jsx index aab6d50e..32f24f67 100644 --- a/src/forge/Team/GroupDetailMember.jsx +++ b/src/forge/Team/Group/GroupDetailMember.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import Cards from '../Component/MemberCards'; +import Cards from '../../Component/MemberCards'; export default (()=>{ return( diff --git a/src/forge/Team/GroupDetailProject.jsx b/src/forge/Team/Group/GroupDetailProject.jsx similarity index 100% rename from src/forge/Team/GroupDetailProject.jsx rename to src/forge/Team/Group/GroupDetailProject.jsx diff --git a/src/forge/Team/Group/GroupDetailSetting.jsx b/src/forge/Team/Group/GroupDetailSetting.jsx new file mode 100644 index 00000000..13864a62 --- /dev/null +++ b/src/forge/Team/Group/GroupDetailSetting.jsx @@ -0,0 +1,50 @@ +import React , { useState } from 'react'; +import { Box , Long , Short , Gap , Banner , WhiteBack } from '../../Component/layout'; +import Title from '../../Component/Title'; +import Setnav from '../../Component/Setnav'; +import styled from 'styled-components'; + +const Div = styled.div`{ + padding:18px 30px; +}` +export default (props)=>{ + const pathname = props.location.pathname; + const organizeId = props.match.params.organizeId; + + function returnActive (pathname){ + let a = 0; + if(pathname === `/organize/${organizeId}/setting/member`){ + a = 1; + }else if(pathname === `/organize/${organizeId}/setting/group`){ + a = 2; + }else if(pathname === `/organize/${organizeId}/setting/hooks`){ + a = 3; + } + return a; + } + const active = returnActive(pathname); + const array = {list:[ + {name:'基本设置',icon:"icon-base",href:`/organize/${organizeId}/setting`}, + {name:'团队成员管理',icon:"icon-zuzhichengyuan",href:`/organize/${organizeId}/setting/member`}, + {name:'团队项目管理',icon:"icon-zuzhixiangmu",href:`/organize/${organizeId}/setting/group`}, + ], + active + } + return( + + + 团队设置} nav={array}> + + + + + 团队项目管理 +
+ +
+
+
+
+
+ ) +} \ No newline at end of file diff --git a/src/forge/Team/GroupDetails.jsx b/src/forge/Team/Group/GroupDetails.jsx similarity index 95% rename from src/forge/Team/GroupDetails.jsx rename to src/forge/Team/Group/GroupDetails.jsx index a540392f..ecb2ed11 100644 --- a/src/forge/Team/GroupDetails.jsx +++ b/src/forge/Team/Group/GroupDetails.jsx @@ -1,8 +1,8 @@ import React , {useState} from 'react'; import { Button } from 'antd'; import styled from 'styled-components'; -import { Box , Short , Long , Gap , WhiteBack , AlignCenterBetween } from '../Component/layout'; -import Tabs from '../Component/Tabs'; +import { Box , Short , Long , Gap , WhiteBack , AlignCenterBetween } from '../../Component/layout'; +import Tabs from '../../Component/Tabs'; import Memberlist from './GroupDetailMember'; import Grouplist from './GroupDetailProject'; diff --git a/src/forge/Team/GroupNew.jsx b/src/forge/Team/Group/GroupNew.jsx similarity index 98% rename from src/forge/Team/GroupNew.jsx rename to src/forge/Team/Group/GroupNew.jsx index 649e2dce..4a258d71 100644 --- a/src/forge/Team/GroupNew.jsx +++ b/src/forge/Team/Group/GroupNew.jsx @@ -1,6 +1,6 @@ import React , { forwardRef , useCallback } from 'react'; import { Form , Input , Radio , Checkbox , Switch , Button } from 'antd'; -import { Banner , WhiteBack , AlignCenter , Cancel } from '../Component/layout'; +import { Banner , WhiteBack , AlignCenter , Cancel } from '../../Component/layout'; import styled from 'styled-components'; const TextArea = Input.TextArea; diff --git a/src/forge/Team/Index.jsx b/src/forge/Team/Index.jsx index 86cccbd7..4cd5c9ee 100644 --- a/src/forge/Team/Index.jsx +++ b/src/forge/Team/Index.jsx @@ -16,11 +16,11 @@ const New = Loadable({ loading: Loading, }); const DetailIndex = Loadable({ - loader: () => import("./Detail"), + loader: () => import("./Sub/Detail"), loading: Loading, }); const SubDetail = Loadable({ - loader: () => import("./SubDetail"), + loader: () => import("./Sub/SubDetail"), loading: Loading, }); export default CNotificationHOC()(SnackbarHOC()(TPMIndexHOC( @@ -34,6 +34,12 @@ export default CNotificationHOC()(SnackbarHOC()(TPMIndexHOC( return }} > + { + return + }} + > { diff --git a/src/forge/Team/TeamSettingCommon.jsx b/src/forge/Team/Setting/TeamSettingCommon.jsx similarity index 95% rename from src/forge/Team/TeamSettingCommon.jsx rename to src/forge/Team/Setting/TeamSettingCommon.jsx index de0b2dac..1fa3eb64 100644 --- a/src/forge/Team/TeamSettingCommon.jsx +++ b/src/forge/Team/Setting/TeamSettingCommon.jsx @@ -1,9 +1,9 @@ import React, { forwardRef , useCallback } from 'react'; import { Form , Input , Cascader , Radio ,Checkbox , Divider , Button } from 'antd'; -import { WhiteBack , FlexAJ } from '../Component/layout'; -import Title from '../Component/Title'; +import { WhiteBack , FlexAJ } from '../../Component/layout'; +import Title from '../../Component/Title'; import styled from 'styled-components'; -import { locData } from "../Utils/locData"; +import { locData } from "../../Utils/locData"; const TextArea = Input.TextArea; const Div = styled.div`{ diff --git a/src/forge/Team/TeamSettingGroup.jsx b/src/forge/Team/Setting/TeamSettingGroup.jsx similarity index 96% rename from src/forge/Team/TeamSettingGroup.jsx rename to src/forge/Team/Setting/TeamSettingGroup.jsx index ba311e46..9c5b20e1 100644 --- a/src/forge/Team/TeamSettingGroup.jsx +++ b/src/forge/Team/Setting/TeamSettingGroup.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { WhiteBack , Banner , Blueline } from '../Component/layout'; +import { WhiteBack , Banner , Blueline } from '../../Component/layout'; import styled from 'styled-components'; const SpanName = styled.span`{ diff --git a/src/forge/Team/Setting/TeamSettingHooks.jsx b/src/forge/Team/Setting/TeamSettingHooks.jsx new file mode 100644 index 00000000..0dba5497 --- /dev/null +++ b/src/forge/Team/Setting/TeamSettingHooks.jsx @@ -0,0 +1,7 @@ +import React from 'react'; + +export default ()=>{ + return( +
管理web钩子:可以与组织设置部分的管理web钩子页面公用
+ ) +} \ No newline at end of file diff --git a/src/forge/Team/TeamSettingIndex.jsx b/src/forge/Team/Setting/TeamSettingIndex.jsx similarity index 65% rename from src/forge/Team/TeamSettingIndex.jsx rename to src/forge/Team/Setting/TeamSettingIndex.jsx index 3ae08fbf..5e32733d 100644 --- a/src/forge/Team/TeamSettingIndex.jsx +++ b/src/forge/Team/Setting/TeamSettingIndex.jsx @@ -1,11 +1,11 @@ import React , { useEffect , useState } from 'react'; -import { Box , Long , Short , Gap } from '../Component/layout'; -import Title from '../Component/Title'; -import Setnav from '../Component/Setnav'; +import { Box , Long , Short , Gap } from '../../Component/layout'; +import Title from '../../Component/Title'; +import Setnav from '../../Component/Setnav'; import { Route, Switch } from "react-router-dom"; import Loadable from "react-loadable"; -import Loading from "../../Loading"; +import Loading from "../../../Loading"; const Group = Loadable({ @@ -20,6 +20,10 @@ const Common = Loadable({ loader: () => import("./TeamSettingCommon"), loading: Loading, }); +const Hooks = Loadable({ + loader: () => import("./TeamSettingHooks"), + loading: Loading, +}); export default (( props )=>{ const pathname = props.location.pathname; const organizeId = props.match.params.organizeId; @@ -30,15 +34,17 @@ export default (( props )=>{ a = 1; }else if(pathname === `/organize/${organizeId}/setting/group`){ a = 2; + }else if(pathname === `/organize/${organizeId}/setting/hooks`){ + a = 3; } return a; } const active = returnActive(pathname); const array = {list:[ - {name:'基本设置',icon:"icon-base",href:""}, - {name:'组织成员管理',icon:"icon-zuzhichengyuan",href:""}, - {name:'组织团队管理',icon:"icon-zuzhixiangmu",href:""}, - {name:'管理web钩子',icon:"icon-zhongqingdianxinicon10",href:""} + {name:'基本设置',icon:"icon-base",href:`/organize/${organizeId}/setting`}, + {name:'组织成员管理',icon:"icon-zuzhichengyuan",href:`/organize/${organizeId}/setting/member`}, + {name:'组织团队管理',icon:"icon-zuzhixiangmu",href:`/organize/${organizeId}/setting/group`}, + {name:'管理web钩子',icon:"icon-zhongqingdianxinicon10",href:`/organize/${organizeId}/setting/hooks`} ], active } @@ -50,6 +56,12 @@ export default (( props )=>{ + ( + + )} + > ( diff --git a/src/forge/Team/TeamSettingMember.jsx b/src/forge/Team/Setting/TeamSettingMember.jsx similarity index 94% rename from src/forge/Team/TeamSettingMember.jsx rename to src/forge/Team/Setting/TeamSettingMember.jsx index 531e2fe7..ddd35ff7 100644 --- a/src/forge/Team/TeamSettingMember.jsx +++ b/src/forge/Team/Setting/TeamSettingMember.jsx @@ -1,10 +1,10 @@ import React, { useState } from 'react'; -import { WhiteBack , Blueline , AlignCenter , FlexAJ } from '../Component/layout'; +import { WhiteBack , Blueline , AlignCenter , FlexAJ } from '../../Component/layout'; import { Menu , Table , Pagination , Icon , Tooltip } from 'antd'; -import Sort from '../Component/Sort'; -import Title from '../Component/Title'; -import Search from '../Component/Search'; -import SearchUser from '../Component/SearchUser'; +import Sort from '../../Component/Sort'; +import Title from '../../Component/Title'; +import Search from '../../Component/Search'; +import SearchUser from '../../Component/SearchUser'; import styled from 'styled-components'; import { getImageUrl } from 'educoder'; diff --git a/src/forge/Team/Detail.jsx b/src/forge/Team/Sub/Detail.jsx similarity index 67% rename from src/forge/Team/Detail.jsx rename to src/forge/Team/Sub/Detail.jsx index 0bb420bb..4b6d5e69 100644 --- a/src/forge/Team/Detail.jsx +++ b/src/forge/Team/Sub/Detail.jsx @@ -1,18 +1,22 @@ import React , { useEffect , useState } from 'react'; import { Route, Switch } from "react-router-dom"; import Loadable from "react-loadable"; -import Loading from "../../Loading"; +import Loading from "../../../Loading"; -import Cards from '../Component/Cards'; +import Cards from '../../Component/Cards'; -import './Index.scss'; +import '../Index.scss'; const DetailIndex = Loadable({ - loader: () => import("./List"), + loader: () => import("../List"), loading: Loading, }); const Setting = Loadable({ - loader: () => import("./TeamSettingIndex"), + loader: () => import("../Setting/TeamSettingIndex"), + loading: Loading, +}); +const GroupSetting = Loadable({ + loader: () => import("../Group/GroupDetailSetting"), loading: Loading, }); export default ((props)=>{ @@ -25,6 +29,12 @@ export default ((props)=>{ img={`https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=4193840146,2109186388&fm=26&gp=0.jpg`} /> + { + return + }} + > { diff --git a/src/forge/Team/SubDetail.jsx b/src/forge/Team/Sub/SubDetail.jsx similarity index 84% rename from src/forge/Team/SubDetail.jsx rename to src/forge/Team/Sub/SubDetail.jsx index 9289d531..eabbe646 100644 --- a/src/forge/Team/SubDetail.jsx +++ b/src/forge/Team/Sub/SubDetail.jsx @@ -1,25 +1,25 @@ import React from 'react'; import { Route, Switch , Link } from "react-router-dom"; import Loadable from "react-loadable"; -import Loading from "../../Loading"; -import './Index.scss'; +import Loading from "../../../Loading"; +import '../Index.scss'; -import Cards from '../Component/Cards'; +import Cards from '../../Component/Cards'; const GroupNew = Loadable({ - loader: () => import("./GroupNew"), + loader: () => import("../Group/GroupNew"), loading: Loading, }); const Group = Loadable({ - loader: () => import("./TeamGroup"), + loader: () => import("../TeamGroup"), loading: Loading, }); const Member = Loadable({ - loader: () => import("./TeamMember"), + loader: () => import("../TeamMember"), loading: Loading, }); const GroupDetails = Loadable({ - loader: () => import("./GroupDetails"), + loader: () => import("../Group/GroupDetails"), loading: Loading, }); diff --git a/src/modules/competition/CompetitionMaxImg.js b/src/modules/competition/CompetitionMaxImg.js deleted file mode 100644 index fe172221..00000000 --- a/src/modules/competition/CompetitionMaxImg.js +++ /dev/null @@ -1,163 +0,0 @@ -import React, {Component} from 'react'; -import competition from './comcss/competition.css'; -import {getImageUrl} from 'educoder'; -// 团队竞赛报名大图 -class CompetitionMaxImg extends React.Component { - constructor(props) { - super(props) - this.state = { - GetenrollmentAPI: undefined - } - } - - componentDidMount() { - - } - - componentDidUpdate = (prevProps) => { - if (prevProps.GetenrollmentAPI != this.props.GetenrollmentAPI) { - this.setState({ - GetenrollmentAPI: this.props.GetenrollmentAPI, - }) - } - } - - render() { - let {type, pint} = this.props; - return ( -
- - { - type === 1 || type === 2 ? -
-

在线竞赛平台

-

在线竞赛平台是一个面向计算机类的互联网IT教育和实战平台,

-

提供企业级工程实训,以实现工程化专业教学的自动化和智能化。

-
-
-

this.props.Jointheteam()}>加入战队

-
-
-

this.props.Createateam()}>创建战队

-
- -
-
- : - type === 3 ? - -
-

在线竞赛平台

-

在线竞赛平台是一个面向计算机类的互联网IT教育和实战平台,

-

提供企业级工程实训,以实现工程化专业教学的自动化和智能化。

-
-
-

this.props.Jointheteam()}>加入战队

-
-
-

this.props.Createateam()}>创建战队

-
- -
-
- : - type === 4 || type === 5 ? - -
-

在线竞赛平台

-

在线竞赛平台是一个面向计算机类的互联网IT教育和实战平台,

-

提供企业级工程实训,以实现工程化专业教学的自动化和智能化。

-
-
-

this.props.Jointheteam()}>加入战队

-
-
-

this.props.Createateam()}>创建战队

-
- -
-
- : type === 6 ? -
-

在线竞赛平台

-

在线竞赛平台是一个面向计算机类的互联网IT教育和实战平台,

-

提供企业级工程实训,以实现工程化专业教学的自动化和智能化。

-
- { - pint === 1 ? -
this.props.Personalregistration()}> -

this.props.Personalregistration()}>立即报名

-
- : pint === 2 ? -
-

已报名

-
- : -
-

报名已截止

-
- } - -
-
- : -
-
- } - - -
- - ) - } - -} - -export default CompetitionMaxImg; - -// // type3 -// /*
*/ -// /*

Educoder竞赛平台

*/ -// /*

高校智能课堂与综合实训平台

*/ -// /*
*/ -// /*
*/ -// /*

this.props.Jointheteam()}>加入战队

*/ -// /*
*/ -// /*
*/ -// /*

this.props.Createateam()}>创建战队

*/ -// /*
*/ -// -// /*
*/ -// /*
*/ -// -// -// // type === 4 || type === 5 -// //
-// //

Educoder竞赛平台

-// //

高校智能课堂与综合实训平台

-// //
-// //
-// //

this.props.Jointheteam()}>加入战队

-// //
-// //
-// //

this.props.Createateam()}>创建战队

-// //
-// // -// //
-// //
diff --git a/src/modules/competition/RegisListview.js b/src/modules/competition/RegisListview.js deleted file mode 100644 index a1c28322..00000000 --- a/src/modules/competition/RegisListview.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, {Component} from 'react'; -import { - BrowserRouter as Router, - Route, - Switch -} from 'react-router-dom'; -import axios from 'axios'; -import moment from 'moment'; -import competition from './comcss/competition.css'; -import {Checkbox, Table, Pagination, Menu, Icon} from "antd"; -import {getImageUrl} from 'educoder'; -// 团队竞赛报名无报名子组件团队 在线竞赛 > 全国高校计算机大赛-项目挑战> -class RegisListview extends React.Component { - constructor(props) { - super(props) - - } - - - render() { - return ( -
-
-

创建者

-

战队名称

-

战队成员

-

学校

-

时间

-
-
- ) - } - -} - -export default RegisListview; diff --git a/src/modules/competition/RegisListviewdata.js b/src/modules/competition/RegisListviewdata.js deleted file mode 100644 index 59239512..00000000 --- a/src/modules/competition/RegisListviewdata.js +++ /dev/null @@ -1,170 +0,0 @@ -import React, {Component} from 'react'; -import { - BrowserRouter as Router, - Route, - Switch -} from 'react-router-dom'; -import axios from 'axios'; -import moment from 'moment'; -import {SnackbarHOC, WordsBtn, getImageUrl} from 'educoder'; -import {TPMIndexHOC} from '../tpm/TPMIndexHOC'; -import competition from './comcss/competition.css'; -import {Button} from 'antd'; - -// 团队竞赛报名无报名子组件团队 竞赛报名-已创建战队 -class RegisListviewdata extends React.Component { - constructor(props) { - super(props) - this.state = { - item: undefined - } - - } - - componentDidMount() { - ////console.log("RegisListviewdata"); - ////console.log(this.props.item) - this.setState({ - item: this.props.item - }) - - } - - getotiku = (url) => { - window.open(url, '_blank'); - } - - render() { - const {item} = this.props; - return ( - -
- { - item !== undefined ? -
-
- - -
- { - this.props.admin? - this.props.admin===true? - this.getotiku(`/competitions/${this.props.match.params.identifier}/competition_teams/${item.id}`)} - >{item.name} - :

{item.name}

- :

{item.name}

- } -
-
- - { - item && item.team_members.map((item, index) => { - return ( - - index === 0 ? - - - - : index === 1 ? - - - - : index === 2 ? - - - - : index === 3 ? - - - - : index === 4 ? - - - - : index === 5 ? -
- - - - - -
- : "" - - ) - }) - } -
- -
-

{item.created_at}

-
-
-
- : "" - } -
- - - ) - } - -} - -export default RegisListviewdata; diff --git a/src/modules/competition/RegisNodata.js b/src/modules/competition/RegisNodata.js deleted file mode 100644 index a8441f42..00000000 --- a/src/modules/competition/RegisNodata.js +++ /dev/null @@ -1,34 +0,0 @@ -import React, {Component} from 'react'; -import competition from './comcss/competition.css'; -import {getImageUrl} from 'educoder'; -// 团队竞赛报名无报名子组件 -class RegisNodata extends React.Component { - constructor(props) { - super(props) - - - } - - - render() { - return ( -
-
- -
-

暂无战队参与报名哦,赶紧来成为第一个挑战的吧~

-
- - ) - } - -} - -export default RegisNodata; diff --git a/src/modules/competition/Registration.js b/src/modules/competition/Registration.js deleted file mode 100644 index 1d730567..00000000 --- a/src/modules/competition/Registration.js +++ /dev/null @@ -1,1144 +0,0 @@ -import React, {Component} from 'react'; -import { - BrowserRouter as Router, - Route, - Switch, - Link -} from 'react-router-dom'; -import axios from 'axios'; -import moment from 'moment'; -import {SnackbarHOC, WordsBtn} from 'educoder'; -import {TPMIndexHOC} from '../tpm/TPMIndexHOC'; -import competition from './comcss/competition.css'; -import {Button, Pagination, message, Spin, Breadcrumb} from 'antd'; -import Registrationitem from './Registrationitem'; -import RegisNodata from './RegisNodata'; -import CompetitionMaxImg from './CompetitionMaxImg'; -import RegistrationSearch from './RegistrationSearch'; -import RegisListview from './RegisListview'; -import RegisListviewdata from './RegisListviewdata'; -import PersonModal from './competmodal/PersonModal'; -import MessagePersonModal from './competmodal/MessagePersonModal'; -import PersonalModalteam from './competmodal/PersonalModalteam'; -import PersonalCompetititem from './personal/PersonalCompetititem'; -import ExittheteamModel from './competmodal/ExittheteamModel'; -// 团队竞赛报名无报名 -class Registration extends React.Component { - /*** - *"personal": false, // 是否为个人赛 - *"enroll_ended": false, // 报名是否截止 - *"enrolled: false, // 是否已经报名 - *"teacher_staff": { // 为空表示不支持老师报名 - *"member_staff": { // 为空表示不支持学生报名 - * personal// 是否是个人赛 - * type 是按设计图来的 - * **/ - constructor(props) { - super(props) - this.state = { - loadingstate: false, - pages: 1, - limit: 20, - type: 7, - tmodalsType: false, - tmodalsTypes: false, - Newtit: true, - keyword: "", - page: 1, - per_page: 20, - data: [], - competition_teams: [], - count: 0, - GetenrollmentAPI: undefined, - personal: false, - enroll_ended: false, - enrolled: false, - teacher_staff: null, - member_staff: null, - messagePer: "提示", - messagePerbool: false, - intpermessages: "确认", - messageexit: "提示", - messageexitol: false, - exitintpermessages: "是否确认退出战队?", - itemid: undefined, - itemiddata: [], - pint: 0, - competition_name: undefined, - mutiple_limited: false, - teamutiple_limited: false, - members_count: 0, - mode: 0, - region_schools: [], - admin: false, - typeysl: 0, - - } - } - - componentDidMount() { - // console.log(this.props); - - // //////console.log("componentDidMount Registration"); - // //// //////console.log("调用子组件 "); - // //////console.log(this.props.isAdmin()); - // //// //////console.log(this.props.isAdmin()) - try { - const {keyword, page, per_page} = this.state; - this.Getdata(keyword, page, per_page, this.props.user.admin);// 获取列表数据 - this.GetenrollmentAPI();//获取我的报名配置 - this.setState({ - admin: this.props.user.admin - }) - } catch (e) { - // const {keyword, page, per_page} = this.state; - // this.Getdata(keyword, page, per_page, this.props.isAdmin()); - // this.GetenrollmentAPI(); - } - //取模式 - this.Getdataheader(); - } - - componentDidUpdate = (prevProps) => { - if (prevProps.user != this.props.user) { - // console.log("componentDidUpdate"); - // console.log(this.props); - ////console.log("Registration"); - ////console.log("componentDidUpdate"); - ////console.log(this.props.user.admin); - const {keyword, page, per_page} = this.state; - this.Getdata(keyword, page, per_page, this.props.user.admin); - //取报名配置 - this.GetenrollmentAPI(); - //取模式 - this.Getdataheader(); - this.setState({ - admin: this.props.user.admin - }) - } - - } - - // 获取数据头部 - Getdataheader = () => { - const url = `/competitions/${this.props.match.params.identifier}/common_header.json`; - axios.get((url)).then((result) => { - if (result) { - if (result.data) { - this.setState({ - mode: result.data.mode, - region_schools: result.data.region_schools - }) - - } - } - }).catch((error) => { - - }) - - - } - - //获取报名配置API - GetenrollmentAPI = () => { - // console.log("调用了GetenrollmentAPI"); - const url = `/competitions/${this.props.match.params.identifier}/competition_staff.json`; - axios.get((url)).then((result) => { - if (result) { - if (result.data) { - //// //////console.log("获取报名配置API"); - //// //////console.log(result); - this.setState({ - GetenrollmentAPI: result.data, - personal: result.data.personal, - enroll_ended: result.data.enroll_ended, - enrolled: result.data.enrolled, - teacher_staff: result.data.teacher_staff === undefined || result.data.teacher_staff === null ? null : result.data.teacher_staff, - member_staff: result.data.member_staff === undefined || result.data.member_staff === null ? null : result.data.member_staff, - - }) - - try { - //获取学生是否被限制多次报名 - if (result.data.member_staff) { - this.setState({ - mutiple_limited: result.data.member_staff.mutiple_limited, - - }) - } - - - } catch (e) { - - } - - try { - //获取老师是否被限制多次报名 - if (result.data.teacher_staff) { - this.setState({ - teamutiple_limited: result.data.teacher_staff.mutiple_limited - }) - } - - } catch (e) { - - } - - //是否是个人赛做处理 - if (result.data.personal === true) { - if (result.data.enroll_ended === true) { - this.setState({ - pint: 0 - }) - } else if (result.data.enrolled === true) { - this.setState({ - pint: 2 - }) - } else if (result.data.enrolled === false) { - this.setState({ - pint: 1 - }) - } - } - - } - } - }).catch((error) => { - console.log("GetenrollmentAPI"); - console.log(error); - }) - } - - Getdata = (keyword, page, per_page, admin) => { - //搜索关键字 keyword - //页数 page - //分页 per_page - const datas = { - keyword: keyword, - page: page, - per_page: per_page, - }; - let url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; - axios.get((url), {params: datas}).then((result) => { - if (result) { - if (result.data) { - //// //////console.log(result);\ - if (result.data.personal === false) { - //不是个人赛 - if (result.data.my_teams.length === 0) { - // 没有创建数据的 - if (admin === true) { - //管理员 - try { - this.setState({ - type: 4, - count: result.data.count, - data: result.data.my_teams, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count - }) - } catch (e) { - this.setState({ - type: 4, - count: result.data.count, - data: result.data.my_teams, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count - }) - } - - } else { - //普通账号 - this.setState({ - type: 1, - count: result.data.count, - data: result.data.my_teams, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count - }) - } - } else { - //有数据的 - if (admin === true) { - this.setState({ - type: 5, - data: result.data.my_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count - }) - } else { - //普通账号true 为创建了竞赛 - this.setState({ - type: 2, - data: result.data.my_teams, - count: result.data.count, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count - }) - } - - } - } else { - if (this.props.user.admin === true) { - try { - - if (result.data.competition_teams.length === 0) { - this.setState({ - type: 6, - typeysl: 1, - data: result.data.competition_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count, - - }) - } else { - this.setState({ - type: 6, - typeysl: 0, - data: result.data.competition_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count, - - }) - } - } catch (e) { - this.setState({ - type: 6, - typeysl: 1, - data: result.data.competition_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count, - - }) - } - } else { - try { - - if (result.data.my_teams.length === 0) { - this.setState({ - type: 6, - typeysl: 1, - data: result.data.my_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count, - - }) - } else { - this.setState({ - type: 6, - typeysl: 0, - data: result.data.my_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count, - - }) - } - } catch (e) { - this.setState({ - type: 6, - typeysl: 1, - data: result.data.my_teams, - count: result.data.count, - competition_teams: result.data.competition_teams, - personal: result.data.personal, - competition_name: result.data.competition_name, - members_count: result.data.members_count, - - }) - } - } - - - } - } - } - this.setState({ - loadingstate: false, - }) - }).catch((error) => { - if (admin === true) { - //管理员 - this.setState({ - type: 4, - count: 0, - competition_teams: [], - data: [], - loadingstate: false, - }) - } else { - //普通账号 - this.setState({ - type: 1, - count: 0, - competition_teams: [], - data: [], - loadingstate: false, - }) - } - }) - - } - - // Getdatatype5 = (keyword, page, per_page, admin) => { - // //搜索关键字 keyword - // //页数 page - // //分页 per_page - // const datas = { - // keyword: keyword, - // page: page, - // per_page: per_page, - // }; - // let url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; - // axios.get((url), {params: datas}).then((result) => { - // this.setState({ - // loadingstate: false, - // }) - // if (result) { - // if (result.data) { - // //// //////console.log(result); - // if (result.data.personal === false) { - // //不是个人赛 - // ////console.log("Getdatatype5"); - // ////console.log(result.data.my_teams.length); - // if (result.data.my_teams.length === 0) { - // // 没有创建数据的 - // //管理员 - // ////console.log("a"); - // ////console.log(this.state.competition_teams); - // ////console.log(result.data.competition_teams); - // this.setState({ - // type: 4, - // count: result.data.count, - // competition_teams: result.data.competition_teams, - // data: result.data.my_teams, - // personal: result.data.personal, - // competition_name: result.data.competition_name, - // members_count:result.data.members_count - // - // - // }) - // } else { - // //有数据的 - // ////console.log("b"); - // - // if (result.data.my_teams[0].manage_permission === true) { - // this.setState({ - // type: 5, - // data: result.data.my_teams, - // count: result.data.count, - // competition_teams: result.data.competition_teams, - // personal: result.data.personal, - // competition_name: result.data.competition_name, - // members_count:result.data.members_count - // - // - // }) - // } else { - // ////console.log("c"); - // - // this.setState({ - // type: 4, - // data: result.data.my_teams, - // count: result.data.count, - // competition_teams: result.data.competition_teams, - // personal: result.data.personal, - // competition_name: result.data.competition_name, - // members_count:result.data.members_count - // - // - // }) - // } - // } - // } else { - // //团队赛 - // //////console.log("d"); - // - // this.setState({ - // type: 6, - // data: result.data.my_teams, - // count: result.data.count, - // competition_teams: result.data.competition_teams, - // personal: result.data.personal, - // competition_name: result.data.competition_name, - // members_count:result.data.members_count - // - // - // }) - // } - // - // } - // } - // - // }).catch((error) => { - // ////console.log("k"); - // - // ////console.log(error); - // ////console.log("报错了"); - // if (admin === true) { - // //管理员 - // this.setState({ - // count: 0, - // competition_teams: [], - // data: [], - // loadingstate: false, - // }) - // } else { - // //普通账号 - // this.setState({ - // count: 0, - // competition_teams: [], - // data: [], - // loadingstate: false, - // }) - // } - // }) - // } - - - //团队竞赛翻页 - paginationonChangestwo = (pageNumber) => { - this.setState({ - pages: pageNumber, - loadingstate: true, - }) - const {keyword, per_page} = this.state; - this.Getdata(keyword, pageNumber, per_page, this.props.user.admin); - - }; - /** - * 加入战队 - * */ - Jointheteam = () => { - if (this.props.checkIfLogin() === false) { - this.props.showLoginDialog() - return - } - - let {region_schools} = this.state; - //判断是否是否是同一个学校,数组元素为0就不用判断 - try { - if (region_schools.length > 0) { - let i = 0; - for (var r = 0; r < region_schools.length; r++) { - if (region_schools[r] === this.props.user.user_school) { - // 终止循环 - break; - - } - i = i + 1; - } - if (i === region_schools.length) { - //如果i 等于region_schools.length,说明本次循环中没有相同的学校,本人不支持报名 - try { - this.props.showNotification(`本竞赛只面向部分学校/单位开放,你暂时没有参赛资格!`); - - } catch (e) { - - } - this.Getdataheader(); - return - } - - } - } catch (e) { - - } - - - - if (this.props.user.is_teacher === true) { - try { - if (this.state.teamutiple_limited === true) { - if (this.state.enrolled === true) { - //已经报名 - this.setState({ - messagePerbool: true, - intpermessages: "你已经报名,不能重复报名" - }) - return; - } - } - } catch (e) { - - } - - } else { - try { - if (this.state.mutiple_limited === true) { - if (this.state.enrolled === true) { - //已经报名 - this.setState({ - messagePerbool: true, - intpermessages: "你已经报名,不能重复报名" - }) - return; - } - } - } catch (e) { - - } - } - - - if (this.state.enroll_ended === true) { - //报名截止 - this.setState({ - messagePerbool: true, - intpermessages: "报名已截止,无需报名" - }) - return - } - - - if (this.props.user.is_teacher === true) { - //老师 - if (this.state.teacher_staff === null) { - //禁止老师 - this.setState({ - messagePerbool: true, - intpermessages: "已禁止老师报名" - }) - return; - } - this.setState({ - tmodalsTypes: true - }) - } else { - //学生 - if (this.state.member_staff === null) { - //禁止学生 - this.setState({ - messagePerbool: true, - intpermessages: "已禁止学生报名" - }) - return; - } - this.setState({ - tmodalsTypes: true - }) - } - // this.setState({ - // tmodalsTypes: true - // }) - - } - - /** - * 创建战队 - **/ - Createateam = () => { - if (this.props.checkIfLogin() === false) { - this.props.showLoginDialog() - return - } - - let {region_schools} = this.state; - //判断是否是否是同一个学校,数组元素为0就不用判断 - try { - if (region_schools.length > 0) { - let i = 0; - for (var r = 0; r < region_schools.length; r++) { - if (region_schools[r] === this.props.user.user_school) { - // 终止循环 - break; - - } - i = i + 1; - } - if (i === region_schools.length) { - //如果i 等于region_schools.length,说明本次循环中没有相同的学校,本人不支持报名 - try { - this.props.showNotification(`本竞赛只面向部分学校/单位开放,你暂时没有参赛资格!`); - } catch (e) { - - } - this.Getdataheader(); - return - } - - } - } catch (e) { - - } - - - if (this.props.user.is_teacher === true) { - try { - if (this.state.teamutiple_limited === true) { - if (this.state.enrolled === true) { - //已经报名 - this.setState({ - messagePerbool: true, - intpermessages: "你已经报名,不能重复报名" - }) - return; - } - } - } catch (e) { - - } - - } else { - try { - if (this.state.mutiple_limited === true) { - if (this.state.enrolled === true) { - //已经报名 - this.setState({ - messagePerbool: true, - intpermessages: "你已经报名,不能重复报名" - }) - return; - } - } - } catch (e) { - - } - } - if (this.state.enroll_ended === true) { - //报名截止 - this.setState({ - messagePerbool: true, - intpermessages: "报名已截止,无需报名" - }) - return - } - - if (this.props.user.is_teacher === true) { - //老师 - if (this.state.teacher_staff === null) { - //禁止老师 - this.setState({ - messagePerbool: true, - intpermessages: "已禁止老师报名" - }) - return; - } - this.setState({ - tmodalsType: true, - Newtit: true, - }) - } else { - //学生 - if (this.state.member_staff === null) { - //禁止学生 - this.setState({ - messagePerbool: true, - intpermessages: "已禁止学生报名" - }) - return; - } - this.setState({ - tmodalsType: true, - Newtit: true, - }) - } - } - - //编辑战队 - Createateamedit = (data) => { - this.setState({ - tmodalsType: true, - Newtit: false, - itemiddata: data - }) - } - Tmoconfirm = (bool) => { - //boolfalse 取消 true 确认 - this.setState({ - tmodalsTypes: false - }) - if (bool) { - //确认 - this.Refreshteam(); - - } else { - //取消 - - - } - } - - //创建战队确认 - Tmoconfirm1 = (bool) => { - //boolfalse 取消 true 确认 - this.setState({ - tmodalsType: false - }) - if (bool) { - //确认 - this.Refreshteam(); - } else { - //取消 - - - } - } - - //自定义弹框按钮 - messagePerboolbuton = () => { - this.setState({ - messagePerbool: false - }) - } - //显示退出战队弹框 - Exittheteamshow = (itemid, bool) => { - if (bool === true) { - this.setState({ - messageexitol: true, - itemid: itemid, - exitintpermessages: "是否确认删除战队", - }) - } else { - this.setState({ - messageexitol: true, - itemid: itemid, - exitintpermessages: "是否确认退出战队", - }) - } - - - }; - //刷新战队 - Refreshteam = () => { - const {keyword, page, per_page} = this.state; - this.Getdata(keyword, page, per_page, this.props.user.admin); - this.GetenrollmentAPI(); - } - //退出战队 - Exittheteam = (bool) => { - // //////console.log(this.state.itemid); - if (bool) { - this.setState({ - messageexitol: true - }) - - let url = `/competitions/${this.props.match.params.identifier}/competition_teams/${this.state.itemid}/leave.json`; - axios.post(url).then((response) => { - if (response) { - if (response.data) { - //////console.log("退出战队"); - //////console.log(response); - this.Refreshteam(); - this.setState({ - messageexitol: false - }) - - } - } - }).catch((error) => { - //////console.log(error) - }); - - } else { - this.setState({ - messageexitol: false - }) - } - } - //搜索战队 - RegistrationSearchvalue = (value) => { - ////console.log("RegistrationSearchvalue"); - ////console.log(this.props.user.admin); - this.setState({ - pages: 1, - limit: 20, - }) - this.Getdata(value, 1, 20, this.props.user.admin); - } - - //个人竞赛 -// /competitions/:identifier/competition_teams.json - Personalregistration = () => { - let {teacher_staff, member_staff, data, enroll_ended, enrolled} = this.state; - - if (this.props.checkIfLogin() === false) { - this.props.showLoginDialog(); - return - } - - if (enroll_ended === true) { - //已截止 - this.props.showNotification(`报名已截止`); - return; - } - if (enrolled === true) { - this.props.showNotification(`你已经报名,不能重复报名!`); - return; - } - const url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; - axios.post(url).then((response) => { - if (response) { - if (response.data) { - this.props.showNotification(`报名成功,预祝您夺得桂冠!`); - this.Refreshteam(); - } - } - }).catch((error) => { - - }); - } - - - render() { - const {page, admin, typeysl, mode, pages, limit, type, tmodalsType, tmodalsTypes, data, count, competition_teams, Newtit, itemiddata, messagePerbool, messageexitol, GetenrollmentAPI, loadingstate, pint, competition_name, mutiple_limited, teamutiple_limited, members_count} = this.state; - - return ( -
- -
- - { - messagePerbool === true ? - this.messagePerboolbuton()} - GetenrollmentAPI={GetenrollmentAPI}> - : "" - } - {/*编辑创建战队*/} - { - tmodalsType === true ? - this.Tmoconfirm1(bool)} - GetenrollmentAPIopens={() => this.GetenrollmentAPI()} - > - : - "" - } - { - tmodalsTypes === true ? - this.Tmoconfirm(bool)}> - : "" - } - { - messageexitol === true ? - this.Exittheteam(bool)}> - : "" - } - - -
- - 在线竞赛 - {competition_name === undefined || competition_name === null || competition_name === "" ? "全国高校计算机大赛" : competition_name} - {/**/} - 报名 - -
- {/*大图*/} - this.Jointheteam()} - pint={pint} - {...this.props} {...this.state} - Createateam={() => this.Createateam()} - Personalregistration={() => this.Personalregistration()} - > - {/*大图结尾*/} - {/*没数据*/} - {admin === true ? - (pint === 1 || pint === 3 ? -
-

参赛总人数:{members_count} -

-
: "") - : ""} - {/*列表*/} - { - type === 6 ? -
- - { - data && data.map((item, index) => { - return ( - - ) - }) - } - - - -
- : ""} - { - type === 1 || typeysl === 1 ? - - : - "" - } - {/*普通账号出现单人 战队弹框*/} - { - type === 2 || type === 3 || type === 5 ? - ( - data && data.map((item, index) => { - return ( - this.Exittheteamshow(itemid)} - Createateamedit={(itemid) => this.Createateamedit(itemid)} - {...this.props} {...this.state} - > - ) - }) - ) - - : "" - } - - { - type === 4 || type === 5 ? - this.RegistrationSearchvalue(value)}> - : "" - } - {/**/} - { - type === 4 || type === 5 ? - - : - "" - } - - - {type === 4 || type === 5 ? - - { - competition_teams && competition_teams.map((item, index) => { - return ( - - ) - }) - } - - - : - "" - } - - { - type === 4 || type === 5 ? - ( - count < 20 ?
: -
- -
- ) - - :
- } - -
- -
- ) - } - -} - -export default Registration; - - -// if (admin === true) { -// // if (result.data.my_teams[0].manage_permission === true) { -// this.setState({ -// type: 5, -// data: result.data.my_teams, -// count: result.data.count, -// competition_teams: result.data.competition_teams, -// personal: result.data.personal, -// competition_name: result.data.competition_name, -// members_count: result.data.members_count -// -// -// }) -// // } else { -// // this.setState({ -// // type: 4, -// // data: result.data.my_teams, -// // count: result.data.count, -// // competition_teams: result.data.competition_teams, -// // personal: result.data.personal, -// // competition_name: result.data.competition_name, -// // members_count: result.data.members_count -// // -// // -// // }) - -// if (result.data.my_teams[0].manage_permission === true) { -//普通账号true 为创建了竞赛 -// this.setState({ -// type: 2, -// data: result.data.my_teams, -// count: result.data.count, -// personal: result.data.personal, -// competition_name: result.data.competition_name, -// members_count: result.data.members_count -// -// -// }) -// } else { -// //普通账号true 加入了竞赛 -// this.setState({ -// type: 2, -// data: result.data.my_teams, -// count: result.data.count, -// personal: result.data.personal, -// competition_name: result.data.competition_name, -// members_count: result.data.members_count -// -// -// }) -// } diff --git a/src/modules/competition/RegistrationSearch.js b/src/modules/competition/RegistrationSearch.js deleted file mode 100644 index a1f0b9ac..00000000 --- a/src/modules/competition/RegistrationSearch.js +++ /dev/null @@ -1,75 +0,0 @@ -import React, {Component} from 'react'; -import { - BrowserRouter as Router, - Route, - Switch -} from 'react-router-dom'; -import axios from 'axios'; -import moment from 'moment'; -import competition from './comcss/competition.css'; -import {Checkbox, Input, Table, Pagination, Menu, Icon} from "antd"; - -const Search = Input.Search; - -// 团队竞赛报名无报名子组件团队 在线竞赛 > 全国高校计算机大赛-项目挑战> -class RegistrationSearch extends React.Component { - constructor(props) { - super(props) - this.state = { - keywords: "" - } - } - - setdatafunsval = (e) => { - this.setState({ - keywords: e.target.value - }) - - }; - setdatafuns = (value) => { - //console.log("setdatafuns点击了搜索"); - //console.log(value); - this.setState({ - keywords: value - }) - this.props.RegistrationSearchvalue(value); - }; - - myonPressEnter = (e) => { - //console.log("点击了回车setdatafunsval点击了搜索"); - //console.log(e.target.value); - this.props.RegistrationSearchvalue(e.target.value); - } - render() { - return ( -
- - 搜索} - onInput={(e) => this.setdatafunsval(e)} - onSearch={(value) => this.setdatafuns(value)} - onPressEnter={(e) => this.myonPressEnter(e)} - /> - -

战队总数:{this.props.count} 参赛总人数:{this.props.members_count}

-
- ) - } - -} - -export default RegistrationSearch; diff --git a/src/modules/competition/Registrationitem.js b/src/modules/competition/Registrationitem.js deleted file mode 100644 index d252dc30..00000000 --- a/src/modules/competition/Registrationitem.js +++ /dev/null @@ -1,84 +0,0 @@ -import React, {Component} from 'react'; -import { - BrowserRouter as Router, - Route, - Switch -} from 'react-router-dom'; -import axios from 'axios'; -import moment from 'moment'; -import {SnackbarHOC, WordsBtn, getImageUrl} from 'educoder'; -import {TPMIndexHOC} from '../tpm/TPMIndexHOC'; -import competition from './comcss/competition.css'; -import {Button} from 'antd'; -import RegisListviewdata from "./RegisListviewdata"; - -// 团队竞赛报名无报名子组件团队 竞赛报名-已创建战队 -class Registrationitem extends React.Component { - constructor(props) { - super(props) - - - } - - - render() { - let {item} = this.props; - return ( -
- { - item !== undefined ? -
-
- - - -
-
-

{item.creator.name}

- { - item.manage_permission === true ? -

已报名

- : - "" - } - -
- -
-

{item.created_at}

-
- -
- : "" - } -
- ) - } - -} - -export default Registrationitem; diff --git a/src/modules/competition/comcss/competition.css b/src/modules/competition/comcss/competition.css deleted file mode 100644 index fd35521d..00000000 --- a/src/modules/competition/comcss/competition.css +++ /dev/null @@ -1,900 +0,0 @@ -/*All*/ -.borders { - border: 0.5px solid; -} - -.borders2 { - border: 1px solid #D9D9D9; -} - -.newMainybot { - padding-bottom: 0px !important; -} -/*All*/ -/*Registration.js*/ -/*.registrationback {*/ -/* height: 368px;*/ -/* width: 1200px;*/ -/* border: 0.5px solid;*/ -/* display: flex;*/ -/* display: -webkit-flex;*/ -/* flex-direction: column;*/ -/* align-items: center;*/ -/* background:url(../../../../../images/regis/tipregistit.jpg)*/ - -/*}*/ - -.registrationbackcenter { - display: flex; - display: -webkit-flex; - flex-direction: column; - align-items: center; -} - -/*.registrationback1 {*/ -/* height: 368px;*/ -/* width: 1200px;*/ -/* border: 0.5px solid;*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* background:url(../../../../../images/regis/tipregistit.jpg)*/ -/*}*/ - -.registrationbackp1 { - color: #ffffff; - font-size: 42px; - margin-top: 80px; - line-height: 42px; - font-weight: bold; - -} - -.registrationbackp11 { - color: #ffffff; - font-size: 48px; - margin-top: 71px; - line-height: 48px; - font-weight: bold; - margin-left: 251px; - -} - -.registrationbackp2 { - color: #ffffff; - font-size: 18px; - margin-top: 16px; - line-height: 20px; -} - -.registrationbackp22 { - margin-left: 251px; - color: #ffffff; - font-size: 36px; - margin-top: 25px; - line-height: 36px; -} - -.registrationbackp3 { - color: #ffffff; - font-size: 18px; - line-height: 20px; - margin-top: 7px; -} - -.registrationbackp4 { - color: #ffffff; - font-size: 26px; - margin-top: 25px; - line-height: 26px; -} - -.registrationbackp5 { - color: #ffffff; - font-size: 26px; - margin-top: 25px; -} - - -.registrationbackp2button { - display: flex; - align-items: center; - margin-top: 36px; -} - -.registrationbackp2button2 { - display: flex; - align-items: center; - margin-top: 40px; -} - -.registrationbackp2button3 { - display: flex; - align-items: center; - margin-top: 44px; - margin-left: 251px; - -} - -.registbut1 { - margin-right: 46px; - text-align: center; - background: #0BDEE6; - border-radius: 10px; - height: 54px; - width: 156px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer - -} - -.personreg1 { - margin-right: 46px; - text-align: center; - background: #C3C1C1; - height: 54px; - width: 156px; - border-radius: 10px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer -} - -.registbut11 { - margin-right: 46px; - text-align: center; - font-size: 16px; - color: #ffffff; - height: 48px; - width: 156px; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - border: 1px; - border-style: solid; - border-color: #ffffff; - -} - -.registbut111 { - margin-right: 46px; - text-align: center; - color: #ffffff; - height: 41px; - width: 146px; - font-size: 16px; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - border: 2px; - border-style: solid; - border-color: #ffffff; - -} - -.registbut1 p { - width: 100%; - height: 100%; - color: #ffffff; - line-height: 54px; - font-size: 20px; - font-weight: bold; - cursor: pointer -} - -.registbut11 p { - width: 100%; - height: 100%; - line-height: 48px; - -} - -.registbut22 p { - width: 100%; - height: 100%; - line-height: 48px; -} - -.registbut2 p { - line-height: 54px; - width: 100%; - height: 100%; - color: #ffffff; - font-size: 20px; - font-weight: bold; - cursor: pointer - -} - -.personreg1 p { - color: #ffffff; - font-size: 20px; - cursor: not-allowed; -} - -.registbut111 p { - width: 100%; - height: 100%; - line-height: 38px; -} - -.registbut222 p { - width: 100%; - height: 100%; - line-height: 38px; - -} - -.registbut2 { - text-align: center; - color: #05101A; - font-size: 20px; - background: #F8EC25; - height: 54px; - width: 156px; - border-radius: 10px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer -} - -.registbut22 { - text-align: center; - color: #ffffff; - font-size: 16px; - height: 48px; - width: 156px; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - border: 1px; - border-style: solid; - border-color: #ffffff; -} - -.registbut222 { - text-align: center; - color: #ffffff; - font-size: 16px; - height: 41px; - width: 146px; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - border: 2px; - border-style: solid; - border-color: #ffffff; -} - -.bootom { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -.bootomimg { - height: 80px; - width: 125px; - margin-top: 107px; - -} - -.bootomtext { - color: #999999; - font-size: 16px; - margin-top: 33px; - -} - - -/*Registration.js*/ - -/*Registrationitem.js*/ -/*横向*/ -.regitem { - display: flex; - flex-direction: initial; - margin-top: 44px; -} - -.myregitem11 { - display: flex; - flex-direction: initial; - margin-top: 20px; -} - - -.regitem22 { - display: flex; - flex-direction: initial; - margin-top: 27px; - margin-bottom: 19px; -} - -.yslborderbottom { - border-bottom: 1px solid #EDEDED; -} - -.registrationback { - height: 368px; - width: 1200px; - display: flex; - display: -webkit-flex; - flex-direction: column; - align-items: center; -} - -.registrationback1 { - height: 368px; - width: 1200px; - display: flex; - flex-direction: column; -} - -.regitem2 { - display: flex; - flex-direction: initial; - padding-bottom: 18px; - margin-top: 19px; - -} - -/*垂直*/ -.regitemimg1 { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin-left: 17px; -} - -.perregitemimg1 { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin-left: 26px; - -} - -.regitemimg2 { - height: 78px; - width: 78px; - background-color: transparent; - margin-bottom: 9px; - border-radius: 50%; -} - -.personregitemimg { - height: 64px; - width: 64px; - border-radius: 50%; -} - - -.regitemimg2 p { - border: 0.5px solid; - color: #999999; - font-size: 14px; -} - -.regitemimgs { - width: 69px; - height: 69px; - margin-top: 3px; - background-color: transparent; - border-radius: 50%; - -} - -.regitemimgs2 { - margin-top: 16px; - width: 49px; - height: 51px; - margin-left: 25px; - border-radius: 50%; - -} - -.regitemimgs22 { - margin-top: 27px; - width: 28px; - height: 28px; - margin-left: 20px; - border-radius: 50%; - -} - -.regitemimgs222 { - margin-top: 12px; - width: 28px; - height: 28px; - margin-left: 20px; - border-radius: 50%; - -} - -.regitemimgs3 { - /* border: 0.5px solid; */ - height: 22px; - width: 22px; - font-size: 21px !important; - margin-top: 19px; - color: #1C91E8; -} - -.regitemimgs4 { - width: 156px; - display: flex; - flex-direction: row-reverse; - margin-top: 18px; -} - -.regitemimgs444 { - display: flex; - flex-direction: row-reverse; - margin-top: 18px; -} -.regitemimgs5 { - margin-left: 10px; - text-align: center; - background: #ffffff; - height: 40px; - width: 72px; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - border: 1px; - border-style: solid; - border-color: #459BE5; - cursor: pointer -} - -.regitemimgs555 { - margin-left: 33px; - text-align: center; - background: #ffffff; - height: 40px; - width: 72px; - color: #459be5; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - border: 1px; - border-style: solid; - border-color: #459BE5; - cursor: pointer -} - -.regitemimgs555 p { - line-height: 39px; - color: #459be5; -} -.regitemimgs6 { - - text-align: center; - background: #ffffff; - height: 40px; - width: 72px; - border-radius: 4px; - display: flex; - align-items: center; - justify-content: center; - border: 1px; - cursor: pointer; - border-style: solid; - border-color: #459BE5; -} - -.regitemimgs5 p { - color: #459BE5; - font-size: 14px; - cursor: pointer; - line-height: 39px; -} - -.regitemimgs6 p { - color: #459BE5; - font-size: 14px; - cursor: pointer; - line-height: 39px; - -} - -/*Registrationitem.js*/ - -/*RegistrationSearch.js*/ -.searchhead { - display: flex; - flex-direction: initial; - margin-top: 24px; - -} - -.packinputs button { - background: #459BE5; - width: 100% !important; -} - -.packinputs { - width: 317px; - height: 34px; -} - - -/*RegistrationSearch.js*/ -.reglistviewdiv { - display: flex; - flex-direction: initial; - margin-top: 25px; -} - -/*RegisListview.js*/ -.reglistviewdivs { - margin-top: 25px; - -} - -.reglistviewdivss { - display: flex; - flex-direction: initial; - -} - -.reglistviewdivss2 { - display: flex; - flex-direction: initial; - -} - -.reglistviewdivss2c { - display: flex; - flex-direction: initial; - cursor: not-allowed; -} - -.reglistviewdivss2p { - width: 90px; - font-size: 12px; - color: #666666; - text-align: center; - -} - -.reglistviewdivss4p { - width: 90px; - font-size: 12px; - color: #666666; - text-align: center; - -} - -.reglistviewdivss5p { - width: 110px; - font-size: 12px; - color: #666666; - text-align: center; - -} - -.reglistviewdivss33p { - width: 25px; - font-size: 12px; - color: #666666; - text-align: center; - -} - -.reglistviewdivss333p { - width: 31px; - font-size: 12px; - color: #666666; - text-align: center; - -} -.reglistviewdivss3p { - width: 31px; - font-size: 12px; - color: #666666; - text-align: center; - -} - -reglistviewdivs2 { - margin-top: 27px; - -} - -/*RegisListview.js*/ - - -/*RegisListviewdata.js*/ -.reglistimg1 { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - -} - -.reglistimg2 { - border: 0.5px solid; - height: 78px; - width: 78px; -} - -/*RegisListviewdata.js*/ - - -/*PersonModal.js*/ -.yslanswerList { - -} - -.yslanswerList li { - -} - -.yslanswerList li:hover { - background-color: #F6F4F4; -} -.permaindiv { - display: flex; - flex-direction: column; -} - - -.demo-loading-container { - position: absolute; - bottom: 40px; - width: 100%; - text-align: center; -} - -.demo-infinite-container { - border-radius: 2px; - overflow: auto; - height: 215px; - width: 485px; - -} - -.demo-infinite-containerdiv { - margin-top: 12px; -} - -.demo-infinite-containerdiv2 { - margin-top: 24px; - -} - -.backgroundspersondiv { - background: #ffffff; -} - -.cpersondiv1 { - height: 161px; - width: 410px; -} - -.demo-infinite-container2 { - border-radius: 2px; - overflow: auto; - height: 161px; - width: 410px; - -} - -.demo-infinite-container33 { - border-radius: 2px; - height: 161px; - width: 410px; - -} -.cpersondiv1Items { - color: #05101A; - font-size: 12px; -} - -.personbut1 { - background: #F2F2F2; - border-color: #F2F2F2; - margin-right: 26px; - width: 120px; - height: 38px; - color: #4A4A4A; - font-size: 16px; - border-radius: 3px; - cursor: pointer; -} - -.personbut1 p { - width: 100%; - height: 100%; - text-align: center; - margin-top: 10px; - color: #4A4A4A; - font-size: 16px; - cursor: pointer; -} -.personbut2 { - background: #459BE5; - border-color: #459BE5; - margin-right: 26px; - width: 120px; - height: 38px; - color: #ffffff; - font-size: 16px; - border-radius: 3px; - cursor: pointer; -} - -.personbut2 p { - width: 100%; - height: 100%; - text-align: center; - margin-top: 10px; - color: #ffffff; - font-size: 16px; - cursor: pointer; -} - -/*PersonModal.js*/ - - -/*PersonalModalteam.js*/ -.personaldiv { - display: flex; - display: -webkit-flex; - flex-direction: column; - align-items: center; -} - -.personaldivbutt1 { - - background: #F2F2F2; - border-color: #F2F2F2; - margin-right: 23px; - width: 100px; - height: 38px; - color: #4A4A4A; - font-size: 16px; - border-radius: 3px; - cursor: pointer; -} - -.personaldivbutt1 p { - width: 100%; - height: 100%; - text-align: center; - margin-top: 10px; - color: #666666; - font-size: 16px; - cursor: pointer; -} - -.personaldivbutt2 { - background: #459BE5; - border-color: #459BE5; - width: 100px; - height: 38px; - color: #ffffff; - font-size: 16px; - border-radius: 3px; - cursor: pointer; -} - -.personaldivbutt2 p { - width: 100%; - height: 100%; - text-align: center; - margin-top: 10px; - color: #ffffff; - font-size: 16px; - cursor: pointer; -} - -.task-btn-orange { - background: #4CACFF !important; - color: #fff !important; -} - -.task-btn { - cursor: pointer; - display: inline-block; - border: none; - padding: 0 12px; - letter-spacing: 1px; - text-align: center; - font-size: 14px; - height: 30px; - line-height: 30px; - border-radius: 2px; -} -/*PersonalModalteam.js*/ - - -/*文字长度限制*/ -.maxnamewidth100 { - max-width: 100px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - -.maxnamewidth78 { - width: 78px !important; - max-width: 78px !important; - min-width: 78px !important; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} -.maxnamewidth85 { - max-width: 85px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - -.maxnamewidth90 { - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - -.maxnamewidth110 { - max-width: 110px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - - -.maxnamewidth160 { - width: 160px !important; - min-width:160px !important; - max-width: 160px !important; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - -.maxnamewidth134 { - max-width: 134px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; -} - -/*文字长度限制?*/ - - -.textsize{ - width: 160px !important; - min-width: 160px !important; - max-width: 160px !important; - text-align: center; -} diff --git a/src/modules/competition/competmodal/ExittheteamModel.js b/src/modules/competition/competmodal/ExittheteamModel.js deleted file mode 100644 index 29eab7b5..00000000 --- a/src/modules/competition/competmodal/ExittheteamModel.js +++ /dev/null @@ -1,59 +0,0 @@ -import React, {Component} from 'react'; -import {getImageUrl} from 'educoder'; -import {Modal, Input, Spin, Tooltip, Icon, Dropdown, Button} from 'antd'; -import axios from 'axios'; -import competition from '../comcss/competition.css'; -import Registrationitem from "../Registrationitem"; -import InfiniteScroll from 'react-infinite-scroller'; -// import PersonModaltion from "./PersonModaltion"; -const {Search} = Input; - -//退出战队 -class ExittheteamModel extends React.Component { - - constructor(props) { - super(props); - this.state = {} - } - - - render() { - const { - addonAfter, test, test3, Numberofteammentors, Thecurrentnumber, person1, person2 - } = this.state; - //Modal - //keyboard是否支持键盘 esc 关闭 - //closable 是否显示右上角的关闭按钮 - //底部内容,当不需要默认底部按钮时,可以设为 footer={null} - //destroyOnClose 关闭时销毁 Modal 里的子元素 - //centered 垂直居中展示 Modal - //visible 弹出框是否显示 - - return ( - - - -
-
{this.props.exitintpermessages}
-
- - -
- ) - } -} - -export default ExittheteamModel; diff --git a/src/modules/competition/competmodal/MessagePersonModal.js b/src/modules/competition/competmodal/MessagePersonModal.js deleted file mode 100644 index 6f87ab58..00000000 --- a/src/modules/competition/competmodal/MessagePersonModal.js +++ /dev/null @@ -1,63 +0,0 @@ -import React, {Component} from 'react'; -import {getImageUrl} from 'educoder'; -import {Modal, Input, Spin, Tooltip, Icon, Dropdown, Button} from 'antd'; -import axios from 'axios'; -import competition from '../comcss/competition.css'; -import Registrationitem from "../Registrationitem"; -import InfiniteScroll from 'react-infinite-scroller'; -// import PersonModaltion from "./PersonModaltion"; -const {Search} = Input; - -class MessagePersonModal extends React.Component { - - constructor(props) { - super(props); - this.state = {} - } - - - render() { - const { - addonAfter, test, test3, Numberofteammentors, Thecurrentnumber, person1, person2 - } = this.state; - //Modal - //keyboard是否支持键盘 esc 关闭 - //closable 是否显示右上角的关闭按钮 - //底部内容,当不需要默认底部按钮时,可以设为 footer={null} - //destroyOnClose 关闭时销毁 Modal 里的子元素 - //centered 垂直居中展示 Modal - //visible 弹出框是否显示 - - return ( - - -
-
{this.props.intpermessages}
-
this.props.messagePerboolbuton()}>确认 -
-
-
- ) - } -} - -export default MessagePersonModal; diff --git a/src/modules/competition/competmodal/PersonModal.js b/src/modules/competition/competmodal/PersonModal.js deleted file mode 100644 index 1c83ec22..00000000 --- a/src/modules/competition/competmodal/PersonModal.js +++ /dev/null @@ -1,1553 +0,0 @@ -import React, { Component } from 'react'; -import { getImageUrl } from 'educoder'; -import { Modal, Input, Spin, Tooltip, Icon, Dropdown, Button, Empty } from 'antd'; -import axios from 'axios'; -import competition from '../comcss/competition.css'; -import Registrationitem from "../Registrationitem"; -import InfiniteScroll from 'react-infinite-scroller'; -// import PersonModaltion from "./PersonModaltion"; -import NoneData from '../../../modules/courses/coursesPublic/NoneData' -const { Search } = Input; - -//创建战队 -var myabool = true; -var myabool2 = true; -class PersonModal extends Component { - //导师是搜索 和学生搜索都会添加到下面框中 - /** - * mydatas最下面列表显示的参数 - * booltech 控制老师是否重复添加的参数 - * myuser 创建者的信息 - * teacher_idss 老师数组 - * member_ids 学生数组 - * polls_nametest 战队名字 - * **/ - - constructor(props) { - super(props); - this.state = { - addonAfter: 0, - loading: false, - loading1: false, - loading2: false, - hasMore: true, - person1: false, - person2: false, - Numberofteammentors: "0-3", - Thecurrentnumber: "0", - keywordteachers: "", - team_idstudents: undefined, - team_idteachers: undefined, - teacher_ids: undefined, - keywordstudents: "", - Aggregatedata: [], - name: "", - teacher_idss: [], - member_ids: [], - myuser: undefined, - mydatas: [], - booltech: false, - boolstud: false, - polls_nametest: "", - myteaherdata: [], - myshtudentdata: [], - Thecurrentnumberbool: false, - Thecurrentnumberboolstu: false, - Thecurrentnumberstu: "", - - - } - } - componentDidMount() { - var data = []; - var polls_nametests = ""; - var datas = { - enrollable: false, - id: this.props.user.user_id, - name: this.props.user.real_name, - school_name: this.props.user.user_school, - student_id: null, - identity: this.props.user.user_identity, - type: this.props.user.is_teacher === true ? "导师" : "队员", - }; - data.push(datas); - - // console.log("itemiddata"); - // console.log("编辑战队") - // console.log(this.props.itemiddata); - try { - if (this.props.Newtit === false) { - for (var i = 0; i < this.props.itemiddata.team_members.length; i++) { - if (i === 0) { - ///因为第一个位置是创建者 所以要过滤掉 - } else { - var datasy = { - enrollable: false, - id: this.props.itemiddata.team_members[i].user_id, - name: this.props.itemiddata.team_members[i].name, - school_name: this.props.itemiddata.team_members[i].school_name, - student_id: null, - identity: this.props.itemiddata.team_members[i].identity, - type: this.props.itemiddata.team_members[i].role === "teacher" ? "导师" : "队员", - }; - data.push(datasy); - } - } - if (this.props.itemiddata) { - polls_nametests = this.props.itemiddata.name; - } - } - } catch (e) { - - } - - this.setState({ - myuser: this.props.user, - mydatas: data, - polls_nametest: polls_nametests, - - }) - this.setState({ - GetenrollmentAPI: this.props.GetenrollmentAPI, - }) - try { - this.setState({ - addonAfter: polls_nametests.length, - }) - } catch (e) { - - } - - } - - componentDidUpdate = (prevProps) => { - // if (prevProps.user != this.props.user) { - // ////console.log("Registration.js componentDidUpdate"); - // ////console.log(this.props); - // // ////console.log(prevProps); - // //identity职场称 - // //user_school学校 - // //real_name姓名 - // //type 类型 - // var data = []; - // var datas = { - // enrollable: false, - // id: undefined, - // name: this.props.user.real_name, - // school_name: this.props.user.user_school, - // student_id: null, - // identity: this.props.user.user_identity, - // type: "导师", - // }; - // data.push(datas); - // this.setState({ - // myuser: this.props.user, - // mydatas: data, - // }) - // } - - if (prevProps.GetenrollmentAPI != this.props.GetenrollmentAPI) { - ////console.log("Registration.js GetenrollmentAPIcomponentDidUpdate"); - ////console.log(this.props); - this.setState({ - GetenrollmentAPI: this.props.GetenrollmentAPI, - }) - } - }; - //创建战队 - Createateam = () => { - try { - if (this.state.polls_nametest.length === 0) { - this.props.showNotification(`请输入您的战队名称,最多不超过60个字符`); - return - } - } catch (e) { - - } - - - - const { polls_nametest, mydatas, GetenrollmentAPI } = this.state; - var myteaherdata = []; - var myshtudentdata = []; - var i = 0; - var s = 0; - for (var a = 0; a < mydatas.length; a++) { - if (mydatas[a].type === "导师") { - i++; - // var objectt = { - // enrollable: mydatas[a].enrollable, - // id: mydatas[a].id, - // identity: mydatas[a].identity, - // name: mydatas[a].name, - // school_name: mydatas[a].school_name, - // } - myteaherdata.push(mydatas[a].id); - } else if (mydatas[a].type === "队员") { - s++; - // var objectts = { - // enrollable: mydatas[a].enrollable, - // id: mydatas[a].id, - // name: mydatas[a].name, - // school_name: mydatas[a].school_name, - // student_id: mydatas[a].student_id, - // } - myshtudentdata.push(mydatas[a].id); - } - } - - // try { - // if (i === 0) { - // this.props.showNotification(`请添加导师`); - // return; - // } - // } catch (e) { - // - // } - // - // try { - // if (s === 0) { - // this.props.showNotification(`请添加队员`); - // return; - // } - // } catch (e) { - // - // } - - - //确认的时候 去确认老师人数是否符合 - try { - if (GetenrollmentAPI) { - if (GetenrollmentAPI.teacher_staff) { - if (GetenrollmentAPI.teacher_staff.minimum > i) { - this.setState({ - Thecurrentnumberbool: true, - Thecurrentnumber: i, - booltech: false, - boolstud: false - }) - return - } else if (GetenrollmentAPI.teacher_staff.maximum < i) { - this.setState({ - Thecurrentnumberbool: true, - Thecurrentnumber: i, - booltech: false, - boolstud: false - }) - return - } - this.setState({ - Thecurrentnumberbool: false, - Thecurrentnumber: i, - booltech: false, - boolstud: false - }) - } - } - } catch (e) { - - } - - //确认的时候 去确认学生人数是否符合 - try { - if (GetenrollmentAPI) { - if (GetenrollmentAPI.member_staff) { - if (GetenrollmentAPI.member_staff.minimum > s) { - this.setState({ - Thecurrentnumberboolstu: true, - Thecurrentnumberstu: s, - booltech: false, - boolstud: false - }) - return - } else if (GetenrollmentAPI.member_staff.maximum < s) { - this.setState({ - Thecurrentnumberboolstu: true, - Thecurrentnumberstu: s, - booltech: false, - boolstud: false - }) - return - } - this.setState({ - Thecurrentnumberboolstu: false, - Thecurrentnumberstu: s, - booltech: false, - boolstud: false - }) - } - } - } catch (e) { - - } - - - // Thecurrentnumber - if (this.props.Newtit === true) { - //创建新的战队 - let url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; - axios.post(url, { - name: polls_nametest, - teacher_ids: myteaherdata, - member_ids: myshtudentdata, - }).then((result) => { - // ////console.log("获取到创建战队的数据"); - // ////console.log(result); - if (result) { - if (result.data) { - try { - if (result.data.status === 0) { - this.props.showNotification(`报名成功,预祝您夺得桂冠`); - } - } catch (e) { - - } - this.props.Tmoconfirm1(true); - } - } - }).catch((error) => { - // ////console.log(error) - }); - } else { - //编辑战队 - let url = `/competitions/${this.props.match.params.identifier}/competition_teams/${this.props.itemiddata.id}.json`; - axios.put(url, { - name: polls_nametest, - teacher_ids: myteaherdata, - member_ids: myshtudentdata, - }).then((result) => { - // ////console.log("获取到编辑战队的数据"); - // ////console.log(result); - if (result) { - if (result.data) { - this.props.Tmoconfirm1(true); - } - } - }).catch((error) => { - // ////console.log(error) - }); - } - } - Getteacherdata = (keywordteachers, team_idteachers, teacher_ids) => { - this.setState({ - person1: true, - person2: false, - }) - //老师姓名 keyword - //当前战队ID team_id - //当前老师ID数组 teacher_ids - // ////console.log("搜索的老师"); - const datas = { - keyword: keywordteachers, - team_id: null, - teacher_ids: null, - }; - let url = `/competitions/${this.props.match.params.identifier}/teachers.json`; - axios.get((url), { params: datas }).then((result) => { - if (result) { - if (result.data) { - // ////console.log(result); - this.setState({ - teacher_ids: result.data.teachers - }) - } - } - }).catch((error) => { - // ////console.log(error); - }) - }; - Getstudentsdata = (keywordstudents, team_idstudents, student_ids) => { - this.setState({ - person1: false, - person2: true, - }) - //学生姓名 keyword - //当前战队ID team_id - //当前队员ID数组 student_ids - // ////console.log("搜索的学生"); - const datas = { - keyword: keywordstudents, - team_id: null, - student_ids: null, - }; - let url = `/competitions/${this.props.match.params.identifier}/students.json`; - axios.get((url), { params: datas }).then((result) => { - if (result) { - if (result.data) { - // ////console.log(result); - this.setState({ - member_ids: result.data.teachers - }) - - } - } - }).catch((error) => { - // ////console.log(error); - }) - }; - - //老师输入框事件 - teacheronChange = (e) => { - // ////console.log(e.target.value); - // ////console.log("老师输入框事件|||||||||||123123123"); - this.setState({ - keywordteachers: e.target.value, - booltech: false, - Thecurrentnumberbool: false, - Thecurrentnumberboolstu: false, - }) - // try { - // if (e.target.value.length > 0) { - // this.setState({ - // person1: true, - // person2: false, - // keywordteachers: e.target.value - // }) - // } else { - // this.setState({ - // person1: false, - // person2: false, - // keywordteachers: e.target.value - // }) - // } - // } catch (e) { - // this.setState({ - // person1: true, - // person2: false, - // keywordteachers: e.target.value - // }) - // } - - // try { - // const {team_idteachers, teacher_ids} = this.state; - // this.Getteacherdata(e.target.value, team_idteachers, teacher_ids); - // } catch (e) { - // - // } - }; - - //学生输入框事件 - studentsonChange = (e) => { - // ////console.log("学生输入框事件"); - // ////console.log(e); - this.setState({ - keywordstudents: e.target.value, - boolstud: false, - Thecurrentnumberbool: false, - Thecurrentnumberboolstu: false, - }); - - // try { - // if (e.target.value.length > 0) { - // this.setState({ - // person2: true, - // person1: false, - // keywordstudents: e.target.value - // }); - // } else { - // this.setState({ - // person2: false, - // person1: false, - // keywordstudents: e.target.value - // }); - // } - // } catch (e) { - // this.setState({ - // person2: true, - // person1: false, - // keywordstudents: e.target.value - // }); - // } - - // try { - // const {team_idstudents, student_ids} = this.state; - // this.Getstudentsdata(e.target.value, team_idstudents, student_ids); - // } catch (e) { - // - // } - } - - //点击获取老师数据 - getdatacpersondiv1Items = (object) => { - try { - if (this.props.teamutiple_limited === true) { - if (object.enrollable === false) { - myabool = false; - return - } - } - - } catch (e) { - myabool = true; - } - myabool = true; - var datas = { - enrollable: object.enrollable, - id: object.id, - name: object.name, - school_name: object.school_name, - student_id: null, - identity: object.identity, - type: "导师", - }; - var fordabool = false; - var forda = this.state.mydatas; - // ////console.log("点击获取老师数据"); - // ////console.log(object); - // ////console.log(forda); - for (var i = 0; i < forda.length; i++) { - if (forda[i].id) { - if (forda[i].id === object.id) { - fordabool = true; - break - } - } - } - if (fordabool) { - this.setState({ - person1: false, - keywordteachers: object.name, - booltech: true, - }) - } else { - forda.push(datas); - this.setState({ - person1: false, - keywordteachers: object.name, - mydatas: forda, - booltech: false, - }) - } - - } - //点击获取学生数据2 - getdatacpersondiv1Items2 = (object) => { - // - try { - if (this.props.GetenrollmentAPI.member_staff.mutiple_limited === true) { - if (object.enrollable === false) { - myabool2 = false; - return - } - } - - } catch (e) { - myabool2 = true; - } - - myabool2 = true; - var datas = { - enrollable: object.enrollable, - id: object.id, - name: object.name, - school_name: object.school_name, - student_id: object.student_id, - identity: "学生", - type: "队员", - }; - var fordabool = false; - var forda = this.state.mydatas; - // ////console.log("点击获取学生数据2"); - // ////console.log(object); - // ////console.log(forda); - for (var i = 0; i < forda.length; i++) { - if (forda[i].id) { - // // ////console.log(true); - // // ////console.log(forda[i].id); - // // ////console.log(object.id); - if (forda[i].id === object.id) { - fordabool = true; - break - } - } - } - if (fordabool) { - this.setState({ - person2: false, - keywordstudents: object.name, - boolstud: true - }) - } else { - forda.push(datas); - this.setState({ - person2: false, - keywordstudents: object.name, - mydatas: forda, - boolstud: false - }) - } - - - - } - //输入框事件 - changeTopicName = (e) => { - // // ////console.log("调用了changeTopicName"); - let num = parseInt(e.target.value.length); - if (num > 60) { - return; - } - this.setState({ - addonAfter: num < 0 ? 0 : num - }); - this.setState({ - polls_nametest: e.target.value - }) - }; - - //onSearchsou - onSearch = (value) => { - // ////console.log("搜索的数据" + value); - }; - handleInfiniteOnLoad = () => { - // this.setState({ - // loading: true, - // }) - // const test3 = this.state.test; - // this.state.test2.forEach(function (item) { - // test3.push(item) - // }); - // setTimeout(() => { - // this.setState({ - // test: test3, - // hasMore: true, - // loading: false, - // }); - // }, 1000) - - } - handleInfiniteOnLoad1 = () => { - // // ////console.log("调用了方法1111"); - // this.setState({ - // loading1: true, - // }) - // setTimeout(() => { - // // ////console.log("调用了方法11112"); - // this.setState({ - // loading1: false, - // hasMore: true, - // }); - // }, 1000) - - } - handleInfiniteOnLoad2 = () => { - // // ////console.log("调用了方法1111"); - // this.setState({ - // loading2: true, - // - // }) - // setTimeout(() => { - // // ////console.log("调用了方法11113"); - // this.setState({ - // hasMore: true, - // loading2: false, - // }); - // }, 1000) - - } - inputOnBlur = (e) => { - console.log("inputOnBlur"); - console.log(e); - if (myabool === true) { - this.setState({ - person1: false, - person2: false - }) - } - - } - inputOnBlur2 = (e) => { - // ////console.log("inputOnBlur"); - // ////console.log(e); - if (myabool2 === true) { - this.setState({ - person1: false, - person2: false - }) - } - - } - - startSearch = (e) => { - // ////console.log("startSearch"); - // ////console.log(e); - this.setState({ - person1: true, - person2: false, - }) - const { keywordteachers, team_idteachers, teacher_ids } = this.state; - this.Getteacherdata(keywordteachers, team_idteachers, teacher_ids); - } - - startSearch2 = (e) => { - // ////console.log("startSearch2"); - // ////console.log(e); - this.setState({ - person1: false, - person2: true, - }) - const { keywordstudents, team_idstudents, student_ids } = this.state; - this.Getstudentsdata(keywordstudents, team_idstudents, student_ids); - } - - inputOnFocus = (e) => { - // ////console.log("inputOnFocus"); - // ////console.log(e); - try { - if (this.state.keywordteachers && this.state.keywordteachers.length > 0) { - this.setState({ - person1: true, - person2: false, - }) - } else { - this.setState({ - person1: false, - person2: false, - }) - } - - } catch (e) { - this.setState({ - person1: true, - person2: false, - }) - } - - } - - inputOnFocus2 = (e) => { - // ////console.log("inputOnFocus2"); - // ////console.log(e); - try { - if (this.state.keywordstudents && this.state.keywordstudents.length > 0) { - this.setState({ - person2: true, - person1: false, - }) - } else { - this.setState({ - person2: false, - person1: false, - }) - } - - } catch (e) { - this.setState({ - person2: true, - person1: false, - }) - } - - - } - - inputOnFocus3 = (e) => { - // ////console.log("inputOnFocus3"); - // ////console.log(e); - this.setState({ - person2: false, - person1: false, - }) - } - deletedata = (item) => { - var { mydatas, GetenrollmentAPI } = this.state; - if (item) { - var pos = mydatas.indexOf(item); - // ////console.log("deletedata"); - // ////console.log(pos); - var removedItem = mydatas.splice(pos, 1); - // ////console.log("deletedata22222"); - // ////console.log(removedItem) - //removedItem 是被删除的元素 - // ////console.log(mydatas) - this.setState({ - mydatas: mydatas, - }) - } - var myteaherdata = []; - var myshtudentdata = []; - var i = 0; - var s = 0; - try { - for (var a = 0; a < mydatas.length; a++) { - if (mydatas[a].type === "导师") { - i = i + 1; - // var objectt = { - // enrollable: mydatas[a].enrollable, - // id: mydatas[a].id, - // identity: mydatas[a].identity, - // name: mydatas[a].name, - // school_name: mydatas[a].school_name, - // } - myteaherdata.push(mydatas[a].id); - } else if (mydatas[a].type === "队员") { - s = s + 1; - // var objectts = { - // enrollable: mydatas[a].enrollable, - // id: mydatas[a].id, - // name: mydatas[a].name, - // school_name: mydatas[a].school_name, - // student_id: mydatas[a].student_id, - // } - myshtudentdata.push(mydatas[a].id); - } - } - } catch (e) { - - } - // console.log("deletedata"); - // console.log(i); - //删除老师的时候判断是否符合人数 - try { - if (GetenrollmentAPI) { - if (GetenrollmentAPI.teacher_staff) { - if (GetenrollmentAPI.teacher_staff.minimum > i) { - this.setState({ - Thecurrentnumberbool: true, - Thecurrentnumber: i, - booltech: false, - boolstud: false - }) - return - } else if (GetenrollmentAPI.teacher_staff.maximum < i) { - this.setState({ - Thecurrentnumberbool: true, - Thecurrentnumber: i, - booltech: false, - boolstud: false - }) - return - } - this.setState({ - Thecurrentnumberbool: false, - Thecurrentnumber: i, - }) - - } - } - } catch (e) { - - } - - - //删除学生的时候判断是否符合人数 - try { - if (GetenrollmentAPI) { - if (GetenrollmentAPI.member_staff) { - if (GetenrollmentAPI.member_staff.minimum > s) { - this.setState({ - Thecurrentnumberboolstu: true, - Thecurrentnumberstu: s, - booltech: false, - boolstud: false - }) - return - } else if (GetenrollmentAPI.member_staff.maximum < s) { - this.setState({ - Thecurrentnumberboolstu: true, - Thecurrentnumberstu: s, - booltech: false, - boolstud: false - }) - return - } - this.setState({ - Thecurrentnumberboolstu: false, - Thecurrentnumberstu: s, - }) - - } - } - } catch (e) { - - } - - } - - render() { - // console.log('Registration.js'); - // console.log(this.props.mutiple_limited); - - - const { - addonAfter, Numberofteammentors, Thecurrentnumber, person1, person2, - keywordteachers, team_idteachers, teacher_ids, - keywordstudents, team_idstudents, student_ids, - member_ids, mydatas, booltech, boolstud, GetenrollmentAPI, Thecurrentnumberbool, - Thecurrentnumberboolstu, Thecurrentnumberstu - } = this.state; - const { - teacher_staff, - member_staff - } = this.props; - //Modal - //keyboard是否支持键盘 esc 关闭 - //closable 是否显示右上角的关闭按钮 - //底部内容,当不需要默认底部按钮时,可以设为 footer={null} - //destroyOnClose 关闭时销毁 Modal 里的子元素 - //centered 垂直居中展示 Modal - //visible 弹出框是否显示 - const listItems = mydatas.map((item, index) => - - ); - var cpersondiv1Items = []; - // console.log("this.props.teamutiple_limited "); - // console.log(this.props.teamutiple_limited ); - if (teacher_ids) { - cpersondiv1Items = teacher_ids.map((item, index) => -
-
  • this.getdatacpersondiv1Items(item)} - - > - - {item.name === undefined || item.name === null || item.name === "" ? - -- - : - {item.name} - } - {item.identity === undefined || item.identity === null || item.identity === "" ? -

    --

    - : - {item.identity}} - {item.school_name === undefined || item.school_name === null || item.school_name === "" ? - -

    --

    - : - {item.school_name} - } - - { - this.props.teamutiple_limited === undefined || this.props.teamutiple_limited === null ? -

    {""}

    - : - ( - this.props.teamutiple_limited === true ? -

    {item.enrollable === false ? "已加入其他战队" : ""}

    - : -

    {""}

    - ) - - } - - -
  • -
    - ); - } - - const cpersondiv1 = ( -
    - -
    - { - cpersondiv1Items.length === 0 ? - - : - this.handleInfiniteOnLoad1()} - // hasMore={!this.state.loading1 && this.state.hasMore} - hasMore={false} - useWindow={false} - > - { - cpersondiv1Items - } - - - } - -
    -
    -
    - ) - var persondiv2Items = []; - if (member_ids) { - persondiv2Items = member_ids.map((item, index) => -
    - - -
  • this.getdatacpersondiv1Items2(item)} - > - - {item.name === undefined || item.name === null || item.name === "" ? - -- - : - {item.name} - } - {item.student_id === undefined || item.student_id === null || item.student_id === "" ? -

    --

    - : - {"学号:" + item.student_id}} - {item.school_name === undefined || item.school_name === null || item.school_name === "" ? - -

    --

    - : - {item.school_name} - } - - { - this.props.mutiple_limited === undefined || this.props.mutiple_limited === null ? -

    {""}

    - : - ( - this.props.mutiple_limited === true ? -

    {item.enrollable === false ? "已加入其他战队" : ""}

    - : -

    {""}

    - ) - - } - - -
  • -
    - ); - } - const persondiv2 = ( -
    - {/*this.state.loading2*/} - -
    - { - persondiv2Items.length === 0 ? - - : - this.handleInfiniteOnLoad2()} - // hasMore={!this.state.loading2 && this.state.hasMore} - hasMore={false} - useWindow={false} - > - { - persondiv2Items - } - - - } -
    -
    -
    - ); - //console.log("PersonModal"); - //console.log(this.props); - return ( - - - - {/**/} -
    - {/*队名*/} - -
    -

    - * - 队名: -

    - - - -
    - - - {/*导师*/} - { - teacher_staff === undefined || teacher_staff === null ? -
    : - -
    -
    -

    - * - 导师: -

    - - {/*
    */} - - trigger.parentNode} - visible={this.state.person1}> - this.teacheronChange(e)} - value={this.state.keywordteachers} - suffix={ - this.Getteacherdata(keywordteachers, team_idteachers, teacher_ids)} /> - } - /> - - {/*
    */} -
    - { - booltech === true ? -

    该老师已添加

    - : -
    - } -
    - - - } - - - {/*队员*/} - { - member_staff === undefined || member_staff === null ? -
    : -
    -
    -

    - * - 队员: -

    - - - trigger.parentNode} - visible={this.state.person2}> - this.studentsonChange(e)} - value={this.state.keywordstudents} - suffix={ - this.Getstudentsdata(keywordstudents, team_idstudents, student_ids)} /> - } - /> - - -
    - - { - boolstud === true ? -

    该队员已添加

    - : -
    - } -
    - } - - {/*表格*/} -
    - {/**/} -
    -
    -

    姓名

    -

    角色

    -

    单位

    -

    其他

    -

    操作

    -
    -
    - -
    - this.handleInfiniteOnLoad()} - // hasMore={!this.state.loading && this.state.hasMore} - hasMore={false} - useWindow={false} - > - {listItems} - - -
    -
    -
    - - {/*最后一行文字*/} - { - GetenrollmentAPI && GetenrollmentAPI.teacher_staff ? - ( - Thecurrentnumberbool === true ? -

    导师需为{GetenrollmentAPI.teacher_staff.minimum}-{GetenrollmentAPI.teacher_staff.maximum}人,现为{Thecurrentnumber}人

    - - : "" - ) : - "" - } - { - GetenrollmentAPI && GetenrollmentAPI.member_staff ? - ( - Thecurrentnumberboolstu === true ? -

    战队成员需为{GetenrollmentAPI.member_staff.minimum}-{GetenrollmentAPI.member_staff.maximum}人,现为{Thecurrentnumberstu}人

    - - : "" - ) : - "" - } - -
    -
    -
    -

    this.props.Tmoconfirm1(false)}> 取消

    -
    -
    -

    this.Createateam()}>确定

    -
    -
    -
    -
    -
    - ) - } -} - -export default PersonModal; diff --git a/src/modules/competition/competmodal/PersonModaltion.js b/src/modules/competition/competmodal/PersonModaltion.js deleted file mode 100644 index 68056629..00000000 --- a/src/modules/competition/competmodal/PersonModaltion.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, {Component} from 'react'; -import { - BrowserRouter as Router, - Route, - Switch -} from 'react-router-dom'; -import axios from 'axios'; -import moment from 'moment'; -import competition from './comcss/competition.css'; -import {Checkbox, Table, Pagination, Menu, Icon} from "antd"; -// 团队竞赛报名无报名子组件团队 在线竞赛 > 全国高校计算机大赛-项目挑战> - -class PersonModaltion extends React.Component { - constructor(props) { - super(props) - - } - - - render() { - return ( -
    -
    -

    姓名

    -

    角色

    -

    单位

    -

    其他

    -

    操作

    -
    -
    - ) - } - -} - -export default PersonModaltion; diff --git a/src/modules/competition/competmodal/PersonalModalteam.js b/src/modules/competition/competmodal/PersonalModalteam.js deleted file mode 100644 index 7d78180c..00000000 --- a/src/modules/competition/competmodal/PersonalModalteam.js +++ /dev/null @@ -1,146 +0,0 @@ -import React, {Component} from 'react'; -import {getImageUrl} from 'educoder'; -import {Modal, Input, Spin, Tooltip, Icon, Dropdown, Button} from 'antd'; -import axios from 'axios'; -import competition from '../comcss/competition.css'; -import Registrationitem from "../Registrationitem"; -import InfiniteScroll from 'react-infinite-scroller'; -// import PersonModaltion from "./PersonModaltion"; -const {Search} = Input; - -//立即申请试用 -class PersonalModalteam extends Component { - - constructor(props) { - super(props); - this.state = { - yslzxueshiskmcdm1: "", - } - } - - - Tmoconfirmto = () => { - try { - if (this.state.yslzxueshiskmcdm1) { - if (this.state.yslzxueshiskmcdm1.length === 0) { - this.props.showNotification(`请输入您的邀请码`); - return - } - - } - } catch (e) { - - } - - - let url = `/competitions/${this.props.match.params.identifier}/competition_teams/join.json`; - axios.post(url, { - invite_code: this.state.yslzxueshiskmcdm1 - }).then((result) => { - if (result) { - if (result.data) { - try { - if (result.data.status === 0) { - this.props.showNotification(`报名成功,预祝您夺得桂冠`); - } - } catch (e) { - - } - - - this.props.Tmoconfirm(true) - } - } - }).catch((error) => { - - }); - } - - studentsonChange = (e) => { - this.setState({ - yslzxueshiskmcdm1: e.target.value, - }); - - } - render() { - const { - addonAfter, test, test3, Numberofteammentors, Thecurrentnumber, person1, person2 - } = this.state; - //Modal - //keyboard是否支持键盘 esc 关闭 - //closable 是否显示右上角的关闭按钮 - //底部内容,当不需要默认底部按钮时,可以设为 footer={null} - //destroyOnClose 关闭时销毁 Modal 里的子元素 - //centered 垂直居中展示 Modal - //visible 弹出框是否显示 - - return ( - - - -
    -
    -

    - 邀请码: -

    - - this.studentsonChange(e)} placeholder="请输入您的邀请码"/> - -
    - -
    -
    -
    -

    this.props.Tmoconfirm(false)}>取消

    -
    -
    -

    this.Tmoconfirmto()}>确定

    -
    -
    -
    -
    -
    - ) - } -} - -export default PersonalModalteam; diff --git a/src/modules/competition/personal/PersonalCompetit.js b/src/modules/competition/personal/PersonalCompetit.js deleted file mode 100644 index d740e416..00000000 --- a/src/modules/competition/personal/PersonalCompetit.js +++ /dev/null @@ -1,97 +0,0 @@ -import React, {Component} from 'react'; -import {SnackbarHOC, WordsBtn} from 'educoder'; -import {TPMIndexHOC} from '../../tpm/TPMIndexHOC'; -import competition from '../comcss/competition.css'; -import {Button, Pagination,} from 'antd'; -import CompetitionMaxImg from '../CompetitionMaxImg'; -import Registrationitem from '../Registrationitem'; - -// 团队竞赛报名无报名 -class PersonalCompetit extends React.Component { - constructor(props) { - super(props) - this.state = { - loadingstate: false, - page: 1, - limit: 20, - type: 6, - pint: 1, - test: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], - } - } - - - paginationonChangestwo = (pageNumber) => { - this.setState({ - page: pageNumber, - loadingstate: true, - }) - } - - render() { - const {test, page, limit, type, pint} = this.state; - const listItems = test.map((item, index) => - - ); - return ( -
    -
    - - {/*大图*/} - { - type === 6 ? - - : - "" - } - { - pint === 1 || pint === 3 ? -
    -

    参赛总人数:132

    -
    - : ""} - - {/*列表*/} - { - pint === 1 || pint === 3 ? -
    - { - listItems - } - -
    - : ""} - { - pint === 1 || pint === 3 ? -
    - -
    - : "" - } - -
    - -
    - ) - } - -} - -export default SnackbarHOC()(TPMIndexHOC(PersonalCompetit)); diff --git a/src/modules/competition/personal/PersonalCompetititem.js b/src/modules/competition/personal/PersonalCompetititem.js deleted file mode 100644 index b052ea6b..00000000 --- a/src/modules/competition/personal/PersonalCompetititem.js +++ /dev/null @@ -1,402 +0,0 @@ -import React from 'react'; -import { getImageUrl } from 'educoder'; -import { message, Tooltip } from 'antd'; -// 点击按钮复制功能 -function jsCopy(s) { - var e = document.getElementById(s); - e.select(); - document.execCommand("Copy"); - codesuccess() -} - -function codesuccess() { - message.success('复制成功'); -}; -// 团队竞赛报名无报名子组件团队 竞赛报名-已创建战队 -class PersonalCompetititem extends React.Component { - constructor(props) { - super(props) - - - } - - render() { - const { key, item, type, mode } = this.props; - return ( -
    - { - item !== undefined || item !== null ?
    -
    - - - {this.props.type === 5 || this.props.type === 2 ? - (this.props.mode === 3 ? -
    - { - item && item.team_members.map((item, index) => { - return ( - - index === 0 ? - - - - : index === 1 ? - - - - : index === 2 ? - - - - : index === 3 ? -
    - - - - - - - -
    - : "" - ) - }) - } - -
    - - : -
    - { - item && item.team_members.map((item, index) => { - return ( - - index === 0 ? - - - - : index === 1 ? - - - - : index === 2 ? - - - - : index === 3 ? - - - - : index === 4 ? - - - - : index === 5 ? -
    - - - - - - - -
    - : "" - ) - }) - } - -
    - ) - : -
    - { - item && item.team_members.map((item, index) => { - return ( - - index === 0 ? - - - - : index === 1 ? - - - - : index === 2 ? - - - - : index === 3 ? - - - - : index === 4 ? - - - - : index === 5 ? -
    - - - - - - - -
    - : "" - ) - }) - } - -
    - } -
    -
    - 邀请码: - {item.invite_code === null || item.invite_code === undefined ? "" : item.invite_code} -
    -
    - -
    -
    - {item.invite_code === null || item.invite_code === undefined ? - - - : - - { - jsCopy("copy_invite_code" + this.props.index) - }} - > - - - } - - { - this.props.type === 5 ? - (this.props.mode === 3 ? -
    - -
    this.props.Exittheteamshow(item.id, true)}> -

    this.props.Exittheteamshow(item.id, true)}>删除战队

    -
    -
    this.props.Createateamedit(item)}> -

    this.props.Createateamedit(item)}>编辑战队

    -
    -
    this.props.Exittheteamshow(item.id, false)}> -

    this.props.Exittheteamshow(item.id, false)}>退出战队

    -
    - -
    - : -
    - -
    this.props.Exittheteamshow(item.id, true)}> -

    this.props.Exittheteamshow(item.id, true)}>删除战队

    -
    -
    this.props.Createateamedit(item)}> -

    this.props.Createateamedit(item)}>编辑战队

    -
    -
    this.props.Exittheteamshow(item.id, false)}> -

    this.props.Exittheteamshow(item.id, false)}>退出战队

    -
    - -
    - - ) - : this.props.type === 2 ? - (this.props.mode === 3 ? -
    - -
    this.props.Exittheteamshow(item.id, true)}> -

    this.props.Exittheteamshow(item.id, true)}>删除战队

    -
    -
    this.props.Createateamedit(item)}> -

    this.props.Createateamedit(item)}>编辑战队

    -
    -
    this.props.Exittheteamshow(item.id, false)}> -

    this.props.Exittheteamshow(item.id, false)}>退出战队

    -
    -
    - : -
    -
    this.props.Exittheteamshow(item.id, true)}> -

    this.props.Exittheteamshow(item.id, true)}>删除战队

    -
    -
    this.props.Createateamedit(item)}> -

    this.props.Createateamedit(item)}>编辑战队

    -
    -
    this.props.Exittheteamshow(item.id, false)}> -

    this.props.Exittheteamshow(item.id, false)}>退出战队

    -
    -
    - ) - : - this.props.type === 3 ? -
    - -
    this.props.Exittheteamshow(item.id, false)}> -

    this.props.Exittheteamshow(item.id, false)}>退出战队

    -
    - -
    - : - "" - - } -
    -
    - : "" - } -
    - - - ) - } - -} - -export default PersonalCompetititem; diff --git a/src/modules/competitions/Competitimain/CompetitionsIndex.js b/src/modules/competitions/Competitimain/CompetitionsIndex.js deleted file mode 100644 index 5a341726..00000000 --- a/src/modules/competitions/Competitimain/CompetitionsIndex.js +++ /dev/null @@ -1,225 +0,0 @@ -import React, { Component } from 'react'; -import { Link } from 'react-router-dom'; -import { Menu, Icon, List, Avatar,Row, Col,Tag,Pagination,Alert} from 'antd'; -import {getImageUrl} from 'educoder'; -import axios from 'axios'; -import './Competitionsindex.css'; -import NoneData from "../../courses/coursesPublic/NoneData"; -import LoadingSpin from '../../../common/LoadingSpin'; - -class CompetitionsIndex extends Component{ - constructor(props) { - super(props) - this.state={ - current: 'all', - datas:undefined, - page:1, - category:undefined - - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - let{category,page}=this.state; - this.getdata(category,page) - } - - getdata=(category,page)=>{ - const Url =`/competitions.json`; - axios.get(Url,{params:{ - category:category, - page:page, - per_page:15, - } - }).then((response) => { - if(response.status===200){ - this.setState({ - datas:response.data.competitions, - count:response.data.count, - }) - } - }) - .catch(function (error) { - console.log(error); - }); - } - - - handleClick = e => { - this.setState({ - current: e.key, - datas:undefined - }); - let{category,page}=this.state; - this.getdata(e.key,page) - }; - - PaginationCourse=(pageNumber)=>{ - let {category}=this.state; - this.setState({ - page: pageNumber, - }) - this.getdata(category,pageNumber); - } - - render() { - let {datas,page,count}=this.state; - - - return ( -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    - - - 全部 - - - 即将发布 - - - 进行中 - - - 往期比赛 - - -
    -
    - -
    - - {datas===undefined?"":datas.length===0?"": ( - - -
    - {item.competition_status==="nearly_published"? - item.permission.editable==true?"":
    即将发布 敬请期待
    :""} - {/*
    即将发布 敬请期待
    */} - {/*{item.description===null||item.description===undefined||item.description===""?:""}*/} - - 竞赛时间: {item.start_time}~{item.end_time}, - 报名截止时间:{item.enroll_end_time}, - ]} - extra={ -
    - - - -
    奖金
    - - -
    浏览数
    - - -
    报名数
    - -
    - - - -
    ¥{item.bonus}
    - - -
    {item.competition_status==="nearly_published"?"--":item.visits_count}
    - - -
    {item.competition_status==="nearly_published"?"--":item.member_count}
    - -
    -
    - } - > - -
    {item.name}{item.sub_title===null?"":`——${item.sub_title}`} - {/*{item.sub_title===null?"":*/} - {/*{item.sub_title}}*/} - {/**/} - } - /> - {item.description} - -
    - - - ) - - } - />} - - {datas===undefined?"":count===undefined?"":count >15 ?
    - - - -
    :""} - - { - datas===undefined?:datas && datas.length===0? :"" - } -
    - -
    - -
    -
    -
    - ) - } -} -export default CompetitionsIndex; diff --git a/src/modules/competitions/Competitimain/Competitionsindex.css b/src/modules/competitions/Competitimain/Competitionsindex.css deleted file mode 100644 index cddb1492..00000000 --- a/src/modules/competitions/Competitimain/Competitionsindex.css +++ /dev/null @@ -1,163 +0,0 @@ -.teamsLayout{background: transparent !important;} - -.competitionstitle{ - height:50px !important; - border-radius: 6px; - background: #fff; - display: flex; - justify-content: center; -} - -.competitionstitle2{ - height:50px !important; - margin-left: 30px !important; - background: #fff; - width: 1200px; -} -.CompetitionsList{ - position: relative; - /*max-height: 210px;*/ -} -.competitonimg{ - position: absolute; - right: -5px; - width: 80px; - top: 20px; -} - -.ant-menu-horizontal { - border-bottom:none !important; -} - - -.competitionsvalue{ - font-size: 16px; - font-family: PingFangSC-Medium,PingFangSC; - font-weight: 500; -} - -.competitionmr50 { - margin-right: 50px !important; -} - -.CompetitionsIndex .ant-list-item{ - background: #fff !important; - margin-top: 20px; - border: none !important; -} - -.CompetitionsIndex .ant-list-item{ - padding:25px; -} - -.CompetitionsIndex .ant-list-item-meta-title{ - height:28px; - font-size:28px; - font-family:PingFangSC-Regular,PingFangSC; - font-weight:400; - color:rgba(5,16,26,1); - line-height:28px; -} - -.CompetitionsIndex .ant-list-vertical .ant-list-item-meta{ - margin-bottom: 20px !important; -} - -.CompetitionsIndex .ant-list-vertical .ant-list-item-action { - margin-top: 20px; - margin-left: auto; -} - -.CompetitionsIndex .ant-list-item-action-split{ - display: none !important; -} - -.CompetitionsIndexdadels{ - font-family: PingFangSC-Regular,PingFangSC; - font-weight: 400; - color: #777777; - margin-bottom: 14px; - text-align: center; -} - -.CompetitionsIndexbottomvalue{ - font-size: 24px; - font-family: ArialMT; - color: rgba(5,16,26,1); - text-align: center; -} - -.CompetitionsIndex .gutter-row{ - /*margin-right:20px;*/ - width: 33%; -} - -.pt50{ - padding-top: 50px; -} - -.competitionstitles{ - max-width: 789px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: inline-block; - margin-right: 15px; - color:#000 !important; -} - -.competitionsrelative{ - position: absolute; - top: 28px; -} - -.CompetitionsList:hover{ - /*box-shadow: 0 2px 6px rgba(51,51,51,.09);*/ - box-shadow:3px 4px 10px 2px rgba(229,229,229,0.5); - opacity: 1; - border-radius: 2px; -} -.endedfont{ - color:#000 !important; -} -.CompetitionsListzhezhao{ - position: absolute; - top: 0px; - left: 0px; - width: 1206px; - height: 100%; - z-index: 10000; - display: none; - background: rgba(0,0,0,0.33); - text-align: center; - color: #fff; - font-size: 22px; - - align-items: center; - justify-content: space-around; - flex-direction: column; -} -.CompetitionsList:hover .CompetitionsListzhezhao{ - display: block; - display: flex; -} -.competitionstitlesshou:hover a{ - cursor: pointer; - color: #1c91e8 !important; -} - -.competitionstitlesshou{ - cursor: pointer; -} - - -.Competitionshead{ - background-color: #2d28ba !important; - background-position: center !important; - background-position: 50% !important; - background-repeat: no-repeat !important; -} - -.span666{ - color:#666666 !important; -} \ No newline at end of file diff --git a/src/modules/competitions/Competition_teams/Competitionteams.css b/src/modules/competitions/Competition_teams/Competitionteams.css deleted file mode 100644 index af1f40ab..00000000 --- a/src/modules/competitions/Competition_teams/Competitionteams.css +++ /dev/null @@ -1,53 +0,0 @@ -.teamsLayout{background: transparent !important;} -.teamsLayout .teamsLayoutitle{ - font-size:18px; - font-family:PingFangSC-Semibold,PingFang SC; - font-weight:600; - color:rgba(5,16,26,1); - line-height:25px; - margin-top: 10px; - margin-bottom: 10px; -} -.teamsLayoutTable .ant-table-bordered .ant-table-thead > tr > th, .ant-table-bordered .ant-table-tbody > tr > td { - border-right: 1px solid transparent !important; -} - -.teamsLayoutTable .ant-table-body .ant-table-thead > tr> th:nth-last-child(1){ - border-right: 1px solid #e8e8e8 !important; -} - -.teamsLayoutTable .ant-table-body .ant-table-tbody > tr> td:nth-last-child(1){ - border-right: 1px solid #e8e8e8 !important; -} - -.teamsLayoutTable .ant-table-bordered .ant-table-thead > tr > th{ - background:#EEEEEE; - font-size: 14px; - font-family: PingFangSC-Regular,PingFang SC; - font-weight: 400; - color: rgba(102,102,102,1); - line-height: 20px; -} - -.teamsLayoutTable .ant-table-bordered .ant-table-tbody > tr > th{ - background:#EEEEEE; - font-size:14px; - font-family:PingFangSC-Regular,PingFang SC; - font-weight:400; - color:rgba(5,16,26,1); - line-height:20px; -} - -.teamsLayout .mt40{ - margin-top: 40px !important; -} - -.teamsLayoutheji{ - color: #878787; - font-size: 16px; -} - -.teamsLayoucolor-orange { - color: #ff6800!important; - font-size: 16px; -} \ No newline at end of file diff --git a/src/modules/competitions/Competition_teams/Competitionteams.js b/src/modules/competitions/Competition_teams/Competitionteams.js deleted file mode 100644 index ef9cf58c..00000000 --- a/src/modules/competitions/Competition_teams/Competitionteams.js +++ /dev/null @@ -1,267 +0,0 @@ -import React, { Component } from 'react'; -import { Breadcrumb,Layout,Table, Divider, Tag,Badge,Tooltip} from 'antd'; -import { Link } from 'react-router-dom'; -import axios from 'axios'; - - -import './Competitionteams.css'; -const { Content } = Layout; - -class Competitionteams extends Component{ - constructor(props) { - super(props) - this.state={ - shixundata: undefined, - coursedata:undefined, - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - if(this.props.match.params.identifier!=null){ - let url=`/competitions/${this.props.match.params.identifier}/common_header.json`; - axios.get(url).then((response) => { - if(response.status===200){ - this.setState({ - data:response.data, - }) - } - }).catch((error) => { - console.log(error) - }) - } - - this.getshixundata(); - this.getcoursedata(); - } - - getshixundata=()=>{ - - const Url =`/competitions/${this.props.match.params.identifier}/competition_teams/${this.props.match.params.competition_team_id}/shixun_detail.json`; - axios.get(Url).then((response) => { - if(response.status===200){ - // let data={ - // shixuns: [ - // { - // creator: "黄井泉", // 创建者 - // shixun_name: "单链表的学习与应用(I)", // 实训名称 - // shixun_identifier: "mnf6b7z3", - // forked: false, // false:原创 - // myshixuns_count: 179, // 学习人数 - // forked_myshixun_count: 0, // 被fork发布的学习人数 - // valid_count: 82, // 有效作品数 - // score: 1320 // 应用值 - // } - // ], - // shixun_count: 1, // 实训总计 - // total_myshixun_count: 179, // 学习人数总计 - // total_forked_myshixun_count: 0, // 被fork发布的学习人数总计 - // total_valid_count: 82, // 有效作品数总计 - // total_shixun_score: 1320 // 应用值总计 - // } - let data=response.data; - - let newarr=data.shixuns; - - let newobj={ - creator:"合计:", - shixun_name:data.shixun_count, - myshixuns_count:data.total_myshixun_count, - forked_myshixun_count:data.total_forked_myshixun_count, - valid_count:data.total_valid_count, - score:data.total_shixun_score - } - newarr.push(newobj) - - this.setState({ - shixundata:newarr - }) - - - } - }) - .catch(function (error) { - console.log(error); - }); - - - - - } - - getcoursedata=()=>{ - const Url =`/competitions/${this.props.match.params.identifier}/competition_teams/${this.props.match.params.competition_team_id}/course_detail.json`; - - axios.get(Url).then((response) => { - if(response.status===200){ - // let data={ - // courses: [ - // { - // creator: "周海芳", // 创建者 - // creator_login: "Nancy", // login - // course_name: "大学计算机基础2018年秋季", - // course_id: 1502, - // students_count: 122, // 学生数量 - // shixun_homework_count: 8, // 发布的实训作业数量 - // valid_count: 977, // 有效作品数 - // score: 29810 // 应用值 - // } - // ], - // total_course_count: 1, // 课堂总计 - // total_students_count: 122, // 学生数总计 - // total_shixun_homework_count: 8, // 实训作业数总计 - // total_valid_count: 977, // 有效作品数总计 - // total_course_score: 29810 // 应用值总计 - // } - - let data=response.data; - - let newarr=data.courses; - - let newobj={ - creator:"合计:", - course_name:data.total_course_count, - students_count:data.total_students_count, - shixun_homework_count:data.total_shixun_homework_count, - valid_count:data.total_valid_count, - score:data.total_course_score - } - newarr.push(newobj) - - this.setState({ - coursedata:newarr - }) - - } - }) - .catch(function (error) { - console.log(error); - }); - - - } - - render() { - let {data}=this.state; - const shixuncolumns = [ - { - title: '创建者', - dataIndex: 'creator', - key: 'creator', - render: (text, record) =>
    {text}
    , - }, - { - title: '名称', - dataIndex: 'shixun_name', - key: 'shixun_name', - render: (text, record) => -
    {text}{record.forked===true?:""}
    , - }, - { - title: '学习人数', - dataIndex: 'myshixuns_count', - key: 'myshixuns_count', - render: (text, record) =>
    {text}
    , - }, - { - title: '被fork发布的学习人数', - dataIndex: 'forked_myshixun_count', - key: 'forked_myshixun_count', - render: (text, record) => - -
    {text}
    -
    , - }, - { - title: '有效作品数', - dataIndex: 'valid_count', - key: 'valid_count', - render: (text, record) => - -
    {text}
    -
    , - }, - { - title: '应用值', - dataIndex: 'score', - key: 'score', - render: (text, record) =>
    {text}
    , - }, - ]; - - const coursecolumns = [ - { - title: '创建者', - dataIndex: 'creator', - key: 'creator', - render: (text, record) =>
    {text}
    , - }, - { - title: '名称', - dataIndex: 'course_name', - key: 'course_name', - render: (text, record) =>
    {text}
    , - }, - { - title: '学生数量', - dataIndex: 'students_count', - key: 'students_count', - render: (text, record) =>
    {text}
    , - }, - { - title: '发布的实训作业数量', - dataIndex: 'shixun_homework_count', - key: 'shixun_homework_count', - render: (text, record) => -
    {text}
    - , - }, - { - title: '有效作品数', - dataIndex: 'valid_count', - key: 'valid_count', - render: (text, record) => - -
    {text}
    -
    , - }, - { - title: '应用值', - dataIndex: 'score', - key: 'score', - render: (text, record) =>
    {text}
    , - }, - ]; - - - // console.log(this.state.shixundata) - return ( - -
    - - {data&&data.name} - 报名 - 战队详情 - - - - - 实训项目 - - - - 教学课堂 - -
    - - - - - - - - - ) - } -} -export default Competitionteams; diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommon.css b/src/modules/competitions/Competitioncommon/CompetitionCommon.css deleted file mode 100644 index 98449820..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommon.css +++ /dev/null @@ -1,438 +0,0 @@ -.teamsLayout{background: transparent !important;} - -.teamsLayout .ant-layout-sider{ - background: transparent !important; - flex: 0 0 180px !important; - max-width: 180px !important; - min-width: 180px !important; - width: 180px !important; -} -.teamsLayout .teamsLayoutitle{ - font-size:18px; - font-family:PingFangSC-Semibold,PingFang SC; - font-weight:600; - color:rgba(5,16,26,1); - line-height:25px; - margin-top: 10px; - margin-bottom: 10px; -} -.teamsLayoutTable .ant-table-bordered .ant-table-thead > tr > th, .ant-table-bordered .ant-table-tbody > tr > td { - border-right: 1px solid transparent !important; -} - -.teamsLayoutTable .ant-table-body .ant-table-thead > tr> th:nth-last-child(1){ - border-right: 1px solid #e8e8e8 !important; -} - -.teamsLayoutTable .ant-table-body .ant-table-tbody > tr> td:nth-last-child(1){ - border-right: 1px solid #e8e8e8 !important; -} - -.teamsLayoutTable .ant-table-bordered .ant-table-thead > tr > th{ - background:#EEEEEE; - font-size: 14px; - font-family: PingFangSC-Regular,PingFang SC; - font-weight: 400; - color: rgba(102,102,102,1); - line-height: 20px; -} - -.teamsLayoutTable .ant-table-bordered .ant-table-tbody > tr > th{ - background:#EEEEEE; - font-size:14px; - font-family:PingFangSC-Regular,PingFang SC; - font-weight:400; - color:rgba(5,16,26,1); - line-height:20px; -} - -.teamsLayout .mt40{ - margin-top: 40px !important; -} - -.teamsLayoutheji{ - color: #878787; - font-size: 16px; -} - -.teamsLayoucolor-orange { - color: #ff6800 !important; - font-size: 16px; -} - -.CompetitionCommonbanner{ - padding: 20px; - background:rgba(255,255,255,1); - box-shadow:3px 2px 12px 2px rgba(0,0,0,0.05); - position: relative; -} - -.CompetitionCommonbannerfont{ - height:100%; - width: 365px !important; - line-height: 34px; -} - -.CompetitionCommonbannerfont .competitionbannerdiv:nth-child(1){ - max-height:100px; - font-size:25px; - font-weight:400; - color:rgba(5,16,26,1); - line-height: 30px; -} - -.CompetitionCommonbannerfont .competitionbannerdiv:nth-child(2){ - max-height: 70px; - font-size:16px; - font-weight:400; - /*color:rgba(155,155,155,1);*/ - color:#05101A; -} - -.CompetitionCommonbannerfont .competitionbannerdiv:nth-child(3){ - max-height: 70px; - font-size: 16px; - font-weight: 400; - /*color: rgba(155,155,155,1);*/ - color:#05101A; -} - - - -.Competitioncolor9b{ - color: #9B9B9B; -} - -.Competitioncolor77{ - color: #777777; - font-size: 14px; -} - -.Competitioncolor516{ - font-size:24px; - color:rgba(5,16,26,1); -} - -.Competitionfontsize22{ - font-size:22px; - font-weight:500; - color:rgba(255,255,255,1); -} - -.Competitionfontsize16{ - font-size: 16px; - font-weight: 400; - color: rgba(102,102,102,1); -} - -.ant-layout-sider { - position: relative; - min-width: 0; - background: #001529; - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} - -.CompetitionMenu .ant-menu-item::after { - left: 0px !important; - right: auto; - border-right: 5px solid #4CACFF; -} - -.CompetitionMenu .ant-menu-item{ - height: 30px; - line-height: 30px; - background:none; - color:#666; -} - -.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { - background-color: transparent; -} - -.CompetitionMenu .ant-menu-item:not(:last-child){ - margin-bottom: 40px; - background: transparent; - color:#666; -} - -.CompetitionMenu .ant-menu-item{ - font-size: 18px; -} - -.CompetitionMenu .ant-menu-item-selected { - color: rgba(76,172,255,1) !important; -} - -.CompetitionMenu{ - width: 145px; - background: #fff; - border: 1px solid rgba(239,239,239,1); - padding-top: 20px; - padding-bottom: 40px !important; -} - -.teamsLayoutleft{ - background: transparent !important; -} - -.Competitioncharts{ - font-size: 24px; - color: rgba(5,16,26,1); -} -.Competitionfirst{ - width:233px; - height:298px; - background:rgba(250,250,250,1); - box-shadow:0px 2px 8px 2px rgba(255,134,34,0.5); - border-radius:5px; -} -.Competitionsecondary{ - width:234px; - height:298px; - background:rgba(250,250,250,1); - box-shadow:0px 3px 5px 0px rgba(254,190,154,1); - border-radius:5px; -} - -.Competitionthird{ - width: 234px; - height: 298px; - background: rgba(250,250,250,1); - box-shadow: 0px 4px 5px 0px rgba(200,200,202,1); - border-radius: 5px; -} - -.Competition399{ - height:399px; -} - -.Competitiontransparent table{ - background: transparent; -} - -.Commonimg{ - position: absolute; - right: -5px; - width:93px; - top: 10px; -} - -.Competitionthirdbox{ - width:234px; - height:167px; - background:rgba(223,223,225,1); - position: relative; -} - -.Competitionfirstbox{ - width:233px; - height:167px; - background:rgba(255,231,160,1); - position: relative; -} - -.Competitionsecondarybox{ - width:234px; - height:167px; - background:rgba(253,230,217,1); - position: relative; -} - -.rankingimg{ - width: 60px; - height: 60px; - border-radius: 50% !important; - box-shadow: 0px 0px 12px rgba(0,0,0,0.2); - border: 2px solid #459BE5; -} - -.Competitioncenter{ - text-align: center; - padding-top: 20px; -} - - -.jinshaifont{ - font-size: 16px; - color: rgba(5,16,26,1); - margin-top: 13px !important; -} - -.Competitionthird .ant-card-body { - padding: 12px; - zoom: 1; -} - -/*.Competitionthird .ant-card-meta-title{*/ - /*margin-bottom: 0px !important;*/ -/*}*/ - -.Competitionfirst .ant-card-body { - padding: 12px; - zoom: 1; -} - -.Competitionsecondary .ant-card-body { - padding: 12px; - zoom: 1; -} - -.center{ - text-align: center; -} - -.rankfonttop{ - font-size:14px; - color:rgba(102,102,102,1); -} - -.rankfontmid{ - font-size:18px; - color:rgba(102,102,102,1); -} - -.rankfontbottom{ - font-size:26px; - color:rgba(165,91,41,1); - text-align: center; -} - -.rankfontbottoms{ - font-size:28px; - color:rgba(165,91,41,1); - text-align: center; -} - -.Competitionuserimg{ - width: 64px; - height: 63px; - border-radius: 50%; - border: 2px solid #459BE5; -} - -.CompetitionsListzhezhao{ - position: absolute; - top: 0px; - left: 0px; - width: 1206px; - height: 100%; - z-index: 10000; - display: none; - background: rgba(0,0,0,0.33); - text-align: center; - color: #fff; - font-size: 22px; - -} - -.relative{position: relative;} - -.relative:hover .CompetitionsListzhezhao{ - display: block; - display: flex; - align-items: center; - justify-content: space-around; - flex-direction: column; -} - -.image_urlbox{ - width: 790px; - height: 340px; -} - -.CompetitionContents{ - background: #fff !important; - padding: 40px; - box-shadow: 3px 2px 12px 2px rgba(0,0,0,0.05); - border: 1px solid rgba(239,239,239,1); -} - -.rankbeicenter{ - text-align: center; -} -.rankbei{ - font-size: 16px; - color: rgba(119,119,119,1); - -} - -.youranklist{ - background: rgba(226,241,255,1); - line-height: 50px; - text-align: center; - padding-left: 20px; -} - -.ranknames{ - font-size: 16px; - color: rgba(62,62,62,1); -} - -.ranknameslast{ - font-size:16px; - color:rgba(12,158,254,1); -} - -.textleft{ - text-align: left; -} - -.textright{ - text-align: right; -} - -.userranksclass{ - text-align: left; - width: 18%; - padding-left: 12px; - margin-right: 28px; -} - -.Commonimgbox{ - width: 800px !important; -} - -.CompetitionCommonbannerfont{ - width: 350px !important; - margin-left:10px; -} - -.color000{ - color: #000; -} - -.cursorpointer{ - cursor: pointer; -} - -.rankfonttop{ - overflow:hidden; - text-overflow:ellipsis; - white-space:nowrap -} - -.usernamebox{ - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; - max-width: 100px; - display: inherit; -} - -.competimgabsolute{ - position: absolute; - left: 72px; - bottom: -10px; -} -.competimgabsolute .ant-badge-count{ - box-shadow: none !important; -} - -.competimgabsoluteijmg{ - position: absolute; - left: -11px; - bottom: 0px; -} \ No newline at end of file diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommon.js b/src/modules/competitions/Competitioncommon/CompetitionCommon.js deleted file mode 100755 index 17d45233..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommon.js +++ /dev/null @@ -1,548 +0,0 @@ -import React, { Component } from 'react'; -import { Breadcrumb,Layout,Table, Divider, Tag,Badge,Row, Col,Button, Menu, Icon} from 'antd'; -import { Link } from 'react-router-dom'; -import axios from 'axios'; -import {markdownToHTML,getImageUrl} from 'educoder'; -import CompetitionContents from './CompetitionCommonChild/CompetitionContents'; -import CompetitionContentsChart from './CompetitionCommonChild/CompetitionContentsChart'; -import CompetitionContentsMd from './CompetitionCommonChild/CompetitionContentsMd'; -import CompetitionContentspdf from './CompetitionCommonChild/CompetitionContentspdf'; - -import './CompetitionCommon.css'; - -const {Sider } = Layout; - -class CompetitionCommon extends Component{ - constructor(props) { - super(props) - this.state={ - data: undefined, - bannerdata: undefined, - module_type: undefined, - mdContentdata: undefined, - chart_rules: undefined, - Competitionedittype: false, - chartdata: undefined, - has_url: false, - signupdata: undefined - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - if(this.props.match.params.identifier!=null){ - this.getbannerdata(); - // this.setState({ - // thiskeys:this.props.location.search.replace('?menu=', '') - // }) - // let url=`/competitions/${this.props.match.params.identifier}.json`; - // axios.get(url).then((response) => { - // if(response.status===200){ - // this.setState({ - // bannerdata:response.data - // }) - // } - // }).catch((error) => { - // //console.log(error) - // }) - } - } - - componentDidUpdate = (prevProps) => { - if (prevProps.user != this.props.user) { - - //console.log("componentDidUpdatess"); - //console.log(this.props.user); - if (this.props.user && this.props.user.login != "") { - const zul = `/competitions/${this.props.match.params.identifier}/competition_staff.json`; - axios.get((zul)).then((result) => { - if (result) { - if (result.data) { - this.setState({ - signupdata: result.data - }) - } - } - }).catch((error) => { - ////console.log(error); - }) - } - } - - } - //获取头部信息 - getbannerdata=()=>{ - // let menuid=this.props.location.search.replace('?menu=', ''); - let query=this.props.location&&this.props.location.search; - const types = query.split('&') - const menuid = types[0].split('?menu=') - let url=`/competitions/${this.props.match.params.identifier}/common_header.json`; - axios.get(url).then((response) => { - if(response.status===200){ - this.setState({ - data: response.data, - thiskeys: menuid[1] === undefined || menuid[1] === "" ? response.data.competition_modules[0].id : menuid[1], - mode: response.data.mode - }) - if(menuid[1]===undefined||menuid[1]===""){ - this.getrightdata( - response.data.competition_modules[0].id, - response.data.competition_modules[0].module_type, - response.data.competition_modules[0].module_url, - response.data.competition_modules[0].has_url - ) - }else{ - let newlist=response.data.competition_modules; - newlist.map((item,key)=>{ - if(`${item.id}`===`${menuid[1]}`){ - this.getrightdata( - item.id, - item.module_type, - item.module_url, - item.has_url - ) - } - }) - } - } - }).catch((error) => { - //console.log(error) - }) - - //this.props.user 有可能为空 - - if (this.props.user && this.props.user.login != "") { - const zul = `/competitions/${this.props.match.params.identifier}/competition_staff.json`; - axios.get((zul)).then((result) => { - if (result) { - if (result.data) { - this.setState({ - signupdata: result.data - }) - } - } - }).catch((error) => { - ////console.log(error); - }) - } - - } - - getrightdatas=(e)=>{ - let keys = parseInt(e.key); - this.getlistdata(keys) - this.props.history.replace(`?menu=${keys}`); - } - - getlistdata=(keys,listkey)=>{ - - let{data}=this.state; - this.setState({ - thiskeys:keys - }) - data&&data.competition_modules.map((item,key)=>{ - if(item.module_type!="enroll") { - if (keys === item.id) { - this.getrightdata(item.id, item.module_type, item.module_url, item.has_url, listkey) - return - } - } - }) - } - - getnewchartdata=(typeid,tabkey)=>{ - if(typeid==="chart"){ - let url=`/competitions/${this.props.match.params.identifier}/chart_rules.json`; - axios.get(url) - .then((response) => { - if(response.status===200){ - this.setState({ - chart_rules:response.data, - tabkey: tabkey === undefined ? response.data.stages[0].id === null ? "0" : `${response.data.stages[0].id}` : tabkey - }) - - - } - }).catch((error) => { - //console.log(error) - }) - } - } - - getrightdata=(id,typeid,module_url,has_url,listkey)=>{ - - // if(typeid==="enroll"){ - // this.props.history.replace(`/competitions/${this.props.match.params.identifier}/enroll`); - // return - // } - - this.getnewchartdata(typeid, listkey) - - if(has_url===false){ - let url=`${module_url}`; - axios.get(url).then((response) => { - if(response.status===200){ - - if(typeid==="chart"){ - this.setState({ - chartdata:response.data - }) - }else{ - this.setState({ - mdContentdata:response.data - }) - } - - } - }).catch((error) => { - //console.log(error) - }) - }else{ - if (module_url.substring(0, 7) == 'http://' || module_url.substring(0, 8) == 'https://') { - // window.location.href= module_url - window.open(module_url) - }else{ - window.open(`https://${module_url}`) - // window.location.href=; - } - return - } - - this.setState({ - module_id:id, - module_type:typeid, - has_url:has_url - }) - - } - - Competitionedit=()=>{ - this.setState({ - Competitionedittype: true - }) - } - - hideCompetitionedit=()=>{ - this.setState({ - Competitionedittype:false - }) - - } - newgotocourse=(url)=>{ - if(this.props.checkIfLogin()===false){ - this.props.showLoginDialog() - return - } - if(this.props.checkIfProfileCompleted()===false){ - this.props.showProfileCompleteDialog() - return - } - window.open(url); - - } - - gotocourse=(url)=>{ - if(this.props.checkIfLogin()===false){ - this.props.showLoginDialog() - return - } - if(this.props.checkIfProfileCompleted()===false){ - this.props.showProfileCompleteDialog() - return - } - - if(url===undefined){ - let {data,signupdata}=this.state; - // if(signupdata.enrolled===true){ - // this.props.history.replace(`/classrooms/${data.course_id}`); - // }else{ } - - if (data.member_of_course === true) { - // this.props.history.replace(`/classrooms/${data.course_id}`); - window.open(`/classrooms/${data.course_id}`) - } else { - // 以学生身份调用加入课堂 进入课堂首页 - let url = "/classrooms/apply_to_join_course.json" - axios.post(url, { - invite_code: data.invite_code, - student: 1 - } - ).then((response) => { - if (response.data.status === 0) { - // this.props.history.replace(); - this.getbannerdata() - window.open(`/classrooms/${data.course_id}`); - - } - }) - - } - - }else{ - - if (url === "personal") { - let urls = `/competitions/${this.props.match.params.identifier}/enroll`; - this.Personalregistration(urls) - } else { - window.open(url); - } - - } - } - - - Personalregistration = (urls) => { - - let {signupdata} = this.state; - - if (signupdata.enroll_ended === true) { - //已截止 - this.props.showNotification(`报名已截止`); - return; - } - if (signupdata.enrolled === true) { - this.props.showNotification(`你已经报名,不能重复报名!`); - return; - } - const url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; - axios.post(url).then((response) => { - if (response) { - if (response.data) { - this.props.showNotification(`报名成功,预祝您夺得桂冠!`); - // this.props.history.replace(urls); - this.getbannerdata() - window.open(urls) - } - } - }).catch((error) => { - - }); - } - - - Competitioncallback=(key)=>{ - this.setState({ - tabkey:key - }) - let url=`/competitions/${this.props.match.params.identifier}/charts.json`; - axios.get(url,{params:{ - stage_id:key===0||key===null?undefined:key - }}).then((response) => { - if(response.status===200){ - this.setState({ - chartdata:response.data - }) - } - }).catch((error) => { - //console.log(error) - }) - - } - - - render() { - let {data, module_type, Competitionedittype, signupdata} = this.state; - - return ( - data===undefined?"":
    - - - 在线竞赛 - {data && data.name} - - -
    - - - {data.competition_status === "nearly_published" ? - data && data.permission.editable === true ? "" : -
    即将发布 敬请期待
    : ""} - -
    - - - - - 15 ? "competitionbannerdiv mt30" : "competitionbannerdiv mt30"}>{data && data.name} - - - 竞赛时间:{data && data.start_time}~{data && data.end_time} - {/**/} - - - - - -
    奖金
    - - -
    浏览数
    - - -
    报名数
    - - - - - -
    ¥{data && data.bonus}
    - - -
    {data.competition_status === "nearly_published" ? "--" : data && data.visits_count}
    - - - - {data.competition_status === "ended" ? -
    this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)} - onClick={ data.mode === 2 ?data.member_of_course==true?() => this.newgotocourse(`/classrooms/${data.course_id}`):"":() => this.newgotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)} - >{data && data.member_count}
    - :data.competition_status === "nearly_published" ? -
    this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)} - >{"--"}
    : - data.competition_status === "progressing" ? - data.mode === 2 ? -
    this.gotocourse()}>{data && data.member_count}
    : signupdata && signupdata.personal === true ? -
    this.gotocourse("personal")}>{data && data.member_count}
    :
    this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)}>{data && data.member_count}
    - :""} - - - - - - {data.competition_status === "ended" ? : } - - {data.competition_status === "ended" ? - : data.enroll_end === true ? - : - data.competition_status === "progressing" ? - :""} - - {data && data.enroll_end_time === null ? "" : `报名截止时间:${data && data.enroll_end_time}`} - - - - - - - this.getrightdatas(e)}> - {data && data.competition_modules.map((item, key) => { - if (item.module_type != "enroll") { - return ( - - {/*{item.has_url===false?this.getrightdata(item.id,item.module_type,item.module_url,item.has_url)}*/} - {/*>{item.name}:this.getrightdata(item.id,item.module_type)}*/} - {/*>{item.name}}*/} - {item.name} - - ) - } - })} - - - {/*this.isdownloadpdf(e)}>*/} - {/**/} - {/*证书下载*/} - {/**/} - {/**/} - - - {module_type === "certificate" ? "" : - {this.state.module_type === "chart" ? Competitionedittype === false ? this.Competitionedit()} - Competitioncallback={(e) => this.Competitioncallback(e)} - /> : "" : Competitionedittype === false ? this.Competitionedit()} - {...this.props} - {...this.state} - /> : ""} - {/**/} - {Competitionedittype === true ? this.hideCompetitionedit()} - getlistdata={(keys, listkey) => this.getlistdata(keys, listkey)} - Competitioncallback={(e) => this.Competitioncallback(e)} - {...this.props} - {...this.state} - /> : ""} - } - - {module_type === "certificate" ? - - : ""} - - - - - ) - } -} -export default CompetitionCommon; diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContents.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContents.js deleted file mode 100644 index 62c7140c..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContents.js +++ /dev/null @@ -1,45 +0,0 @@ -import React, { Component } from 'react'; -import {Button,Layout} from 'antd'; -import axios from 'axios'; -import {markdownToHTML,getImageUrl,AttachmentList} from 'educoder'; - - -const { Header, Footer, Sider, Content } = Layout; -class CompetitionContents extends Component{ - constructor(props) { - super(props) - this.state={ - hash:undefined - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - this.props.MdifHasAnchorJustScorll(); - } - - render() { - let {mdContentdata, data} = this.props; - //mdhash滚动 - this.props.MdifHasAnchorJustScorll(); - return ( - -
    - {data && data.permission.editable === true ? this.props.Competitionedittype === false ? this.props.has_url === false ? - :"":"":""} -
    - - - -
    - -
    -
    -
    - - ) - } -} -export default CompetitionContents; diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentsChart.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentsChart.js deleted file mode 100644 index 594eb3c5..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentsChart.js +++ /dev/null @@ -1,423 +0,0 @@ -import React, { Component } from 'react'; -import {Button,Layout,Tabs,Icon, Card, Avatar, Row, Col ,Table,Badge} from 'antd'; -import {markdownToHTML,getImageUrl,getRandomNumber} from 'educoder'; -import axios from 'axios'; - -const { Content } = Layout; -const { TabPane } = Tabs; -const { Meta } = Card; - -class CompetitionContents extends Component{ - constructor(props) { - super(props) - this.state={ - personal:undefined - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - let url=`/competitions/${this.props.match.params.identifier}/competition_staff.json`; - axios.get(url) - .then((response) => { - if(response.status===200){ - console.log(response) - this.setState({ - personal:response.data.personal - }) - } - }).catch((error) => { - console.log(error) - }) - this.props.MdifHasAnchorJustScorll(); - } - - derivefun=(url)=>{ - axios.get(url).then((response)=>{ - if(response === undefined){ - return - } - if(response.data.status&&response.data.status===-1){ - this.props.showNotification(response.data.message); - }else if(response.data.status&&response.data.status===-2){ - // if(response.data.message === "100"){ - // // 已超出文件导出的上限数量(100 ),建议: - // - // this.setState({ - // DownloadType:true, - // DownloadMessageval:100 - // }) - // }else { - // //因附件资料超过500M - // this.setState({ - // DownloadType:true, - // DownloadMessageval:500 - // }) - // } - this.props.showNotification(response.data.message); - }else { - // this.props.showNotification(`正在下载中`); - // window.open("/api"+url, '_blank'); - this.props.slowDownload(url); - } - }).catch((error) => { - console.log(error) - }); - } - render() { - this.props.MdifHasAnchorJustScorll(); - const operations = - const columns = [ - { - title: 'usersum', - dataIndex: 'usersum', - key: 'name', - render: text => {text}, - }, - { - title: 'userimg', - dataIndex: 'userimg', - key: 'userimg', - render: (text, record) =>( - -
    - -
    -
    -
    ), - }, - { - title: 'username', - dataIndex: 'username', - key: 'username', - render: text => {text}, - }, - { - title: 'school', - dataIndex: 'school', - key: 'school', - render: text => {text}, - }, - { - title: 'spendtime', - dataIndex: 'spendtime', - key: 'spendtime', - render: text => {text}, - }, - { - title: 'score', - dataIndex: 'score', - key: 'score', - render: text => {text}, - }, - ]; - - const datas = []; - let {chart_rules, chartdata, data} = this.props; - let {personal}=this.state; - - if(this.props&&this.props.mode!=1){ - - columns.some((item,key)=> { - if (item.title === "spendtime") { - columns.splice(key, 1) - return true - } - } - ) - - } - - {chartdata===undefined?"":chartdata.teams.length===0?"":chartdata.teams.map((item,key)=>{ - let list={ - usersum:key+1, - userimg:item.user_image, - username:personal===undefined||personal===null?item.record_user_name:personal===true?item.record_user_name:item.team_name, - school:item.school_name, - spendtime:item.spend_time, - score:item.score<50?"< 50 分":item.score, - user_login:item.user_login, - competition_prize:item.competition_prize - } - datas.push(list) - })} - - // console.log(this.props&&this.props.mode) - // console.log(columns) - - return ( -
    - - {chart_rules === undefined ? "" : - this.props.Competitioncallback(e)} activeKey={this.props.tabkey} - tabBarExtraContent={data && data.permission.editable === true ? this.props.Competitionedittype === false ? this.props.has_url === false ? operations : "" : "" : ""}> - {chart_rules.stages.map((item,key)=>{ - return( - - {chart_rules.rule_contents.map((items,keys)=>{ - if(item.id===items.competition_stage_id){ - return( - - ) - }else if(item.id===null&&items.competition_stage_id===0){ - return( - - ) - } - })} - - ) - })} - } - - -
    总排名 - {chartdata===undefined?"":chartdata.teams.length===0?- -
    要抓住一切机会,向所有人证明你自己,证明你能够迎接荣耀
    - :""} - - {chartdata===undefined?"":chartdata.teams.length===0?"":chartdata.teams.map((item,key)=>{ - - - if(key===1){ - return( - - -
  • - - -
  • - - } - > - -
    {item.school_name}
    - {this.props&&this.props.mode===1?
    {item.spend_time}
    :""} - } - description={ -
    {item.score<50?"< 50 分":item.score}分
    - } - /> -
    - - - ) - } - - })} - {chartdata===undefined?"":chartdata.teams.length===0?"":chartdata.teams.map((item,key)=>{ - if(key===0){ - return( - - -
  • - - -
  • - - } - > - -
    {item.school_name}
    - {this.props&&this.props.mode===1?
    {item.spend_time}
    :""} - } - description={ -
    {item.score<50?"< 50 分":item.score}分
    - } - - /> -
    - - - ) - } - })} - {chartdata===undefined?"":chartdata.teams.length===0?"":chartdata.teams.map((item,key)=>{ - if(key===2){ - return( - - -
  • - - -
  • - - } - > - -
    {item.school_name}
    - {this.props&&this.props.mode===1?
    {item.spend_time}
    :""} - } - description={ -
    {item.score<50?"< 50 分":item.score}分
    - } - - /> -
    - - ) - } - - - - })} - - - {chartdata===undefined?"":chartdata.user_ranks.length===0?"":
    - - {chartdata.user_ranks.map((item,key)=>{ - - return( - -
    - 您当前排名:{item.rank} - - - {personal===undefined||personal===null?item.record_user_name:personal===true?item.user_name:item.team_name} - - - {/*{item.team_name}*/} - - {item.cost_time=== "--"?- {this.props&&this.props.mode===1?item.cost_time:""} - :- {this.props&&this.props.mode===1?item.cost_time:""} - } - {item.cost_time=== "--"?- {item.score<50?"< 50 分":item.score} - :- {item.score<50?"< 50 分":item.score} - } - - ) - })} - } - - - {chartdata === undefined ? "" : chartdata.teams.length === 0 ? "" : -
    } - - - - - - ) - } -} -export default CompetitionContents; diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentsMd.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentsMd.js deleted file mode 100644 index 0cae1e2a..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentsMd.js +++ /dev/null @@ -1,232 +0,0 @@ -import React, { Component } from 'react'; -import {Button, Card, Row, Col ,Upload,Icon,message,Tabs} from 'antd'; -import axios from 'axios'; -import {getUploadActionUrl,getUrl,appendFileSizeToUploadFileAll,appendFileSizeToUploadFile} from 'educoder'; -import TPMMDEditor from '../../../tpm/challengesnew/TPMMDEditor'; -const { TabPane } = Tabs; -class CompetitionContentsMd extends Component{ - constructor(props) { - super(props) - this.contentMdRef = React.createRef(); - this.state={ - contentFileList:[], - chartmodule_id:undefined - } - } - componentDidUpdate =(prevState)=>{ - if(prevState!=this.props){ - this.getchartdata(); - } - } - componentDidMount(){ - window.document.title = '竞赛'; - - this.getchartdata() - } - - getchartdata=()=>{ - let {mdContentdata,chart_rules}=this.props; - - // is_pdf: false - if(this.props.module_type==="chart"){ - let type=true; - if(chart_rules===undefined){ - - }else{ - chart_rules.rule_contents.map((items,keys)=>{ - - if(parseInt(this.props.tabkey)===items.competition_stage_id){ - console.log(items) - this.contentMdRef.current.setValue(items.content); - this.setState({ - contentFileList:undefined, - chartmodule_id:items.id - }) - type=false; - } - }) - - if(type===true){ - this.contentMdRef.current.setValue(""); - this.setState({ - contentFileList:undefined, - chartmodule_id:undefined - }) - - } - } - - - }else{ - let contentFileList = mdContentdata===undefined?[]:mdContentdata.attachments===undefined?[]:mdContentdata.attachments.map((item) => { - return { - id: item.id, - uid: item.id, - name: appendFileSizeToUploadFile(item), - url: item.url, - filesize: item.filesize, - status: 'done', - response:{id: item.id} - } - }) - this.setState({ - contentFileList:contentFileList - }) - this.contentMdRef.current.setValue(mdContentdata===undefined?"":mdContentdata.md_content===undefined?"":mdContentdata.md_content || '') - - } - } - - handleContentUploadChange = (info) => { - if (info.file.status === 'uploading' || info.file.status === 'done' || info.file.status === 'removed') { - let contentFileList = info.fileList; - this.setState({ contentFileList: appendFileSizeToUploadFileAll(contentFileList) }); - } - - } - - onAttachmentRemove = (file, stateName) => { - if(file.response!=undefined){ - this.props.confirm({ - content: '是否确认删除?', - - onOk: () => { - this.deleteAttachment(file, stateName) - }, - onCancel() { - console.log('Cancel'); - }, - }); - return false; - } - - } - deleteAttachment = (file, stateName) => { - // 初次上传不能直接取uid - const url = `/attachments/${file.response ? file.response.id : file.uid}.json` - axios.delete(url, { - }) - .then((response) => { - if (response.data) { - const { status } = response.data; - if (status == 0) { - console.log('--- success') - this.props.showNotification(response.data.message); - this.setState((state) => { - const index = state[stateName].indexOf(file); - const newFileList = state[stateName].slice(); - newFileList.splice(index, 1); - return { - [stateName]: newFileList, - }; - }); - } - } - }) - .catch(function (error) { - console.log(error); - }); - } - handleSubmit = () => { - let {contentFileList}=this.state; - const mdContnet = this.contentMdRef.current.getValue().trim(); - // if(mdContnet.length>10000){ - // this.props.showNotification("内容超过10000个字"); - // return - // } - let attachment_ids=undefined - if(contentFileList!=undefined){ - attachment_ids= contentFileList.map(item => { - return item.response ? item.response.id : item.id - }) - } - - let newstage_id=parseInt(this.props.tabkey)===0||null?undefined:parseInt(this.props.tabkey) - let data={} - if(this.props.module_type==="chart"){ - data={ - md_content_id:this.state.chartmodule_id, - competition_module_id:this.props.module_id, - stage_id:newstage_id, - content:mdContnet, - } - }else{ - data={ - md_content_id:this.props.mdContentdata.md_id, - competition_module_id:this.props.mdContentdata.id, - content:mdContnet, - attachment_ids:attachment_ids - } - } - - let url=`/competitions/${this.props.match.params.identifier}/update_md_content.json`; - axios.post(url,data - ).then((response) => { - if(response.data.status===0){ - this.props.showNotification(response.data.message); - this.props.getlistdata(this.props.thiskeys,this.props.tabkey); - this.props.hideCompetitionedit(); - }else{ - this.props.showNotification(response.data.message); - } - }).catch((error) => { - console.log(error) - }) - - } - render() { - let {contentFileList}=this.state; - let {chart_rules}=this.props; - const uploadProps = { - width: 600, - fileList: contentFileList, - multiple: true, - // https://github.com/ant-design/ant-design/issues/15505 - // showUploadList={false},然后外部拿到 fileList 数组自行渲染列表。 - // showUploadList: false, - action: `${getUploadActionUrl()}`, - onChange: this.handleContentUploadChange, - onRemove: (file) => this.onAttachmentRemove(file, 'contentFileList'), - beforeUpload: (file) => { - console.log('beforeUpload', file.name); - const isLt150M = file.size / 1024 / 1024 < 150; - if (!isLt150M) { - this.props.showNotification("文件大小必须小于150MB"); - } - return isLt150M; - }, - }; - // console.log(this.props.tabkey) - // console.log(chart_rules) - console.log(this.props.mdContentdata) - return ( -
    - {chart_rules===undefined?"":this.props.module_type==="chart"?this.props.Competitioncallback(e)}> - - {chart_rules.stages.map((item,key)=>{ - return( - - ) - })} - - :""} - - {this.props.module_type==="chart"?"": - - (单个文件150M以内) - } - -
    - {/* htmlType="submit" */} - - this.props.hideCompetitionedit()}>取消 -
    -
    - - ) - } -} -export default CompetitionContentsMd; \ No newline at end of file diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdf.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdf.js deleted file mode 100644 index 218e8497..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdf.js +++ /dev/null @@ -1,64 +0,0 @@ -import React, { Component } from 'react'; -import {Tabs} from 'antd'; -import axios from 'axios'; -import {markdownToHTML,getImageUrl,AttachmentList} from 'educoder'; -import CompetitionContentspdfdownload from './CompetitionContentspdfChild/CompetitionContentspdfdownload'; -import CompetitionContentspdfpeopledata from './CompetitionContentspdfChild/CompetitionContentspdfpeopledata'; -// import NoneData from "../../../courses/shixunHomework/shixunHomework"; - -const { TabPane } = Tabs; -class CompetitionContentspdf extends Component{ - constructor(props) { - super(props) - this.state={ - Tabskey:"1" - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - let query=this.props.location&&this.props.location.search; - const types = query.split('user_id=') - if(types[1]===undefined){ - }else{ - this.setState({ - Tabskey:"2" - }) - } - } - - Competitioncallback=(key)=>{ - this.setState({ - Tabskey:key - }) - } - - render() { - - - return ( - -
    -
    - this.Competitioncallback(e)} activeKey={this.state.Tabskey}> - - {this.state.Tabskey==="1"?this.Competitioncallback(e)} - />:""} - - - {this.state.Tabskey==="2"?:""} - - -
    -
    - - ) - } -} -export default CompetitionContentspdf; diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Bankcardnumberverification.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Bankcardnumberverification.js deleted file mode 100644 index 6c4cf72a..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Bankcardnumberverification.js +++ /dev/null @@ -1,290 +0,0 @@ -import React, { Component } from 'react'; -import { Button, Layout, Input, Form } from 'antd'; -import axios from 'axios'; -import { getImageUrl } from 'educoder'; -import mycompetotionchild from './mycompetotionchild.css'; -import { getHiddenName } from "../../../../user/account/AccountBasicEdit"; -import '../../../../courses/css/Courses.css' - -export const identityMap = { "teacher": "教师", "student": "学生", "professional": "专业人士" } - -class Bankcardnumberverification extends Component { - constructor(props) { - super(props) - this.state = { - basicInfo: {}, - updating: '', - secondsFlag: false, - seconds: 60, - phonebool: false, - emailbool: false, - formationdata: [], - bank_account_editable: false, - leader: false, - bank_account: undefined, - certification: 1 - } - } - - componentDidMount() { - window.document.title = '竞赛'; - // console.log("3获取用户信息"); - // console.log(this.props) - try { - this.props.triggerRef(this); - } catch (e) { - - } - console.log(this.props.bank_account); - - //初始化值 - if (this.props.bank_account) { - this.props.form.setFieldsValue({ - openingbank: this.props.bank_account.bank, - subbranch: this.props.bank_account.second_bank, - subbranchs: this.props.bank_account.card_no, - }) - this.setState({ - openingbank: this.props.bank_account.bank, - subbranch: this.props.bank_account.second_bank, - subbranchs: this.props.bank_account.card_no, - }) - } - - } - - setdata(bank, second_bank, card_no) { - this.props.form.setFieldsValue({ - openingbank: bank, - subbranch: second_bank, - subbranchs: card_no, - }) - } - componentDidUpdate = (prevProps) => { - if (prevProps.bank_account != this.props.bank_account) { - - ////console.log("Registration"); - ////console.log("componentDidUpdate"); - ////console.log(this.props.user.admin); - try { - if (this.props.bank_account) { - this.props.form.setFieldsValue({ - openingbank: this.props.bank_account.bank, - subbranch: this.props.bank_account.second_bank, - subbranchs: this.props.bank_account.card_no, - }) - } - this.setState({ - openingbank: this.props.bank_account.bank, - subbranch: this.props.bank_account.second_bank, - subbranchs: this.props.bank_account.card_no, - }) - } catch (e) { - - } - } - - } - yhBankstrue = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - let url = `/competitions/${this.props.match.params.identifier}/prize_leader_account.json`; - axios.patch(url, { - user_id: this.props.userdata.id, - bank: values.openingbank, - second_bank: values.subbranch, - card_no: values.subbranchs - }) - .then((result) => { - try { - if (result.data.status === 0) { - try { - // console.log(values.openingbank); - // console.log(values.subbranch); - // console.log(values.subbranchs); - this.props.form.setFieldsValue({ - openingbank: values.openingbank, - subbranch: values.subbranch, - subbranchs: values.subbranchs, - }); - this.setState({ - openingbank: values.openingbank, - subbranch: values.subbranch, - subbranchs: values.subbranchs, - }) - } catch (e) { - - } - - try { - this.props.showNotification(`提交成功,等待审核!`); - - } catch (e) { - - } - try { - this.props.getdata(this.props.userdata.id); - } catch (e) { - - } - try { - this.props.GetawardinformationAPI(); - } catch (e) { - - } - } - } catch (e) { - - } - - }).catch((error) => { - console.log(error); - }) - } - }) - - } - - render() { - const { getFieldDecorator } = this.props.form; - const { updating, seconds, secondsFlag, basicInfo, phonebool, emailbool, certification, formationdata, bank_account_editable, leader, bank_account } = this.state - return ( -
    -
    -

    签/领/开户行及银行卡号

    -

    为保障奖金的及时发放,请队长如实填写你名下的银行卡信息

    -
    -
    - -
    - -
    - - {getFieldDecorator('openingbank', { - rules: [{ - initialValue: this.state.openingbank, - required: true, - message: '请输入开户行', - }], - })( - - )} - - - - {getFieldDecorator('subbranch', { - rules: [{ - initialValue: this.state.subbranch, - required: true, - message: '请输入支行', - }], - })( - - )} - - - - {getFieldDecorator('subbranchs', { - rules: [{ - initialValue: this.state.subbranchs, - required: true, - message: '请输入账号', - }], - })( - - )} - - -
    -

    -
    - {/*
    this.yhBanksfalse()}>

    取消

    */} - -
    -
    - - -
    -
    - -
    -
    - ) - } -} - -const Bankcardnumberverifications = Form.create({ name: 'Bankcardnumberverification' })(Bankcardnumberverification); - -export default Bankcardnumberverifications; - diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfdownload.css b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfdownload.css deleted file mode 100644 index 726a0227..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfdownload.css +++ /dev/null @@ -1,24 +0,0 @@ -.pdfdownload { - max-width: 791px; - height: 40px; - background: rgba(249, 249, 249, 1); - line-height: 40px; - padding-left: 15px; -} - -.pdfpicture { - font-size: 16px; - color: rgba(0, 0, 0, 1); -} - -.pdfdownloadfont4CACFF { - color: #4CACFF !important; -} - -.pdfdownloadfont00CC5F { - color: #00CC5F; -} - -.pdfdownloadfontFF6602 { - color: #FF6602; -} diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfdownload.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfdownload.js deleted file mode 100644 index 360d6593..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfdownload.js +++ /dev/null @@ -1,215 +0,0 @@ -import React, { Component } from 'react'; -import {Button,Layout,Row, Col,Divider,Table} from 'antd'; -import axios from 'axios'; -import {getImageUrl,getRandomcode} from 'educoder'; -import './CompetitionContentspdfdownload.css'; -// import NoneData from "../../../courses/shixunHomework/shixunHomework"; - - -class CompetitionContentspdfdownload extends Component{ - constructor(props) { - super(props) - this.state={ - data:undefined, - teams:undefined - } - } - - componentDidMount(){ - window.document.title = '竞赛'; - let url=`/competitions/${this.props.match.params.identifier}/prize.json`; - let query=this.props.location&&this.props.location.search; - const types = query.split('user_id=') - let userid; - if(types[1]===undefined){ - userid=this.props.user&&this.props.user.user_id; - }else{ - userid=types[1]; - } - axios.get(url,{params:{ - user_id:userid, - } - }).then((response) => { - if(response.status===200){ - - let datas=response.data.teams; - if(datas.length>0){ - datas.map((item,key)=>{ - let lista=item.team_members; - if(lista.length>0){ - console.log(lista) - lista.map((i,k)=>{ - i["bank_account"]=item.bank_account; - }) - } - }) - } - this.setState({ - data:response.data, - teams:datas, - }) - } - }).catch((error) => { - console.log(error) - }) - } - - render() { - - - - let {data,teams}=this.state; - - const columns = [ - { - title: '角色', - dataIndex: 'type', - key: 'type', - render: (text, record) => ( - - {record.role} - - ), - }, - { - title: '姓名', - dataIndex: 'name', - key: 'name', - render: (text, record) => ( - - {record.name} - - ), - }, - { - title: '实名认证', - dataIndex: 'namecertify', - key: 'namecertify', - render: (text, record) => ( - - {record.real_name_auth==="authed"?已认证:record.real_name_auth==="authing"?待审核:record.real_name_auth==="not_authed"?未认证:""} - - ), - }, - { - title: '职业认证', - key: 'certify', - dataIndex: 'certify', - render: (text, record) => ( - - {record.professional_auth==="authed"?已认证:record.professional_auth==="authing"?待审核:record.professional_auth==="not_authed"?未认证:""} - - ), - }, - { - title: '手机绑定', - key: 'mobile', - dataIndex: 'mobile', - render: (text, record) => ( - - {record.phone_binded===true?已绑定:未绑定} - - ), - }, - { - title: '邮箱绑定', - key: 'mail', - dataIndex: 'mail', - render: (text, record) => ( - - {record.email_binded===true?已绑定:未绑定} - - ), - }, - { - title: '开户行及银行卡号信息(队长填写)', - key: 'idcard', - dataIndex: 'idcard', - render: (value, record, index) => { - if (index === 0&&record.bank_account!=null) { - return { - children: {record.bank_account.bank + record.bank_account.second_bank + record.bank_account.card_no}, - }; - } - - }, - }, - ]; - - - let people=[ { url: '/api/competitions/xxxxx/certificates/1/personal' }, - { url: '/api/competitions/xxxxx/certificates/2/personal' },] - return ( - - -
    温馨提示:填写的个人信息经审批后,将提供个人获奖证书下载;团队队员信息全部审批后,将提供团队获奖证书下载。 - - - - 证书情况 - - - - 个人证书:{data&&data.personal_certifications.length===0&&data&&data.all_certified===false? - 暂未生成 原因:还未认证个人信息,this.props.Competitioncallback("2")}>立即认证: - data&&data.personal_certifications.length===0&&data&&data.all_certified===true? - 暂未生成 原因:组委会未完成证书审批,请稍后: - data&&data.personal_certifications.map((item,key)=>{ - return( - - - 立即下载 - - ) - })} - - - - 团队证书: - {data&&data.team_certifications.length===0?暂未生成 - :data&&data.team_certifications.map((item,key)=>{ - return( - - - 立即下载 - - ) - })} - - - - - {teams&&teams.map((item,key)=>{ - return( - - {item.name}战队信息填报概况 - -
    - - ) - }) - } - - - - ) - } -} -export default CompetitionContentspdfdownload; \ No newline at end of file diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfpeopledata.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfpeopledata.js deleted file mode 100644 index 485d7cdf..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/CompetitionContentspdfpeopledata.js +++ /dev/null @@ -1,596 +0,0 @@ -import React, {Component} from 'react'; -import {Button, Layout, Input, Form} from 'antd'; -import axios from 'axios'; -import {setmiyah} from 'educoder'; -import mycompetotionchild from './mycompetotionchild.css'; -import {getHiddenName} from "../../../../user/account/AccountBasicEdit"; -import '../../../../courses/css/Courses.css' -import RealNameCertificationModal from "../../../../user/modal/RealNameCertificationModal"; -import Phonenumberverifications from './Phonenumberverification'; -import Mailboxvalidations from './Mailboxvalidation' -import Bankcardnumberverifications from './Bankcardnumberverification' -export const identityMap = {"teacher": "教师", "student": "学生", "professional": "专业人士"} - -class CompetitionContentspdfpeopledata extends Component { - constructor(props) { - super(props) - this.state = { - basicInfo: {}, - updating: '', - secondsFlag: false, - seconds: 60, - phonebool: false, - emailbool: false, - formationdata: [], - bank_account_editable: false, - leader: false, - bank_account: undefined, - certification: 1, - userdata:undefined - } - } - - componentDidMount() { - window.document.title = '竞赛'; - - - this.GetawardinformationAPI(); - let query=this.props.location&&this.props.location.search; - const types = query.split('user_id=') - let userid; - if(types[1]===undefined){ - userid=this.props.user&&this.props.user.user_id; - }else{ - userid=types[1]; - } - this.getdata(userid); - this.GetuseridApi(userid); - - } - - GetuseridApi=(id)=>{ - //个人信息API 获取个人信息 - let url = `/users/accounts/${id}.json`; - axios.get(url).then((result) => { - if (result.data) { - console.log("GetuseridApi"); - console.log(result.data); - this.setState({ - userdata:result.data - }) - } - }).catch((error) => { - console.log(error); - }) - - } - - GetawardinformationAPI = () => { - let url = `/competitions/${this.props.match.params.identifier}/prize.json`; - let query=this.props.location&&this.props.location.search; - const types = query.split('user_id=') - let userid; - if(types[1]===undefined){ - userid=this.props.user&&this.props.user.user_id; - }else{ - userid=types[1]; - } - axios.get(url,{params:{ - user_id:userid, - } - }).then((result) => { - if (result.data) { - this.setState({ - formationdata: result.data.formationdata, - bank_account_editable: result.data.bank_account_editable, //队长是否可以编辑 - leader: result.data.leader, //是否是队长 - bank_account: result.data.bank_account, //队长银行卡号信息 - }) - } - }).catch((error) => { - console.log(error); - }) - } - - - getdata = (id) => { - this.setState({ - certification: 3 - }) - this.GetuseridApi(id); - }; - // 绑定手机 - onPhoneSubmit = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - let {id} =this.state.userdata; - let reg = /^1\d{10}$/; - if (reg.test(values.phone)) { - let url = `/users/accounts/${id}/phone_bind.json` - axios.post((url), { - phone: values.phone, - code: values.phoneValidateCode - }).then((result) => { - if (result) { - this.props.showNotification("手机号码绑定成功!"); - this.setState({ - phonebool: false - }) - this.getdata(this.state.userdata.id); - } - }).catch((error) => { - console.log(error); - }) - } else { - this.props.showNotification("请输入有效的11位手机号码"); - } - } - }) - } - // 绑定邮箱 - onEmailSubmit = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - let {id} =this.state.userdata; - let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; - if (reg.test(values.email)) { - let url = `/users/accounts/${id}/email_bind.json` - axios.post((url), { - email: values.email, - code: values.emailValidateCode - }).then((result) => { - if (result) { - this.props.showNotification("邮箱地址绑定成功!"); - this.setState({ - emailbool: false - }) - this.getdata(this.state.userdata.id); - } - }).catch((error) => { - console.log(error); - }) - } else { - this.props.showNotification("请输入正确的邮箱地址"); - } - } - }) - } - //取消编辑 - hideUpdating = (i) => { - if (i === 1) { - this.setState({ - phonebool: false - }) - } else if (i === 2) { - this.setState({ - emailbool: false - }) - - } else if (i === 3) { - - } - - } - - // 获取验证码 - getCode = (index) => { - let url = `/accounts/get_verification_code.json` - let login = ''; - let values = this.props.form.getFieldsValue(); - if (index == 3) { - //绑定手机号码 - login = values.phone; - let reg = /^1\d{10}$/; - if (reg.test(login) == false) { - this.props.showNotification(`请先输入正确的手机号码`); - return; - } - } else if (index == 4) { - // 绑定邮箱 - login = values.email; - let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; - if (reg.test(login) == false) { - this.props.showNotification(`请先输入正确的邮箱地址`); - return; - } - } - let type = index; - if (!login) { - this.props.showNotification(`请先输入${index == 3 ? "手机号码" : "邮箱地址"}`); - return; - } - let smscode=setmiyah(login) - axios.get((url), { - params: { - login, type,smscode - } - }).then((result) => { - if (result) { - // 倒计时 - this.setState({ - secondsFlag: true - }) - this.remainTime(); - } - }).catch((error) => { - console.log(error); - }) - } - - // 获取验证码倒计时 - remainTime = () => { - this.setState({ - seconds: 60 - }) - this.timer = setInterval(() => { - let {seconds} = this.state; - let s = parseInt(seconds) - 1; - if (s > -1) { - this.setState({ - seconds: s - }) - } else { - this.setState({ - secondsFlag: false - }) - clearInterval(this.timer); - } - }, 1000) - } - - phonebools = () => { - this.setState({ - phonebool: true - }) - } - - emailbools = () => { - console.log("点击了邮箱"); - this.setState({ - emailbool: true - }) - } - - //立即认证 - checkBasicInfo = (index) => { - if (this.state.userdata.base_info_completed == true) { - this.showRealNameCertificationModal(index) - } else { - try { - this.props.confirm({ - okText: `立即完善`, - content: `请先完善基本信息`, - onOk: () => { - this.props.history.push('/account/profile/edit') - } - }) - } catch (e) { - this.props.history.push(`/account/profile/edit`); - - } - } - - } - showRealNameCertificationModal = (index) => { - this.setState({ - certification: index, - }, () => { - if (index == 1) { - this.realNameCertificationModal1.setVisible(true) - } else if (index == 2) { - this.realNameCertificationModal2.setVisible(true) - } - }) - } - //绑定银行确认 - yhBankstrue = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - let url = `/competitions/${this.props.match.params.identifier}/prize_leader_account.json`; - axios.patch(url, { - user_id:this.state.userdata.id, - bank: values.openingbank, - second_bank: values.subbranchs, - card_no: values.subbranch - }) - .then((result) => { - try { - if (result.data.status == 0) { - // console.log(JSON.stringify(result)); - this.props.showNotification(`提交成功`); - this.getdata(this.state.userdata.id); - this.GetawardinformationAPI(); - } - } catch (e) { - - } - - }).catch((error) => { - console.log(error); - }) - } - }) - - } - - //取消认证弹框 - onCancel = () => { - this.getdata(this.state.userdata.id); - - } - - bindRef = ref => { this.child = ref } - //撤销认证 - Cancellationofapplication = (index) => { - let userid; - let query=this.props.location&&this.props.location.search; - const types = query.split('user_id=') - if(types[1]===undefined){ - userid=this.props.user&&this.props.user.user_id; - }else{ - userid=types[1]; - } - let url = "" - if (index === 1) { - url = `/users/accounts/${userid}/authentication_apply.json`; - } else if (index === 2) { - url = `/users/accounts/${userid}/professional_auth_apply.json`; - } - axios.delete(url) - .then((response) => { - try { - if (response.data.status == 0) { - if (index === 1) { - this.props.showNotification('撤销实名认证成功') - } else if (index === 2) { - this.props.showNotification('撤销职业认证成功') - } - try { - this.getdata(this.state.userdata.id); - }catch (e) { - - } - - } - } catch (e) { - - } - - }) - .catch(function (error) { - console.log(error); - }); - - } - - - render() { - const admins=this.props.user.admin; - if(admins===undefined||admins===null) { - admins === false; - } - const {updating, seconds, secondsFlag,userdata, basicInfo, phonebool, emailbool, certification, formationdata, bank_account_editable, leader, bank_account} = this.state - return ( -
    - {this.state.certification === 1 &&userdata? - - this.realNameCertificationModal1 = form} - certification={certification} - Getdata={(id) => this.getdata(id)} - onCancel={() => this.onCancel()} - > - - - : ""} - - {this.state.certification === 2 &&userdata ? - this.realNameCertificationModal2 = form} - certification={certification} - Getdata={(id) => this.getdata(id)} - onCancel={() => this.onCancel()} - - > : ""} -
    -

    *实名信息 -

    - {userdata && userdata.authentication == "uncertified" ? -

    通过实名认证后才能获得证书

    : "" - } - {userdata && userdata.authentication == "uncertified" ? -

    this.checkBasicInfo(1)}>立即认证

    : "" - } - -
    -
    -

    姓名:

    -

    {userdata && userdata.name} - - { - userdata && userdata.authentication == "uncertified" ? "" : - userdata && userdata.authentication == "applying" ? -

    待审核!

    this.Cancellationofapplication(1)}>撤销认证

    - : -

    -

    已认证

    -

    - } -

    -
    - -
    -

    性别:

    -

    {userdata && userdata.gender == 0 ? "男" : "女"}

    -
    - -
    -

    *职业信息 -

    - { - userdata && userdata.professional_certification == "uncertified" ? -

    通过职业认证后才能获得证书

    - - : ""} - { - userdata && userdata.professional_certification == "uncertified" ? -

    this.checkBasicInfo(2)}>立即认证

    - - : ""} -
    - -
    -

    职业:

    -

    {userdata && userdata.identity && identityMap[userdata.identity]} - { - userdata && userdata.professional_certification == "uncertified" ? - "" : - userdata && userdata.professional_certification == "applying" ? -

    -

    待审核!

    this.Cancellationofapplication(2)}>撤销认证

    -

    - : -

    -

    已认证

    -

    this.checkBasicInfo(2)}>重新认证

    - -

    - } -

    -
    -
    -

    {userdata && userdata.technical_title ? "职称:" : ""}{userdata && userdata.student_id ? "学号:" : ""}

    -

    {userdata && (userdata.technical_title || userdata.student_id)}

    -
    -
    -

    学校:

    -

    {userdata && userdata.school_name}

    -
    -
    -

    院系:

    -

    {userdata && userdata.department_name}

    -
    -
    -

    *联系方式 -

    -
    -
    -

    手机号:

    - { - userdata && userdata.phone ? -

    {userdata && userdata.phone}

    - : -

    未绑定

    - } -

    this.phonebools()}>{userdata && userdata.phone ? (phonebool === false ? "更换" : "") : (phonebool === false ? "立即绑定" : "")}

    -
    - {/*手机号绑定*/} - { - phonebool === true &&userdata ? - this.hideUpdating(i)} - getdata={(id) => this.getdata(id)}> - : "" - } - - -
    -

    Email:

    -

    {userdata && userdata.mail}

    -

    this.emailbools()}>{userdata && userdata.mail ? (emailbool === false ? "更换" : "") : (emailbool === false ? "立即绑定" : "")}

    -
    - { - emailbool === false ? "" : - ( - userdata? - this.hideUpdating(i)} - getdata={(id) => this.getdata(id)}> - :"" - ) - } - { - leader === true ? -
    - { - bank_account_editable === true ? - this.hideUpdating(i)} - getdata={(id) => this.getdata(id)} - GetawardinformationAPI={() => this.GetawardinformationAPI()} - bank_account={this.state.bank_account} - > - : - admins===true? - this.hideUpdating(i)} - getdata={(id) => this.getdata(id)} - GetawardinformationAPI={() => this.GetawardinformationAPI()} - bank_account={this.state.bank_account} - > - : -
    -
    -

    签/领/开户行及银行卡号

    -

    为保障奖金的及时发放,请队长如实填写你名下的银行卡信息

    -
    - { - bank_account && bank_account ? -
    -
    -

    开户行:

    -

    {bank_account && bank_account.bank}

    -
    -
    -

    支行:

    -

    {bank_account && bank_account.second_bank}

    -
    -
    -

    账号:

    -

    {bank_account && bank_account.card_no}

    -
    -
    - : - "" - } - -
    - } -
    - : -
    - { - admins===true? - this.hideUpdating(i)} - getdata={(id) => this.getdata(id)} - GetawardinformationAPI={() => this.GetawardinformationAPI()} - bank_account={this.state.bank_account} - > - :"" - } -
    - } - - -
    - ) - } -} - -export default CompetitionContentspdfpeopledata; - diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Mailboxvalidation.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Mailboxvalidation.js deleted file mode 100644 index fd049dc5..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Mailboxvalidation.js +++ /dev/null @@ -1,278 +0,0 @@ -import React, {Component} from 'react'; -import {Button, Layout, Input, Form} from 'antd'; -import axios from 'axios'; -import {setmiyah} from 'educoder'; -import mycompetotionchild from './mycompetotionchild.css'; -import {getHiddenName} from "../../../../user/account/AccountBasicEdit"; -import '../../../../courses/css/Courses.css' - -export const identityMap = {"teacher": "教师", "student": "学生", "professional": "专业人士"} - -class Mailboxvalidation extends Component { - constructor(props) { - super(props) - this.state = { - basicInfo: {}, - updating: '', - secondsFlag: false, - seconds: 60, - phonebool: false, - emailbool: false, - formationdata: [], - bank_account_editable: false, - leader: false, - bank_account: undefined, - certification: 1 - } - } - - componentDidMount() { - window.document.title = '竞赛'; - // console.log("3获取用户信息"); - // console.log(this.props); - } - - - // 绑定邮箱 - onEmailSubmit = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - let {id} = this.props.userdata; - let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; - if (reg.test(values.email)) { - let url = `/users/accounts/${id}/email_bind.json` - axios.post((url), { - email: values.email, - code: values.emailValidateCode - }).then((result) => { - if (result) { - this.props.showNotification("邮箱地址绑定成功!"); - this.hideUpdating(2); - this.props.getdata(id); - } - }).catch((error) => { - console.log(error); - }) - } else { - this.props.showNotification("请输入正确的邮箱地址"); - } - } - }) - } - //取消编辑 - hideUpdating = (i) => { - if (i === 1) { - this.props.hideUpdating(1); - } else if (i === 2) { - this.props.hideUpdating(2); - - - } else if (i === 3) { - - } - - } - - // 获取验证码 - getCode = (index) => { - let url = `/accounts/get_verification_code.json` - let login = ''; - let values = this.props.form.getFieldsValue(); - - if (index == 3) { - //绑定手机号码 - login = values.phone; - let reg = /^1\d{10}$/; - if (reg.test(login) == false) { - this.props.showNotification(`请先输入正确的手机号码`); - return; - } - } else if (index == 4) { - // 绑定邮箱 - login = values.email; - let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; - if (reg.test(login) == false) { - this.props.showNotification(`请先输入正确的邮箱地址`); - return; - } - } - let type = index; - if (!login) { - this.props.showNotification(`请先输入${index == 3 ? "手机号码" : "邮箱地址"}`); - return; - } - let smscode=setmiyah(login) - axios.get((url), { - params: { - login, type,smscode - } - }).then((result) => { - if (result) { - // 倒计时 - if(result.data.status===1){ - this.props.showNotification("验证码已发送,请注意查收"); - }else if(result.data.status===-2){ - this.props.showNotification(result.data.message); - } - - this.setState({ - secondsFlag: true - }) - this.remainTime(); - } - }).catch((error) => { - console.log(error); - }) - } - - // 获取验证码倒计时 - remainTime = () => { - this.setState({ - seconds: 60 - }) - this.timer = setInterval(() => { - let {seconds} = this.state; - let s = parseInt(seconds) - 1; - if (s > -1) { - this.setState({ - seconds: s - }) - } else { - this.setState({ - secondsFlag: false - }) - clearInterval(this.timer); - } - }, 1000) - } - - phonebools = () => { - this.setState({ - phonebool: true - }) - } - - emailbools = () => { - console.log("点击了邮箱"); - this.setState({ - emailbool: true - }) - } - - - render() { - const {getFieldDecorator} = this.props.form; - const {updating, seconds, secondsFlag, basicInfo, phonebool, emailbool, certification, formationdata, bank_account_editable, leader, bank_account} = this.state - console.log(emailbool); - return ( -
    - -
    - -
    - - {getFieldDecorator('email', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: basicInfo && basicInfo.mail ? '请输入要更换的新邮箱地址' : '请输入邮箱地址', - }], - })( - - )} - - - - {getFieldDecorator('emailValidateCode', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: '请输入邮箱收到的验证码', - }], - })( - - )} - - - -
    - - -
    - -
    -
    -
    - ) - } -} - -const Mailboxvalidations = Form.create({name: 'Mailboxvalidation'})(Mailboxvalidation); - -export default Mailboxvalidations; - diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Phonenumberverification.js b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Phonenumberverification.js deleted file mode 100644 index 0fe7e2bc..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/Phonenumberverification.js +++ /dev/null @@ -1,269 +0,0 @@ -import React, {Component} from 'react'; -import {Button, Layout, Input, Form} from 'antd'; -import axios from 'axios'; -import {setmiyah} from 'educoder'; -import mycompetotionchild from './mycompetotionchild.css'; -import {getHiddenName} from "../../../../user/account/AccountBasicEdit"; -import '../../../../courses/css/Courses.css' -import RealNameCertificationModal from "../../../../user/modal/RealNameCertificationModal"; - -export const identityMap = {"teacher": "教师", "student": "学生", "professional": "专业人士"} - -class Phonenumberverification extends Component { - constructor(props) { - super(props) - this.state = { - updating: '', - secondsFlag: false, - seconds: 60, - phonebool: false, - emailbool: false, - formationdata: [], - bank_account_editable: false, - leader: false, - bank_account: undefined, - certification: 1 - } - } - - componentDidMount() { - window.document.title = '竞赛'; - // console.log("获取用户信息"); - // console.log(this.props); - } - - - // 绑定手机 - onPhoneSubmit = () => { - this.props.form.validateFieldsAndScroll((err, values) => { - if (!err) { - let {id} = this.props.userdata; - let reg = /^1\d{10}$/; - if (reg.test(values.phone)) { - let url = `/users/accounts/${id}/phone_bind.json` - axios.post((url), { - phone: values.phone, - code: values.phoneValidateCode - }).then((result) => { - if (result) { - this.props.showNotification("手机号码绑定成功!"); - this.props.hideUpdating(1) - this.props.getdata(id); - } - }).catch((error) => { - console.log(error); - }) - } else { - this.props.showNotification("请输入有效的11位手机号码"); - } - } - }) - } - //取消编辑 - hideUpdating = (i) => { - if (i === 1) { - this.props.hideUpdating(1); - } else if (i === 2) { - this.props.hideUpdating(2); - - } else if (i === 3) { - - } - - } - - // 获取验证码 - getCode = (index) => { - let url = `/accounts/get_verification_code.json` - let login = ''; - let values = this.props.form.getFieldsValue(); - - if (index == 3) { - //绑定手机号码 - login = values.phone; - let reg = /^1\d{10}$/; - if (reg.test(login) == false) { - this.props.showNotification(`请先输入正确的手机号码`); - return; - } - } else if (index == 4) { - // 绑定邮箱 - login = values.email; - let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; - if (reg.test(login) == false) { - this.props.showNotification(`请先输入正确的邮箱地址`); - return; - } - } - let type = index; - if (!login) { - this.props.showNotification(`请先输入${index == 3 ? "手机号码" : "邮箱地址"}`); - return; - } - let smscode=setmiyah(login) - axios.get((url), { - params: { - login, type,smscode - } - }).then((result) => { - if (result) { - // 倒计时 - if(result.data.status===1){ - this.props.showNotification("验证码已发送,请注意查收"); - }else if(result.data.status===-2){ - this.props.showNotification(result.data.message); - } - this.setState({ - secondsFlag: true - }) - this.remainTime(); - } - }).catch((error) => { - console.log(error); - }) - } - - // 获取验证码倒计时 - remainTime = () => { - this.setState({ - seconds: 60 - }) - this.timer = setInterval(() => { - let {seconds} = this.state; - let s = parseInt(seconds) - 1; - if (s > -1) { - this.setState({ - seconds: s - }) - } else { - this.setState({ - secondsFlag: false - }) - clearInterval(this.timer); - } - }, 1000) - } - - phonebools = () => { - this.setState({ - phonebool: true - }) - } - - - render() { - const {getFieldDecorator} = this.props.form; - const {updating, seconds, secondsFlag, phonebool, emailbool, certification, formationdata, bank_account_editable, leader, bank_account} = this.state - const {basicInfo} = this.props - console.log(emailbool); - return ( -
    - -
    - -
    - - {getFieldDecorator('phone', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: `请输入要${basicInfo.phone ? '更换' : '绑定'}的手机号码`, - }], - })( - - )} - - - - {getFieldDecorator('phoneValidateCode', { - rules: [{ - // initialValue: this.state.cityDefaultValue, - required: true, - message: '请输入手机获取的验证码', - }], - })( - - )} - - - -
    - - -
    - -
    -
    -
    - ) - } -} - -const Phonenumberverifications = Form.create({name: 'Phonenumberverification'})(Phonenumberverification); - -export default Phonenumberverifications; - diff --git a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/mycompetotionchild.css b/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/mycompetotionchild.css deleted file mode 100644 index fd85606e..00000000 --- a/src/modules/competitions/Competitioncommon/CompetitionCommonChild/CompetitionContentspdfChild/mycompetotionchild.css +++ /dev/null @@ -1,314 +0,0 @@ -/*垂直布局 - - 一 - 二 - 三 -*/ -.flexdirectionjust { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - - -.directstwebkitflex { - display: flex; - display: -webkit-flex; - flex-direction: column; - align-items: center; -} - -.diredisplayitflex { - display: flex; - display: -webkit-flex; - align-items: center; -} - -/*垂直布局*/ -/*靠左侧 -一 二 三 四 五 六 七 八 -*/ -.flexdirection { - display: flex; - flex-direction: row; -} - -.flexdirections { - display: flex; - flex-direction: initial; -} - -/*靠左侧 -*/ - - -/*靠右侧八 七 六 五 四 三 二 一*/ -.flexdirectionss { - display: flex; - flex-direction: row-reverse; -} - - -/*垂直布局 -一 -二 -三 -四 -*/ -.flexdidirectionss { - display: flex; - flex-direction: column; -} - -/*垂直布局 -四 -三 -二 -一 -*/ -.flexdidireverses { - display: flex; - flex-direction: column-reverse; -} - -.fontcolorsysl { - color: #FF0000 -} - -.fontcolorsyslhei { - color: #000000 -} - -.fontcolorsyslhui { - color: #888888 -} - -.fontcolorsyslhui1 { - color: #666666; -} - -.fontcolorsysllan { - color: #4CACFF -} - -.fontcolorsysljin { - color: #DD7600 -} - -.w200 { - width: 200px; -} - -.w64 { - width: 64px; -} - -.w60 { - width: 60px; -} - -.w98 { - width: 98px; -} - -.myysllineheight { - line-height: 40px; -} - -.myyslminwidth { - min-width: 60px; -} - -.myyslminwidth276 { - width: 276px; -} - -.buttongo { - background: #E7E7E7; - border: 1px solid #E7E7E7; - width: 60px; - height: 30px; - border-radius: 4px; - color: #999999; - font-size: 16px; -} - -.buttongo2 { - background: #4CACFF; - border: 1px solid #4CACFF; - width: 64px; - height: 32px; - border-radius: 4px; - color: #FFFFFF; - font-size: 16px; -} - -.fontwenzi { - text-align: center; - line-height: 30px; -} - -.mt17 { - margin-top: 17px; -} - -.mt36 { - margin-top: 36px; -} - -.mt23 { - margin-top: 23px; -} - -.mt19 { - margin-top: 19px; -} - -.mt23 { - margin-top: 23px; -} - -.mt34 { - margin-top: 34px; -} - -.ml11 { - margin-left: 11px; -} - -.ml38 { - margin-left: 38px; -} - -.ml7 { - margin-left: 7px; -} - -.colorgreenlight { - color: #6EC76E -} - -.colorgreenorg { - color: #FF7300; -} - -.borcolors { - border: 1px solid #4CACFF; - - text-align: center; -} - -.mycompitcursor { - cursor: pointer; -} - -.basicForm { - background: #fff; - padding: 30px; - margin-bottom: 10px; - box-sizing: border-box; - width: 100%; - min-height: 390px; -} - -.basicForm .title { - font-size: 16px; - padding-left: 30px; - margin-bottom: 10px; -} - -.flexTable { - display: flex; - flex-direction: column; -} - -.flexRow { - display: flex; -} - -.mb15 { - margin-bottom: 15px !important; -} - -/* BUTTOn */ -.ant-btn { - border-radius: 2px; -} - -button.ant-btn.ant-btn-primary.grayBtn { - background: #CBCBCB; - border-color: #CBCBCB; -} - -.borderBottom { - border-bottom: 1px solid #4CACFF; -} - -/* form ---------------- START */ -.formItemInline { - display: flex; -} - -.formItemInline .ant-form-item-control-wrapper { - display: inline-block; -} - -.hideRequireTag .ant-form-item-required:before { - display: none; -} - - -/* .basicForm .ant-form-item-label { - width: 100px; - padding-right: 10px; -} - .basicForm .ant-form-item-label label { - color: #979797 - } */ - - -.courseNormalForm .ant-select-show-search { - height: 40px; -} - -.courseNormalForm .ant-select-auto-complete.ant-select .ant-input { - height: 40px; -} - -.courseNormalForm .ant-select-search__field__mirror { - height: 40px; -} - -.courseNormalForm .ant-input-lg { - height: 40px; -} - -.courseNormalForm .ant-select-selection--single { - height: 40px; -} - -.courseNormalForm .ant-select-auto-complete.ant-select .ant-select-selection--single { - height: 40px -} - -.courseNormalForm .ant-input-affix-wrapper { - height: 40px; -} - -/* 职业 */ -.courseNormalForm .ant-select-selection-selected-value { - line-height: 38px -} - -.courseNormalForm input { - height: 40px; -} - -.w300 { - width: 300px; -} - -.w56 { - width: 56px; -} diff --git a/src/modules/competitions/Competitions.js b/src/modules/competitions/Competitions.js deleted file mode 100644 index 704b85ef..00000000 --- a/src/modules/competitions/Competitions.js +++ /dev/null @@ -1,92 +0,0 @@ -import React, { Component } from 'react'; - -import { Redirect } from 'react-router'; - -import { Route, Link, Switch } from "react-router-dom"; - -import Loading from '../../Loading'; - -import Loadable from 'react-loadable'; -import { TPMIndexHOC } from '../tpm/TPMIndexHOC'; -import { CNotificationHOC } from '../courses/common/CNotificationHOC'; - -//新版竞赛首页 -const CompetitionsIndex = Loadable({ - loader: () => import('./Competitimain/CompetitionsIndex'), - loading: Loading, -}) - -//竞赛详情页 -const CompetitionCommon=Loadable({ - loader: () => import('./Competitioncommon/CompetitionCommon'), - loading: Loading, -}) - - -//战队详情 -const CompetitionTeams = Loadable({ - loader: () => import('./Competition_teams/Competitionteams'), - loading: Loading, -}) - -//团队竞赛报名 -const Registration = Loadable({ - loader: () => import('../competition/Registration'), - loading: Loading, -}); - -class Competitions extends Component { - constructor(props) { - super(props) - } - - componentDidMount(){ - - window.document.title = '竞赛'; - } - - render() { - - return ( -
    - - - - {/*新版竞赛战队详情*/} - () - } - > - - - {/*新版竞赛报名*/} - () - } - /> - - {/*新版竞赛详情页面*/} - () - } - > - - {/*新版竞赛首页*/} - () - } - > - - - -
    - ); - } -} - -export default CNotificationHOC() (TPMIndexHOC (Competitions)) ; \ No newline at end of file diff --git a/src/modules/home/index.jsx b/src/modules/home/index.jsx deleted file mode 100644 index 53021be8..00000000 --- a/src/modules/home/index.jsx +++ /dev/null @@ -1,79 +0,0 @@ -import React, { useEffect, useState, Fragment } from 'react' -import axios from 'axios' -import UpgradeModals from '../modals/UpgradeModals' -import ShixunCardList from '../../components/shixun-card-list' -import { TPMIndexHOC } from '../tpm/TPMIndexHOC' -import ListContainer from './list-container' -import { SnackbarHOC } from 'educoder' -import ShixunPathCard from '../paths/ShixunPathCard' -import { Carousel } from 'antd' -import { getUrl } from 'educoder' -import './index.scss' -import NavList from './nav-list' - -function Home({ mygetHelmetapi, user }) { - - const [resource, setResource] = useState({ - loading: true, - data: {}, - updata: null - }) - - - let shixuntype = false - let pathstype = false - if (mygetHelmetapi) { - let shixun = "/shixuns"; - let paths = "/paths"; - mygetHelmetapi.navbar.map(item => { - var reg = RegExp(item.link) - if (shixun.match(reg)) { - if (item.hidden === true) { - shixuntype = true - } - } - if (paths.match(reg)) { - if (item.hidden === true) { - pathstype = true - } - } - }) - } - - const { loading, updata, data } = resource - const { shixuns, subjects, images_url, reps } = data - - return ( - - {loading ? null : -
    -
    -
    - - {images_url.map(item => - banner - )} - -
    - {user && user.main_site ? : null} -
    - {updata ? : null} - {pathstype || subjects.length > 0 ? - - - - : null} - { - (shixuntype || shixuns.length > 0) ? - - - - : null - } -
    - } -
    - ) -} - -export default SnackbarHOC()(TPMIndexHOC(Home)) diff --git a/src/modules/home/index.scss b/src/modules/home/index.scss deleted file mode 100644 index a319bac3..00000000 --- a/src/modules/home/index.scss +++ /dev/null @@ -1,57 +0,0 @@ -.carousel-container { - margin: 30px auto 60px auto; - - img { - display: block; - max-width: 100%; - height: 350px; - } - - .slick-slide { - background: #364d79; - border-radius: 10px; - } - - a { - display: block; - } -} - -.nav-list-container { - position: relative; - margin: 0 auto; -} - -.black_nav_list li span a { - color: #fff; -} - -.black_nav_list li span a:hover { - color: #000; -} - -.black_nav_list li:hover span a { - color: #000; -} - -.black_nav_span { - display: block; - margin: 0px 20px; - border-bottom: 1px solid #4B4B4B; - padding-left: 8px; - color: #FAFAFA; -} - -.user_navlist_white a { - color: #989898 !important; -} - -.user_navlist_white .navlistpanel-line .little-titles a { - color: #000 !important; -} - - -.user_navlist_white { - max-height: 350px !important; - overflow-y: auto; -} \ No newline at end of file diff --git a/src/modules/home/list-container.jsx b/src/modules/home/list-container.jsx deleted file mode 100644 index 4de3adaa..00000000 --- a/src/modules/home/list-container.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { Link } from "react-router-dom" - -export default ({ children, title, titleEn, to }) => { - return ( -
    -
    -

    {title}

    -

    {titleEn}

    -
    - 更多 -
    - {children} -
    -
    - ) -} \ No newline at end of file diff --git a/src/modules/home/nav-list.jsx b/src/modules/home/nav-list.jsx deleted file mode 100644 index 93bf0daf..00000000 --- a/src/modules/home/nav-list.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react' -import { Link } from 'react-router-dom' -import { getImageUrl } from 'educoder' - -export default ({ list }) => { - return ( -
    -
    -
      - {list.map(item => -
    • - - - {item.name} - - - -
        - { - item.sub_repertoires.map((i) => { - return ( -
        -
        - {i.name} -
        - { - i.tags.map((t, e) => { - return ( - {t.name} - ) - }) - } -
        - ) - }) - } -
      -
    • - )} -
    -
    -
    - ) -} \ No newline at end of file diff --git a/src/modules/home/shixunsHome.js b/src/modules/home/shixunsHome.js deleted file mode 100644 index af387039..00000000 --- a/src/modules/home/shixunsHome.js +++ /dev/null @@ -1,610 +0,0 @@ -import React, { Component } from 'react'; - -import { Redirect } from 'react-router'; - -import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; - -import axios from 'axios'; - -import { TPMIndexHOC } from '../tpm/TPMIndexHOC'; - -import SiderBar from '../tpm/SiderBar'; - -import UpgradeModals from '../modals/UpgradeModals'; - -import { SnackbarHOC , getImageUrl, getcdnImageUrl,configShareForIndex} from 'educoder'; - -import { Slider ,Rating} from "@icedesign/base"; - -import './home.css'; - -import {Tooltip,Spin} from 'antd'; - -const $ = window.$; - -class ShixunsHome extends Component { - constructor(props) { - super(props) - this.state={ - homedatalist:undefined, - hometypepvisible:true - } - } - componentDidMount(){ - configShareForIndex() - const upsystem=`/users/system_update.json`; - axios.get(upsystem).then((response)=>{ - if(response.data){ - let updata=response.data; - this.setState({ - updata:updata - }) - } - }).catch((error)=>{ - console.log(error); - }) - let url=`/home/index.json`; - axios.get(url).then((response)=> { - if(response.status===200){ - this.setState({ - homedatalist:response.data, - hometypepvisible:false - }) - } - }).catch((error)=>{ - // console.log(error) - }); - } - - bannaronmousemove=()=>{ - $("#bannerrightimg").show(); - $("#bannerleftimg").show(); - } - - bannaronmouseout=()=>{ - $("#bannerrightimg").hide(); - $("#bannerleftimg").hide(); - } - render() { - - let {homedatalist,hometypepvisible} = this.state; - - const arrowStylel = { - left: "-76px", - width: "76px", - textAlign: "left", - height: "100%", - cursor: "pointer" - }; - - const arrowStyler = { - right: "-120px", - width: "76px", - textAlign: "left", - height: "100%", - cursor: "pointer" - }; - const noneStyler={ - display: "none" - } - const CustomNextArrow = props => { - return ( -
    - -
    - ); - }; - - const CustomPrevArrow = props => { - return ( -
    - -
    - ); - }; - - let homedatalistreps; - - if(homedatalist!=undefined){ - homedatalistreps=[]; - homedatalist.reps.map((item,key)=>{ - homedatalistreps.push(item) - }) - - } - const MyRate = ({ defaultValue, ...rest }) => { - let myValue = defaultValue; - return ; - }; - - let shixuntype=false; - let pathstype=false; - if(this.props&&this.props.mygetHelmetapi!=null){ - let shixun="/shixuns"; - let paths="/paths"; - this.props.mygetHelmetapi.navbar.map((item,key)=>{ - var reg = RegExp(item.link); - if(shixun.match(reg)){ - if(item.hidden===true){ - shixuntype=true - } - } - if(paths.match(reg)){ - if(item.hidden===true){ - pathstype=true - } - } - }) - } - - - return ( -
    - {this.state.updata===undefined?"":} - - {/*懒加载*/} - - {/**/} -
    - -
    -
    - {homedatalist===undefined?"": - } - prevArrow={} - autoplay - autoplaySpeed={5000} - animation={false} - pauseOnHover={true} - style={{width:"100%"}} - arrowPos="outer"> - {homedatalist.images_url.map((item, index) => ( -
    - - - -
    - ))} -
    - } - {this.props.user&&this.props.user.main_site===true?
    -
    -
      - {homedatalist === undefined ? "" :homedatalistreps.map((item,key)=>{ - return( -
    • - - - {item.name} - - - -
        - { - item.sub_repertoires.map((i,k)=>{ - return( -
        -
        - - {i.name} - -
        - { - i.tags.map((t,e)=>{ - return( - {t.name} - ) - }) - } - -
        - - ) - }) - } -
      -
    • - ) - }) - - } -
    -
    -
    :""} -
    - -
    - - {/*实训路径*/} - {pathstype===true||homedatalist===undefined?"":homedatalist.subjects.length===0?"":
    -
    -

    实践课程

    -

    TRAINING COURSE

    -
    - 更多 - -
    - - - {homedatalist===undefined?"":homedatalist.subjects.map((item,key)=>{ - if(key<8) - return( -
    - - {item.excellent === false ? "" : -
    - 开放课程 -
    } - -
    - {item.tag_name} - {/**/} -
    - -
    - -

    非试用内容,需要授权

    -
    - - - - - -
    -

    - - {item.name} - -

    - -

    - - - {item.stages_count} - - - - {/**/} - {/**/} - {/*{item.shixuns_count}*/} - {/**/} - {/**/} - - - - {item.members_count} - - - {item.level} - -

    - -
    -
    - ) - }) - } - -
    -
    } - - {/*精选实训 改为 开发社区*/} - {shixuntype===true||homedatalist===undefined?"":homedatalist.shixuns.length===0?"":
    -
    -

    实训项目

    -

    DEVELOPMENT COMMUNITY

    -
    - 更多 - -
    - - {homedatalist===undefined?"":homedatalist.shixuns.map((item,key)=>{ - return( -
    - -
    - {item.tag_name} - {/**/} -
    - { - item.is_jupyter===true? -
    -

    Jupyter

    - {/**/} -
    - :""} -
    - -

    非试用内容,需要授权

    -
    - - - - - -
    -

    - - {item.name} - -

    - -

    - - - - {item.score_info===null?"5分":item.score_info+"分"} -

    - -

    - - - - {item.challenges_count} - - - - {/**/} - {/**/} - {/*{item.exp}*/} - {/**/} - {/**/} - - - - {item.stu_num} - - - - {item.level} -

    - -
    -
    - ) - }) - } - - -
    -
    } - - - - {/*导师排行榜*/} - {/* { homedatalist !== undefined && homedatalist.teachers !== undefined && (*/} - {/* this.props.user&&this.props.user.main_site===true?
    */} - {/*
    */} - {/*
    */} - {/*

    导师排行榜

    */} - {/*

    MENTOR RANKING

    */} - {/*
    */} - - {/*
    */} - {/*
      */} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{*/} - - {/* if(key===1){*/} - {/* return(*/} - {/*
    • */} - {/* */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{*/} - {/* if(key===0){*/} - {/* return(*/} - {/*
    • */} - {/* */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{*/} - {/* if(key===2){*/} - {/* return(*/} - {/*
    • */} - {/* */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - {/*
    */} - {/*
    */} - {/*
      */} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{*/} - {/* if(key>2) {*/} - {/* return (*/} - {/*
    • */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - - - {/*
    */} - {/*
    */} - - - {/*
    */} - {/*
    :""*/} - {/* )}*/} - - {/*程序员排行榜*/} - {/*{ homedatalist !== undefined && homedatalist.students !== undefined && (*/} - {/* this.props.user&&this.props.user.main_site===true?
    */} - {/*
    */} - {/*
    */} - {/*

    程序员排行榜

    */} - {/*

    PROGRAMMER RANKING

    */} - {/*
    */} - {/*
    */} - {/*
      */} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.students.map((item,key)=>{*/} - {/* if(key===1){*/} - {/* return(*/} - {/*
    • */} - {/* */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.students.map((item,key)=>{*/} - {/* if(key===0){*/} - {/* return(*/} - {/*
    • */} - {/* */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.students.map((item,key)=>{*/} - {/* if(key===2){*/} - {/* return(*/} - {/*
    • */} - {/* */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - {/*
    */} - {/*
    */} - {/*
      */} - {/* {*/} - {/* homedatalist===undefined?"":homedatalist.students.map((item,key)=>{*/} - {/* if(key>2) {*/} - {/* return (*/} - {/*
    • */} - {/* */} - {/* */} - {/*

      {item.username}

      */} - {/*
      */} - {/*
    • */} - {/* )*/} - {/* }*/} - {/* })}*/} - - - {/*
    */} - {/*
    */} - {/*
    */} - {/*
    :""*/} - {/*)}*/} -
    -
    -
    - ); - } -} - -export default SnackbarHOC() (TPMIndexHOC ( ShixunsHome )); diff --git a/src/modules/home/tag2.png b/src/modules/home/tag2.png deleted file mode 100644 index 423d2f7e..00000000 Binary files a/src/modules/home/tag2.png and /dev/null differ diff --git a/src/modules/osshackathon/Osshackathon.css b/src/modules/osshackathon/Osshackathon.css deleted file mode 100644 index 227bd115..00000000 --- a/src/modules/osshackathon/Osshackathon.css +++ /dev/null @@ -1,156 +0,0 @@ -.registrationback{ - height: 368px; - width: 1200px; - -ms-flex-direction: column; - flex-direction: column; -} - -.textright{ - text-align: right; -} - -.textcenter{ - text-align: center; -} - -.Osshackathonfont{ - width: 80px; - height: 28px; - font-size: 20px; - font-weight:600; - color: rgba(5,16,26,1); - line-height: 28px; -} - -.Osshackathonfontlist{ - width:1188px; - font-size:14px; - font-weight:400; - color:rgba(102,102,102,1); - line-height:24px; -} -.OsshackathonCard{ - width:1200px; - min-height:150px; - background:rgba(248,248,248,1); - border:1px solid rgba(235,235,235,1); -} - -.OsshackathonCardtitle{ - font-size:24px; - font-weight:400; - color:rgba(5,16,26,1); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.ant-input::-webkit-input-placeholder{ - color: #999; - font-size: 14px; -} - -.ant-input:-moz-placeholder { - color: #999; - font-size: 14px; -} - -.ant-input::-moz-placeholder{ - color: #999; - font-size: 14px; -} - -.ant-input:-ms-input-placeholder{ - color: #999; - font-size: 14px; -} - -.Searchant-btn-primary .ant-btn-primary{ - background: #4CACFF; - border-color: #4CACFF; -} - -.Searchant-btn-primary .ant-input-group .ant-input{ - height:42px; -} - -.Breadcrumbfont{ - color:#4CACFF !important; -} - -.ant-breadcrumb-separator{ - color:#BCBCBC; -} - -.minheight50px{ - min-height: 50px; -} - -.borderDEDEDE{ - border-left:1px solid #DEDEDE; -} - -.pl80pt6{ - padding-top: 6px; - padding-left: 80px; -} - -.OsshackprimaryButton{ - width: 100%; - height: 45px; -} - -.OsshackprimaryButtonsyle{ - background: rgba(255,255,255,1) !important; - border: 1px solid rgba(76,172,255,1); - color: rgba(76,172,255,1); - line-height: 16px; - border-radius: unset; - box-shadow:none; -} - -.h45input input{ - height:45px; -} - -.width14bai{ - width: 14%; -} - -.Osshackprimaryfonttop{ - font-size: 20px; - color: rgba(5,16,26,1); - text-align: center; -} - -.Osshackathonmodelinput{ - width: 97% !important; - margin-left: 7px; -} -.Osshackathonmodelinput .ant-input::-webkit-input-placeholder{ - color: #999; - font-size: 14px; -} - -.Osshackathonmodelinput .ant-input::-moz-placeholder{color: #cccccc;font-size:14px;} -.Osshackathonmodelinput .ant-input::-webkit-input-placeholder{color: #cccccc;font-size:14px;} -.Osshackathonmodelinput .ant-input:-ms-input-placeholder{color: #cccccc;font-size:14px;} -.Osshackathonmodelinput .ant-input-group-addon { - color: #adadad !important; -} - -.iscursor{ - cursor: pointer; -} - -.issignup:hover, .issignup:focus { - color: #fff !important; - background-color: #40a9ff; - border-color: #40a9ff; -} - -.Osshackathon-btn-primary .ant-btn-primary:hover, .Osshackathon-btn-primary .ant-btn-primary:focus { - color: #fff !important; - background-color: #40a9ff; - border-color: #40a9ff; -} \ No newline at end of file diff --git a/src/modules/osshackathon/Osshackathon.js b/src/modules/osshackathon/Osshackathon.js deleted file mode 100644 index 6f723e66..00000000 --- a/src/modules/osshackathon/Osshackathon.js +++ /dev/null @@ -1,451 +0,0 @@ -import React, {Component} from 'react'; -import axios from 'axios'; -import {SnackbarHOC, WordsBtn,getImageUrl,markdownToHTML} from 'educoder'; -import {Row, Col,Input,Divider,Card,Button,Pagination,Breadcrumb,Icon,Spin} from 'antd'; -import { TPMIndexHOC } from '../tpm/TPMIndexHOC'; -import { CNotificationHOC } from '../courses/common/CNotificationHOC'; -import Osshackathonmd from './Osshackathonmd'; -import './Osshackathon.css'; -import Osshackathonmodel from "./Osshackathonmodel"; -const { Search } = Input; -class Osshackathon extends Component { - - constructor(props) { - super(props) - this.state = { - page:1, - limit:10, - search:undefined, - data:undefined, - hackathonedit:false, - Osshackathonmodeltype:false, - spinning:false, - opentitletype:true, - boxoffsetHeigh:0 - } - } - - componentDidMount() { - this.getosshackathonlist(); - window.document.title = '竞赛报名'; - } - - getosshackathon=(page,limit,search)=>{ - this.setState({ - spinning:true - }) - let url=`/osshackathon.json`; - axios.get(url,{params:{ - page:page, - limit:limit, - search:search, - }}).then((result)=>{ - if(result.status==200){ - this.setState({ - data:result.data, - spinning:false - }) - }else{ - this.setState({ - spinning:false - }) - } - }).catch((error)=>{ - this.setState({ - spinning:true - }) - }) - - } - - - getosshackathonlist=()=>{ - let {page,limit,search}=this.state; - this.setState({ - page:1, - search:undefined - }) - this.getosshackathon(1,limit,undefined) - } - - - componentDidUpdate = (prevProps,prevState) => { - if(prevState.data!=this.state.data){ - //防止陷入无限循环 - let box=document.getElementById("Osshackathonfontlists"); - if(box){ - this.setState({ - boxoffsetHeigh:box.offsetHeight - }) - } - } - } - - PaginationTask=(pageNumber)=>{ - let {hackathonedit}=this.state; - if(hackathonedit===true){ - this.props.showNotification(`请先保存或者关闭编辑状态`); - }else { - this.setState({ - page: pageNumber - }) - let {page, limit, search} = this.state; - this.getosshackathon(pageNumber, limit, search) - } - } - - hackathonedit=(id)=>{ - //管理员编辑title - this.setState({ - hackathonedit:true - }) - } - - hidehackathonedit=()=>{ - this.setState({ - hackathonedit:false - }) - } - - Signupentry=(id)=>{ - // 用户报名 - if(this.props.checkIfLogin()===false){ - this.props.showLoginDialog() - return - } - if(this.props.checkIfProfileCompleted()===false){ - this.props.showProfileCompleteDialog() - return - } - //判断是否绑定邮箱 - - if(this.props.user.email===null&&this.props.user.phone===null){ - this.props.showhideAccountPhoneemailDialog() - return - } - - this.props.confirm({ - content: `是否确认报名?`, - onOk: () => { - this.Signupentrys(id) - } - }) - - - } - Signupentrys=(id)=>{ - let url=`/osshackathon/${id}/entry.json`; - axios.post(url - ).then((response) => { - if(response.data.status===0){ - this.getosshackathonlist() - this.props.showNotification(`报名成功,预祝您夺得桂冠`); - } - }).catch((error) => { - console.log(error) - }) - } - - editSignupentry=(id,name,description)=>{ - let {hackathonedit}=this.state; - if(hackathonedit===true){ - this.props.showNotification(`请先保存或者关闭编辑状态`); - }else{ - // 管理员编辑项目 - this.setState({ - Osshackathonmodeltype:true - }) - if(id===undefined){ - this.setState({ - modelid:undefined, - modelname:undefined, - modeldescription:undefined - }) - }else{ - this.setState({ - modelid:id, - modelname:name, - modeldescription:description - }) - } - } - - } - - hideeditSignupentry=(id)=>{ - // 管理员取消项目 - this.setState({ - Osshackathonmodeltype:false - }) - } - - - delSignupentry=(id)=>{ - // 管理员删除项目 - let {hackathonedit}=this.state; - if(hackathonedit===true){ - this.props.showNotification(`请先保存或者关闭编辑状态`); - }else { - this.props.confirm({ - content: `是否确认删除该项目?`, - onOk: () => { - this.delSignupentrys(id) - } - }) - } - } - delSignupentrys=(id)=>{ - let url=`/osshackathon/${id}.json`; - axios.delete(url) - .then((response) => { - if (response.data.status == 0) { - // {"status":1,"message":"删除成功"} - this.getosshackathonlist(); - this.props.showNotification(`删除成功`); - } - }) - .catch(function (error) { - console.log(error); - }); - - } - - - onsearchvalue=(value)=>{ - let {hackathonedit}=this.state; - if(hackathonedit===true){ - this.props.showNotification(`请先保存或者关闭编辑状态`); - }else { - this.setState({ - search:value - }) - if(value.length>300){ - this.props.showNotification(`搜索字数大于300个字`); - } - let {page,limit,search}=this.state; - this.getosshackathon(page,limit,value) - } - - } - - onsetsearchvalue=(e)=>{ - - this.setState({ - search:e.target.value - }) - } - - opentitle=()=>{ - this.setState({ - opentitletype:false - }) - } - render() { - let {page,data,hackathonedit,opentitletype}=this.state; - - return ( -
    - - -
    - -
    - - {this.props.user&&this.props.user.admin===true? - -
    - this.onsetsearchvalue(e)} - onSearch={value => this.onsearchvalue(value)} - /> - - - -
    - 报名总数:{data&&data.hackathon.hackathon_users_count} 个 -
    - - - :""} - - {hackathonedit===true?"": - - {data&&data.hackathon.name} - - {this.props.user&&this.props.user.admin===true?- - :""} - } - {hackathonedit===true?"": } - - {hackathonedit===true?"":} - - {opentitletype===true?:""} - {hackathonedit===true?"":

    - {data&&data.hackathon.description===null?"":

    } -

    } - - {opentitletype===true&&this.state.boxoffsetHeigh===180?this.opentitle()} className={"pointer Breadcrumbfont"}>展开阅读全文:""} - - {hackathonedit===true?this.getosshackathonlist()} - hidehackathonedit={()=>this.hidehackathonedit()} - {...this.props} - {...this.state} - />:""} - {this.state.Osshackathonmodeltype===true?this.getosshackathonlist()} - hideeditSignupentry={()=>this.hideeditSignupentry()} - {...this.props} - {...this.state} - />:""} - {this.props.user&&this.props.user.admin===true? -
    - - - :""} - {/*学生身份*/} - { - this.props.user&&this.props.user.admin===false?data&&data.hacks.length==0?"":data&&data.hacks.map((item,key)=>{ - return( - - - - {item.name} - - - - 报名人数:{item.hack_users_count} - {item.entry_info===true?:} - - -

    {item.description}

    - - ) - }):"" - } - - - - {/*教师身份*/} - {this.props.user&&this.props.user.admin===true?:""} - { - this.props.user&&this.props.user.admin===true?data&&data.hacks.length==0?"":data&&data.hacks.map((item,key)=>{ - return( - - - - {item.name} - - - - this.editSignupentry(item.id,item.name,item.description)}>编辑 - this.delSignupentry(item.id)}>删除 - - - - - - -
    - -
    -
    {item.hack_users_count}
    - - - - - -
    报名数
    - - - - - - {item.description} - - - - - - )}):"" - } - - - {data&&data.hacks_count>10?data&&data.hacks.length===0?"":
    - -
    :""} - - - - - ) - } - -} - - - -export default CNotificationHOC() (TPMIndexHOC (Osshackathon)) ; \ No newline at end of file diff --git a/src/modules/osshackathon/Osshackathonmd.js b/src/modules/osshackathon/Osshackathonmd.js deleted file mode 100644 index 7a1680e5..00000000 --- a/src/modules/osshackathon/Osshackathonmd.js +++ /dev/null @@ -1,112 +0,0 @@ -import React, { Component } from 'react'; -import {Button, Card, Row, Col ,Upload,Icon,message,Tabs,Form,Input} from 'antd'; -import axios from 'axios'; -import {getImageUrl,getUrl} from 'educoder'; -import TPMMDEditor from '../tpm/challengesnew/TPMMDEditor'; -class Osshackathonmd extends Component{ - constructor(props) { - super(props) - this.contentMdRef = React.createRef(); - this.state={ - title_num: 0, - title_value: undefined - } - } - componentDidUpdate =(prevState)=>{ - // if(prevState!=this.props){ - // let url=`/osshackathon/edit_hackathon.json`; - // axios.get(url).then((result)=>{ - // if(result.status==200){ - // this.setState({ - // title_value:result.data.name - // }) - // this.contentMdRef.current.setValue(result.data.description); - // } - // }) - // } - } - componentDidMount(){ - let url=`/osshackathon/edit_hackathon.json`; - axios.get(url).then((result)=>{ - if(result.status==200){ - this.setState({ - title_value:result.data.name - }) - this.contentMdRef.current.setValue(result.data.description === null ? "" : result.data.description); - } - }) - } - - - // 输入title - changeTitle = (e) => { - // title_num: 60 - parseInt(e.target.value.length), - this.setState({ - title_num: e.target.value.length, - title_value: e.target.value - }) - - } - handleSubmit = () => { - let {title_value}=this.state; - const mdContnet = this.contentMdRef.current.getValue().trim(); - // if(mdContnet.length>10000){ - // this.props.showNotification("内容超过10000个字"); - // return - // } - - let url=`/osshackathon/update_hackathon.json`; - axios.post(url,{ - name:title_value, - description:mdContnet, - } - ).then((response) => { - if(response.data.status===0){ - this.props.getosshackathon() - this.props.hidehackathonedit() - this.props.showNotification(`提交成功`); - } - }).catch((error) => { - console.log(error) - }) - - } - render() { - - - // console.log(this.props.tabkey) - // console.log(chart_rules) - - return ( -
    -
    - - - - - - - - - - - - -
    - - ) - } -} -export default Osshackathonmd; diff --git a/src/modules/osshackathon/Osshackathonmodel.js b/src/modules/osshackathon/Osshackathonmodel.js deleted file mode 100644 index 99ab4df0..00000000 --- a/src/modules/osshackathon/Osshackathonmodel.js +++ /dev/null @@ -1,217 +0,0 @@ -import React, { Component } from 'react'; -import {Button, Card, Row, Col ,Upload,Icon,message,Tabs,Form,Input,Modal} from 'antd'; -import axios from 'axios'; -import {getImageUrl,getUrl,WordNumberTextarea} from 'educoder'; - -class Osshackathonmodel extends Component{ - constructor(props) { - super(props) - this.state={ - title_num: 0, - title_value: undefined, - Textarea_comment:undefined - } - } - componentDidUpdate =(prevState)=>{ - // if(prevState!=this.props){ - // let name=this.props&&this.props.modelname; - // let mdvalue=this.props&&this.props.modeldescription; - // this.setState({ - // title_value:name, - // Textarea_comment:mdvalue - // }) - // } - } - componentDidMount(){ - if(this.props.modelid===undefined){ - this.setState({ - title_value:undefined, - Textarea_comment:undefined - }) - }else{ - let url=`/osshackathon/${this.props.modelid}/edit.json`; - axios.get(url).then((result)=>{ - if(result.status==200){ - this.setState({ - title_value:result.data.name, - Textarea_comment:result.data.description - }) - } - }) - } - } - - handleSubmit = () => { - let {title_value,Textarea_comment}=this.state; - // if(mdContnet.length>10000){ - // this.props.showNotification("内容超过10000个字"); - // return - // } - // - - if(this.props.modelid===undefined){ - let url=`/osshackathon.json`; - axios.post(url,{ - name:title_value, - description:Textarea_comment, - } - ).then((response) => { - if(response.data.status===0){ - - this.props.getosshackathon() - this.props.hideeditSignupentry() - this.props.showNotification(`提交成功`); - } - }).catch((error) => { - console.log(error) - }) - }else{ - let url=`/osshackathon/${this.props.modelid}.json` - axios.put(url,{ - name:title_value, - description:Textarea_comment, - } - ).then((response) => { - if(response.data.status===0){ - - this.props.getosshackathon() - this.props.hideeditSignupentry() - this.props.showNotification(`提交成功`); - } - }).catch((error) => { - console.log(error) - }) - } - - } - - changeTitle=(e)=>{ - this.setState({ - title_value:e.target.value, - title_num:e.target.value.length, - }) - } - - Textarea_comment=(e)=>{ - this.setState({ - Textarea_comment:e.target.value, - }) - } - render() { - let {textareavaltype}=this.state; - // console.log(this.props.tabkey) - // console.log(this.props.Osshackathonmodeltype) - - return ( -
    - - - - -
    - -
    -

    - 名称 -

    - - this.changeTitle(e)} - className={"Osshackathonmodelinput"} - style={{"width": "100%"}} maxLength="60" - addonAfter={String(this.state.title_value === undefined || this.state.title_value === null ? 0 : this.state.title_value.length) + "/60"} - /> - -

    - 描述 -

    - - this.Textarea_comment(e)} - value={this.state.Textarea_comment} - maxlength={250} - /> - -
  • 评阅内容至少有一个不为空
  • -
    - -
    -
    - -
    - - ) - } -} -export default Osshackathonmodel; diff --git a/src/modules/recruitment/EditResume.js b/src/modules/recruitment/EditResume.js deleted file mode 100644 index 259767e5..00000000 --- a/src/modules/recruitment/EditResume.js +++ /dev/null @@ -1,410 +0,0 @@ -import React, { Component } from 'react'; -import { SnackbarHOC ,CNotificationHOC} from 'educoder'; -import {Route,Switch} from 'react-router-dom'; -import Loadable from 'react-loadable'; -import Loading from '../../Loading'; -import axios from 'axios'; -import { TPMIndexHOC } from '../tpm/TPMIndexHOC'; -import locale from 'antd/lib/date-picker/locale/zh_CN'; -import Bottomsubmit from "../modals/Bottomsubmit"; -import Educationitem from "./Resume/Educationitem" -import WorkItem from "./Resume/WorkItem" - - - -import { Input ,Form,Radio,Upload,DatePicker,Select,Button,Icon} from 'antd'; - -const Option = Select.Option; -const RadioGroup=Radio.Group; -const TextArea = Input.TextArea; -class EditResume extends Component{ - constructor(props){ - super(props); - this.state={ - - } - } - - componentDidMount=()=>{ - - } - - - submit=()=>{ - this.props.form.validateFieldsAndScroll((err, values) => { - if(!err){ - console.log(values) - } - }) - } - - cancel=()=>{ - if(this.Educationitem){ - this.Educationitem.cancel() //调用子组件的dream方法 - } - } - - education=(educationarray)=>{ - console.log(educationarray) - } - - workcancel=()=>{ - if(this.WorkItem){ - this.WorkItem.cancel() //调用子组件的dream方法 - } - } - - workeducation=(educationarray)=>{ - console.log(educationarray) - } - - - render(){ - const {getFieldDecorator} = this.props.form; - const uploadButton = ( -
    -
    上传照片
    -
    - ); - const formItemLayout = { - labelCol: { - xs: { span: 24 }, - sm: { span: 3 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 21 }, - }, - }; - - const props = { - name: 'file', - action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76', - headers: { - authorization: 'authorization-text', - }, - onChange(info) { - if (info.file.status !== 'uploading') { - console.log(info.file, info.fileList); - } - if (info.file.status === 'done') { - //message.success(`${info.file.name} file uploaded successfully`); - } else if (info.file.status === 'error') { - //message.error(`${info.file.name} file upload failed.`); - } - }, - }; - // const formItemLayoutWithOutLabel = { - // wrapperCol: { - // xs: { span: 2, offset: 0 }, - // sm: { span: 22, offset: 4 }, - // }, - // }; - return( -
    -
    -
    - - {getFieldDecorator('name', { - rules: [{required: true, message: "姓名不能为空"}], - })( - - )} - - - {getFieldDecorator('sex', { - rules: [{ - required: true, - message: '请选择性别', - }], - })( - - - - - )} - - -
    -
    只支持JPG格式,大小不要超过500k
    - - {uploadButton} - -
    -
    - - - {getFieldDecorator('birth_on', { - rules: [{ - required: true, - message: '请选择出生日期', - }], - })( - - )} - - - {getFieldDecorator('mobile', { - rules: [{required: true, message: "不能为空"}], - })( - - )} - - - {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}], - })( - - 全职 - 兼职 - 实习 - - - )} - - -
    - - {getFieldDecorator('edu_bg', { - rules: [{required: true, message: "学历不能为空"}], - })( - - )} - - - - {getFieldDecorator('edu_category', { - rules: [{required: true, message: "学历类型不能为空"}], - })( - - )} - -
    - - {getFieldDecorator('begin_on', { - rules: [{ - required: true, - message: '请选择开始日期', - }], - })( - - )} - - - - {getFieldDecorator('end_on', { - rules: [{ - required: true, - message: '请选择结束日期', - }], - })( - - )} - - - - {getFieldDecorator(`school`, { - validateTrigger: ['onChange', 'onBlur'], - rules: [ - { - required: true, message: "不能为空" - }, - ], - })()} - - this.Educationitem=c}/> - -
    - - - - {getFieldDecorator('begin_on', { - rules: [{ - required: true, - message: '请选择开始日期', - }], - })( - - )} - - - - {getFieldDecorator('end_on', { - rules: [{ - required: true, - message: '请选择结束日期', - }], - })( - - )} - - - - {getFieldDecorator(`school`, { - validateTrigger: ['onChange', 'onBlur'], - rules: [ - { - required: true, message: "不能为空" - }, - ], - })()} - - - - {getFieldDecorator(`des`, { - validateTrigger: ['onChange', 'onBlur'], - 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 ( - - -
    - )} - -
    - {dataSource && dataSource.length > 0 ? ( - this.props.paginationonChange(e)} - pageSize={limit} - total={count} - style={{ marginTop: 30, marginBottom: 20 }} - > - ) : ( - "" - )} -
    - - ); - } -} - -export default Tablereacts; diff --git a/src/modules/recruitment/tablist/component/Tabrecru.js b/src/modules/recruitment/tablist/component/Tabrecru.js deleted file mode 100644 index f8d63dd1..00000000 --- a/src/modules/recruitment/tablist/component/Tabrecru.js +++ /dev/null @@ -1,199 +0,0 @@ -import React, { Component, Fragment } from "react"; -import { Link } from "react-router-dom"; -import "../../recrulistcss/recrulistcss.scss"; -import { Tabs } from "antd"; -import axios from "axios"; -import qs from "qs"; -import Certifiedprofessional from "../../../modals/Certifiedprofessional"; -const { TabPane } = Tabs; -class Tabrecru extends Component { - constructor(props) { - super(props); - const { tab } = qs.parse(this.props.location.search.substr(1)); - this.state = { - defaultActiveKeys: tab || 0, - certifiedprofessionalModalVisible: false, - }; - } - componentDidMount() { - this.fetchResumeDetail(); - } - callback = (key) => { - this.setState({ - defaultActiveKeys: key + "", - }); - this.props.callbacks(key + ""); - }; - fetchResumeDetail = () => { - const url = `/users/resume.json`; - axios - .get(url) - .then((response) => { - if (response.data.status !== -2 && response.data) { - this.setState({ hasResume: true }); - } - }) - .catch((error) => { - console.log(error); - }); - }; - handleCertifiedprofessionalModalVisible = (flag) => { - this.setState({ certifiedprofessionalModalVisible: flag }); - }; - render() { - let { defaultActiveKeys } = this.state; - let tabs = defaultActiveKeys + ""; - //发布职位权限 - let authJobs = false; - let user = { - admin: false, - business: false, - is_teacher: false, - professional_certification: false, - identity: "", //专业人士 identity=professional - }; - - const { - admin, - business, - is_teacher, - professional_certification, - identity, - } = this.props.user || user; - - authJobs = admin || business || is_teacher || identity === "professional"; - - const GoResumeButton = () => { - return ( - - ); - }; - const AddJobButton = () => { - return ( - - ); - }; - return ( -
    - {tabs === "0" ? ( - - ) : ( - - )} -
    - - - {authJobs ? : null} - - -
    - {tabs === "0" ? ( - authJobs ? ( - - -
    - -
    -
    - ) : ( - - ) - ) : tabs === "1" ? ( - - ) : ( - - )} -
    -
    - { - this.handleCertifiedprofessionalModalVisible(false); - }} - /> -
    - ); - } -} - -export default Tabrecru; diff --git a/src/modules/recruitment/tablist/tableColumnsConfig.js b/src/modules/recruitment/tablist/tableColumnsConfig.js deleted file mode 100644 index e1cd6278..00000000 --- a/src/modules/recruitment/tablist/tableColumnsConfig.js +++ /dev/null @@ -1,406 +0,0 @@ -import React from "react"; -import { Tooltip, Button, Modal } from "antd"; -import { Link } from "react-router-dom"; - -const oncell = () => { - return { - style: { - maxWidth: 150, - overflow: "hidden", - whiteSpace: "nowrap", - textOverflow: "ellipsis", - }, - }; -}; - -export const columnsConfig = { - "0": [ - { - title: "职位名称", - dataIndex: "name", - key: "name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布者单位", - dataIndex: "department", - key: "department", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "工作地点", - dataIndex: "city", - key: "city", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "薪资范围", - dataIndex: "salary", - key: "salary", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布时间", - dataIndex: "updated_at", - key: "updated_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - ], - "1": { - drafted: [ - { - title: "职位名称", - dataIndex: "name", - key: "name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布者", - dataIndex: "user_name", - key: "user_name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "创建时间", - dataIndex: "created_at", - key: "created_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - ], - published: [ - { - title: "职位名称", - dataIndex: "name", - key: "name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布者", - dataIndex: "user_name", - key: "user_name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "更新时间", - dataIndex: "updated_at", - key: "updated_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "投递人数", - dataIndex: "apply_count", - key: "apply_count", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - - {text} - - - ), - }, - ], - rejected: [ - { - title: "职位名称", - dataIndex: "name", - key: "name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布者", - dataIndex: "user_name", - key: "user_name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "创建时间", - dataIndex: "created_at", - key: "created_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "未通过原因", - dataIndex: "reject_reason", - key: "reject_reason", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - ], - offline: [ - { - title: "职位名称", - dataIndex: "name", - key: "name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布者", - dataIndex: "user_name", - key: "user_name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "创建时间", - dataIndex: "created_at", - key: "created_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "下线时间", - dataIndex: "updated_at", - key: "updated_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "投递人数", - dataIndex: "apply_count", - key: "apply_count", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - - {text} - - - ), - }, - ], - }, - "2": [ - { - title: "职位名称", - dataIndex: "name", - key: "name", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布者单位", - dataIndex: "company", - key: "company", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "工作地点", - dataIndex: "city", - key: "city", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "薪资范围", - dataIndex: "salary", - key: "salary", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "发布时间", - dataIndex: "publish_at", - key: "publish_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "投递时间", - dataIndex: "apply_at", - key: "apply_at", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text} - - ), - }, - { - title: "是否看简历", - dataIndex: "is_viewd", - key: "is_viewd", - align: "center", - className: "edu-txt-center font-14", - onCell: oncell, - render: (text, record) => ( - - {text ? "是" : "否"} - - ), - }, - ], -}; -export default columnsConfig; diff --git a/src/modules/recruitment/util/Button.js b/src/modules/recruitment/util/Button.js deleted file mode 100644 index 5c43fdb3..00000000 --- a/src/modules/recruitment/util/Button.js +++ /dev/null @@ -1,14 +0,0 @@ -import styled from 'styled-components'; -import { pointerMixin, alignTextMixin } from './cssMixin'; - -export const TextButton = styled.div` - color:${p => p.color}; - font-size:14px; - font-family:MicrosoftYaHei; - ${pointerMixin} -`; - -export const BtnBase = styled.div` - ${alignTextMixin} - ${pointerMixin} -`; \ No newline at end of file diff --git a/src/modules/recruitment/util/GeneralButton.js b/src/modules/recruitment/util/GeneralButton.js deleted file mode 100644 index 6fda2e32..00000000 --- a/src/modules/recruitment/util/GeneralButton.js +++ /dev/null @@ -1,53 +0,0 @@ -import { BtnBase } from "./Button"; -import styled from 'styled-components'; -import React from "react"; - -const Button = styled(BtnBase)` - width:90px; - border-radius:5px; - font-size:16px; - font-family:MicrosoftYaHei; - color:rgba(255,255,255,1); - margin-left:20px; - margin-right:20px; -`; -const Ok = styled(Button)` - background:rgba(76,172,255,1); -`; -export const OkBtn = (props) => 确定; -const Cancel = styled(Button)` - background:rgba(204,204,204,1); -`; -export const SaveBtn = (props) => 保存; - -export const CancelBtn = (props) => 取消; -export const CenterBtnGrp = styled.div` - margin:10px auto; - display:flex; - justify-content: center; -`; - -const OutlineBtn = styled.div` - min-width: 150px; - height: 46px; - border-radius: 28px; - border:1px solid ${p => p.isSelected ? "rgba(76,172,255,1)" : "rgba(221,221,221,1)"}; - color:${p => p.isSelected ? "rgba(76,172,255,1)" : "rgba(51,51,51,1)"}; - font-size: 14px; - font-family: MicrosoftYaHei; - margin-top: 20px; - margin-left: 47.5px; - &:hover { - cursor: pointer; - } - display: flex; - justify-content: center; - align-items: center; - text-align:center; - padding-left:15px; - padding-right:15px; -`; - -export const JobBtn = ({ children, ...props }) => { - return {children}; -} diff --git a/src/modules/recruitment/util/Layout.js b/src/modules/recruitment/util/Layout.js deleted file mode 100644 index d6165702..00000000 --- a/src/modules/recruitment/util/Layout.js +++ /dev/null @@ -1,7 +0,0 @@ -import styled from "styled-components"; -import React from "react"; - -export const FullScreen = styled.div` - min-width: 100vw; - min-height: 100vh; -`; diff --git a/src/modules/recruitment/util/Loading.js b/src/modules/recruitment/util/Loading.js deleted file mode 100644 index 4a233f35..00000000 --- a/src/modules/recruitment/util/Loading.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import { Spin } from 'antd'; -import styled from 'styled-components'; -import { allCenterMixin } from './cssMixin'; - -const Mid = styled.div` - width:100%; - height:100%; - ${allCenterMixin} -`; - -export default () => ; diff --git a/src/modules/recruitment/util/Modal.js b/src/modules/recruitment/util/Modal.js deleted file mode 100644 index 7841152c..00000000 --- a/src/modules/recruitment/util/Modal.js +++ /dev/null @@ -1,22 +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; -`; -const Title = styled.div` - font-size:18px; - width:100%; - font-family:MicrosoftYaHeiSemibold; - color:rgba(51,51,51,1); - text-align:center; -`; - -//visible,title,onCancel,width -export default ({ children, title, ...props }) => { - return {title}} closable={false} {...props} maskClosable={false} keyboard={false}> - {children} - ; -}; diff --git a/src/modules/recruitment/util/Nav.js b/src/modules/recruitment/util/Nav.js deleted file mode 100644 index ed26ef20..00000000 --- a/src/modules/recruitment/util/Nav.js +++ /dev/null @@ -1,22 +0,0 @@ -import styled from 'styled-components'; -import React from "react"; -import { Breadcrumb } from 'antd'; -import { betweenMixin } from "./cssMixin"; -import { TextButton } from './Button'; - -const Nav = styled.div` - width:1200px; - margin:0 auto; - font-size:12px; - font-family:MicrosoftYaHei; - padding-top:20px; - padding-bottom:20px; - ${betweenMixin} -`; -export default ({ breadcrunmb, back }) => ; - diff --git a/src/modules/recruitment/util/cssMixin.js b/src/modules/recruitment/util/cssMixin.js deleted file mode 100644 index 027e0cc8..00000000 --- a/src/modules/recruitment/util/cssMixin.js +++ /dev/null @@ -1,24 +0,0 @@ -import { css } from 'styled-components'; - -export const pointerMixin = css` - &:hover{ - cursor:pointer; - } -`; -export const betweenMixin = css` - display:flex; - justify-content:space-between; - align-items:center; -`; - -export const alignTextMixin = css` - height:${p => p.height}; - text-align:center; - line-height:${p => p.height}; -`; - -export const allCenterMixin = css` - display:flex; - justify-content:center; - align-items:center; -`; \ No newline at end of file diff --git a/src/modules/recruitment/util/hooks.js b/src/modules/recruitment/util/hooks.js deleted file mode 100644 index 1c315318..00000000 --- a/src/modules/recruitment/util/hooks.js +++ /dev/null @@ -1,65 +0,0 @@ -import { useState, useCallback, useEffect, useRef } from "react"; - -export function useToggle(init = false) { - const [bool, setBool] = useState(init); - const toggle = useCallback(() => { - setBool((old) => !old); - }, []); - return [bool, toggle]; -} - -export function useForceUpdate() { - const [_, setVer] = useState(0); - return useCallback(() => { - setVer((v) => v + 1); - }, []); -} - -export function useMap(canAdd, canRemove = () => true) { - const mapRef = useRef(new Map()); - const forceUpdate = useForceUpdate(); - const add = useCallback((key, item) => { - if (!canAdd(mapRef.current)) { - return; - } - mapRef.current.set(key, item); - forceUpdate(); - }, []); - const remove = useCallback((key) => { - mapRef.current.delete(key); - forceUpdate(); - }, []); - return { map: mapRef.current, add, remove }; -} - -export function useLoaded(promiseFac, dependsLst) { - const [isLoaded, setLoaded] = useState(false); - const dataRef = useRef(null); - useEffect(() => { - const f = async () => { - dataRef.current = await promiseFac(...dependsLst); - setLoaded(true); - }; - f(); - return () => { - setLoaded(false); - }; - }, dependsLst); - return { isLoaded, data: dataRef.current }; -} - -export function useSet(canAdd = () => true) { - const setRef = useRef(new Set()); - const forceUpdate = useForceUpdate(); - const add = useCallback((key) => { - if(canAdd(setRef.current)){ - setRef.current.add(key); - forceUpdate(); - } - }, []); - const remove = useCallback((key) => { - setRef.current.delete(key); - forceUpdate(); - }, []); - return { set: setRef.current, add, remove }; -}