commit
21fc99b8e2
@ -0,0 +1,5 @@
|
|||||||
|
module PdfkitHelper
|
||||||
|
def download_image(url)
|
||||||
|
'data:image/png;base64,' + Base64.encode64(open(url) { |io| io.read })
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,19 @@
|
|||||||
|
# 生成竞赛个人证书Job
|
||||||
|
class GenerateCompetitionPersonalCertificateJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(prize_user_id)
|
||||||
|
@prize_user = CompetitionPrizeUser.find_by(id: prize_user_id)
|
||||||
|
return if @prize_user.blank? || @prize_user.certificate_exist?
|
||||||
|
|
||||||
|
template = @prize_user.user.is_teacher? ? 'teacher' : 'personal'
|
||||||
|
file = File.open(Rails.root.join("app/templates/competition_certificates/#{template}.html.erb"))
|
||||||
|
html = ERB.new(file.read).result(binding)
|
||||||
|
kit = PDFKit.new(html, page_width: 842, page_height: 595)
|
||||||
|
|
||||||
|
path = @prize_user.certificate_path
|
||||||
|
dir = File.dirname(path)
|
||||||
|
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
||||||
|
kit.to_pdf(path)
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,24 @@
|
|||||||
|
# 生成竞赛团体证书Job
|
||||||
|
class GenerateCompetitionTeamCertificateJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(competition_team_id)
|
||||||
|
@team = CompetitionTeam.find_by(id: competition_team_id)
|
||||||
|
@prize = @team&.competition_prize_users&.first&.competition_prize
|
||||||
|
return if @team.blank? || !@prize.team_certificate_exists? || @team.certificate_exists?
|
||||||
|
|
||||||
|
members = @team.team_members.includes(user: :user_extension).to_a
|
||||||
|
|
||||||
|
@member_names = members.select { |m| !m.user.is_teacher? }.map(&:user_name).join('、')
|
||||||
|
@teacher_names = members.select { |m| m.user.is_teacher? }.map(&:user_name).join('、')
|
||||||
|
|
||||||
|
file = File.open(Rails.root.join("app/templates/competition_certificates/team.html.erb"))
|
||||||
|
html = ERB.new(file.read).result(binding)
|
||||||
|
kit = PDFKit.new(html, page_width: 842, page_height: 595)
|
||||||
|
|
||||||
|
path = @team.certificate_path
|
||||||
|
dir = File.dirname(path)
|
||||||
|
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
||||||
|
kit.to_pdf(path)
|
||||||
|
end
|
||||||
|
end
|
@ -1,4 +1,9 @@
|
|||||||
class ChallengeAnswer < ApplicationRecord
|
class ChallengeAnswer < ApplicationRecord
|
||||||
default_scope { order("challenge_answers.level asc") }
|
default_scope { order("challenge_answers.level asc") }
|
||||||
belongs_to :challenge
|
belongs_to :challenge
|
||||||
|
has_many :game_answers, :dependent => :destroy
|
||||||
|
|
||||||
|
def view_answer_time(user_id)
|
||||||
|
game_answers.where(user_id: user_id).last&.view_time
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
class GameAnswer < ApplicationRecord
|
||||||
|
belongs_to :user
|
||||||
|
belongs_to :game
|
||||||
|
belongs_to :challenge_answer
|
||||||
|
end
|
@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="competition-certificate" style="position: absolute;font-size: 85px;font-family: SimSun;">
|
||||||
|
<img src="<%= ApplicationController.helpers.download_image(@prize_user.competition_prize.teacher_certificate_path) %>"/>
|
||||||
|
<div class="competition-certificate-body" style="position: absolute;width: 82%;top: 35%;left: 9%;">
|
||||||
|
<p><%= @prize_user.user.school_name %> <%= @prize_user.user.real_name %> 老师:</p>
|
||||||
|
<p style="text-indent:2em;line-height: 1.8;margin-bottom: 0px;">
|
||||||
|
在第二届“<b>全国高校绿色计算大赛</b>”(<%= @prize_user.competition.sub_title %>)中,带领学生团队 表现突出,成绩优异,荣获“<b>优秀指导教师</b>”称号。
|
||||||
|
</p>
|
||||||
|
<p style="text-indent:2em;line-height: 1.8;margin-top: 0px;">特发此证,以资鼓励。</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1 @@
|
|||||||
|
hello
|
@ -0,0 +1,13 @@
|
|||||||
|
class CreateGameAnswers < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
create_table :game_answers do |t|
|
||||||
|
t.references :challenge_answer
|
||||||
|
t.references :user
|
||||||
|
t.references :game
|
||||||
|
t.datetime :view_time
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class AddIndexForGameAnswers < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_index :game_answers, [:challenge_answer_id, :user_id], :unique => true
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class AddTeamTitleToSubjects < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :subjects, :team_title, :string, default: "教学团队"
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class AddEmailNotifyToCourse < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :courses, :email_notify, :boolean, default: 0
|
||||||
|
end
|
||||||
|
end
|
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 308 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,57 @@
|
|||||||
|
import React, { Component } from 'react';
|
||||||
|
import {Tabs} from 'antd';
|
||||||
|
import axios from 'axios';
|
||||||
|
import {markdownToHTML,getImageUrl,AttachmentList} from 'educoder';
|
||||||
|
import CompetitionContentspdfdownload from './CompetitionContentspdfChild/CompetitionContentspdfdownload';
|
||||||
|
import CompetitionContentspdfpeopledata from './CompetitionContentspdfChild/CompetitionContentspdfpeopledata';
|
||||||
|
// import NoneData from "../../../courses/shixunHomework/shixunHomework";
|
||||||
|
|
||||||
|
const { TabPane } = Tabs;
|
||||||
|
class CompetitionContentspdf extends Component{
|
||||||
|
constructor(props) {
|
||||||
|
super(props)
|
||||||
|
this.state={
|
||||||
|
Tabskey:"1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount(){
|
||||||
|
window.document.title = '竞赛';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Competitioncallback=(key)=>{
|
||||||
|
this.setState({
|
||||||
|
Tabskey:key
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
|
||||||
|
<div className={"fr"}>
|
||||||
|
<div className={"mb100 "}>
|
||||||
|
<Tabs defaultActiveKey="1" onChange={(e) => this.Competitioncallback(e)} activeKey={this.state.Tabskey}>
|
||||||
|
<TabPane tab="获奖证书下载" key="1" >
|
||||||
|
{this.state.Tabskey==="1"?<CompetitionContentspdfdownload
|
||||||
|
{...this.props}
|
||||||
|
{...this.state}
|
||||||
|
Competitioncallback={(e)=>this.Competitioncallback(e)}
|
||||||
|
/>:""}
|
||||||
|
</TabPane>
|
||||||
|
<TabPane tab="完善个人信息" key="2">
|
||||||
|
{this.state.Tabskey==="2"?<CompetitionContentspdfpeopledata
|
||||||
|
{...this.props}
|
||||||
|
{...this.state}
|
||||||
|
/>:""}
|
||||||
|
</TabPane>
|
||||||
|
</Tabs>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default CompetitionContentspdf;
|
@ -0,0 +1,24 @@
|
|||||||
|
.pdfdownload {
|
||||||
|
max-width: 791px;
|
||||||
|
height: 40px;
|
||||||
|
background: rgba(249, 249, 249, 1);
|
||||||
|
line-height: 40px;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pdfpicture {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pdfdownloadfont4CACFF {
|
||||||
|
color: #4CACFF !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pdfdownloadfont00CC5F {
|
||||||
|
color: #00CC5F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pdfdownloadfontFF6602 {
|
||||||
|
color: #FF6602;
|
||||||
|
}
|
@ -0,0 +1,270 @@
|
|||||||
|
import React, {Component} from 'react';
|
||||||
|
import {Button, Layout, Input, Form} from 'antd';
|
||||||
|
import axios from 'axios';
|
||||||
|
import {getImageUrl} from 'educoder';
|
||||||
|
import mycompetotionchild from './mycompetotionchild.css';
|
||||||
|
import {getHiddenName} from "../../../../user/account/AccountBasicEdit";
|
||||||
|
import '../../../../courses/css/Courses.css'
|
||||||
|
|
||||||
|
export const identityMap = {"teacher": "教师", "student": "学生", "professional": "专业人士"}
|
||||||
|
|
||||||
|
class Mailboxvalidation extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props)
|
||||||
|
this.state = {
|
||||||
|
basicInfo: {},
|
||||||
|
updating: '',
|
||||||
|
secondsFlag: false,
|
||||||
|
seconds: 60,
|
||||||
|
phonebool: false,
|
||||||
|
emailbool: false,
|
||||||
|
formationdata: [],
|
||||||
|
bank_account_editable: false,
|
||||||
|
leader: false,
|
||||||
|
bank_account: undefined,
|
||||||
|
certification: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
window.document.title = '竞赛';
|
||||||
|
// console.log("3获取用户信息");
|
||||||
|
// console.log(this.props);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 绑定邮箱
|
||||||
|
onEmailSubmit = () => {
|
||||||
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
let {login} = this.props.current_user;
|
||||||
|
let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
|
||||||
|
if (reg.test(values.email)) {
|
||||||
|
let url = `/users/accounts/${login}/email_bind.json`
|
||||||
|
axios.post((url), {
|
||||||
|
email: values.email,
|
||||||
|
code: values.emailValidateCode
|
||||||
|
}).then((result) => {
|
||||||
|
if (result) {
|
||||||
|
this.props.showNotification("邮箱地址绑定成功!");
|
||||||
|
this.hideUpdating(2);
|
||||||
|
this.props.getdata();
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.props.showNotification("请输入正确的邮箱地址");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//取消编辑
|
||||||
|
hideUpdating = (i) => {
|
||||||
|
if (i === 1) {
|
||||||
|
this.props.hideUpdating(1);
|
||||||
|
} else if (i === 2) {
|
||||||
|
this.props.hideUpdating(2);
|
||||||
|
|
||||||
|
|
||||||
|
} else if (i === 3) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码
|
||||||
|
getCode = (index) => {
|
||||||
|
let url = `/accounts/get_verification_code.json`
|
||||||
|
let login = '';
|
||||||
|
let values = this.props.form.getFieldsValue();
|
||||||
|
if (index == 3) {
|
||||||
|
//绑定手机号码
|
||||||
|
login = values.phone;
|
||||||
|
let reg = /^1\d{10}$/;
|
||||||
|
if (reg.test(login) == false) {
|
||||||
|
this.props.showNotification(`请先输入正确的手机号码`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (index == 4) {
|
||||||
|
// 绑定邮箱
|
||||||
|
login = values.email;
|
||||||
|
let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
|
||||||
|
if (reg.test(login) == false) {
|
||||||
|
this.props.showNotification(`请先输入正确的邮箱地址`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let type = index;
|
||||||
|
if (!login) {
|
||||||
|
this.props.showNotification(`请先输入${index == 3 ? "手机号码" : "邮箱地址"}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
axios.get((url), {
|
||||||
|
params: {
|
||||||
|
login, type
|
||||||
|
}
|
||||||
|
}).then((result) => {
|
||||||
|
if (result) {
|
||||||
|
// 倒计时
|
||||||
|
this.setState({
|
||||||
|
secondsFlag: true
|
||||||
|
})
|
||||||
|
this.remainTime();
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码倒计时
|
||||||
|
remainTime = () => {
|
||||||
|
this.setState({
|
||||||
|
seconds: 60
|
||||||
|
})
|
||||||
|
this.timer = setInterval(() => {
|
||||||
|
let {seconds} = this.state;
|
||||||
|
let s = parseInt(seconds) - 1;
|
||||||
|
if (s > -1) {
|
||||||
|
this.setState({
|
||||||
|
seconds: s
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.setState({
|
||||||
|
secondsFlag: false
|
||||||
|
})
|
||||||
|
clearInterval(this.timer);
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
phonebools = () => {
|
||||||
|
this.setState({
|
||||||
|
phonebool: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
emailbools = () => {
|
||||||
|
console.log("点击了邮箱");
|
||||||
|
this.setState({
|
||||||
|
emailbool: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {getFieldDecorator} = this.props.form;
|
||||||
|
const {updating, seconds, secondsFlag, basicInfo, phonebool, emailbool, certification, formationdata, bank_account_editable, leader, bank_account} = this.state
|
||||||
|
console.log(emailbool);
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<style>{`
|
||||||
|
|
||||||
|
.flexRow {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
.flexRow .name {
|
||||||
|
margin-left: 12px;
|
||||||
|
color: #666666;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
flex: 0 0 100px;
|
||||||
|
}
|
||||||
|
.flexRow .description {
|
||||||
|
margin-left: 10px;
|
||||||
|
flex: 1;
|
||||||
|
color: #CDCDCD;
|
||||||
|
}
|
||||||
|
.description span {
|
||||||
|
margin-right: 20px;
|
||||||
|
color: #05101A;
|
||||||
|
}
|
||||||
|
.flexRow .status {
|
||||||
|
width: 100px;
|
||||||
|
color: #28AC7F;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.flexTable .flexTable {
|
||||||
|
border-bottom: 1px solid #EBEBEB;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settingForm label{
|
||||||
|
color: #666666;
|
||||||
|
font-size: 14px !important ;
|
||||||
|
}
|
||||||
|
.settingForm input {
|
||||||
|
width: 340px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.settingForm input.validateInput {
|
||||||
|
width: 220px;
|
||||||
|
}
|
||||||
|
.settingForm .formItemInline button {
|
||||||
|
width: 110px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.settingForm .ant-form-item-label {
|
||||||
|
text-align: left;
|
||||||
|
width: 84px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.formItemInline .ant-form-explain{
|
||||||
|
position:absolute;
|
||||||
|
bottom:-22px;
|
||||||
|
left:0px;
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
<div className="settingForm ml38">
|
||||||
|
<React.Fragment>
|
||||||
|
<Form>
|
||||||
|
<Form.Item
|
||||||
|
label="邮箱地址"
|
||||||
|
className="formItemInline hideRequireTag mb20 mt20"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('email', {
|
||||||
|
rules: [{
|
||||||
|
// initialValue: this.state.cityDefaultValue,
|
||||||
|
required: true,
|
||||||
|
message: basicInfo && basicInfo.mail ? '请输入要更换的新邮箱地址' : '请输入邮箱地址',
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder={`${basicInfo && basicInfo.mail ? '请输入要更换的新邮箱地址' : '请输入邮箱地址'}`}></Input>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="邮箱验证码"
|
||||||
|
className="mb20 formItemInline hideRequireTag"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('emailValidateCode', {
|
||||||
|
rules: [{
|
||||||
|
// initialValue: this.state.cityDefaultValue,
|
||||||
|
required: true,
|
||||||
|
message: '请输入邮箱收到的验证码',
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder="请输入邮箱收到的验证码" className="validateInput"></Input>
|
||||||
|
)}
|
||||||
|
<Button type="primary" disabled={secondsFlag} onClick={() => this.getCode(4)}>
|
||||||
|
{!secondsFlag ? "获取验证码" : `重新发送${seconds}s`}</Button>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<div className="mb20" style={{marginLeft: '204px'}}>
|
||||||
|
<Button type="primary" onClick={() => this.onEmailSubmit()}>确定</Button>
|
||||||
|
<Button type="primary grayBtn" style={{marginLeft: '20px'}}
|
||||||
|
onClick={() => this.hideUpdating(2)}>取消</Button>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
</React.Fragment>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Mailboxvalidations = Form.create({name: 'Mailboxvalidation'})(Mailboxvalidation);
|
||||||
|
|
||||||
|
export default Mailboxvalidations;
|
||||||
|
|
@ -0,0 +1,262 @@
|
|||||||
|
import React, {Component} from 'react';
|
||||||
|
import {Button, Layout, Input, Form} from 'antd';
|
||||||
|
import axios from 'axios';
|
||||||
|
import {getImageUrl} from 'educoder';
|
||||||
|
import mycompetotionchild from './mycompetotionchild.css';
|
||||||
|
import {getHiddenName} from "../../../../user/account/AccountBasicEdit";
|
||||||
|
import '../../../../courses/css/Courses.css'
|
||||||
|
import RealNameCertificationModal from "../../../../user/modal/RealNameCertificationModal";
|
||||||
|
|
||||||
|
export const identityMap = {"teacher": "教师", "student": "学生", "professional": "专业人士"}
|
||||||
|
|
||||||
|
class Phonenumberverification extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props)
|
||||||
|
this.state = {
|
||||||
|
updating: '',
|
||||||
|
secondsFlag: false,
|
||||||
|
seconds: 60,
|
||||||
|
phonebool: false,
|
||||||
|
emailbool: false,
|
||||||
|
formationdata: [],
|
||||||
|
bank_account_editable: false,
|
||||||
|
leader: false,
|
||||||
|
bank_account: undefined,
|
||||||
|
certification: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
window.document.title = '竞赛';
|
||||||
|
// console.log("获取用户信息");
|
||||||
|
// console.log(this.props);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 绑定手机
|
||||||
|
onPhoneSubmit = () => {
|
||||||
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
let {login} = this.props.current_user;
|
||||||
|
let reg = /^1\d{10}$/;
|
||||||
|
if (reg.test(values.phone)) {
|
||||||
|
let url = `/users/accounts/${login}/phone_bind.json`
|
||||||
|
axios.post((url), {
|
||||||
|
phone: values.phone,
|
||||||
|
code: values.phoneValidateCode
|
||||||
|
}).then((result) => {
|
||||||
|
if (result) {
|
||||||
|
this.props.showNotification("手机号码绑定成功!");
|
||||||
|
this.props.hideUpdating()
|
||||||
|
this.props.getdata();
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.props.showNotification("请输入有效的11位手机号码");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//取消编辑
|
||||||
|
hideUpdating = (i) => {
|
||||||
|
if (i === 1) {
|
||||||
|
this.props.hideUpdating(1);
|
||||||
|
} else if (i === 2) {
|
||||||
|
this.props.hideUpdating(2);
|
||||||
|
|
||||||
|
} else if (i === 3) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码
|
||||||
|
getCode = (index) => {
|
||||||
|
let url = `/accounts/get_verification_code.json`
|
||||||
|
let login = '';
|
||||||
|
let values = this.props.form.getFieldsValue();
|
||||||
|
if (index == 3) {
|
||||||
|
//绑定手机号码
|
||||||
|
login = values.phone;
|
||||||
|
let reg = /^1\d{10}$/;
|
||||||
|
if (reg.test(login) == false) {
|
||||||
|
this.props.showNotification(`请先输入正确的手机号码`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (index == 4) {
|
||||||
|
// 绑定邮箱
|
||||||
|
login = values.email;
|
||||||
|
let reg = /^[a-zA-Z0-9]+([.\-_\\]*[a-zA-Z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
|
||||||
|
if (reg.test(login) == false) {
|
||||||
|
this.props.showNotification(`请先输入正确的邮箱地址`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let type = index;
|
||||||
|
if (!login) {
|
||||||
|
this.props.showNotification(`请先输入${index == 3 ? "手机号码" : "邮箱地址"}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
axios.get((url), {
|
||||||
|
params: {
|
||||||
|
login, type
|
||||||
|
}
|
||||||
|
}).then((result) => {
|
||||||
|
if (result) {
|
||||||
|
// 倒计时
|
||||||
|
this.setState({
|
||||||
|
secondsFlag: true
|
||||||
|
})
|
||||||
|
this.remainTime();
|
||||||
|
}
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码倒计时
|
||||||
|
remainTime = () => {
|
||||||
|
this.setState({
|
||||||
|
seconds: 60
|
||||||
|
})
|
||||||
|
this.timer = setInterval(() => {
|
||||||
|
let {seconds} = this.state;
|
||||||
|
let s = parseInt(seconds) - 1;
|
||||||
|
if (s > -1) {
|
||||||
|
this.setState({
|
||||||
|
seconds: s
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.setState({
|
||||||
|
secondsFlag: false
|
||||||
|
})
|
||||||
|
clearInterval(this.timer);
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
phonebools = () => {
|
||||||
|
this.setState({
|
||||||
|
phonebool: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {getFieldDecorator} = this.props.form;
|
||||||
|
const {updating, seconds, secondsFlag, phonebool, emailbool, certification, formationdata, bank_account_editable, leader, bank_account} = this.state
|
||||||
|
const {basicInfo} = this.props
|
||||||
|
console.log(emailbool);
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<style>{`
|
||||||
|
|
||||||
|
.flexRow {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
.flexRow .name {
|
||||||
|
margin-left: 12px;
|
||||||
|
color: #666666;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
flex: 0 0 100px;
|
||||||
|
}
|
||||||
|
.flexRow .description {
|
||||||
|
margin-left: 10px;
|
||||||
|
flex: 1;
|
||||||
|
color: #CDCDCD;
|
||||||
|
}
|
||||||
|
.description span {
|
||||||
|
margin-right: 20px;
|
||||||
|
color: #05101A;
|
||||||
|
}
|
||||||
|
.flexRow .status {
|
||||||
|
width: 100px;
|
||||||
|
color: #28AC7F;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.flexTable .flexTable {
|
||||||
|
border-bottom: 1px solid #EBEBEB;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settingForm label{
|
||||||
|
color: #666666;
|
||||||
|
font-size: 14px !important ;
|
||||||
|
}
|
||||||
|
.settingForm input {
|
||||||
|
width: 340px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.settingForm input.validateInput {
|
||||||
|
width: 220px;
|
||||||
|
}
|
||||||
|
.settingForm .formItemInline button {
|
||||||
|
width: 110px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.settingForm .ant-form-item-label {
|
||||||
|
text-align: left;
|
||||||
|
width: 84px;
|
||||||
|
}
|
||||||
|
.formItemInline .ant-form-explain{
|
||||||
|
position:absolute;
|
||||||
|
bottom:-22px;
|
||||||
|
left:0px;
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
<div className="settingForm ml38">
|
||||||
|
<React.Fragment>
|
||||||
|
<Form>
|
||||||
|
<Form.Item
|
||||||
|
label="你的手机号"
|
||||||
|
className="formItemInline hideRequireTag mb20 mt20"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('phone', {
|
||||||
|
rules: [{
|
||||||
|
// initialValue: this.state.cityDefaultValue,
|
||||||
|
required: true,
|
||||||
|
message: `请输入要${basicInfo.phone ? '更换' : '绑定'}的手机号码`,
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder={`请输入要${basicInfo.phone ? '更换' : '绑定'}的手机号码`}></Input>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="手机验证码"
|
||||||
|
className="mb20 formItemInline hideRequireTag"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('phoneValidateCode', {
|
||||||
|
rules: [{
|
||||||
|
// initialValue: this.state.cityDefaultValue,
|
||||||
|
required: true,
|
||||||
|
message: '请输入手机获取的验证码',
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder="请输入手机获取的验证码" className="validateInput"></Input>
|
||||||
|
)}
|
||||||
|
<Button type="primary" disabled={secondsFlag} onClick={() => this.getCode(3)}>
|
||||||
|
{!secondsFlag ? "获取验证码" : `重新发送${seconds}s`}
|
||||||
|
</Button>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<div className="mb20" style={{marginLeft: '204px'}}>
|
||||||
|
<Button type="primary" onClick={() => this.onPhoneSubmit()}>确定</Button>
|
||||||
|
<Button type="primary grayBtn" style={{marginLeft: '20px'}}
|
||||||
|
onClick={() => this.hideUpdating(1)}>取消</Button>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
</React.Fragment>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Phonenumberverifications = Form.create({name: 'Phonenumberverification'})(Phonenumberverification);
|
||||||
|
|
||||||
|
export default Phonenumberverifications;
|
||||||
|
|
@ -0,0 +1,314 @@
|
|||||||
|
/*垂直布局
|
||||||
|
|
||||||
|
一
|
||||||
|
二
|
||||||
|
三
|
||||||
|
*/
|
||||||
|
.flexdirectionjust {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.directstwebkitflex {
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.diredisplayitflex {
|
||||||
|
display: flex;
|
||||||
|
display: -webkit-flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*垂直布局*/
|
||||||
|
/*靠左侧
|
||||||
|
一 二 三 四 五 六 七 八
|
||||||
|
*/
|
||||||
|
.flexdirection {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexdirections {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*靠左侧
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*靠右侧八 七 六 五 四 三 二 一*/
|
||||||
|
.flexdirectionss {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*垂直布局
|
||||||
|
一
|
||||||
|
二
|
||||||
|
三
|
||||||
|
四
|
||||||
|
*/
|
||||||
|
.flexdidirectionss {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*垂直布局
|
||||||
|
四
|
||||||
|
三
|
||||||
|
二
|
||||||
|
一
|
||||||
|
*/
|
||||||
|
.flexdidireverses {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontcolorsysl {
|
||||||
|
color: #FF0000
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontcolorsyslhei {
|
||||||
|
color: #000000
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontcolorsyslhui {
|
||||||
|
color: #888888
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontcolorsyslhui1 {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontcolorsysllan {
|
||||||
|
color: #4CACFF
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontcolorsysljin {
|
||||||
|
color: #DD7600
|
||||||
|
}
|
||||||
|
|
||||||
|
.w200 {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w64 {
|
||||||
|
width: 64px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w60 {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w98 {
|
||||||
|
width: 98px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.myysllineheight {
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.myyslminwidth {
|
||||||
|
min-width: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.myyslminwidth276 {
|
||||||
|
width: 276px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttongo {
|
||||||
|
background: #E7E7E7;
|
||||||
|
border: 1px solid #E7E7E7;
|
||||||
|
width: 60px;
|
||||||
|
height: 30px;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #999999;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttongo2 {
|
||||||
|
background: #4CACFF;
|
||||||
|
border: 1px solid #4CACFF;
|
||||||
|
width: 64px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontwenzi {
|
||||||
|
text-align: center;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt17 {
|
||||||
|
margin-top: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt36 {
|
||||||
|
margin-top: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt23 {
|
||||||
|
margin-top: 23px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt19 {
|
||||||
|
margin-top: 19px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt23 {
|
||||||
|
margin-top: 23px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt34 {
|
||||||
|
margin-top: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ml11 {
|
||||||
|
margin-left: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ml38 {
|
||||||
|
margin-left: 38px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ml7 {
|
||||||
|
margin-left: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colorgreenlight {
|
||||||
|
color: #6EC76E
|
||||||
|
}
|
||||||
|
|
||||||
|
.colorgreenorg {
|
||||||
|
color: #FF7300;
|
||||||
|
}
|
||||||
|
|
||||||
|
.borcolors {
|
||||||
|
border: 1px solid #4CACFF;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mycompitcursor {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basicForm {
|
||||||
|
background: #fff;
|
||||||
|
padding: 30px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
min-height: 390px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.basicForm .title {
|
||||||
|
font-size: 16px;
|
||||||
|
padding-left: 30px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexTable {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexRow {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mb15 {
|
||||||
|
margin-bottom: 15px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BUTTOn */
|
||||||
|
.ant-btn {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.ant-btn.ant-btn-primary.grayBtn {
|
||||||
|
background: #CBCBCB;
|
||||||
|
border-color: #CBCBCB;
|
||||||
|
}
|
||||||
|
|
||||||
|
.borderBottom {
|
||||||
|
border-bottom: 1px solid #4CACFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* form ---------------- START */
|
||||||
|
.formItemInline {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.formItemInline .ant-form-item-control-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hideRequireTag .ant-form-item-required:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* .basicForm .ant-form-item-label {
|
||||||
|
width: 100px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.basicForm .ant-form-item-label label {
|
||||||
|
color: #979797
|
||||||
|
} */
|
||||||
|
|
||||||
|
|
||||||
|
.courseNormalForm .ant-select-show-search {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm .ant-select-auto-complete.ant-select .ant-input {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm .ant-select-search__field__mirror {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm .ant-input-lg {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm .ant-select-selection--single {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm .ant-select-auto-complete.ant-select .ant-select-selection--single {
|
||||||
|
height: 40px
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm .ant-input-affix-wrapper {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 职业 */
|
||||||
|
.courseNormalForm .ant-select-selection-selected-value {
|
||||||
|
line-height: 38px
|
||||||
|
}
|
||||||
|
|
||||||
|
.courseNormalForm input {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w300 {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w56 {
|
||||||
|
width: 56px;
|
||||||
|
}
|
@ -0,0 +1,169 @@
|
|||||||
|
import React, {Component} from 'react';
|
||||||
|
import {Button, Layout, Input, Form} from 'antd';
|
||||||
|
import axios from 'axios';
|
||||||
|
import {getImageUrl} from 'educoder';
|
||||||
|
|
||||||
|
|
||||||
|
class Modifytext extends Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props)
|
||||||
|
this.state = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//重新输入教学模式
|
||||||
|
Modifytext = () => {
|
||||||
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
const url = `/paths/${this.props.pathid}/update_team_title.json`;
|
||||||
|
axios.post(url, {
|
||||||
|
team_title: values.teachingteam
|
||||||
|
}).then((response) => {
|
||||||
|
console.log(response);
|
||||||
|
if (response) {
|
||||||
|
if (response.data) {
|
||||||
|
if (response.data.status === 0) {
|
||||||
|
try {
|
||||||
|
this.props.showNotification("修改成功!");
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
this.props.modifysy(2);
|
||||||
|
} catch (e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log(error)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const {getFieldDecorator} = this.props.form;
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className="ml38">
|
||||||
|
<style>{`
|
||||||
|
|
||||||
|
.flexRow {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
.flexRow .name {
|
||||||
|
margin-left: 12px;
|
||||||
|
color: #666666;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
flex: 0 0 100px;
|
||||||
|
}
|
||||||
|
.flexRow .description {
|
||||||
|
margin-left: 10px;
|
||||||
|
flex: 1;
|
||||||
|
color: #CDCDCD;
|
||||||
|
}
|
||||||
|
.description span {
|
||||||
|
margin-right: 20px;
|
||||||
|
color: #05101A;
|
||||||
|
}
|
||||||
|
.flexRow .status {
|
||||||
|
width: 100px;
|
||||||
|
color: #28AC7F;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.flexTable .flexTable {
|
||||||
|
border-bottom: 1px solid #EBEBEB;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settingFormsy label{
|
||||||
|
color: #666666;
|
||||||
|
font-size: 14px !important ;
|
||||||
|
|
||||||
|
}
|
||||||
|
.settingFormsy input {
|
||||||
|
width: 275px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
.settingFormsy input.validateInput {
|
||||||
|
width: 220px;
|
||||||
|
}
|
||||||
|
.settingFormsy .formItemInline button {
|
||||||
|
width: 110px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.settingFormsy .ant-form-item-label {
|
||||||
|
width: 60px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.formItemInline .ant-form-explain{
|
||||||
|
position:absolute;
|
||||||
|
bottom:-22px;
|
||||||
|
left:0px;
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.yslzxueshi .ant-input{
|
||||||
|
height: 40px !important;
|
||||||
|
width: 276px !important
|
||||||
|
}
|
||||||
|
|
||||||
|
// class="ant-col ant-form-item-label"
|
||||||
|
`}</style>
|
||||||
|
<div className="settingFormsy">
|
||||||
|
<React.Fragment>
|
||||||
|
<Form>
|
||||||
|
<div style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "initial",
|
||||||
|
lineHeight: " 51px",
|
||||||
|
}}>
|
||||||
|
<Form.Item
|
||||||
|
label=""
|
||||||
|
className="formItemInline hideRequireTag mb20 mt20"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('teachingteam', {
|
||||||
|
rules: [{
|
||||||
|
// initialValue: this.state.cityDefaultValue,
|
||||||
|
required: true,
|
||||||
|
message: '请输入模式',
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder={`例如:教学团队`}></Input>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<div className="flexdirections yslzxueshi ml38 ">
|
||||||
|
<p className="fontcolorsyslhui1 font-14 myysllineheight myyslminwidth"></p>
|
||||||
|
<div className=" flexdirections ml10">
|
||||||
|
{/*<div className="buttongo mycompitcursor" onClick={()=>this.yhBanksfalse()}><p className="fontwenzi mycompitcursor" >取消</p></div>*/}
|
||||||
|
<Button type="primary" onClick={() => this.Modifytext()}>确定</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
</React.Fragment>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Modifytexts = Form.create({name: 'Modifytext'})(Modifytext);
|
||||||
|
|
||||||
|
export default Modifytexts;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue