diff --git a/app/controllers/admins/base_controller.rb b/app/controllers/admins/base_controller.rb index f90c8a1ed..9a4a25013 100644 --- a/app/controllers/admins/base_controller.rb +++ b/app/controllers/admins/base_controller.rb @@ -10,6 +10,7 @@ class Admins::BaseController < ApplicationController before_action :require_login, :require_admin! after_action :rebind_event_if_ajax_render_partial + skip_before_action :check_sign private diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index 9630394b4..b9a07ba1e 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -61,7 +61,7 @@ class Admins::UsersController < Admins::BaseController private def update_params - params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id + params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id is_shixun_marker mail phone location location_city school_id department_id admin business is_test password professional_certification authentication]) end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 634209570..4faa42107 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -23,17 +23,21 @@ class ApplicationController < ActionController::Base # 所有请求必须合法签名 def check_sign - Rails.logger.info("66666 #{params}") - if params[:client_key].present? - Rails.logger.info("111111 #{params[:client_key]}") - Rails.logger.info("00000 #{params[:timestamp]}") - timestamp = params[:timestamp] - sign = Digest::MD5.hexdigest("#{OPENKEY}#{timestamp}") - Rails.logger.info("2222 #{sign}") - tip_exception(501, "请求不合理") if sign != params[:client_key] - else - tip_exception(501, "请求不合理") - end + # Rails.logger.info("66666 #{params}") + # suffix = request.url.split(".").last + # suffix_arr = ["xls", "xlsx"] # excel文件先注释 + # unless suffix_arr.include?(suffix) + # if params[:client_key].present? + # randomcode = params[:randomcode] + # tip_exception(501, "请求不合理") unless (Time.now.to_i - randomcode.to_i).between?(0,5) + # + # sign = Digest::MD5.hexdigest("#{OPENKEY}#{randomcode}") + # Rails.logger.info("2222 #{sign}") + # tip_exception(501, "请求不合理") if sign != params[:client_key] + # else + # tip_exception(501, "请求不合理") + # end + # end end # 全局配置参数 @@ -42,6 +46,12 @@ class ApplicationController < ActionController::Base EduSetting.get(name) end + def shixun_marker + unless current_user.is_shixun_marker? || current_user.admin_or_business? + tip_exception(403, "..") + end + end + # 实训的访问权限 def shixun_access_allowed if !current_user.shixun_permission(@shixun) diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 5fc81c5d5..e0dd71467 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -5,6 +5,7 @@ class AttachmentsController < ApplicationController before_action :require_login, :check_auth, except: [:show] before_action :find_file, only: %i[show destroy] before_action :attachment_candown, only: [:show] + skip_before_action :check_sign, only: [:show, :create] include ApplicationHelper diff --git a/app/controllers/departments_controller.rb b/app/controllers/departments_controller.rb index 5e82b2c51..73cb19156 100644 --- a/app/controllers/departments_controller.rb +++ b/app/controllers/departments_controller.rb @@ -1,4 +1,6 @@ class DepartmentsController < ApplicationController + skip_before_action :check_sign + def for_option render_ok(departments: current_school.departments.without_deleted.select(:id, :name).as_json) end diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb index 395e536f4..e8554300c 100644 --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -1,6 +1,10 @@ class MainController < ApplicationController skip_before_action :check_sign + def first_stamp + render :json => { status: 0, message: Time.now.to_i } + end + def index render file: 'public/react/build/index.html', :layout => false end diff --git a/app/controllers/schools_controller.rb b/app/controllers/schools_controller.rb index 99ca62b4c..dc9f6c091 100644 --- a/app/controllers/schools_controller.rb +++ b/app/controllers/schools_controller.rb @@ -1,4 +1,5 @@ class SchoolsController < ApplicationController + skip_before_action :check_sign def school_list schools = School.all diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 8a752106c..4f2a19536 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -24,6 +24,7 @@ class ShixunsController < ApplicationController before_action :portion_allowed, only: [:copy] before_action :special_allowed, only: [:send_to_course, :search_user_courses] + before_action :shixun_marker, only: [:new, :create] ## 获取课程列表 def index @@ -1151,4 +1152,5 @@ private end md5.hexdigest end + end diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index 2c1b5a810..7df9aae89 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -7,6 +7,8 @@ class SubjectsController < ApplicationController :search_members, :add_subject_members, :statistics, :shixun_report, :school_report, :up_member_position, :down_member_position, :update_team_title] before_action :require_admin, only: [:copy_subject] + before_action :shixun_marker, only: [:new, :create, :add_shixun_to_stage] + include ApplicationHelper include SubjectsHelper diff --git a/app/services/admins/identity_auths/agree_apply_service.rb b/app/services/admins/identity_auths/agree_apply_service.rb index d75a6d7db..4528debb4 100644 --- a/app/services/admins/identity_auths/agree_apply_service.rb +++ b/app/services/admins/identity_auths/agree_apply_service.rb @@ -10,7 +10,6 @@ class Admins::IdentityAuths::AgreeApplyService < ApplicationService ActiveRecord::Base.transaction do apply.update!(status: 1) user.update!(authentication: true) - RewardGradeService.call(user, container_id: user.id, container_type: 'Authentication', score: 500) deal_tiding! diff --git a/app/services/admins/professional_auths/agree_apply_service.rb b/app/services/admins/professional_auths/agree_apply_service.rb index 1ca2da2fc..3d723412b 100644 --- a/app/services/admins/professional_auths/agree_apply_service.rb +++ b/app/services/admins/professional_auths/agree_apply_service.rb @@ -10,7 +10,7 @@ class Admins::ProfessionalAuths::AgreeApplyService < ApplicationService ActiveRecord::Base.transaction do apply.update!(status: 1) user.update!(professional_certification: true) - + user.update!(is_shixun_marker: true) if user.is_teacher? RewardGradeService.call(user, container_id: user.id, container_type: 'Professional', score: 500) deal_tiding! diff --git a/app/services/admins/update_user_service.rb b/app/services/admins/update_user_service.rb index 41b5065d0..6b1c0c857 100644 --- a/app/services/admins/update_user_service.rb +++ b/app/services/admins/update_user_service.rb @@ -25,6 +25,7 @@ class Admins::UpdateUserService < ApplicationService ActiveRecord::Base.transaction do user.save! user.user_extension.save! + user.update!(is_shixun_marker: true) if user.is_certification_teacher update_gitlab_password if params[:password].present? end @@ -36,7 +37,7 @@ class Admins::UpdateUserService < ApplicationService def user_attributes params.slice(*%i[lastname nickname mail phone admin business is_test - professional_certification authentication]) + professional_certification authentication is_shixun_marker]) end def user_extension_attributes diff --git a/app/views/admins/users/edit.html.erb b/app/views/admins/users/edit.html.erb index abb003cbc..b1a8cbba1 100644 --- a/app/views/admins/users/edit.html.erb +++ b/app/views/admins/users/edit.html.erb @@ -120,6 +120,7 @@
<%= f.input :professional_certification, as: :boolean, label: '职业认证', checked_value: 1, unchecked_value: 0 %> <%= f.input :authentication, as: :boolean, label: '实名认证', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %> + <%= f.input :is_shixun_marker, as: :boolean, label: '实训制作', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %>
diff --git a/app/views/users/get_user_info.json.jbuilder b/app/views/users/get_user_info.json.jbuilder index e80c8c215..eeb66f6eb 100644 --- a/app/views/users/get_user_info.json.jbuilder +++ b/app/views/users/get_user_info.json.jbuilder @@ -14,6 +14,7 @@ json.email @user.mail json.profile_completed @user.profile_completed? json.professional_certification @user.professional_certification json.main_site current_laboratory.main_site? +json.is_shixun_marker current_user.is_shixun_marker? || current_user.admin_or_business? if @course json.course_identity @course_identity json.course_name @course.name diff --git a/config/routes.rb b/config/routes.rb index f9ed12dbe..c9da309d2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -15,6 +15,7 @@ Rails.application.routes.draw do scope '/api' do get 'home/index' get 'home/search' + get 'main/first_stamp' get 'search', to: 'searchs#index' @@ -1336,6 +1337,7 @@ Rails.application.routes.draw do root 'main#index' + ## react用 get '*path', to: 'main#index', constraints: ReactConstraint.new end diff --git a/db/migrate/20191230094544_add_is_shixun_marker_for_users.rb b/db/migrate/20191230094544_add_is_shixun_marker_for_users.rb new file mode 100644 index 000000000..5a1eee4b1 --- /dev/null +++ b/db/migrate/20191230094544_add_is_shixun_marker_for_users.rb @@ -0,0 +1,9 @@ +class AddIsShixunMarkerForUsers < ActiveRecord::Migration[5.2] + def change + add_column :users, :is_shixun_marker, :boolean, :default => false + + User.joins(:user_extension) + .where(users: {professional_certification: 1}, user_extensions: {identity: 0}) + .update_all(is_shixun_marker: 1) + end +end diff --git a/public/images/educoder/qqqun20191230.png b/public/images/educoder/qqqun20191230.png new file mode 100644 index 000000000..e831b7d7b Binary files /dev/null and b/public/images/educoder/qqqun20191230.png differ diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index 29e7461ec..6759fc334 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -6,9 +6,10 @@ import { requestProxy } from "./indexEduplus2RequestProxy"; import { broadcastChannelOnmessage ,SetAppModel, isDev, queryString } from 'educoder'; import { notification } from 'antd'; import './index.css'; +const $ = window.$; const opens ="79e33abd4b6588941ab7622aed1e67e8"; -let timestamp = Date.parse(new Date()); -const newopens=md5(opens+timestamp) +let timestamp; +let checkSubmitFlg = false; broadcastChannelOnmessage('refreshPage', () => { window.location.reload() }) @@ -20,7 +21,7 @@ function locationurl(list){ window.location.href=list } } -let hashTimeout + // TODO 开发期多个身份切换 let debugType ="" @@ -40,7 +41,29 @@ if (isDev) { //ebugType="teacher"; // 学生 //debugType="student"; - + function railsgettimes(proxy) { + if(timestamp&&checkSubmitFlg===false){ + $.ajax({url:proxy,async:false,success:function(data){ + if(data.status===0){ + timestamp=data.message; + } + }}) + checkSubmitFlg=true + window.setTimeout(function () { + checkSubmitFlg=false; + }, 3500); + }else if(checkSubmitFlg===false){ + $.ajax({url:proxy,async:false,success:function(data){ + if(data.status===0){ + timestamp=data.message; + } + }}) + checkSubmitFlg=true + window.setTimeout(function () { + checkSubmitFlg=false; + }, 3500); + } +} window._debugType = debugType; export function initAxiosInterceptors(props) { initOnlineOfflineListener() @@ -66,6 +89,7 @@ export function initAxiosInterceptors(props) { window.setfalseInRequestMap = function(keyName) { requestMap[keyName] = false; } + axios.interceptors.request.use( config => { @@ -95,19 +119,23 @@ export function initAxiosInterceptors(props) { } if(`${config[0]}`!=`true`){ if (window.location.port === "3007") { + railsgettimes(`${proxy}/api/main/first_stamp.json`); + let newopens=md5(opens+timestamp) config.url = `${proxy}${url}`; if (config.url.indexOf('?') == -1) { - config.url = `${config.url}?debug=${debugType}×tamp=${timestamp}&client_key=${newopens}`; + config.url = `${config.url}?debug=${debugType}&randomcode=${timestamp}&client_key=${newopens}`; } else { - config.url = `${config.url}&debug=${debugType}×tamp=${timestamp}&client_key=${newopens}`; + config.url = `${config.url}&debug=${debugType}&randomcode=${timestamp}&client_key=${newopens}`; } } else { // 加api前缀 + railsgettimes(`/api/main/first_stamp.json`); + let newopens=md5(opens+timestamp) config.url = url; if (config.url.indexOf('?') == -1) { - config.url = `${config.url}?×tamp=${timestamp}&client_key=${newopens}`; + config.url = `${config.url}?&randomcode=${timestamp}&client_key=${newopens}`; } else { - config.url = `${config.url}×tamp=${timestamp}&client_key=${newopens}`; + config.url = `${config.url}&randomcode=${timestamp}&client_key=${newopens}`; } } } diff --git a/public/react/src/modal/GotoQQgroup.js b/public/react/src/modal/GotoQQgroup.js new file mode 100644 index 000000000..0ac34da65 --- /dev/null +++ b/public/react/src/modal/GotoQQgroup.js @@ -0,0 +1,62 @@ +import React, { Component } from 'react'; +import {getImageUrl} from 'educoder'; +import { Modal} from 'antd'; +import axios from 'axios'; +import '../modules/user/account/common.css'; +import './gotoqqgroup.css' +class GotoQQgroup extends Component { + + constructor(props) { + super(props); + this.state={ + + } + } + + modalCancel=()=>{ + try { + this.props.setgoshowqqgtounp(false); + }catch (e) { + + } + } + + setDownload=()=>{ + //立即联系 + try { + this.props.setgoshowqqgtounp(false); + }catch (e) { + + } + } + + + render() { + + return( + +
+

您可以在QQ服务群向管理员申请,获得继续操作的权限

+ + +

群号:612934990

+
+ this.modalCancel()}>取消 + 立即联系 +
+
+
+ ) + } +} + +export default GotoQQgroup; diff --git a/public/react/src/modal/gotoqqgroup.css b/public/react/src/modal/gotoqqgroup.css new file mode 100644 index 000000000..777b7992f --- /dev/null +++ b/public/react/src/modal/gotoqqgroup.css @@ -0,0 +1,61 @@ +/* 中间居中 */ +.intermediatecenter{ + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +/* 简单居中 */ +.intermediatecenterysls{ + 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; + +} + + +/* x轴正方向排序 */ +/* 一 二 三 四 五 六 七 八 */ +.sortinxdirection{ + display: flex; + flex-direction:row; +} +/* x轴反方向排序 */ +/* 八 七 六 五 四 三 二 一 */ +.xaxisreverseorder{ + display: flex; + flex-direction:row-reverse; +} +/* 垂直布局 正方向*/ +/* 一 + 二 + 三 + 四 + 五 + 六 + 七 + 八 */ +.verticallayout{ + display: flex; + flex-direction:column; +} +/* 垂直布局 反方向*/ +.reversedirection{ + display: flex; + flex-direction:column-reverse; +} + diff --git a/public/react/src/modules/home/shixunsHome.js b/public/react/src/modules/home/shixunsHome.js index a495a97c3..3e295344c 100644 --- a/public/react/src/modules/home/shixunsHome.js +++ b/public/react/src/modules/home/shixunsHome.js @@ -31,13 +31,15 @@ class ShixunsHome extends Component { } } componentDidMount(){ - configShareForIndex() + configShareForIndex() const upsystem=`/users/system_update.json`; axios.get(upsystem).then((response)=>{ - let updata=response.data; - this.setState({ - updata:updata - }) + if(response.data){ + let updata=response.data; + this.setState({ + updata:updata + }) + } }).catch((error)=>{ console.log(error); }) @@ -50,7 +52,7 @@ class ShixunsHome extends Component { }) } }).catch((error)=>{ - console.log(error) + // console.log(error) }); } diff --git a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js index c296899f2..cd78ceaa2 100644 --- a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js +++ b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js @@ -7,6 +7,8 @@ import Addshixuns from './Addshixuns'; import '../ShixunPaths.css'; import axios from 'axios'; import NewShixunModel from '../../courses/coursesPublic/NewShixunModel'; +import GotoQQgroup from "../../../modal/GotoQQgroup"; + const $ = window.$; const Search = Input.Search; @@ -54,8 +56,10 @@ class DetailCardsEditAndAdd extends Component{ ChooseShixunListshixun_list:undefined, stage_nametype:false, descriptiontype:false, - Addshixunstype:false - } + Addshixunstype:false, + goshowqqgtounp:false, + + } this.onDragEnd = this.onDragEnd.bind(this); } //选择实训弹框 @@ -315,6 +319,12 @@ class DetailCardsEditAndAdd extends Component{ } Addshixuns=()=>{ + // debugger + // console.log("点击了新建实训Addshixuns"); + if(this.props&&this.props.current_user&&this.props.current_user.is_shixun_marker===false){ + this.setgoshowqqgtounp(true); + return; + } this.setState({ Addshixunstype:true, }) @@ -349,7 +359,12 @@ class DetailCardsEditAndAdd extends Component{ console.log(error) }); } - + // 处理弹框 + setgoshowqqgtounp=(bool)=>{ + this.setState({ + goshowqqgtounp:bool + }) + } render(){ let {selectShixun, @@ -368,11 +383,19 @@ class DetailCardsEditAndAdd extends Component{ Modalsbottomval, ChooseShixunListshixun_list, stage_nametype, - descriptiontype} = this.state + descriptiontype, + goshowqqgtounp + } = this.state return(
+ { + goshowqqgtounp===true? + this.setgoshowqqgtounp(bool)}> + : + "" + } { + if(this.props&&this.props.current_user&&this.props.current_user.is_shixun_marker===false){ + this.setgoshowqqgtounp(true); + return; + } this.setState({ Addshixunstype:true, }) @@ -349,7 +356,12 @@ class DetailCardsEditAndEdit extends Component{ console.log(error) }); } - + // 处理弹框 + setgoshowqqgtounp=(bool)=>{ + this.setState({ + goshowqqgtounp:bool + }) + } render(){ let {selectShixun, @@ -369,11 +381,18 @@ class DetailCardsEditAndEdit extends Component{ delectfunvalue, ChooseShixunListshixun_list, stage_nametype, - descriptiontype + descriptiontype, + goshowqqgtounp } = this.state return(
+ { + goshowqqgtounp===true? + this.setgoshowqqgtounp(bool)}> + : + "" + } { return; } + + + if(this.props&&this.props.current_user&&this.props.current_user.is_shixun_marker===false){ + this.setgoshowqqgtounp(true); + return; + } + + + + + + if(url !== undefined || url!==""){ window.location.href = url; } @@ -790,6 +807,14 @@ submittojoinclass=(value)=>{ return false } } + + + // 处理弹框 + setgoshowqqgtounp=(bool)=>{ + this.setState({ + goshowqqgtounp:bool + }) + } render() { const isLogin = true; // 这里不会出现未登录的情况,服务端在服务端路由时发现如果是未登录,则跳转到登录页了。 const {match} = this.props; @@ -808,6 +833,7 @@ submittojoinclass=(value)=>{ headtypesonClickbool, headtypess, mygetHelmetapi2, + goshowqqgtounp, }=this.state; /* 用户名称 用户头像url @@ -898,7 +924,9 @@ submittojoinclass=(value)=>{ }) } - + // console.log("newHeadersnewHeaders"); + // console.log(this.props); + // this.props.current_user.is_shixun_marker return (
@@ -914,6 +942,14 @@ submittojoinclass=(value)=>{ {...this.props} {...this.state} />:""} + + { + goshowqqgtounp===true? + this.setgoshowqqgtounp(bool)}> + : + "" + } + this.headtypesonClick("/",false)} className={"fl mr30 ml25 mt10"}> { mygetHelmetapi2 === null ? @@ -1100,9 +1136,6 @@ submittojoinclass=(value)=>{ {/*课堂*/} 翻转课堂 - - {} - {console.log(activeShixuns)}
  • 实训项目 {/**/} @@ -1287,7 +1320,9 @@ submittojoinclass=(value)=>{ {this.props.current_user&&this.props.current_user.user_identity==="学生"?"":coursestypes===false?
  • this.getUser("/courses/new")}>{this.props.user&&this.props.user.main_site===false?"新建课堂":"新建翻转课堂"}
  • :"" } - {shixuntype===true?"":
  • this.getUser("/shixuns/new")}>新建实训项目
  • } + {shixuntype===true?"": +
  • this.getUser("/shixuns/new")}>新建实训项目
  • + } {this.props.user&&this.props.user.main_site===false?"":this.props.Headertop===undefined?"":
  • this.getUser("/paths/new")} >新建实践课程
  • } {this.props.user&&this.props.user.main_site===true?"":this.props.Headertop===undefined?"": pathstype===true?"":this.props.user&&this.props.user.admin===true||this.props.user&&this.props.user.is_teacher===true||this.props.user&&this.props.user.business===true?
  • this.getUser("/paths/new")} >新建实践课程
  • :"" diff --git a/public/react/src/modules/tpm/shixuns/ShixunCardList.js b/public/react/src/modules/tpm/shixuns/ShixunCardList.js index 937e96894..948bbed48 100644 --- a/public/react/src/modules/tpm/shixuns/ShixunCardList.js +++ b/public/react/src/modules/tpm/shixuns/ShixunCardList.js @@ -12,6 +12,7 @@ import classNames from 'classnames' import 'antd/lib/switch/style/index.css' import './shixunCss/ShixunCardList.css'; +import GotoQQgroup from '../../../modal/GotoQQgroup' import { on, off } from 'educoder' @@ -33,6 +34,7 @@ class ShixunCardList extends Component { shixunid:"", upcircle:false, typekeyid:undefined, + goshowqqgtounp:false, } } @@ -52,7 +54,7 @@ class ShixunCardList extends Component { componentWillUnmount = () => { off('searchKeywordChange') } - + latestHot=(e,key)=>{ @@ -171,6 +173,10 @@ class ShixunCardList extends Component { this.props.showProfileCompleteDialog() return } + if(this.props&&this.props.current_user&&this.props.current_user.is_shixun_marker===false){ + this.setgoshowqqgtounp(true); + return; + } if(url !== undefined || url!==""){ window.location.href = url; @@ -178,8 +184,15 @@ class ShixunCardList extends Component { } + + // 处理弹框 + setgoshowqqgtounp=(bool)=>{ + this.setState({ + goshowqqgtounp:bool + }) + } render(){ - let {mine,InputValue,upcircle}=this.state; + let {mine,InputValue,upcircle,goshowqqgtounp}=this.state; // console.log("NewHeadermygetHelmetapi123123123123"); let shixuntype=false; @@ -196,10 +209,19 @@ class ShixunCardList extends Component { } }) } + + return (
    + { + goshowqqgtounp===true? + this.setgoshowqqgtounp(bool)}> + : + "" + } + {/*
    this.latestHot(e,1)}>全部*/} diff --git a/public/react/src/modules/user/account/common.css b/public/react/src/modules/user/account/common.css index e3bdb24fd..6039ffd26 100644 --- a/public/react/src/modules/user/account/common.css +++ b/public/react/src/modules/user/account/common.css @@ -1,118 +1,119 @@ -.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; -} -.autoModal .ant-modal-body{ - height: auto; - overflow-y: auto; -} - -@media screen and (max-height: 765px) { - .autoModal .ant-modal-body { - height: 670px; - overflow-y: auto; - } -} -@media screen and (max-height: 735px) { - .autoModal .ant-modal-body { - height: 600px; - overflow-y: auto; - } -} -@media screen and (max-height: 635px) { - .autoModal .ant-modal-body { - height: 500px; - overflow-y: auto; - } -} -@media screen and (max-height: 566px) { - .autoModal .ant-modal-body { - height: 465px; - overflow-y: auto; - } -} -@media screen and (max-height: 472px) { - .autoModal .ant-modal-body { - height: 360px; - overflow-y: auto; - } -} \ No newline at end of file +.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; +} +.autoModal .ant-modal-body{ + height: auto; + overflow-y: auto; +} + +@media screen and (max-height: 765px) { + .autoModal .ant-modal-body { + height: 670px; + overflow-y: auto; + } +} +@media screen and (max-height: 735px) { + .autoModal .ant-modal-body { + height: 600px; + overflow-y: auto; + } +} +@media screen and (max-height: 635px) { + .autoModal .ant-modal-body { + height: 500px; + overflow-y: auto; + } +} +@media screen and (max-height: 566px) { + .autoModal .ant-modal-body { + height: 465px; + overflow-y: auto; + } +} +@media screen and (max-height: 472px) { + .autoModal .ant-modal-body { + height: 360px; + overflow-y: auto; + } +} + diff --git a/public/react/src/modules/user/usersInfo/InfosShixun.js b/public/react/src/modules/user/usersInfo/InfosShixun.js index b5811e44f..b45ba65f6 100644 --- a/public/react/src/modules/user/usersInfo/InfosShixun.js +++ b/public/react/src/modules/user/usersInfo/InfosShixun.js @@ -9,6 +9,7 @@ import { setImagesUrl } from 'educoder'; import "./usersInfo.css" import Create from './publicCreatNew' +import GotoQQgroup from "../../../modal/GotoQQgroup"; class InfosShixun extends Component{ constructor(props){ @@ -22,7 +23,8 @@ class InfosShixun extends Component{ sort_by: "updated_at", sort_direction: "desc", totalCount:undefined, - data:undefined + data:undefined, + goshowqqgtounp:false, } } @@ -144,6 +146,13 @@ class InfosShixun extends Component{ this.getCourses(category, status, sort_by, page, sort_directiony); } + // 处理弹框 + setgoshowqqgtounp=(bool)=>{ + this.setState({ + goshowqqgtounp:bool + }) + } + render(){ let{ @@ -154,7 +163,8 @@ class InfosShixun extends Component{ data, totalCount, sort_direction, - isSpin + isSpin, + goshowqqgtounp } = this.state; let is_current=this.props.is_current; @@ -171,6 +181,12 @@ class InfosShixun extends Component{ ); return(
    + { + goshowqqgtounp===true? + this.setgoshowqqgtounp(bool)}> + : + "" + }