From eabad1165ab4e3c8ba42497803bff3c76bc8cc67 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Wed, 11 Sep 2019 11:22:25 +0800 Subject: [PATCH] ec department index page --- app/controllers/concerns/paginate_helper.rb | 6 +- app/controllers/ecs/base_controller.rb | 6 +- .../ecs/ec_major_schools_controller.rb | 2 +- app/controllers/ecs/ec_majors_controller.rb | 4 +- .../ecs/major_managers_controller.rb | 3 +- app/controllers/ecs/users_controller.rb | 22 ++ app/controllers/users/base_controller.rb | 8 +- app/libs/util.rb | 2 + app/models/ec_year.rb | 3 + app/queries/application_query.rb | 6 + app/queries/user_query.rb | 28 ++ .../ecs/create_major_manager_service.rb | 25 +- .../ecs/ec_major_schools/index.json.jbuilder | 4 +- app/views/ecs/ec_majors/index.json.jbuilder | 7 +- app/views/ecs/homes/index.json.jbuilder | 2 +- .../ecs/major_managers/create.json.jbuilder | 1 - app/views/ecs/users/index.json.jbuilder | 12 + config/routes.rb | 1 + public/react/config/webpack.config.dev.js | 15 + public/react/config/webpack.config.prod.js | 17 ++ public/react/package.json | 2 + public/react/src/App.js | 9 + public/react/src/AppConfig.js | 2 +- public/react/src/images/ecs/bg.jpg | Bin 0 -> 81209 bytes .../src/modules/ecs/Home/AddMajorModal.js | 173 +++++++++++ .../src/modules/ecs/Home/AddMajorModal.scss | 28 ++ .../src/modules/ecs/Home/AddManagerModal.js | 220 ++++++++++++++ .../src/modules/ecs/Home/AddManagerModal.scss | 34 +++ .../src/modules/ecs/Home/MajorManager.js | 60 ++++ public/react/src/modules/ecs/Home/index.js | 268 ++++++++++++++++++ public/react/src/modules/ecs/Home/index.scss | 127 +++++++++ public/react/src/modules/help/Help.js | 1 - 32 files changed, 1072 insertions(+), 26 deletions(-) create mode 100644 app/controllers/ecs/users_controller.rb create mode 100644 app/queries/user_query.rb delete mode 100644 app/views/ecs/major_managers/create.json.jbuilder create mode 100644 app/views/ecs/users/index.json.jbuilder create mode 100644 public/react/src/images/ecs/bg.jpg create mode 100644 public/react/src/modules/ecs/Home/AddMajorModal.js create mode 100644 public/react/src/modules/ecs/Home/AddMajorModal.scss create mode 100644 public/react/src/modules/ecs/Home/AddManagerModal.js create mode 100644 public/react/src/modules/ecs/Home/AddManagerModal.scss create mode 100644 public/react/src/modules/ecs/Home/MajorManager.js create mode 100644 public/react/src/modules/ecs/Home/index.js create mode 100644 public/react/src/modules/ecs/Home/index.scss diff --git a/app/controllers/concerns/paginate_helper.rb b/app/controllers/concerns/paginate_helper.rb index bbe84a348..7233adebf 100644 --- a/app/controllers/concerns/paginate_helper.rb +++ b/app/controllers/concerns/paginate_helper.rb @@ -3,6 +3,10 @@ module PaginateHelper page = params[:page].to_i <= 0 ? 1 : params[:page].to_i per_page = params[:per_page].to_i > 0 && params[:per_page].to_i < 50 ? params[:per_page].to_i : opts[:per_page] || 20 - Kaminari.paginate_array(objs).page(page).per(per_page) + if objs.is_a?(Array) + Kaminari.paginate_array(objs).page(page).per(per_page) + else + objs.page(page).per(per_page) + end end end \ No newline at end of file diff --git a/app/controllers/ecs/base_controller.rb b/app/controllers/ecs/base_controller.rb index 2cded249a..1ad40d7b3 100644 --- a/app/controllers/ecs/base_controller.rb +++ b/app/controllers/ecs/base_controller.rb @@ -47,6 +47,10 @@ class Ecs::BaseController < ApplicationController page = params[:page].to_i <= 0 ? 1 : params[:page].to_i per_page = params[:per_page].to_i > 0 ? params[:per_page].to_i : 20 - Kaminari.paginate_array(objs).page(page).per(per_page) + if objs.is_a?(Array) + Kaminari.paginate_array(objs).page(page).per(per_page) + else + objs.page(page).per(per_page) + end end end \ No newline at end of file diff --git a/app/controllers/ecs/ec_major_schools_controller.rb b/app/controllers/ecs/ec_major_schools_controller.rb index 058bc888e..b7af447e2 100644 --- a/app/controllers/ecs/ec_major_schools_controller.rb +++ b/app/controllers/ecs/ec_major_schools_controller.rb @@ -20,7 +20,7 @@ class Ecs::EcMajorSchoolsController < Ecs::BaseController @count = major_schools.count #检索后的数量,小于或等于全部数量 @major_schools = paginate(major_schools.includes(:users, :ec_major)) - @template_major_school = current_school.ec_major_schools.is_template.first #示例专业 + @template_major_school = EcMajorSchool.is_template.first #示例专业 end def create diff --git a/app/controllers/ecs/ec_majors_controller.rb b/app/controllers/ecs/ec_majors_controller.rb index 7b14237dc..e8daaf008 100644 --- a/app/controllers/ecs/ec_majors_controller.rb +++ b/app/controllers/ecs/ec_majors_controller.rb @@ -1,7 +1,7 @@ class Ecs::EcMajorsController < Ecs::BaseController def index - school_major_subquery = current_school.ec_major_schools.select(:ec_major_id) #学校已选择的专业 - ec_majors = EcMajor.where.not(id: school_major_subquery) + @major_ids = current_school.ec_major_schools.pluck(:ec_major_id) #学校已选择的专业 + ec_majors = EcMajor.all if params[:search].present? ec_majors = ec_majors.search_name_or_code(params[:search]) diff --git a/app/controllers/ecs/major_managers_controller.rb b/app/controllers/ecs/major_managers_controller.rb index da5682734..d2515745b 100644 --- a/app/controllers/ecs/major_managers_controller.rb +++ b/app/controllers/ecs/major_managers_controller.rb @@ -3,7 +3,8 @@ class Ecs::MajorManagersController < Ecs::BaseController before_action :check_manager_permission! def create - @user = Ecs::CreateMajorManagerService.call(current_major_school, params[:user_id]) + Ecs::CreateMajorManagerService.call(current_major_school, params[:user_ids]) + render_ok rescue Ecs::CreateMajorManagerService::Error => ex render_error(ex.message) end diff --git a/app/controllers/ecs/users_controller.rb b/app/controllers/ecs/users_controller.rb new file mode 100644 index 000000000..139893efc --- /dev/null +++ b/app/controllers/ecs/users_controller.rb @@ -0,0 +1,22 @@ +class Ecs::UsersController < Ecs::BaseController + skip_before_action :check_user_permission! + before_action :check_manager_permission! + + def index + users = UserQuery.call(params) + + @count = users.count + @users = paginate users.includes(user_extension: [:school, :department]) + @manager_ids = current_major_school.ec_major_school_users.pluck(:user_id) + end + + private + + def current_major_school + @_ec_major_school ||= EcMajorSchool.find(params[:ec_major_school_id]) + end + + def current_school + @_current_school ||= current_major_school.school + end +end diff --git a/app/controllers/users/base_controller.rb b/app/controllers/users/base_controller.rb index 3ba6940f5..128dc539b 100644 --- a/app/controllers/users/base_controller.rb +++ b/app/controllers/users/base_controller.rb @@ -55,7 +55,13 @@ class Users::BaseController < ApplicationController page = page_value per_page = per_page_value - return Kaminari.paginate_array(objs).page(page).per(per_page) unless opts[:special] && observed_logged_user? + unless opts[:special] && observed_logged_user? + if objs.is_a?(Array) + return Kaminari.paginate_array(objs).page(page).per(per_page) + else + return objs.page(page).per(per_page) + end + end # note: 为实现第一页少一条记录,让前端放置新建入口 if page == 1 diff --git a/app/libs/util.rb b/app/libs/util.rb index f39ce2b58..ae2e4b80b 100644 --- a/app/libs/util.rb +++ b/app/libs/util.rb @@ -45,6 +45,8 @@ module Util def conceal(str, type = nil) str = str.to_s + return if str.blank? + case type when :phone then "#{str[0..2]}***#{str[-4..-1]}" when :email then "#{str[0..2]}***#{str[str.rindex('@')..-1]}" diff --git a/app/models/ec_year.rb b/app/models/ec_year.rb index 69ae4c291..153edcf16 100644 --- a/app/models/ec_year.rb +++ b/app/models/ec_year.rb @@ -9,4 +9,7 @@ class EcYear < ApplicationRecord has_many :ec_graduation_requirements, dependent: :destroy has_many :ec_graduation_subitems, through: :ec_graduation_requirements has_many :ec_year_students, dependent: :destroy + + has_many :ec_course_users, dependent: :destroy + has_many :managers, through: :ec_course_users, source: :user end diff --git a/app/queries/application_query.rb b/app/queries/application_query.rb index 3a92cc6e8..c66af94c0 100644 --- a/app/queries/application_query.rb +++ b/app/queries/application_query.rb @@ -1,3 +1,9 @@ class ApplicationQuery include Callable + + private + + def strip_param(key) + params[key].to_s.strip.presence + end end \ No newline at end of file diff --git a/app/queries/user_query.rb b/app/queries/user_query.rb new file mode 100644 index 000000000..326665fe9 --- /dev/null +++ b/app/queries/user_query.rb @@ -0,0 +1,28 @@ +class UserQuery < ApplicationQuery + attr_reader :params + + def initialize(params) + @params = params + end + + def call + users = User.where(type: 'User') + + # 真实姓名 + if name = strip_param(:name) + users = users.where('LOWER(CONCAT(users.lastname, users.firstname)) LIKE ?', "%#{name.downcase}%") + end + + # 单位名称 + if school = strip_param(:school) + users = users.joins(user_extension: :school).where('schools.name LIKE ?', "%#{school}%") + end + + # 职业 + if (identity = strip_param(:identity)) && UserExtension.identities.keys.include?(identity) + users = users.joins(:user_extension).where(user_extensions: { identity: identity }) + end + + users + end +end \ No newline at end of file diff --git a/app/services/ecs/create_major_manager_service.rb b/app/services/ecs/create_major_manager_service.rb index befe80706..c955bffed 100644 --- a/app/services/ecs/create_major_manager_service.rb +++ b/app/services/ecs/create_major_manager_service.rb @@ -3,29 +3,30 @@ class Ecs::CreateMajorManagerService < ApplicationService MAJOR_MANAGER_COUNT_LIMIT = 5 # 专业管理员数量限制 - attr_reader :major_school, :user_id + attr_reader :major_school, :user_ids - def initialize(major_school, user_id) + def initialize(major_school, user_ids) @major_school = major_school - @user_id = user_id + @user_ids = user_ids end def call raise Error, '示例专业不能添加管理员' if major_school.template_major? - user = User.find_by(id: params[:user_id]) - raise Error, '该用户不存在' if user.blank? + @user_ids = User.where(id: user_ids).pluck(:id) - if major_school.ec_major_school_users.exists?(user_id: user.id) - raise Error, '该用户已经是该专业的管理员了' + if major_school.ec_major_school_users.exists?(user_id: user_ids) + raise Error, '所选用户中存在该专业的管理员' end - if major_school.ec_major_school_users.count >= MAJOR_MANAGER_COUNT_LIMIT - raise Error, '该专业管理员数量已达上限' + if major_school.ec_major_school_users.count + user_ids.count > MAJOR_MANAGER_COUNT_LIMIT + raise Error, "该专业管理员数量超过上限(#{MAJOR_MANAGER_COUNT_LIMIT}人)" end - major_school.ec_major_school_users.create!(user: user) - - user + ActiveRecord::Base.transaction do + user_ids.each do |user_id| + major_school.ec_major_school_users.create!(user_id: user_id) + end + end end end \ No newline at end of file diff --git a/app/views/ecs/ec_major_schools/index.json.jbuilder b/app/views/ecs/ec_major_schools/index.json.jbuilder index 0924b71ea..312abd26b 100644 --- a/app/views/ecs/ec_major_schools/index.json.jbuilder +++ b/app/views/ecs/ec_major_schools/index.json.jbuilder @@ -3,7 +3,7 @@ json.count @count # 示例专业 json.template_ec_major_school do - json.partial! 'ecs/ec_major_schools/shared/ec_major_school', ec_major_school: @template_major_school + json.partial! 'ecs/ec_major_schools/shared/ec_major_school', ec_major_school: @template_major_school if @template_major_school end # 专业 @@ -11,5 +11,5 @@ json.ec_major_schools @major_schools do |ec_major_school| json.partial! 'ecs/ec_major_schools/shared/ec_major_school', ec_major_school: ec_major_school # 专业管理员 - json.major_managers ec_major_school.users, partial: 'ecs/ec_major_schools/shared/ec_major_school', as: :user + json.major_managers ec_major_school.users, partial: 'users/user_simple', as: :user end diff --git a/app/views/ecs/ec_majors/index.json.jbuilder b/app/views/ecs/ec_majors/index.json.jbuilder index 34ee9a907..df3373fed 100644 --- a/app/views/ecs/ec_majors/index.json.jbuilder +++ b/app/views/ecs/ec_majors/index.json.jbuilder @@ -1,2 +1,7 @@ json.count @count -json.es_majors @ec_majors, partial: 'ecs/majors/shared/ec_major', as: :ec_major +json.ec_majors do + json.array! @ec_majors.each do |major| + json.extract! major, :id, :name, :code + json.selected @major_ids.include?(major.id) + end +end diff --git a/app/views/ecs/homes/index.json.jbuilder b/app/views/ecs/homes/index.json.jbuilder index 9bf21f056..8546f6c4a 100644 --- a/app/views/ecs/homes/index.json.jbuilder +++ b/app/views/ecs/homes/index.json.jbuilder @@ -13,4 +13,4 @@ json.school do json.name current_school.name end -json.school_managers @school_managers, partial: 'ecs/shared/user', as: :user +json.school_managers @school_managers, partial: 'users/user_simple', as: :user diff --git a/app/views/ecs/major_managers/create.json.jbuilder b/app/views/ecs/major_managers/create.json.jbuilder deleted file mode 100644 index ff7ff01e5..000000000 --- a/app/views/ecs/major_managers/create.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.partial! 'ecs/shared/user', user: @user diff --git a/app/views/ecs/users/index.json.jbuilder b/app/views/ecs/users/index.json.jbuilder new file mode 100644 index 000000000..0109b9ca0 --- /dev/null +++ b/app/views/ecs/users/index.json.jbuilder @@ -0,0 +1,12 @@ +json.count @count +json.users do + json.array! @users.each do |user| + json.id user.id + json.name user.real_name + json.identity user.identity + json.school_name user.school_name + json.department_name user.department_name + json.phone Util.conceal(user.phone, :phone) + json.manager @manager_ids.include?(user.id) + end +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index e47c28fe6..d043eff96 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -708,6 +708,7 @@ Rails.application.routes.draw do # 为避免url过长以及层级过深,路由定义和controller继承都做了处理 scope module: :ecs do resources :ec_major_schools, only: [] do + resources :users, only: [:index] resources :major_managers, only: [:create, :destroy] resources :ec_years, only: [:index, :create, :destroy] end diff --git a/public/react/config/webpack.config.dev.js b/public/react/config/webpack.config.dev.js index 8045580e9..18d1a4002 100644 --- a/public/react/config/webpack.config.dev.js +++ b/public/react/config/webpack.config.dev.js @@ -197,6 +197,21 @@ module.exports = { }, ], }, + { + test: /\.scss$/, + use: [ + require.resolve("style-loader"), + { + loader: require.resolve("css-loader"), + options: { + importLoaders: 1, + }, + }, + { + loader: require.resolve("sass-loader") + } + ], + }, // "file" loader makes sure those assets get served by WebpackDevServer. // When you `import` an asset, you get its (virtual) filename. // In production, they would get copied to the `build` folder. diff --git a/public/react/config/webpack.config.prod.js b/public/react/config/webpack.config.prod.js index ddc111b9c..e97483c0e 100644 --- a/public/react/config/webpack.config.prod.js +++ b/public/react/config/webpack.config.prod.js @@ -224,6 +224,23 @@ module.exports = { ), // Note: this won't work without `new ExtractTextPlugin()` in `plugins`. }, + { + test: /\.scss$/, + use: [ + require.resolve("style-loader"), + { + loader: require.resolve("css-loader"), + options: { + importLoaders: 1, + minimize: true, + sourceMap: shouldUseSourceMap, + }, + }, + { + loader: require.resolve("sass-loader") + } + ], + }, // "file" loader makes sure assets end up in the `build` folder. // When you `import` an asset, you get its filename. // This loader doesn't use a "test" so it will catch all modules diff --git a/public/react/package.json b/public/react/package.json index 84dec6d11..8d7362c28 100644 --- a/public/react/package.json +++ b/public/react/package.json @@ -163,6 +163,8 @@ "babel-plugin-import": "^1.11.0", "concat": "^1.0.3", "happypack": "^5.0.1", + "node-sass": "^4.12.0", + "sass-loader": "^7.3.1", "webpack-bundle-analyzer": "^3.0.3", "webpack-parallel-uglify-plugin": "^1.1.0" } diff --git a/public/react/src/App.js b/public/react/src/App.js index 1a4aedc05..6b7a74cd4 100644 --- a/public/react/src/App.js +++ b/public/react/src/App.js @@ -262,6 +262,11 @@ const Help = Loadable({ loading: Loading, }) +const EcsHome = Loadable({ + loader: () => import('./modules/ecs/Home'), + loading: Loading, +}) + class App extends Component { constructor(props) { super(props) @@ -516,6 +521,10 @@ class App extends Component { render={ (props)=>() }/> + () + }/> diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index 9653eb690..099b9ddc0 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -50,7 +50,7 @@ export function initAxiosInterceptors(props) { // wy // proxy="http://192.168.2.63:3001" - + proxy = "http://localhost:3001" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 const requestMap = {}; diff --git a/public/react/src/images/ecs/bg.jpg b/public/react/src/images/ecs/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2abdb6a7cc4a9428a03cd6ae529377f1a427e0a GIT binary patch literal 81209 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

i?3b2 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 selected && 已选择 }, +]; +const defaultPagination = { current: 1, pageSize: 10, total: 0 }; + +class AddMajorModal extends React.Component { + constructor(props) { + super(props); + + this.state = { + loading: false, + confirmLoading: false, + error: '', + keyword: '', + pagination: {...defaultPagination}, + + schoolId: props.schoolId, + majorData: [], + selectedData: [] + } + + this.getMajors = this.getMajors.bind(this); + this.selectMajor = this.selectMajor.bind(this); + this.onAfterModalClose = this.onAfterModalClose.bind(this); + this.handleOk = this.handleOk.bind(this); + this.handleCancel = this.handleCancel.bind(this); + this.onPaginationChange = this.onPaginationChange.bind(this); + } + + componentDidUpdate(prevProps) { + if(!prevProps.visible && this.props.visible){ + this.getMajors(); + } + } + + getMajors(){ + let { schoolId, keyword, pagination } = this.state; + + this.setState({ loading: true }); + axios.get(`/schools/${schoolId}/ec_majors.json`, { + params: { + search: keyword, + page: pagination.current, + per_page: pagination.pageSize + } + }).then(res => { + if(res.status === 200){ + const pagination = { ...this.state.pagination }; + pagination.total = res.data.count; + + this.setState({ + majorData: res.data.ec_majors, + loading: false, + pagination, + }) + } + }).catch(e => { + console.log(e); + this.setState({ loading: false }) + }) + } + + getCheckboxProps(record){ + return { ...record, disabled: record.selected } + } + + selectMajor(selectedRowKeys){ + this.setState({ selectedData: selectedRowKeys }); + } + + onPaginationChange(page, pageSize){ + this.setState({ pagination: { current: page, pageSize: pageSize } }, () => { + this.getMajors() + }); + } + + handleOk(){ + let { selectedData } = this.state; + + if(selectedData.length === 0){ + this.setState({ error: '请选择专业' }); + return; + } + + this.submitMajor(selectedData); + } + + handleCancel(){ + this.props.onHide(false); + } + + onAfterModalClose(){ + this.setState({ + error: '', + keyword: '', + pagination: {...defaultPagination}, + majorData: [], + selectedData: [], + }); + } + + submitMajor(ids) { + let { schoolId } = this.state; + + this.setState({ confirmLoading: true }); + axios.post(`/schools/${schoolId}/ec_major_schools.json`, { major_ids: ids }).then(res => { + if(res.status === 200){ + message.success('操作成功'); + this.setState({ confirmLoading: false }); + this.props.onHide(true); + } + }).catch(e => { + console.log(e); + this.setState({ confirmLoading: false }); + }) + } + + render() { + let { loading, keyword, majorData, selectedData, pagination } = this.state; + + return ( +

+ + +
+ this.setState({keyword: e.target.value})} + onSearch={this.getMajors} + value={keyword}/> +
+ +
+ +
{ this.state.error }
+ + + + ) + } +} + +AddMajorModal.propTypes = { + schoolId: PropTypes.number, + visible: PropTypes.bool, + onHide: PropTypes.func +} + +export default AddMajorModal \ No newline at end of file diff --git a/public/react/src/modules/ecs/Home/AddMajorModal.scss b/public/react/src/modules/ecs/Home/AddMajorModal.scss new file mode 100644 index 000000000..f79576eab --- /dev/null +++ b/public/react/src/modules/ecs/Home/AddMajorModal.scss @@ -0,0 +1,28 @@ +.add-major-modal { + .add-major-search { + margin-bottom: 20px; + } + .ant-modal-body { + padding-bottom: 0; + + .major-row { + padding: 10px; + } + .ant-table-thead { + background: #fafafa; + } + .ant-table-scroll { + min-height: 250px; + } + + .error { + height: 20px; + margin-top: -20px; + color: red; + } + } + .ant-modal-footer { + text-align: center; + border-top: unset; + } +} \ No newline at end of file diff --git a/public/react/src/modules/ecs/Home/AddManagerModal.js b/public/react/src/modules/ecs/Home/AddManagerModal.js new file mode 100644 index 000000000..99dc6cd8e --- /dev/null +++ b/public/react/src/modules/ecs/Home/AddManagerModal.js @@ -0,0 +1,220 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Modal, Input, Table, message, Select, Form, Row, Col, Button } from 'antd'; +import axios from 'axios'; + +import './AddManagerModal.scss'; + +const { Option } = Select; + +const columnRender = (text) =>
{text}
+const tableColumns = [ + { title: '姓名', dataIndex: 'name', key: 'name', width: 60, render: columnRender }, + { title: '职称', dataIndex: 'identity', key: 'identity', width: 60, }, + { title: '单位', dataIndex: 'school_name', key: 'school_name', render: (_, record) => columnRender(`${record.school_name} ${record.department_name}`) }, + { title: '手机号', dataIndex: 'phone', key: 'phone', width: 80, }, +]; +const defaultPagination = { current: 1, pageSize: 20, total: 0 }; + +class AddManagerModal extends React.Component { + constructor(props) { + super(props); + + this.state = { + loading: false, + confirmLoading: false, + nameValidateStatus: '', + error: '', + name: '', + school: props.schoolName, + identity: '', + pagination: {...defaultPagination}, + + schoolId: props.schoolId, + userData: [], + selectedData: [] + } + + this.getUsers = this.getUsers.bind(this); + this.selectUser = this.selectUser.bind(this); + this.onAfterModalClose = this.onAfterModalClose.bind(this); + this.handleOk = this.handleOk.bind(this); + this.handleCancel = this.handleCancel.bind(this); + this.onPaginationChange = this.onPaginationChange.bind(this); + } + + getUsers(){ + let { majorId } = this.props; + let { name, school, identity, pagination } = this.state; + + if(name.length === 0){ + this.setState({ nameValidateStatus: 'error' }); + return; + } + + this.setState({ loading: true }); + axios.get(`/ec_major_schools/${majorId}/users.json`, { + params: { + name, school, identity, + page: pagination.current, + per_page: pagination.pageSize + } + }).then(res => { + if(res.status === 200){ + const pagination = { ...this.state.pagination }; + pagination.total = res.data.count; + + this.setState({ + userData: res.data.users, + loading: false, + pagination, + }) + } + }).catch(e => { + console.log(e); + this.setState({ loading: false }) + }) + } + + getCheckboxProps(record){ + return { ...record, disabled: record.manager } + } + + selectUser(selectedRowKeys){ + this.setState({ selectedData: selectedRowKeys }); + } + + onPaginationChange(page, pageSize){ + this.setState({ pagination: { current: page, pageSize: pageSize } }, () => { + this.getUsers() + }); + } + + onNameChange = (e) => { + let name = e.target.value; + let nameValidateStatus = ''; + + if(name.length === 0){ + nameValidateStatus = 'error' + } + + this.setState({ nameValidateStatus, name }); + } + + handleOk(){ + this.setState({ error: '' }); + let { selectedData } = this.state; + + if(selectedData.length === 0){ + this.setState({ error: '请选择至少一个用户' }); + return; + } + + this.submitUsers(selectedData); + } + + handleCancel(){ + this.props.onHide(false); + } + + onAfterModalClose(){ + this.setState({ + error: '', + nameValidateStatus: '', + name: '', + school: this.props.schoolName, + identity: '', + pagination: {...defaultPagination}, + userData: [], + selectedData: [], + }); + } + + submitUsers(ids) { + let { majorId } = this.props; + + this.setState({ confirmLoading: true }); + axios.post(`/ec_major_schools/${majorId}/major_managers.json`, { user_ids: ids }).then(res => { + if(res.status !== 200){ return } + + message.success('操作成功'); + this.setState({ confirmLoading: false }); + this.props.onHide(true); + }).catch(e => { + console.log(e); + this.setState({ confirmLoading: false }); + }) + } + + render() { + let { loading, name, school, identity, userData, selectedData, pagination, nameValidateStatus } = this.state; + + return ( +
+ + +
+
+ +
+ + + + + + + + + + + + + + this.setState({ school: e.target.value })} value={school} placeholder="请输入学校名称"/> + + + + + + + + + +
+
+
{ this.state.error }
+ + + + ) + } +} + +AddManagerModal.propTypes = { + schoolId: PropTypes.string, + schoolName: PropTypes.string, + majorId: PropTypes.number, + visible: PropTypes.bool, + onHide: PropTypes.func +} + +export default AddManagerModal \ No newline at end of file diff --git a/public/react/src/modules/ecs/Home/AddManagerModal.scss b/public/react/src/modules/ecs/Home/AddManagerModal.scss new file mode 100644 index 000000000..b3c39f1f4 --- /dev/null +++ b/public/react/src/modules/ecs/Home/AddManagerModal.scss @@ -0,0 +1,34 @@ +.add-ec-manager-modal { + .ant-modal-body { + padding-bottom: 0; + + .ant-table-thead { + background: #fafafa; + } + .ant-table-scroll { + min-height: 250px; + } + + .add-ec-manager-search { + margin-bottom: 20px; + + .ant-form-item { + margin-bottom: 0; + + &-label > label { + font-size: 14px !important; + } + } + } + + .error { + height: 20px; + margin-top: -20px; + color: red; + } + } + .ant-modal-footer { + text-align: center; + border-top: unset; + } +} \ No newline at end of file diff --git a/public/react/src/modules/ecs/Home/MajorManager.js b/public/react/src/modules/ecs/Home/MajorManager.js new file mode 100644 index 000000000..37b9d6e49 --- /dev/null +++ b/public/react/src/modules/ecs/Home/MajorManager.js @@ -0,0 +1,60 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Tag, message } from 'antd'; +import axios from 'axios'; + +class MajorManager extends React.Component { + constructor(props) { + super(props); + + this.state = { + schoolId: props.schoolId, + majorId: props.majorId, + canManage: props.canManage, + managers: props.managers + } + + this.deleteManager = this.deleteManager.bind(this); + } + + componentDidUpdate(prevProps) { + if(this.props.managers.length !== prevProps.managers.length){ + this.setState({ managers: this.props.managers }); + } + } + + deleteManager(managerId){ + axios.delete(`/ec_major_schools/${this.state.majorId}/major_managers/${managerId}.json`).then(result => { + if(result.status === 200){ + message.success('操作成功'); + } + }).catch(e => { console.log(e) }) + } + + render() { + let { canManage, managers } = this.state; + + return ( +
+ { + managers && managers.map(manager => { + return ( + { this.deleteManager(manager.id) }} color="blue"> + { manager.name } + + ) + }) + } +
+ ) + } +} + +MajorManager.propTypes = { + schoolId: PropTypes.string, + majorId: PropTypes.number, + canManage: PropTypes.bool, + managers: PropTypes.array +} + +export default MajorManager \ No newline at end of file diff --git a/public/react/src/modules/ecs/Home/index.js b/public/react/src/modules/ecs/Home/index.js new file mode 100644 index 000000000..30fbf64f5 --- /dev/null +++ b/public/react/src/modules/ecs/Home/index.js @@ -0,0 +1,268 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Spin, Avatar, Tooltip, Button, Divider, Input, Row, Col, Icon, Modal } from "antd"; +import { SnackbarHOC, getImageUrl } from 'educoder'; +import axios from 'axios'; + +import './index.scss'; +import bgImage from '../../../images/ecs/bg.jpg'; + +import {TPMIndexHOC} from "../../tpm/TPMIndexHOC"; +import MajorManager from "./MajorManager"; +import AddMajorModal from "./AddMajorModal"; +import AddManagerModal from "./AddManagerModal"; + +const { Search } = Input; +const { confirm } = Modal; + +class Home extends React.Component { + constructor (props) { + super(props); + + const searchParams = new URLSearchParams(props.location.search.substring(1)); + let schoolId = searchParams.get('school_id'); + + if(!schoolId){ + this.props.history.push(`/nopage`); + return; + } + + this.state = { + loading: true, + majorLoading: true, + AddMajorVisible: false, + AddManagerVisible: false, + searchKeyword: '', + + schoolId: schoolId, + currentMajorId: null, + school: null, + currentUser: null, + managers: null, + templateMajor: null, + majors: null, + majorCount: 0 + } + + this.getSchoolMajors = this.getSchoolMajors.bind(this); + this.HideAddMajorModal = this.HideAddMajorModal.bind(this); + this.showDeleteMajorConfirm = this.showDeleteMajorConfirm.bind(this); + this.showAddManagerModal = this.showAddManagerModal.bind(this); + this.HideAddManagerModal = this.HideAddManagerModal.bind(this); + } + + componentDidMount() { + window.document.title = "专业列表"; + this.getSchoolDetail(); + } + + getSchoolDetail() { + axios.get(`/schools/${this.state.schoolId}/detail.json`).then(result => { + if(result.status === 200){ + this.setState({ + school: result.data.school, + currentUser: result.data.current_user, + managers: result.data.school_managers, + loading: false + }); + this.getSchoolMajors(); + } + }).catch(e => { + console.log(e); + this.setState({ loading: false }); + }); + } + + getSchoolMajors(){ + let that = this; + let keyword = this.state.searchKeyword; + this.setState({ majorLoading: true }); + + axios.get(`/schools/${this.state.schoolId}/ec_major_schools.json?search=${keyword}&per_page=50`).then(result => { + if(result.status === 200){ + that.setState({ + majorCount: result.data.count, + templateMajor: result.data.template_ec_major_school, + majors: result.data.ec_major_schools, + majorLoading: false + }); + } + }).catch(e => { + console.log(e); + that.setState({ majorLoading: false }); + }); + } + + showAddManagerModal(majorId){ + this.setState({ currentMajorId: majorId, AddManagerVisible: true }); + } + + HideAddMajorModal(added){ + this.setState({ AddMajorVisible: false }); + if(added){ + this.state.searchKeyword = ''; + this.getSchoolMajors(); + } + } + HideAddManagerModal(added){ + this.setState({ AddManagerVisible: false }); + if(added){ + this.state.searchKeyword = ''; + this.getSchoolMajors(); + } + } + + showDeleteMajorConfirm(majorId){ + confirm({ + title: '确认删除该认证专业?', + okText: '确认', + cancelText: '取消', + onOk: () => { + this.deleteMajor(majorId); + }, + onCancel() {}, + }); + } + + deleteMajor(majorId){ + let { schoolId, majorCount, majors } = this.state; + axios.delete(`/schools/${schoolId}/ec_major_schools/${majorId}.json`).then(res => { + if(res.status === 200){ + this.setState({ + majorCount: majorCount - 1, + majors: majors.filter(major => major.id !== majorId) + }); + } + }).catch(e => console.log(e)) + } + + render() { + let { currentUser, school, managers, templateMajor, majors, majorCount } = this.state; + + const manageSchool = !!currentUser && (currentUser.manager || currentUser.admin); + const manageMajor = !!currentUser && (manageSchool || currentUser.major_manager); + + const configBtnText = manageMajor ? '配置' : '查看'; + + return ( +
+ +
+
+
+ { school && school.name } +
+
+ +
+
+
学校管理员
+
温馨提醒:学校管理员有添加专业及设置专业管理员等权限
+
+
+ { + managers && managers.map((manager) => { + return ( + + + + { manager.name } + + + ) + }) + } +
+
+ +
+
+
+
专业列表
+
+ 请添加参与认证的专业名称 + 查看详情 +
+
+ +
+ + + +
+
+
{majorCount || 0} 个检索结果({majorCount || 0} 专业)
+ this.setState({searchKeyword: e.target.value})} + onSearch={this.getSchoolMajors} + value={this.state.searchKeyword} + style={{ width: 200 }} + /> +
+
+ +
序号 + 专业代码 + 专业名称 + 专业管理员 + 操作 + + + { + templateMajor && ( + + 0 + 000000 + + { templateMajor.name } + + + + { configBtnText } + + + ) + } + { + majors && majors.map((major, index) => { + return ( + + { index + 1 } + { major.code } + + { major.name } + + +
+ { manageMajor && this.showAddManagerModal(major.id)}> } + + +
+ + + { configBtnText } + { manageSchool && ( this.showDeleteMajorConfirm(major.id)}>删除 ) } + + + ) + }) + } + + + + + + + + { this.state.school && } + + + ) + } +} + +export default SnackbarHOC() (TPMIndexHOC ( Home )); \ No newline at end of file diff --git a/public/react/src/modules/ecs/Home/index.scss b/public/react/src/modules/ecs/Home/index.scss new file mode 100644 index 000000000..93a5d3f35 --- /dev/null +++ b/public/react/src/modules/ecs/Home/index.scss @@ -0,0 +1,127 @@ +.ec-home { + .head-image { + width: 100%; + height: 240px; + background-size: 100% 100%; + justify-content: center; + align-items: center; + display: -webkit-flex; + } + + .ec-home-item { + background: #fff; + + &-head { + display: flex; + align-items: baseline; + margin-bottom: 20px; + } + + &-label { + margin-right: 20px; + font-size: 18px; + } + + &-tip { + color: #999; + font-size: 12px; + } + + &.major-list-item { + .ec-home-item { + &-head { + margin-bottom: -24px; + padding: 20px 30px; + justify-content: space-between; + align-items: center; + } + + &-tip { + font-size: 14px; + } + } + } + } + + .school-manager-item { + padding: 20px 30px; + } + + .ec-school-manager { + display: flex; + flex-wrap: wrap; + + &-item { + margin-right: 20px; + display: flex; + flex-direction: column; + align-items: center; + } + + &-name { + display: block; + text-align: center; + max-width: 48px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + color: #666; + } + } + + .major-list-item { + .major-list { + &-container { + + } + + &-head { + margin-top: -24px; + padding: 20px 30px; + display: flex; + align-items: center; + justify-content: space-between; + + .total { font-size: 12px; } + } + + &-body { + padding-bottom: 30px; + } + + &-row { + padding: 10px 15px; + border-bottom: 1px solid #eee; + + &:last-child { border-bottom: unset; } + + &.head { + background: #F5F5F5; + } + .ant-btn-link { + text-align: center; + } + } + } + } + .operate-box { + .link { + margin: 0 5px; + } + } + .manager-box { + display: flex; + align-items: center; + + &-content { + flex: 1; + display: flex; + flex-wrap: wrap; + align-items: center; + } + } + + .link { + color: #007bff; + } +} \ No newline at end of file diff --git a/public/react/src/modules/help/Help.js b/public/react/src/modules/help/Help.js index f04079bcc..f148dd373 100644 --- a/public/react/src/modules/help/Help.js +++ b/public/react/src/modules/help/Help.js @@ -26,7 +26,6 @@ class Help extends React.Component { } componentDidUpdate(prevProps) { - console.log('update', prevProps, this.props); if(prevProps.match.params.type !== this.props.match.params.type){ this.setState({ type: this.props.match.params.type }); }