diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb
index 66d327649..f869e9ec6 100644
--- a/app/controllers/colleges_controller.rb
+++ b/app/controllers/colleges_controller.rb
@@ -40,8 +40,8 @@ class CollegesController < ApplicationController
def teachers
@teachers = User.find_by_sql("SELECT users.id, users.login, users.lastname, users.firstname, users.nickname, IFNULL((SELECT count(shixuns.id) FROM shixuns where shixuns.user_id =users.id group by shixuns.user_id), 0) AS publish_shixun_count,
- (SELECT count(c.id) FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.role in (1,2,3) and c.school_id = #{current_school.id} AND m.user_id=users.id AND c.is_delete = 0) as course_count
- FROM `users`, user_extensions ue where users.id=ue.user_id and ue.identity=0 and ue.school_id=#{current_school.id} ORDER BY publish_shixun_count desc, course_count desc, id desc LIMIT 10")
+ (SELECT count(c.id) FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.user_id=users.id AND m.role in (1,2,3) and c.school_id = #{current_school.id} AND c.is_delete = 0) as course_count
+ FROM `users`, user_extensions ue where ue.school_id=#{current_school.id} and users.id=ue.user_id and ue.identity=0 ORDER BY publish_shixun_count desc, course_count desc, id desc LIMIT 10")
# ).order("publish_shixun_count desc, experience desc").limit(10)
@teachers =
@teachers.map do |teacher|
diff --git a/app/controllers/commons_controller.rb b/app/controllers/commons_controller.rb
index 0c0fe79af..43ea31c97 100644
--- a/app/controllers/commons_controller.rb
+++ b/app/controllers/commons_controller.rb
@@ -51,7 +51,8 @@ class CommonsController < ApplicationController
200
end
when 'journals_for_message'
- if current_user.course_identity(@object.jour.course) >= Course::STUDENT && @object.user != current_user
+ course = @object.jour&.course || @object.jour&.student_work&.homework_common&.course
+ if current_user.course_identity(course) >= Course::STUDENT && @object.user != current_user
403
else
200
diff --git a/app/controllers/ecs/students_controller.rb b/app/controllers/ecs/students_controller.rb
index c21d625e0..abc5ddb65 100644
--- a/app/controllers/ecs/students_controller.rb
+++ b/app/controllers/ecs/students_controller.rb
@@ -14,7 +14,7 @@ class Ecs::StudentsController < Ecs::BaseController
end
def import
- success_count = Ecs::ImportStudentService.call(current_year, params[:attachment_id])
+ success_count = Ecs::ImportStudentService.call(current_year, params)
render_ok(success_count: success_count)
rescue Ecs::ImportStudentService::Error => ex
render_error(ex.message)
diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb
index b9da12ab0..4a087ae7a 100644
--- a/app/controllers/games_controller.rb
+++ b/app/controllers/games_controller.rb
@@ -559,7 +559,7 @@ class GamesController < ApplicationController
secret_rep = @shixun.shixun_secret_repository
logger.info("############secret_rep: #{secret_rep}")
if secret_rep&.repo_name
- secretGitUrl = repo_url secret_rep.repo_path
+ secretGitUrl = repo_ip_url secret_rep.repo_path
br_params.merge!({secretGitUrl: Base64.urlsafe_encode64(secretGitUrl), secretDir: secret_rep.secret_dir_path})
logger.info("#######br_params:#{br_params}")
end
diff --git a/app/controllers/graduation_tasks_controller.rb b/app/controllers/graduation_tasks_controller.rb
index 841b516bb..de48f9fdb 100644
--- a/app/controllers/graduation_tasks_controller.rb
+++ b/app/controllers/graduation_tasks_controller.rb
@@ -168,7 +168,7 @@ class GraduationTasksController < ApplicationController
end
end
else
- @work_list = @work
+ @work_list = !@task.published? ? [] : @work
@view_work = false
@work_count = @work_list.count
@all_work_count = @work_list.count
diff --git a/app/models/graduation_work.rb b/app/models/graduation_work.rb
index 235bfcac6..c7420ffef 100644
--- a/app/models/graduation_work.rb
+++ b/app/models/graduation_work.rb
@@ -48,7 +48,7 @@ class GraduationWork < ApplicationRecord
def delete_atta atta
last_score = graduation_work_scores.where.not(score: nil).last
- atta.author_id == user_id && (!last_score.present? || last_score.try(:created_at) < atta.created_on)
+ (atta.author_id == User.current.id) && (last_score.blank? || last_score.try(:created_at) < atta.created_on)
end
# 分班名
diff --git a/app/models/student_work.rb b/app/models/student_work.rb
index 9c9efa17c..b4ad834de 100644
--- a/app/models/student_work.rb
+++ b/app/models/student_work.rb
@@ -106,7 +106,7 @@ class StudentWork < ApplicationRecord
def delete_atta atta
last_score = student_works_scores.where.not(score: nil).last
- atta.author_id == user_id && (!last_score.present? || last_score.try(:created_at) < atta.created_on)
+ (atta.author_id == User.current.id) && (last_score.blank? || last_score.try(:created_at) < atta.created_on)
end
# 作品总体评价
diff --git a/app/models/student_works_score.rb b/app/models/student_works_score.rb
index 86d393f93..299b61596 100644
--- a/app/models/student_works_score.rb
+++ b/app/models/student_works_score.rb
@@ -1,6 +1,6 @@
class StudentWorksScore < ApplicationRecord
#appeal_status: 0:正常;1:申诉中,2:撤销申诉;3:申诉成功;4:申诉被拒绝;5:申诉失效
-belongs_to :student_work
+ belongs_to :student_work
belongs_to :user
has_many :journals_for_messages, -> { order('created_on desc') }, as: :jour, dependent: :destroy
has_one :student_works_scores_appeal, dependent: :destroy
diff --git a/app/models/user.rb b/app/models/user.rb
index 1dc511513..70cd54c92 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -346,7 +346,7 @@ class User < ApplicationRecord
elsif business?
Course::BUSINESS
else
- role = course.course_members.find_by(user_id: id, is_active: 1)&.role
+ role = course&.course_members&.find_by(user_id: id, is_active: 1)&.role
case role
when nil then Course::NORMAL
when 'CREATOR' then Course::CREATOR
diff --git a/app/services/ecs/import_student_service.rb b/app/services/ecs/import_student_service.rb
index 9014e221c..f5cd7c6ac 100644
--- a/app/services/ecs/import_student_service.rb
+++ b/app/services/ecs/import_student_service.rb
@@ -1,21 +1,20 @@
class Ecs::ImportStudentService < ApplicationService
Error = Class.new(StandardError)
- attr_reader :ec_year, :attachment
+ attr_reader :ec_year, :params
- def initialize(ec_year, attachment_id)
- @ec_year = ec_year
- @attachment = Attachment.find_by(id: attachment_id)
+ def initialize(ec_year, params)
+ @ec_year = ec_year
+ @params = params
end
def call
- raise Error, '文件不存在' if attachment.blank?
+ raise Error, '文件不存在' if params[:file].blank? || !params[:file].is_a?(ActionDispatch::Http::UploadedFile)
- path = attachment.diskfile
- excel = Ecs::ImportStudentExcel.new(path)
+ excel = Ecs::ImportStudentExcel.new(params[:file].path)
success_count = 0
- EcYearStudent.bulk_insert(:student_id, :name, :created_at, :updated_at) do |worker|
+ EcYearStudent.bulk_insert(:ec_year_id, :student_id, :name, :created_at, :updated_at) do |worker|
excel.read_each do |student_id, name|
success_count += 1
@@ -25,7 +24,7 @@ class Ecs::ImportStudentService < ApplicationService
next
end
- worker.add(student_id: student_id, name: name)
+ worker.add(ec_year_id: ec_year.id, student_id: student_id, name: name)
end
end
diff --git a/app/services/ecs/save_graduation_course_supports_service.rb b/app/services/ecs/save_graduation_course_supports_service.rb
index bfbdb997f..de4ecc71a 100644
--- a/app/services/ecs/save_graduation_course_supports_service.rb
+++ b/app/services/ecs/save_graduation_course_supports_service.rb
@@ -9,6 +9,8 @@ class Ecs::SaveGraduationCourseSupportsService < ApplicationService
end
def call
+ set_course_supports_position!
+
Ecs::SaveGraduationCourseSupportForm.new(params).validate!
accepts_attributes = build_accepts_nested_attributes(
@@ -20,4 +22,10 @@ class Ecs::SaveGraduationCourseSupportsService < ApplicationService
graduation_subitem.save!
graduation_subitem
end
+
+ def set_course_supports_position!
+ params[:course_supports].each_with_index do |item, index|
+ item[:position] = index + 1
+ end
+ end
end
\ No newline at end of file
diff --git a/app/tasks/statistic_school_daily_report_task.rb b/app/tasks/statistic_school_daily_report_task.rb
index 5cd3fda7c..794a4b573 100644
--- a/app/tasks/statistic_school_daily_report_task.rb
+++ b/app/tasks/statistic_school_daily_report_task.rb
@@ -27,8 +27,8 @@ class StatisticSchoolDailyReportTask
# 新增实训评测数量
shixun_evaluate_count = EvaluateRecord.joins('LEFT JOIN homework_commons_shixuns hcs ON hcs.shixun_id = evaluate_records.shixun_id')
.joins('LEFT JOIN homework_commons hc ON hcs.homework_common_id = hc.id AND hc.homework_type = 4')
- .joins('LEFT JOIN members ON members.user_id = evaluate_records.user_id')
- .joins('LEFT JOIN courses ON members.course_id = courses.id AND hc.course_id = courses.id')
+ .joins('LEFT JOIN course_members ON course_members.user_id = evaluate_records.user_id')
+ .joins('LEFT JOIN courses ON course_members.course_id = courses.id AND hc.course_id = courses.id')
.where(courses: { school_id: school.id })
.where(created_at: yesterday).reorder(nil).count
diff --git a/app/tasks/statistic_school_report_task.rb b/app/tasks/statistic_school_report_task.rb
index a55eb7a42..a72c57830 100644
--- a/app/tasks/statistic_school_report_task.rb
+++ b/app/tasks/statistic_school_report_task.rb
@@ -2,10 +2,10 @@ class StatisticSchoolReportTask
def call
School.find_each do |school|
evaluate_count = Game.joins(:challenge)
- .joins('LEFT JOIN members ON members.user_id = games.user_id')
+ .joins('LEFT JOIN course_members ON course_members.user_id = games.user_id')
.joins('LEFT JOIN homework_commons_shixuns hcs ON hcs.shixun_id = challenges.shixun_id')
.joins('LEFT JOIN homework_commons hc ON hcs.homework_common_id = hc.id AND hc.homework_type = 4')
- .joins('LEFT JOIN courses ON hc.course_id = courses.id AND members.course_id = courses.id')
+ .joins('LEFT JOIN courses ON hc.course_id = courses.id AND course_members.course_id = courses.id')
.where(courses: { school_id: school.id })
.sum(:evaluate_count)
diff --git a/app/views/admins/professional_authentications/shared/_list.html.erb b/app/views/admins/professional_authentications/shared/_list.html.erb
index fd7685f98..10934a702 100644
--- a/app/views/admins/professional_authentications/shared/_list.html.erb
+++ b/app/views/admins/professional_authentications/shared/_list.html.erb
@@ -53,12 +53,12 @@
<%= apply.status_text %> |
<% else %>
- <%= agree_link '同意', agree_admins_professional_authentication_path(apply, element: ".professional-authentication-#{apply.id}"), 'data-confirm': '确认审核通过?' %>
+ <%= agree_link '同意', agree_admins_professional_authentication_path(apply, element: ".professional-authentication-#{apply.id}"), 'data-confirm': '确认审核通过?', 'data-disable-with': "提交中..." %>
<%= javascript_void_link('拒绝', class: 'action refuse-action',
data: {
toggle: 'modal', target: '.admin-common-refuse-modal', id: apply.id,
url: refuse_admins_professional_authentication_path(apply, element: ".professional-authentication-#{apply.id}")
- }) %>
+ }, 'data-disable-with': "拒绝中...") %>
|
<% end %>
diff --git a/app/views/ecs/graduation_course_supports/show.xlsx.axlsx b/app/views/ecs/graduation_course_supports/show.xlsx.axlsx
index e2c2599ec..ae81d931b 100644
--- a/app/views/ecs/graduation_course_supports/show.xlsx.axlsx
+++ b/app/views/ecs/graduation_course_supports/show.xlsx.axlsx
@@ -9,13 +9,13 @@ wb = xlsx_package.workbook
wb.styles do |style|
title_style = style.add_style(sz: 16, height: 20, b: true)
ec_year_style = style.add_style(sz: 10, height: 14)
- label_style = style.add_style(sz: 11, b: true, bg_color: '90EE90', alignment: { horizontal: :center }, border: { style: :thin, color: '000000' })
+ label_style = style.add_style(sz: 11, b: true, bg_color: '90EE90', alignment: { horizontal: :center, vertical: :center }, border: { style: :thin, color: '000000' })
content_style = style.add_style(sz: 11, height: 16, border: { style: :thin, color: '000000' })
- tip_style = style.add_style(sz: 11, height: 16, color: 'FFA07A')
+ tip_style = style.add_style(sz: 11, height: 16, color: Axlsx::Color.new(rgb: 'FFFFA07A'))
wb.add_worksheet(:name => '课程体系对毕业要求的支撑') do |sheet|
sheet.add_row ['课程体系VS毕业要求'], style: title_style
- sheet.merge_cells wb.rows.first.cells[(1..(3 + max_support_length - 1))]
+ sheet.merge_cells sheet.rows.first.cells[(1..(3 + max_support_length - 1))]
sheet.add_row []
@@ -25,8 +25,8 @@ wb.styles do |style|
sheet.add_row ['注:有对应关系的课程名称下方为其权重系数,一个指标点的权重系数之和必须等于1'], style: tip_style
sheet.add_row ['注:“★” 表示关联度高']
- sheet.merge_cells wb.rows[5].cells[(1..(3 + max_support_length - 1))]
- sheet.merge_cells wb.rows[6].cells[(1..(3 + max_support_length - 1))]
+ sheet.merge_cells sheet.rows[5].cells[(1..(3 + max_support_length - 1))]
+ sheet.merge_cells sheet.rows[6].cells[(1..(3 + max_support_length - 1))]
sheet.add_row []
@@ -34,9 +34,9 @@ wb.styles do |style|
data[last_column_index] = '课程数量'
sheet.add_row data, style: label_style
course_columns = max_support_length.times.map { |i| "课程#{i + 1}" }
- sheet.add_row %w('一级 二级') + course_columns + ['∑目标值'], style: label_style
+ sheet.add_row %w(一级 二级) + course_columns + ['∑目标值'], style: label_style
sheet.merge_cells("A9:B9")
- sheet.merge_cells wb.rows[8].cells[(3..(3 + max_support_length - 1))]
+ # sheet.merge_cells sheet.rows[8].cells[(3..(3 + max_support_length - 1))]
current_row = 11
graduation_subitems.group_by(&:ec_graduation_requirement).each do |requirement, items|
@@ -61,11 +61,11 @@ wb.styles do |style|
sheet.add_row course_data, style: styles
sheet.add_row weight_data, style: styles
- sheet.merge_cells("B#{current_row - 1}:B#{current_row}")
+ sheet.merge_cells("B#{current_row}:B#{current_row + 1}")
current_row += 2
end
- sheet.merge_cells("A#{start_row - 1}:B#{current_row - 1}")
+ sheet.merge_cells("A#{start_row}:A#{current_row - 1}")
end
end
end
\ No newline at end of file
diff --git a/app/views/student_works/show.json.jbuilder b/app/views/student_works/show.json.jbuilder
index 192e4d8ec..9bafbe93e 100644
--- a/app/views/student_works/show.json.jbuilder
+++ b/app/views/student_works/show.json.jbuilder
@@ -11,7 +11,7 @@ json.update_user_name @is_evaluation ? "匿名" : @work.update_user.try(:real_na
json.update_atta @homework.late_duration && @is_author
json.attachments @attachments do |atta|
- json.partial! "attachments/attachment_simple", locals: {attachment: atta, delete: @work.delete_atta(atta)}
+ json.partial! "attachments/attachment_simple", locals: {attachment: atta, delete: false}
end
unless @is_evaluation
diff --git a/db/migrate/20190920073337_migrate_user_extension_index.rb b/db/migrate/20190920073337_migrate_user_extension_index.rb
new file mode 100644
index 000000000..1d333bd99
--- /dev/null
+++ b/db/migrate/20190920073337_migrate_user_extension_index.rb
@@ -0,0 +1,6 @@
+class MigrateUserExtensionIndex < ActiveRecord::Migration[5.2]
+ def change
+ remove_index :user_extensions, :school_id
+ add_index :user_extensions, [:school_id, :user_id]
+ end
+end
diff --git a/public/react/package.json b/public/react/package.json
index 4d899935f..e91e61f03 100644
--- a/public/react/package.json
+++ b/public/react/package.json
@@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@icedesign/base": "^0.2.8",
+ "@icedesign/base": "^0.2.5",
"@novnc/novnc": "^1.1.0",
"antd": "^3.23.2",
"array-flatten": "^2.1.2",
diff --git a/public/react/public/css/edu-all.css b/public/react/public/css/edu-all.css
index 425255048..cb78f8e00 100644
--- a/public/react/public/css/edu-all.css
+++ b/public/react/public/css/edu-all.css
@@ -3048,7 +3048,7 @@ a.singlepublishtwo{
/*工程认证*/
/*首页*/
.authMainImg{width: 100%;height: 240px;background:url("/images/educoder/auth/banner1.jpg") no-repeat top center;background-size: 100% 100%;justify-content: center;align-items: center;display: -webkit-flex;}
-.ListTableLine>p,.ListTableLine>.ListTableTitle{padding: 0px 30px;background-color: #F5F5F5;line-height: 40px;height: 56px;padding-top: 8px;box-sizing: border-box;}
+.ListTableLine>p,.ListTableLine>.ListTableTitle{margin-bottom: 0px;padding: 0px 30px;background-color: #F5F5F5;line-height: 40px;height: 56px;padding-top: 8px;box-sizing: border-box;}
.ListTableLine>p span,.ListTableTitle span{float: left;color: #666;box-sizing: border-box}
.ListTableLine li{min-height: 48px;padding: 10px 0px;box-sizing: border-box;margin:0px 30px;border-bottom: 1px solid #eaeaea;}
.ListTableLine li>span{float: left;box-sizing: border-box;}
diff --git a/public/react/src/modules/courses/Index.js b/public/react/src/modules/courses/Index.js
index 95927893d..f9f80a9da 100644
--- a/public/react/src/modules/courses/Index.js
+++ b/public/react/src/modules/courses/Index.js
@@ -315,9 +315,33 @@ class CoursesIndex extends Component{
if(isNaN(id)){
return
}
+
+ const querys = this.props.location.search;
+ var dataqueryss={}
+ try {
+ var foqus=this.foo(querys);
+ if(JSON.stringify(foqus) ==="{}"){
+ this.setState({
+ dataquerys:{},
+ });
+ }else{
+ this.setState({
+ dataquerys:foqus,
+ });
+ dataqueryss=foqus;
+ }
+ }catch (e) {
+ this.setState({
+ dataquerys:{},
+ })
+ }
// let id=this.props.match.params.coursesId;
let url ="/courses/"+id+"/left_banner.json"
- axios.get(url).then((response) => {
+ axios.get(url,
+ {params:
+ dataqueryss
+ }
+ ).then((response) => {
if(response!=undefined){
if(response.data&&response.data){
this.setState({
@@ -330,7 +354,28 @@ class CoursesIndex extends Component{
}
}
})
- }
+ };
+ foo=(url)=> {
+ var json = {};
+ var regExp = /[\?\&](\w+)(=?)(\w*)/g;
+ var arr;
+ do {
+ arr = regExp.exec(url);
+ // console.log(arr); // arr = [完整的字符串, key, 等号或'', value或'']
+
+ if (arr) {
+ var key = arr[1];
+ var value = arr[3];
+ // arr[2] === ''时, value = undefined
+ if (!arr[2])
+ value = undefined;
+
+ json[key] = value;
+ }
+ } while (arr);
+
+ return json;
+ };
locationNav=(list)=>{
if(list){
diff --git a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js
index 21ac26727..437471436 100644
--- a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js
+++ b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js
@@ -94,9 +94,30 @@ class CoursesBanner extends Component {
this.updatabanner()
}
updatabanner=()=>{
+ const query = this.props.location.search;
+ var dataqueryss={}
+ try {
+ var foqus=this.foo(query);
+ if(JSON.stringify(foqus) ==="{}"){
+ this.setState({
+ dataquerys:{},
+ });
+ }else{
+ this.setState({
+ dataquerys:foqus,
+ });
+ dataqueryss=foqus;
+ }
+ }catch (e) {
+ this.setState({
+ dataquerys:{},
+ })
+ }
let courseId = this.props.match.params.coursesId;
let url = "/courses/" + courseId + "/top_banner.json"
- axios.get(url).then((result) => {
+ axios.get(url,{params:
+ dataqueryss
+ }).then((result) => {
if( result!=undefined){
let data = result.data;
this.setState({
@@ -107,7 +128,28 @@ class CoursesBanner extends Component {
this.onloadupdatabanner()
}
})
- }
+ };
+ foo=(url)=> {
+ var json = {};
+ var regExp = /[\?\&](\w+)(=?)(\w*)/g;
+ var arr;
+ do {
+ arr = regExp.exec(url);
+ // console.log(arr); // arr = [完整的字符串, key, 等号或'', value或'']
+
+ if (arr) {
+ var key = arr[1];
+ var value = arr[3];
+ // arr[2] === ''时, value = undefined
+ if (!arr[2])
+ value = undefined;
+
+ json[key] = value;
+ }
+ } while (arr);
+
+ return json;
+ };
showeditmenu = () => {
this.setState({
show: true,
diff --git a/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js b/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js
index bb8ccae4a..2667f1dd9 100644
--- a/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js
+++ b/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js
@@ -349,7 +349,7 @@ class ShixunWorkReport extends Component {
{data&&data.course_name}
>
-
+
{data===undefined?"":data.category===null?"":data.category.category_name}
>
diff --git a/public/react/src/modules/ecs/EcSetting/CourseSupports/ecCourseSupports.css b/public/react/src/modules/ecs/EcSetting/CourseSupports/ecCourseSupports.css
index 7f497b28e..87f87fc8e 100644
--- a/public/react/src/modules/ecs/EcSetting/CourseSupports/ecCourseSupports.css
+++ b/public/react/src/modules/ecs/EcSetting/CourseSupports/ecCourseSupports.css
@@ -355,4 +355,10 @@ input{
.editlybuttonbox{
margin-bottom: 30px;
margin-right: 3%;
+}
+
+.Importclassroomdata{
+ top: 30px;
+ position: absolute;
+ right: 0px;
}
\ No newline at end of file
diff --git a/public/react/src/modules/ecs/EcSetting/CourseSupports/index.js b/public/react/src/modules/ecs/EcSetting/CourseSupports/index.js
index bc848b209..511a0da64 100644
--- a/public/react/src/modules/ecs/EcSetting/CourseSupports/index.js
+++ b/public/react/src/modules/ecs/EcSetting/CourseSupports/index.js
@@ -34,7 +34,13 @@ class CourseSupports extends Component {
Supportslist:'',
Supportssum:false,
Supportsclass:false,
- Supportsclasskey:undefined
+ Supportsclasskey:undefined,
+ neweditcourse:[{"weights": 0,
+ "ec_course_name":'',
+ "top_relation": false,
+ "ec_course_id":''
+ }],
+ max_support_count:0
}
}
@@ -58,15 +64,25 @@ class CourseSupports extends Component {
axios.get(url)
.then((response) => {
if(response.status===200){
- this.setState({
- data:response.data
- })
- console.log(response.data.graduation_subitems.length)
if(response.data.graduation_subitems.length===0){
this.setState({
Supportstype:true,
+ data:response.data,
Supportslist:'数据为空,请去毕业要求——>毕业要求指标点分解列表配置数据'
})
+ }else{
+ let datas=response.data.graduation_subitems;
+ let listlength=[]
+ datas.map((item,key)=>{
+ listlength.push(item.course_supports.length)
+ })
+
+ let max_support_count=Math.max(...listlength);
+
+ this.setState({
+ max_support_count:max_support_count,
+ data:response.data
+ })
}
}
@@ -108,7 +124,7 @@ class CourseSupports extends Component {
id=parseInt(id);
let subindex =e.target.getAttribute("subindex");
- debugger
+
// const url = `/ec_course_supports/edit_require_vs_course?subitem_id=`+id
// axios.get(url)
// .then((response) => {
@@ -155,14 +171,18 @@ class CourseSupports extends Component {
if(item.course_supports.length>0){
this.setState({
editcourse:item.course_supports,
+ neweditcourse:item.course_supports,
Editkey:key,
index:subindex,
+ ec_graduation_subitem_id:id,
})
}else if(item.course_supports.length===0){
this.setState({
editcourse:[{weights: 0,top_relation: false,ec_course_name:'',ec_course_id:''}],
+ neweditcourse:[{weights: 0,top_relation: false,ec_course_name:'',ec_course_id:''}],
Editkey:key,
index:subindex,
+ ec_graduation_subitem_id:id,
})
}
@@ -197,7 +217,12 @@ class CourseSupports extends Component {
Addcourse=(e)=>{
let {editcourse} =this.state;
- let neweditcourse=editcourse;
+ let arr=new Array();
+ editcourse.map((item,key)=>{
+ arr.push(item)
+ })
+
+ let neweditcourse=arr;
let newadd = {weights: 0,top_relation: false,ec_course_name:'',ec_course_id:''};
neweditcourse.push(newadd);
this.setState({
@@ -215,29 +240,49 @@ class CourseSupports extends Component {
// 删除
// let id =e.target.getAttribute("index");
let {editcourse} = this.state;
- let neweditcourse=editcourse;
- neweditcourse.splice(e,1);
- let newnum=0;
- for(var j=0;j{
+ arr.push(item)
+ })
+
+ let neweditcourse=arr;
+ if(neweditcourse.length>1){
+ neweditcourse.splice(e,1);
+ let newnum=0;
+ for(var j=0;j{
let {editcourse} = this.state;
- let neweditcourse=editcourse;
+ let arr=new Array();
+ editcourse.map((item,key)=>{
+ arr.push(item)
+ })
+
+ let neweditcourse=arr;
var id=e.target.id;
var value=parseFloat(e.target.value);
if(isNaN(value)){
@@ -301,9 +346,15 @@ class CourseSupports extends Component {
handleChange=(e)=> {
let {editcourse} = this.state;
- let value=`${e[0]}`;
- value=parseInt(value)
- let neweditcourse=editcourse;
+
+ let arr=new Array();
+ editcourse.map((item,key)=>{
+ arr.push(item)
+ })
+ let neweditcourse=arr;
+
+ let value=`${e[0]}`;
+ value=parseInt(value)
let num=`${e[1]}`;
num=parseInt(num)
@@ -327,7 +378,13 @@ class CourseSupports extends Component {
relevancetop=(e)=>{
let {editcourse} = this.state;
- let neweditcourse=editcourse;
+
+ let arr=new Array();
+ editcourse.map((item,key)=>{
+ arr.push(item)
+ })
+
+ let neweditcourse=arr;
let id =e.target.getAttribute("itindex");
for(var i=0;i<1;i++){
neweditcourse[id].top_relation=false;
@@ -339,7 +396,11 @@ class CourseSupports extends Component {
relevancebottom=(e)=>{
let {editcourse} = this.state;
- let neweditcourse=editcourse;
+ let arr=new Array();
+ editcourse.map((item,key)=>{
+ arr.push(item)
+ })
+ let neweditcourse=arr;
let id =e.target.getAttribute("itindex");
for(var i=0;i<1;i++){
neweditcourse[id].top_relation=true;
@@ -355,14 +416,20 @@ class CourseSupports extends Component {
this.inputNumberRef.blur();
}
CancelSupports=()=>{
+ let{editcourse,neweditcourse}=this.state;
+ //
+ // console.log(editcourse)
+ // console.log(neweditcourse)
+
this.setState({
Editkey:null,
Supportssum:false,
Supportsclass:false,
+ editcourse:neweditcourse
})
}
SubmitClassData=()=>{
- let {editcourse,editnum,ec_graduation_subitem_id,ec_year_id} = this.state;
+ let {editcourse,editnum,ec_graduation_subitem_id} = this.state;
if(editcourse.length===0){
this.setState({
// Supportstype:true,
@@ -409,35 +476,39 @@ class CourseSupports extends Component {
}
})
- var Url = '/ec_course_supports';
+
+
+
+ var Url = `/ec_years/${this.props.match.params.ec_year_id}/graduation_course_supports.json`;
axios.post(Url, {
- ec_year_id: ec_year_id,
- ec_graduation_subitem_id:ec_graduation_subitem_id,
- course: editcourse
- },
- {
- withCredentials: true
+ graduation_subitem_id :ec_graduation_subitem_id,
+ course_supports: editcourse
}
).then((response) => {
-
- if(response.data.status===0){
- this.setState({
- Editkey:null,
- Supportslist:response.data.messsage,
- Supportstype:true,
- Supportssum:false,
- Supportsclass:false,
- Supportsclasskey:undefined,
- })
- this.UpdateClassData();
+ if(response.data.id===ec_graduation_subitem_id){
+
+ // this.setState({
+ // Editkey:null,
+ // Supportslist:"保存成功",
+ // Supportstype:true,
+ // Supportssum:false,
+ // Supportsclass:false,
+ // Supportsclasskey:undefined,
+ // })
+ this.UpdateClassData();
+ this.setState({
+ Editkey:null,
+ Supportssum:false,
+ Supportsclass:false,
+ })
}else if(response.data.status===-1){
- this.setState({
- Supportslist:"参数错误",
- Supportstype:true,
- Supportssum:false,
- Supportsclass:false,
- Supportsclasskey:undefined,
- })
+ // this.setState({
+ // Supportslist:"参数错误",
+ // Supportstype:true,
+ // Supportssum:false,
+ // Supportsclass:false,
+ // Supportsclasskey:undefined,
+ // })
}
}).catch((error) => {
console.log(error)
@@ -457,9 +528,41 @@ class CourseSupports extends Component {
Supportslist:"",
})
}
+
+ confirmysl(url){
+ axios.get(url + '?export=true').then((response) => {
+ if(response.data.status&&response.data.status===-1){
+
+ }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
+ })
+ }
+ }else {
+ this.props.showNotification(`正在下载中`);
+ window.open("/api"+url, '_blank');
+ }
+ }).catch((error) => {
+ console.log(error)
+ });
+ }
+
+ toforums=(url)=>{
+ window.open( url, '_blank');
+ }
render() {
const Option = Select.Option;
- let {data,ec_courses_list,editcourse,editnum,index,ec_year_id,Supportsclasskey,ecComponentState,hidesupport,supportid,Editkey,titlemessage,Supportstype,Supportslist,Supportssum,Supportsclass,major_school_id} = this.state;
+ let {max_support_count,data,ec_courses_list,editcourse,editnum,index,ec_year_id,Supportsclasskey,ecComponentState,hidesupport,supportid,Editkey,titlemessage,Supportstype,Supportslist,Supportssum,Supportsclass,major_school_id} = this.state;
var list = (length) => {
var res = [];
for(var i = 0; i < length; i++) {
@@ -472,6 +575,11 @@ class CourseSupports extends Component {
return res
}
+ let toptiebox={width: 126.6*max_support_count+"px"};
+
+ let ismidbox={width:123.82*max_support_count+"px",margin:'0px 0px'};
+
+ // console.log(this.props.year&&this.props.year.can_manager)
return (
-
+
@@ -506,24 +614,26 @@ class CourseSupports extends Component {
-
毕业要求指标点({data.count})
-
课程体系({data.course_count})
+
毕业要求指标点({data.count})
+
课程体系({data.course_count})
-
1200? 140*data.max_support_count : 1200+"px"}}>
+
毕业要求指标点
- {list(data.max_support_count<5||data.max_support_count===undefined?5:data.max_support_count)}
+ {data.graduation_subitems===undefined?"":list(max_support_count<5||max_support_count===undefined?5:max_support_count)}
}/>:data.graduation_subitems.map((item,key)=>{
return (
-
1134 ? 136*data.max_support_count : 1134+"px",margin: '0px 0px'}}>
+
{item.graduation_requirement_position+"-"+item.position}
@@ -550,7 +660,7 @@ class CourseSupports extends Component {
display:Editkey!=key?"block":'none',
marginRight: '-1px'
}}>
- {t.ec_course_name.length>12?t.ec_course_name.substring(0, 10)+"...":t.ec_course_name}
{Math.round(item.weights_total*100)/100===0?0:(Math.round(item.weights_total*100)/100)}
-
-
-
-
- 指标点 {index}
- 支撑课程
-
+
+ {Editkey===key?
+
+
+
+ 指标点 {index}
+ 支撑课程
+
权重(∑=1)
(精确到两位小数)
- 关联度最高
-
+
关联度最高
+
-
+
{Supportsclass===true?:""}
- {
- editcourse.map((it,key)=>{
-
- return(
-
-
-
-
-
-
-
-
- )
- })
- }
-
-
-
{Supportslist}
-
+ {
+ editcourse.map((it,key)=>{
+
+ return(
+
+
+
+
+
+
+
+
+ )
+ })
+ }
+
+
+
{Supportslist}
+
合计: {editcourse.length}
- 合计: {editnum}
-
-
-
-
-
-
-
+ style={{
+ width: '580px',
+ paddingLeft: '37px',
+ display: 'inline-block'
+ }}
+ >合计:
{editcourse.length}
+
合计: {editnum}
+
+
+
+
+
:""}
)
})
diff --git a/public/react/src/modules/home/shixunsHome.js b/public/react/src/modules/home/shixunsHome.js
index 5677193d5..bad776b89 100644
--- a/public/react/src/modules/home/shixunsHome.js
+++ b/public/react/src/modules/home/shixunsHome.js
@@ -14,13 +14,7 @@ import UpgradeModals from '../modals/UpgradeModals';
import { SnackbarHOC , getImageUrl, configShareForIndex} from 'educoder';
-import Slider from '@icedesign/base/lib/slider';
-
-import '@icedesign/base/lib/slider/style.js';
-
-import Rating from '@icedesign/base/lib/rating';
-
-import '@icedesign/base/lib/rating/style.js';
+import { Slider ,Rating} from "@icedesign/base";
import './home.css';
@@ -115,7 +109,15 @@ class ShixunsHome extends Component {
homedatalistreps.push(homedatalist.reps[homedatalist.reps.length-i-1])
}
}
-
+ const MyRate = ({ defaultValue, ...rest }) => {
+ let myValue = defaultValue;
+ console.log(myValue-Math.floor(myValue))
+ // if (myValue < Math.ceil(myValue)) {
+ // myValue = Math.floor(myValue) + 0.5;
+ // }
+
+ return ;
+ };
return (
{this.state.updata===undefined?"":
-
+
{item.score_info===null?"5分":item.score_info+"分"}
diff --git a/public/react/src/modules/tpm/TPMBanner.js b/public/react/src/modules/tpm/TPMBanner.js
index 1ac81fe86..7b094a642 100644
--- a/public/react/src/modules/tpm/TPMBanner.js
+++ b/public/react/src/modules/tpm/TPMBanner.js
@@ -8,7 +8,7 @@ import PropTypes from 'prop-types';
import { Rating ,Progress} from "@icedesign/base";
-import {Modal,Input,Radio,Pagination,message,Spin,Icon,Tooltip} from 'antd';
+import {Modal,Input,Radio,Pagination,message,Spin,Icon,Tooltip,Rate} from 'antd';
import AccountProfile from"../user/AccountProfile";
@@ -569,6 +569,15 @@ class TPMBanner extends Component {
};
const antIcon = ;
+ const MyRate = ({ defaultValue, ...rest }) => {
+ let myValue = defaultValue;
+ console.log(myValue-Math.floor(myValue))
+ // if (myValue < Math.ceil(myValue)) {
+ // myValue = Math.floor(myValue) + 0.5;
+ // }
+
+ return ;
+ };
return (
shixunsDetails===undefined?"":
@@ -607,7 +616,22 @@ class TPMBanner extends Component {
-
+ {/**/}
+
-
学习人数
{shixunsDetails.stu_num}
@@ -624,11 +648,11 @@ class TPMBanner extends Component {
- -
-
+
+
+
{item.score_info===null?"5分":item.score_info+"分"}
diff --git a/public/react/src/modules/tpm/TPMShixunDiscuss.css b/public/react/src/modules/tpm/TPMShixunDiscuss.css index 6006b3f30..3af4ec269 100644 --- a/public/react/src/modules/tpm/TPMShixunDiscuss.css +++ b/public/react/src/modules/tpm/TPMShixunDiscuss.css @@ -1,47 +1,47 @@ -.tpmComment .-fit { - position: inherit; -} -.tpmComment .rc-pagination { - margin-left: auto; - margin-right: auto; - margin-top: 12px; - margin-bottom: 20px; -} -.tpmComment .paginationSection { - background: #FAFAFA; -} -.tpmComment .comment_item_cont.df.clearfix:nth-last-child(1) { - border-bottom: none; -} - -/*.tpmComment .fl.edu-back-white {*/ -/*min-height: 600px;*/ -/*}*/ - - -.user_watch_btn { - cursor: pointer; -} - - -/*md编辑器*/ -.tpmComment .commentItemMDEditor a.task-btn { - background: #4cacff!important; - margin-right: 16px; - margin-top: 16px; -} -/* md编辑器 resizeBar*/ - .tpmComment .commentItemMDEditor .editor__resize { - transform: translateX(-176%) -} - -#ratePanel > div > div > div.fr div.rateYo.fl.mt3 { - height: 20px; - line-height: 20px; - cursor: default; - width: 90px; -} - -.tpmComment .icon-jiangli { - /* margin-top: 2px; */ +.tpmComment .-fit { + position: inherit; +} +.tpmComment .rc-pagination { + margin-left: auto; + margin-right: auto; + margin-top: 12px; + margin-bottom: 20px; +} +.tpmComment .paginationSection { + background: #FAFAFA; +} +.tpmComment .comment_item_cont.df.clearfix:nth-last-child(1) { + border-bottom: none; +} + +/*.tpmComment .fl.edu-back-white {*/ +/*min-height: 600px;*/ +/*}*/ + + +.user_watch_btn { + cursor: pointer; +} + + +/*md编辑器*/ +.tpmComment .commentItemMDEditor a.task-btn { + background: #4cacff!important; + margin-right: 16px; + margin-top: 16px; +} +/* md编辑器 resizeBar*/ + .tpmComment .commentItemMDEditor .editor__resize { + transform: translateX(-176%) +} + +#ratePanel > div > div > div.fr div.rateYo.fl.mt3 { + height: 20px; + line-height: 20px; + cursor: default; + width: 110px; +} + +.tpmComment .icon-jiangli { + /* margin-top: 2px; */ } \ No newline at end of file diff --git a/public/react/src/modules/tpm/shixuns/ShixunCard.js b/public/react/src/modules/tpm/shixuns/ShixunCard.js index 3a0935e66..021185cc8 100644 --- a/public/react/src/modules/tpm/shixuns/ShixunCard.js +++ b/public/react/src/modules/tpm/shixuns/ShixunCard.js @@ -7,24 +7,15 @@ import PropTypes from 'prop-types'; import classNames from 'classnames'; -import {getImageUrl,setImagesUrl, toPath} from 'educoder'; +import { Rating ,Pagination} from "@icedesign/base"; -import { Spin,Icon } from 'antd'; +import {getImageUrl,setImagesUrl, toPath} from 'educoder'; -import 'antd/lib/pagination/style/index.css'; +import { Spin,Icon,Tooltip ,Rate} from 'antd'; import './shixunCss/shixunCard.css'; -import Rating from '@icedesign/base/lib/rating'; - -import Pagination from '@icedesign/base/lib/pagination'; - // 引入业务组件样式 -import '@icedesign/base/lib/pagination/style.js'; - -import '@icedesign/base/lib/rating/style.js'; - -import { Tooltip } from 'antd'; import axios from 'axios'; @@ -55,6 +46,15 @@ class ShixunCard extends Component { render() { let {middleshixundata, pagination, typepvisible, pages, totalcount} = this.props; + const MyRate = ({ defaultValue, ...rest }) => { + let myValue = defaultValue; + console.log(myValue-Math.floor(myValue)) + // if (myValue < Math.ceil(myValue)) { + // myValue = Math.floor(myValue) + 0.5; + // } + + return-
+ {/* */}
+
- {item.score_info===null?"5分":item.score_info+"分"}
+ {item.score_info===null?"5分":item.score_info+"分"}
diff --git a/public/react/src/modules/tpm/shixuns/css/TPMBanner.css b/public/react/src/modules/tpm/shixuns/css/TPMBanner.css index a6a7acc9a..fe059fccd 100644 --- a/public/react/src/modules/tpm/shixuns/css/TPMBanner.css +++ b/public/react/src/modules/tpm/shixuns/css/TPMBanner.css @@ -8,7 +8,7 @@ .rateYo{ text-align: center; cursor: default; - width: 90px; + width: 111px; } a:link, a:visited { diff --git a/public/stylesheets/educoder/edu-all.css b/public/stylesheets/educoder/edu-all.css index 91ea604d4..c20b648db 100644 --- a/public/stylesheets/educoder/edu-all.css +++ b/public/stylesheets/educoder/edu-all.css @@ -3051,7 +3051,7 @@ a.singlepublishtwo{ /*工程认证*/ /*首页*/ .authMainImg{width: 100%;height: 240px;background:url("/images/educoder/auth/banner1.jpg") no-repeat top center;background-size: 100% 100%;justify-content: center;align-items: center;display: -webkit-flex;} -.ListTableLine>p,.ListTableLine>.ListTableTitle{padding: 0px 30px;background-color: #F5F5F5;line-height: 40px;height: 56px;padding-top: 8px;box-sizing: border-box;} +.ListTableLine>p,.ListTableLine>.ListTableTitle{margin-bottom: 0px;padding: 0px 30px;background-color: #F5F5F5;line-height: 40px;height: 56px;padding-top: 8px;box-sizing: border-box;} .ListTableLine>p span,.ListTableTitle span{float: left;color: #666;box-sizing: border-box} .ListTableLine li{min-height: 48px;padding: 10px 0px;box-sizing: border-box;margin:0px 30px;border-bottom: 1px solid #eaeaea;} .ListTableLine li>span{float: left;box-sizing: border-box;}