Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun
# Conflicts: # public/react/src/modules/paths/PathDetail/DetailTop.js # public/react/src/modules/paths/PathDetail/PathDetailIndex.jsdev_oauth
commit
b36aeb5293
@ -0,0 +1,67 @@
|
||||
# add test user
|
||||
namespace :sync do
|
||||
task :add_user => :environment do
|
||||
DCODES = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
|
||||
user_count = ENV['args'].split(",")[0].to_i # 用户数
|
||||
rand_chart = ENV['args'].split(",")[1] # 手机号或者邮箱等前面的随机数
|
||||
|
||||
puts rand_chart
|
||||
puts user_count
|
||||
|
||||
(1..user_count).each do |i|
|
||||
puts i
|
||||
|
||||
no = sprintf("%04d", i)
|
||||
phone = "#{rand_chart}160731#{no}"
|
||||
mail = "#{rand_chart}#{no}@educoder.net"
|
||||
code = generate_identifier User, 8
|
||||
login = "m" + code
|
||||
|
||||
|
||||
l = "赵,钱,孙,李,周,吴,郑,王,冯,陈,褚,卫,蒋,沈,韩,杨,朱,秦,尤,许,何,吕,施,张,孔,曹,严,华,金,魏,陶,姜,黄".split(",")
|
||||
f = "爱童,安妮,若婷,安煜,博,雷,梅,静,士红,大龙,冰波,慧娟,梅,婧婧,军,淋,真,维,涛,程程,
|
||||
谷南,慕儿,夏岚,友儿,小萱,紫青,妙菱,冬寒,曼柔,语蝶,青筠,夜安,觅海,问安,晓槐,雅山,访云,翠容,寒凡,晓绿,以菱,
|
||||
冬云,含玉,访枫,含卉,夜白,冷安,灵竹,醉薇,元珊,幻波,盼夏,元瑶,迎曼,水云,访琴,谷波,乐之,笑白,之山,妙海,紫霜,
|
||||
平夏,凌旋,孤丝,怜寒,向萍,凡松,青丝,翠安,如天,凌雪,绮菱,代云,南莲,寻南,春文,香薇,冬灵,凌珍,采绿,天春,沛文,
|
||||
紫槐,幻柏,采文,春梅,雪旋,盼海,映梦,安雁,映容,凝阳,访风,天亦,平绿,盼香,觅风,小霜,雪萍,半雪,山柳,谷雪,靖易,
|
||||
白薇,梦菡,飞绿,如波,又晴,友易,香菱,冬亦,问,妙春,海冬,半安,平春,幼柏,秋灵,凝芙,念烟,白山,从灵,尔芙,迎蓉,
|
||||
念寒,翠绿,翠芙,靖儿,妙柏,千凝,小珍,天巧,妙旋,雪枫,夏菡,元绿,痴灵,绮琴,雨双,听枫,觅荷,凡之,晓凡,雅彤,香薇,
|
||||
孤风,从安,绮彤,之玉,雨珍,幻丝,代梅,香波,青亦,元菱,海瑶,飞槐,听露,梦岚,幻竹,新冬,盼翠,谷云".split(",")
|
||||
|
||||
lastname = l[rand(l.length)].strip + f[rand(f.length)].strip
|
||||
|
||||
edit_params = {
|
||||
login: login,
|
||||
admin: false,
|
||||
type: User,
|
||||
phone: phone,
|
||||
lastname: lastname,
|
||||
mail: mail,
|
||||
authentication: 1,
|
||||
professional_certification: 1,
|
||||
profile_completed: true,
|
||||
is_test: true
|
||||
}
|
||||
user = User.create!(edit_params)
|
||||
puts "aa"
|
||||
UserExtension.create!(user_id: user.id, school_id: 117)
|
||||
puts i
|
||||
end
|
||||
end
|
||||
|
||||
# 随机生成字符
|
||||
def generate_identifier(container, num)
|
||||
code = DCODES.sample(num).join
|
||||
if container == User
|
||||
while container.exists?(login: code) do
|
||||
code = DCODES.sample(num).join
|
||||
end
|
||||
else
|
||||
while container.exists?(identifier: code) do
|
||||
code = DCODES.sample(num).join
|
||||
end
|
||||
end
|
||||
code
|
||||
end
|
||||
|
||||
end
|
@ -1,108 +1,108 @@
|
||||
import React,{ Component } from "react";
|
||||
import { Modal,Checkbox,Upload,Button,Icon,message,Input} from "antd";
|
||||
|
||||
|
||||
class ModulationModal extends Component{
|
||||
constructor(props){
|
||||
super(props);
|
||||
this.state={
|
||||
group_ids:[],
|
||||
fileList:[],
|
||||
textareaval:undefined,
|
||||
Inputsval:undefined
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Saves=()=>{
|
||||
let {textareaval,Inputsval}=this.state;
|
||||
if(textareaval===""||textareaval===undefined){
|
||||
this.setState({
|
||||
textareavaltype:true
|
||||
})
|
||||
return
|
||||
}
|
||||
this.setState({
|
||||
textareavaltype: false
|
||||
})
|
||||
|
||||
if(Inputsval===undefined||Inputsval===""){
|
||||
this.setState({
|
||||
Inputsvaltype:true
|
||||
})
|
||||
return
|
||||
}
|
||||
this.props.Saves(textareaval,Inputsval)
|
||||
|
||||
}
|
||||
|
||||
settextarea=(e)=>{
|
||||
this.setState({
|
||||
textareaval:e.target.value
|
||||
})
|
||||
}
|
||||
|
||||
setInputs=(e)=>{
|
||||
var value=parseInt(e.target.value)
|
||||
|
||||
if(isNaN(value)){
|
||||
value=0
|
||||
}else{
|
||||
if(value<0||value>100){
|
||||
value=0
|
||||
}
|
||||
}
|
||||
this.setState({
|
||||
Inputsval:value
|
||||
})
|
||||
}
|
||||
render(){
|
||||
let {textareaval,Inputsval,textareavaltype,Inputsvaltype}=this.state;
|
||||
return(
|
||||
<div>
|
||||
<Modal
|
||||
keyboard={false}
|
||||
className={"HomeworkModal"}
|
||||
title={this.props.modalname || '调分'}
|
||||
visible={this.props.visible}
|
||||
closable={false}
|
||||
footer={null}
|
||||
destroyOnClose={true}
|
||||
>
|
||||
<div className="task-popup-content">
|
||||
<p className="task-popup-text-center font-16">
|
||||
|
||||
<span className={"color-dark-21"}>该学生的最终成绩将不会按照评分规则进行计算</span>
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
<div className="clearfix">
|
||||
<textarea
|
||||
className="winput-100-150"
|
||||
placeholder="请填写您对作品调分的原因"
|
||||
value={textareaval}
|
||||
onInput={this.settextarea}
|
||||
></textarea>
|
||||
<li style={{height:"20px",lineHeight:"20px"}}><span className={textareavaltype===true?"color-red":"none"}>原因不能为空</span></li>
|
||||
</div>
|
||||
<li>
|
||||
<Input style={{
|
||||
width: '20%',
|
||||
}}
|
||||
placeholder="请填写分数"
|
||||
value={Inputsval}
|
||||
onInput={this.setInputs}/> <span className="ml10">分</span>
|
||||
</li>
|
||||
<li style={{height:"20px",lineHeight:"20px"}}><span className={Inputsvaltype===true?"color-red":"none"}>分数不能为空</span></li>
|
||||
<div className="clearfix edu-txt-center">
|
||||
<a className="task-btn color-white mr30" onClick={this.props.Cancel}>{this.props.Cancelname || '取消'}</a>
|
||||
<a className="task-btn task-btn-orange" onClick={this.Saves}>{this.props.Savesname || '保存'}</a>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
import React,{ Component } from "react";
|
||||
import { Modal,Checkbox,Upload,Button,Icon,message,Input} from "antd";
|
||||
|
||||
|
||||
class ModulationModal extends Component{
|
||||
constructor(props){
|
||||
super(props);
|
||||
this.state={
|
||||
group_ids:[],
|
||||
fileList:[],
|
||||
textareaval:undefined,
|
||||
Inputsval:undefined
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Saves=()=>{
|
||||
let {textareaval,Inputsval}=this.state;
|
||||
if(textareaval===""||textareaval===undefined){
|
||||
this.setState({
|
||||
textareavaltype:true
|
||||
})
|
||||
return
|
||||
}
|
||||
this.setState({
|
||||
textareavaltype: false
|
||||
})
|
||||
|
||||
if(Inputsval===undefined||Inputsval===""){
|
||||
this.setState({
|
||||
Inputsvaltype:true
|
||||
})
|
||||
return
|
||||
}
|
||||
this.props.Saves(textareaval,Inputsval)
|
||||
|
||||
}
|
||||
|
||||
settextarea=(e)=>{
|
||||
this.setState({
|
||||
textareaval:e.target.value
|
||||
})
|
||||
}
|
||||
|
||||
setInputs=(e)=>{
|
||||
var value=parseInt(e.target.value)
|
||||
|
||||
if(isNaN(value)){
|
||||
value=0
|
||||
}else{
|
||||
if(value<0||value>100){
|
||||
value=0
|
||||
}
|
||||
}
|
||||
this.setState({
|
||||
Inputsval:value
|
||||
})
|
||||
}
|
||||
render(){
|
||||
let {textareaval,Inputsval,textareavaltype,Inputsvaltype}=this.state;
|
||||
return(
|
||||
<div>
|
||||
<Modal
|
||||
keyboard={false}
|
||||
className={"HomeworkModal"}
|
||||
title={this.props.modalname || '调分'}
|
||||
visible={this.props.visible}
|
||||
closable={false}
|
||||
footer={null}
|
||||
destroyOnClose={true}
|
||||
>
|
||||
<div className="task-popup-content">
|
||||
<p className="task-popup-text-center font-16 mb20">
|
||||
|
||||
<span className={"color-dark-21"}>该学生的最终成绩将不会按照评分规则进行计算</span>
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
<div className="clearfix">
|
||||
<textarea
|
||||
className="winput-100-150"
|
||||
placeholder="请填写您对作品调分的原因"
|
||||
value={textareaval}
|
||||
onInput={this.settextarea}
|
||||
></textarea>
|
||||
<li style={{height:"20px",lineHeight:"20px"}}><span className={textareavaltype===true?"color-red":"none"}>原因不能为空</span></li>
|
||||
</div>
|
||||
<li>
|
||||
<Input style={{
|
||||
width: '20%',
|
||||
}}
|
||||
placeholder="请填写分数"
|
||||
value={Inputsval}
|
||||
onInput={this.setInputs}/> <span className="ml10">分</span>
|
||||
</li>
|
||||
<li style={{height:"20px",lineHeight:"20px"}}><span className={Inputsvaltype===true?"color-red":"none"}>分数不能为空</span></li>
|
||||
<div className="clearfix edu-txt-center">
|
||||
<a className="task-btn color-white mr30" onClick={this.props.Cancel}>{this.props.Cancelname || '取消'}</a>
|
||||
<a className="task-btn task-btn-orange" onClick={this.Saves}>{this.props.Savesname || '保存'}</a>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
export default ModulationModal;
|
Loading…
Reference in new issue