From b171aa35af0676ee90ab7a2c8074f5b3f833bed3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Mon, 29 Jul 2019 14:26:26 +0800
Subject: [PATCH 001/623] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/react/src/modules/login/LoginDialog.js | 2 +-
public/react/src/modules/message/js/Messagerouting.js | 0
2 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 public/react/src/modules/message/js/Messagerouting.js
diff --git a/public/react/src/modules/login/LoginDialog.js b/public/react/src/modules/login/LoginDialog.js
index 50038366d..2db1929b9 100644
--- a/public/react/src/modules/login/LoginDialog.js
+++ b/public/react/src/modules/login/LoginDialog.js
@@ -360,7 +360,7 @@ class LoginDialog extends Component {
if(response.status===200){
if (response.data.status === 402) {
- window.location.href = response.data.url;
+ // window.location.href = response.data.url;
}else if (response.data.status === -2) {
notification.open({
message: '提示',
diff --git a/public/react/src/modules/message/js/Messagerouting.js b/public/react/src/modules/message/js/Messagerouting.js
new file mode 100644
index 000000000..e69de29bb
From 6630cae57f44c3f155b413a516cbf775aa0d7768 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Tue, 30 Jul 2019 10:28:20 +0800
Subject: [PATCH 002/623] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/react/src/App.js | 6 +-
.../src/modules/message/css/messagemy.css | 6 +
.../src/modules/message/js/MessagChat.js | 21 +
.../react/src/modules/message/js/MessagSub.js | 125 ++++
.../src/modules/message/js/MessagePrivate.js | 21 +
.../src/modules/message/js/Messagerouting.js | 77 ++
public/react/src/modules/tpm/TPMIndexHOC.js | 5 +-
.../modules/user/LoginRegisterComponent.js | 702 +++++++++---------
8 files changed, 618 insertions(+), 345 deletions(-)
create mode 100644 public/react/src/modules/message/css/messagemy.css
create mode 100644 public/react/src/modules/message/js/MessagChat.js
create mode 100644 public/react/src/modules/message/js/MessagSub.js
create mode 100644 public/react/src/modules/message/js/MessagePrivate.js
diff --git a/public/react/src/App.js b/public/react/src/App.js
index 49dac07cd..e7ff43e79 100644
--- a/public/react/src/App.js
+++ b/public/react/src/App.js
@@ -18,9 +18,9 @@ import Notcompletedysl from './modules/user/Notcompletedysl';
import Trialapplicationysl from './modules/login/Trialapplicationysl';
import Trialapplicationreview from './modules/user/Trialapplicationreview';
import Addcourses from "./modules/courses/coursesPublic/Addcourses";
-import AccountProfile from"./modules/user/AccountProfile";
-
+import AccountProfile from "./modules/user/AccountProfile";
+import Messagerouting from "./modules/message/js/Messagerouting";
import Trialapplication from './modules/login/Trialapplication'
import NotFoundPage from './NotFoundPage'
@@ -377,7 +377,7 @@ class App extends Component {
-
+
{/* */}
{/*列表页*/}
{/**/}
diff --git a/public/react/src/modules/message/css/messagemy.css b/public/react/src/modules/message/css/messagemy.css
new file mode 100644
index 000000000..4bdd0f999
--- /dev/null
+++ b/public/react/src/modules/message/css/messagemy.css
@@ -0,0 +1,6 @@
+.myw120{
+ width: 120px;
+}
+.myh120{
+ height: 120px;
+}
\ No newline at end of file
diff --git a/public/react/src/modules/message/js/MessagChat.js b/public/react/src/modules/message/js/MessagChat.js
new file mode 100644
index 000000000..0598efb30
--- /dev/null
+++ b/public/react/src/modules/message/js/MessagChat.js
@@ -0,0 +1,21 @@
+import React, { Component } from 'react';
+//私信聊天页面
+class MessagChat extends Component{
+ constructor(props) {
+ super(props);
+ this.state={
+
+ }
+ }
+
+ componentDidMount(){
+ }
+ render() {
+ return (
+
+
+
+ )
+ }
+}
+export default MessagChat;
\ No newline at end of file
diff --git a/public/react/src/modules/message/js/MessagSub.js b/public/react/src/modules/message/js/MessagSub.js
new file mode 100644
index 000000000..a58d059a7
--- /dev/null
+++ b/public/react/src/modules/message/js/MessagSub.js
@@ -0,0 +1,125 @@
+import React, { Component } from 'react';
+import {
+ Spin,
+ Pagination,
+} from "antd";
+import axios from 'axios';
+
+//消息页面
+class MessagSub extends Component{
+ constructor(props) {
+ super(props);
+ this.state={
+ page:1,
+ limit:10,
+ typeysl:"",
+ count:0,
+ isSpin:true,
+ }
+ }
+ // 初始化数据
+ componentDidMount(){
+ debugger
+ console.log("初始化数据了");
+ this.getdata("",this.state.page);
+ }
+
+ //塞选页数
+ paginationonChanges=(pageNumber)=>{
+ this.setState({
+ page: pageNumber,
+ })
+ this.getdata(this.state.typeysl,pageNumber);
+
+ }
+ //获取数据源
+ getdata=(types,page)=>{
+ this.setState({
+ isSpin:true,
+ })
+ let{limit}=this.state;
+ let url = `/users/tidings.json`;
+ axios.get((url),{params:{
+ type:types,
+ page:page,
+ per_page:limit,
+ }}).then((result) => {
+ if (result) {
+ console.log(types);
+ console.log(result);
+ if(result.data.message!==undefined){
+ console.log("5151515151");
+ return;
+ }
+ console.log("调用了消失的方法");
+ console.log("5454545454");
+ this.setState({
+ count:result.data.count,
+ typeysl:types,
+ isSpin:false,
+ })
+ }
+ }).catch((error) => {
+ console.log(error);
+ this.setState({
+ isSpin:false,
+ })
+ })
+ }
+
+ componentWillUnmount(){
+ // 卸载异步操作设置状态
+ this.setState = (state, callback) => {
+ return;
+ }
+ }
+ render() {
+ let{page,limit,typeysl,count,isSpin}=this.state;
+ console.log("6868686868");
+ console.log(isSpin);
+ return (
+
+ {/*头部筛选数据*/}
+
+ {/*下面内容页面*/}
+
+ {/*这里可以进行数据处理*/}
+
+
+
+
+
+
+
+ {/*页数*/}
+
+
+
+
+ )
+ }
+}
+export default MessagSub;
\ No newline at end of file
diff --git a/public/react/src/modules/message/js/MessagePrivate.js b/public/react/src/modules/message/js/MessagePrivate.js
new file mode 100644
index 000000000..7a7c61174
--- /dev/null
+++ b/public/react/src/modules/message/js/MessagePrivate.js
@@ -0,0 +1,21 @@
+import React, { Component } from 'react';
+//私信页面
+class MessagePrivate extends Component{
+ constructor(props) {
+ super(props);
+ this.state={
+
+ }
+ }
+
+ componentDidMount(){
+ }
+ render() {
+ return (
+
+
+
+ )
+ }
+}
+export default MessagePrivate;
\ No newline at end of file
diff --git a/public/react/src/modules/message/js/Messagerouting.js b/public/react/src/modules/message/js/Messagerouting.js
index e69de29bb..6cf717e6d 100644
--- a/public/react/src/modules/message/js/Messagerouting.js
+++ b/public/react/src/modules/message/js/Messagerouting.js
@@ -0,0 +1,77 @@
+import React, { Component } from 'react';
+import {BrowserRouter as Router,Route,Switch} from 'react-router-dom';
+import {Input,Pagination,Tooltip} from 'antd';
+import {TPMIndexHOC} from "../../../modules/tpm/TPMIndexHOC";
+import {Link,NavLink} from 'react-router-dom';
+import { WordsBtn ,ActionBtn,SnackbarHOC,markdownToHTML,getImageUrl} from 'educoder';
+import axios from 'axios';
+import MessagSub from "./MessagSub";
+import MessagePrivate from "./MessagePrivate";
+import MessagChat from "./MessagChat";
+import "../css/messagemy.css"
+// MessagSub 消息自路由
+// MessagePrivate 私信
+class Messagerouting extends Component{
+ constructor(props) {
+ super(props);
+ this.state={
+ routing:1,
+ }
+ }
+
+ componentDidMount(){
+
+ }
+ // 切换路由
+
+ SwitchonClick=(value)=>{
+ this.setState({
+ routing:value,
+ })
+ }
+ render() {
+ let{routing} =this.state;
+ return (
+
+
+ {/*左边*/}
+
+ {/*头像*/}
+
+
+
+
+
杨树林
+
工程师
+
+ {/*路由跳转*/}
+
+
+
+ {/*右边*/}
+
+
+ {/*消息自路由*/}
+ {routing===1? :""}
+
+ {/*私信*/}
+ {routing===2? :""}
+
+ {/*私信聊天页面*/}
+ {routing===3?:""}
+
+
+
+
+
+ )
+ }
+}
+export default SnackbarHOC() (TPMIndexHOC ( Messagerouting ));
\ No newline at end of file
diff --git a/public/react/src/modules/tpm/TPMIndexHOC.js b/public/react/src/modules/tpm/TPMIndexHOC.js
index e092c17d4..2e40d006a 100644
--- a/public/react/src/modules/tpm/TPMIndexHOC.js
+++ b/public/react/src/modules/tpm/TPMIndexHOC.js
@@ -264,7 +264,10 @@ export function TPMIndexHOC(WrappedComponent) {
"is_teacher": false,
"tidding_count": 0
}
- */
+ */
+ if(response=== undefined){
+ return
+ }
if (response.data) {
this.initCommonState(response.data)
this.setState({
diff --git a/public/react/src/modules/user/LoginRegisterComponent.js b/public/react/src/modules/user/LoginRegisterComponent.js
index eb0a3a5c2..cffc633f5 100644
--- a/public/react/src/modules/user/LoginRegisterComponent.js
+++ b/public/react/src/modules/user/LoginRegisterComponent.js
@@ -14,12 +14,12 @@ import './common.css'
import './commontwo.css'
const { TabPane } = Tabs;
const loginInputsyl = {
-"width":"434px",
-"height": "462px",
-"-webkit-box-shadow": "3px 10px 21px 0px rgba(76,76,76,0.15)",
-"box-shadow": "3px 10px 21px 0px rgba(76,76,76,0.15)",
-"border-radius": "6px",
-"background": "#fff"
+ "width":"434px",
+ "height": "462px",
+ "-webkit-box-shadow": "3px 10px 21px 0px rgba(76,76,76,0.15)",
+ "box-shadow": "3px 10px 21px 0px rgba(76,76,76,0.15)",
+ "border-radius": "6px",
+ "background": "#fff"
}
//父组件EducoderLogin.js
@@ -66,6 +66,7 @@ class LoginRegisterComponent extends Component {
pciphone:true,
MyEduCoderModals:false,
registered:undefined,
+ Phonenumberisnotcodmms:undefined,
}
}
@@ -103,13 +104,14 @@ class LoginRegisterComponent extends Component {
pciphone:true,
MyEduCoderModals:false,
registered:undefined,
+ Phonenumberisnotcodmms:undefined,
}
}
}
//判断是否是手机端
- IsPC=()=> {
+ IsPC=()=> {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
@@ -162,7 +164,7 @@ class LoginRegisterComponent extends Component {
StudyMakeMoney = () => { // 调用父组件方法
- this.props.Setshowbool(3);
+
// this.props.Setlogins(3);
this.setState({
login: "",
@@ -170,7 +172,12 @@ class LoginRegisterComponent extends Component {
logins: "",
passwords: "",
codes: "",
- })
+ });
+ try {
+ this.props.Setshowbool(3);
+ }catch (e) {
+
+ }
}
onTabChange = (activeKey) => {
console.log("onTabChange");
@@ -294,6 +301,7 @@ class LoginRegisterComponent extends Component {
//登入接口
postLogin = () => {
+
if (this.state.login === undefined || this.state.login == "") {
this.setState({
Phonenumberisnotco:"账号不能为空",
@@ -310,34 +318,35 @@ class LoginRegisterComponent extends Component {
login: this.state.login,
password: this.state.password,
}).then((response) => {
+ debugger
if (response === undefined) {
return
}
if(response.data.status === -2){
- if("该手机号尚未注册" || "该邮箱尚未注册"){
- this.setState({
- Phonenumberisnotco:response.data.message,
- })
- return;
- }
- else if("错误的账号或密码"){
- this.setState({
- Phonenumberisnotco:response.data.message,
- })
- return;
- }
- else if("违反平台使用规范,账号已被锁定"){
- this.setState({
- Phonenumberisnotco:response.data.message,
- })
-
- return;
- }
- else {
- this.openNotification(response.data.message);
- return;
- }
+ if(response.data.message==="该手机号尚未注册" || response.data.message==="该邮箱尚未注册"){
+ this.setState({
+ Phonenumberisnotco:response.data.message,
+ })
+ return;
+ }
+ else if(response.data.message==="错误的账号或密码"){
+ this.setState({
+ Phonenumberisnotcodmms:response.data.message,
+ })
+ return;
+ }
+ else if(response.data.message==="违反平台使用规范,账号已被锁定"){
+ this.setState({
+ Phonenumberisnotco:response.data.message,
+ })
+
+ return;
+ }
+ else {
+ this.openNotification(response.data.message);
+ return;
+ }
}
@@ -468,7 +477,7 @@ class LoginRegisterComponent extends Component {
// })
this.setMyEduCoderModals();
}
- }
+ }
}).catch((error) => {
})
@@ -489,54 +498,54 @@ class LoginRegisterComponent extends Component {
// this.setState({dragOk: true})
if(result){
- if(result.data.status===-2){
- if (id === 1) {
- if(result.data.message==="该手机号码或邮箱已被注册"){
- this.setState({
- Phonenumberisnotco: undefined,
- Phonenumberisnotcobool: false,
- dragOk:true,
- })
- }else {
- this.setState({
- Phonenumberisnotco: result.data.message,
- Phonenumberisnotcobool: true,
- dragOk:false,
- Whethertoverify:this.state.Whethertoverify===true?false:true,
- })
- console.log("s5");
-
- }
- return;
- } else if (id === 2) {
- this.setState({
- Phonenumberisnotcos: result.data.message,
- Phonenumberisnotcobool: true,
- dragOk:false,
- Whethertoverify:this.state.Whethertoverify===true?false:true,
- })
- console.log("s6");
-
- return;
- }
- }else {
- if (id === 1) {
- this.setState({
- Phonenumberisnotco: undefined,
- Phonenumberisnotcobool: false,
- dragOk:true,
- })
- return;
- } else if (id === 2) {
- this.setState({
- Phonenumberisnotcos: undefined,
- Phonenumberisnotcobool: false,
- dragOk:true,
- })
- return;
- }
- }
- }
+ if(result.data.status===-2){
+ if (id === 1) {
+ if(result.data.message==="该手机号码或邮箱已被注册"){
+ this.setState({
+ Phonenumberisnotco: undefined,
+ Phonenumberisnotcobool: false,
+ dragOk:true,
+ })
+ }else {
+ this.setState({
+ Phonenumberisnotco: result.data.message,
+ Phonenumberisnotcobool: true,
+ dragOk:false,
+ Whethertoverify:this.state.Whethertoverify===true?false:true,
+ })
+ console.log("s5");
+
+ }
+ return;
+ } else if (id === 2) {
+ this.setState({
+ Phonenumberisnotcos: result.data.message,
+ Phonenumberisnotcobool: true,
+ dragOk:false,
+ Whethertoverify:this.state.Whethertoverify===true?false:true,
+ })
+ console.log("s6");
+
+ return;
+ }
+ }else {
+ if (id === 1) {
+ this.setState({
+ Phonenumberisnotco: undefined,
+ Phonenumberisnotcobool: false,
+ dragOk:true,
+ })
+ return;
+ } else if (id === 2) {
+ this.setState({
+ Phonenumberisnotcos: undefined,
+ Phonenumberisnotcobool: false,
+ dragOk:true,
+ })
+ return;
+ }
+ }
+ }
}).catch((error) => {
@@ -597,12 +606,12 @@ class LoginRegisterComponent extends Component {
})
return;
}
- if(this.state.pciphone===true) {
- if (this.state.dragOk === false) {
- this.openNotification("拖动滑块验证");
- return;
- }
- }
+ if(this.state.pciphone===true) {
+ if (this.state.dragOk === false) {
+ this.openNotification("拖动滑块验证");
+ return;
+ }
+ }
if (this.state.getverificationcodes === true) {
this.setState({
@@ -660,12 +669,14 @@ class LoginRegisterComponent extends Component {
this.setState({
Phonenumberisnotco: undefined,
Phonenumberisnotcobool: false,
+ Phonenumberisnotcodmms:undefined,
login: stirngt,
})
}else{
this.setState({
login: stirngt,
Phonenumberisnotco:undefined,
+ Phonenumberisnotcodmms:undefined,
})
}
@@ -729,61 +740,61 @@ class LoginRegisterComponent extends Component {
this.Emailphonenumberverification(e.target.value, 1);
}
inputOnBlurzhuche = (e, id) => {
- if (e.target.value.length === 0) {
- this.setState({
- Phonenumberisnotcos: undefined,
- Phonenumberisnotcobool: false,
- })
- return;
- }
- // var telephone = $("#telephoneAdd.tianjia_phone").val();
- var regph = /^[1][3,4,5,6,7,8][0-9]{9}$/;
- // var email = $("#add_email.tianjia_email").val();
- var regemail = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
-
- // [1]手机号开头必须是1 [3,4,5,6,7,8] 第二位是3-8中的一个 [0-9]{9} 后边9位可以是0-9的任意数字。
- var stringdata = undefined;
- if (!regph.test(e.target.value)) {
- stringdata = "手机号格式不正确";
- this.setState({
- Phonenumberisnotcos: stringdata,
- Phonenumberisnotcobool: true,
- dragOk:false,
- Whethertoverify:this.state.Whethertoverify===true?false:true,
- })
- } else {
- this.setState({
- Phonenumberisnotcos: undefined,
- Phonenumberisnotcobool: false,
+ if (e.target.value.length === 0) {
+ this.setState({
+ Phonenumberisnotcos: undefined,
+ Phonenumberisnotcobool: false,
+ })
+ return;
+ }
+ // var telephone = $("#telephoneAdd.tianjia_phone").val();
+ var regph = /^[1][3,4,5,6,7,8][0-9]{9}$/;
+ // var email = $("#add_email.tianjia_email").val();
+ var regemail = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
- })
- return
- }
+ // [1]手机号开头必须是1 [3,4,5,6,7,8] 第二位是3-8中的一个 [0-9]{9} 后边9位可以是0-9的任意数字。
+ var stringdata = undefined;
+ if (!regph.test(e.target.value)) {
+ stringdata = "手机号格式不正确";
+ this.setState({
+ Phonenumberisnotcos: stringdata,
+ Phonenumberisnotcobool: true,
+ dragOk:false,
+ Whethertoverify:this.state.Whethertoverify===true?false:true,
+ })
+ } else {
+ this.setState({
+ Phonenumberisnotcos: undefined,
+ Phonenumberisnotcobool: false,
- if (!regemail.test(e.target.value)) {
- if ((e.target.value.indexOf("@") != -1) === true) {
- stringdata = "邮箱格式不正确";
- } else {
- stringdata = "手机号格式不正确";
+ })
+ return
+ }
- }
- this.setState({
- Phonenumberisnotcos: stringdata,
- Phonenumberisnotcobool: true,
- dragOk:false,
- Whethertoverify:this.state.Whethertoverify===true?false:true,
- })
- return
+ if (!regemail.test(e.target.value)) {
+ if ((e.target.value.indexOf("@") != -1) === true) {
+ stringdata = "邮箱格式不正确";
} else {
- this.setState({
- Phonenumberisnotcos: undefined,
- Phonenumberisnotcobool: false,
+ stringdata = "手机号格式不正确";
- })
- this.Emailphonenumberverification(e.target.value, id);
- return
}
+ this.setState({
+ Phonenumberisnotcos: stringdata,
+ Phonenumberisnotcobool: true,
+ dragOk:false,
+ Whethertoverify:this.state.Whethertoverify===true?false:true,
+ })
+ return
+ } else {
+ this.setState({
+ Phonenumberisnotcos: undefined,
+ Phonenumberisnotcobool: false,
+
+ })
this.Emailphonenumberverification(e.target.value, id);
+ return
+ }
+ this.Emailphonenumberverification(e.target.value, id);
}
//获取登入密码
passwordonChange = (e) => {
@@ -798,6 +809,7 @@ class LoginRegisterComponent extends Component {
this.setState({
password: stirngt,
Phonenumberisnotcodmm:undefined,
+ Phonenumberisnotcodmms:undefined,
})
// this.setState({
// password: e.target.value
@@ -807,28 +819,28 @@ class LoginRegisterComponent extends Component {
loginInputonChanges = (e) => {
console.log(e.target.value);
var stirngt;
- if(e.target.value.length>0){
- var str= e.target.value.replace(/\s*/g,"")
- stirngt=str;
- }else{
- stirngt= e.target.value;
- }
- if (e.target.value.length === 0) {
- this.setState({
- Phonenumberisnotcos: undefined,
- Phonenumberisnotcobool: false,
- logins: stirngt,
- dragOk:false,
- Whethertoverify:this.state.Whethertoverify===true?false:true,
- })
- }else{
- this.setState({
- logins: stirngt,
- Phonenumberisnotcos: undefined,
- dragOk:false,
- Whethertoverify:this.state.Whethertoverify===true?false:true,
- })
- }
+ if(e.target.value.length>0){
+ var str= e.target.value.replace(/\s*/g,"")
+ stirngt=str;
+ }else{
+ stirngt= e.target.value;
+ }
+ if (e.target.value.length === 0) {
+ this.setState({
+ Phonenumberisnotcos: undefined,
+ Phonenumberisnotcobool: false,
+ logins: stirngt,
+ dragOk:false,
+ Whethertoverify:this.state.Whethertoverify===true?false:true,
+ })
+ }else{
+ this.setState({
+ logins: stirngt,
+ Phonenumberisnotcos: undefined,
+ dragOk:false,
+ Whethertoverify:this.state.Whethertoverify===true?false:true,
+ })
+ }
}
//获取注册密码
@@ -858,7 +870,7 @@ class LoginRegisterComponent extends Component {
this.setState({
tab:e.key
})
- console.log(e.key);
+ console.log(e.key);
if(e.key === 0){
this.setState({
Phonenumberisnotcos:undefined
@@ -916,6 +928,7 @@ class LoginRegisterComponent extends Component {
// 注册
readAgreement,
pciphone,
+ Phonenumberisnotcodmms,
} = this.state
// height: 346px;
if (this.state.seconds === 0) {
@@ -925,30 +938,30 @@ class LoginRegisterComponent extends Component {
console.log(classpass);
return (
-
-
-
-
-
-
- {
- parseInt(tab[0])==0 &&
-
-
+
+
+
+
+ {
+ parseInt(tab[0])==0 &&
+
+
-
-
this.inputOnBlur(e, 1)}
- style={{marginTop: '30px', height: '38px'}}>
-
- {
- Phonenumberisnotco && Phonenumberisnotco != "" ?
-
- {Phonenumberisnotco}
-
- :
- }
-
-
- {
- Phonenumberisnotcodmm && Phonenumberisnotcodmm != "" ?
-
- {Phonenumberisnotcodmm}
-
- :
- }
-
-
-
-
-
- }
-
-
- {
- parseInt(tab[0])==1 &&
-
-
this.inputOnBlurzhuche(e, 2)}
- style={{marginTop: '30px' , height: '38px',color:'#999999',fontSize:"14px"}}>
- {
- Phonenumberisnotcos && Phonenumberisnotcos !== "" ?
-
- {Phonenumberisnotcos}
-
- :
+ }
+
+
+
this.inputOnBlur(e, 1)}
+ style={{marginTop: '30px', height: '38px'}}>
+
+ {
+ Phonenumberisnotco && Phonenumberisnotco != "" ?
+
+ {Phonenumberisnotco}
+
+ :
+ }
+
+
+ {
+ Phonenumberisnotcodmm && Phonenumberisnotcodmm != "" ?
+
+ {Phonenumberisnotcodmm}
+
+ : (Phonenumberisnotcodmms=== undefined?
:"")
+ }
+ {
+ Phonenumberisnotcodmms && Phonenumberisnotcodmms != "" ?
+
+ {Phonenumberisnotcodmms}
+
+ : ""
+ }
+
+
+
+
+
+ }
+
+
+ {
+ parseInt(tab[0])==1 &&
+
+
this.inputOnBlurzhuche(e, 2)}
+ style={{marginTop: '30px' , height: '38px',color:'#999999',fontSize:"14px"}}>
+ {
+ Phonenumberisnotcos && Phonenumberisnotcos !== "" ?
+
+ {Phonenumberisnotcos}
+
+ :
+
+ }
+ {this.state.MyEduCoderModals===true?
{this.setNotcompleteds()}}
+ />:""}
+
+ {
+ Whethertoverify===false&&pciphone===true?
+
+
+ :
+ ""
- }
- {this.state.MyEduCoderModals===true? {this.setNotcompleteds()}}
- />:""}
-
- {
- Whethertoverify===false&&pciphone===true?
-
-
- :
- ""
-
- }
- {
- Whethertoverify===true&&pciphone===true?
-
-
+ }
+ {
+ Whethertoverify===true&&pciphone===true?
+
+
:
""
- }
+ }
-
- {
- pciphone===true?
- (
- Phonenumberisnotcosytdhk && Phonenumberisnotcosytdhk !== "" ?
+
+ {
+ pciphone===true?
+ (
+ Phonenumberisnotcosytdhk && Phonenumberisnotcosytdhk !== "" ?
{Phonenumberisnotcosytdhk}
:
- )
- :""
- }
-
-
-
-
-
-
-
-
- {
- getverificationcodes === undefined ?
-
- : getverificationcodes === true ?
-
- :
-
- }
-
-
-
- {
- Phonenumberisnotcosyzm && Phonenumberisnotcosyzm !== "" ?
-
- {Phonenumberisnotcosyzm}
-
- :
+ )
+ :""
+ }
+
+
+
+
+
+
+
+
+ {
+ getverificationcodes === undefined ?
+
+ : getverificationcodes === true ?
+
+ :
+
+ }
+
+
+
+ {
+ Phonenumberisnotcosyzm && Phonenumberisnotcosyzm !== "" ?
+
+ {Phonenumberisnotcosyzm}
+
+ :
- }
-
+ }
+
-
- this.Showandhide(key)}>
-
- }>
- {
- Phonenumberisnotcosymmm && Phonenumberisnotcosymmm !== "" ?
-
- {Phonenumberisnotcosymmm}
-
- :
-
- }
- 我已阅读并同意
+ }
+
+ this.Showandhide(key)}>
+
+ }>
+ {
+ Phonenumberisnotcosymmm && Phonenumberisnotcosymmm !== "" ?
+
+ {Phonenumberisnotcosymmm}
+
+ :
+
+ }
+ 我已阅读并同意
《服务协议条款》
-
+
-
- }
-
-
+
+ }
+
+
);
}
}
From 5479c7f8879604f77ff53cdd230829c78f947a8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Tue, 30 Jul 2019 10:36:01 +0800
Subject: [PATCH 003/623] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/react/src/modules/user/LoginRegisterComponent.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/public/react/src/modules/user/LoginRegisterComponent.js b/public/react/src/modules/user/LoginRegisterComponent.js
index cffc633f5..9199aa51d 100644
--- a/public/react/src/modules/user/LoginRegisterComponent.js
+++ b/public/react/src/modules/user/LoginRegisterComponent.js
@@ -368,6 +368,12 @@ class LoginRegisterComponent extends Component {
if(weekArray===undefined){
weekArray="/";
}
+ if(weekArray===null){
+ weekArray="/";
+ }
+ if(weekArray==="null"){
+ weekArray="/";
+ }
window.location.href = weekArray;
}
}
From 814aa13c21518c8c463761e09e8c993364ed1c98 Mon Sep 17 00:00:00 2001
From: daiao <358551898@qq.com>
Date: Tue, 30 Jul 2019 14:05:26 +0800
Subject: [PATCH 004/623] =?UTF-8?q?Mp3=E3=80=81mp4=E7=B1=BB=E5=AE=9E?=
=?UTF-8?q?=E8=AE=AD=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/games_controller.rb | 2 +-
app/controllers/myshixuns_controller.rb | 2 +-
app/helpers/games_helper.rb | 8 +++++++-
app/models/challenge.rb | 1 +
4 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb
index b2de6dcad..667d45f2b 100644
--- a/app/controllers/games_controller.rb
+++ b/app/controllers/games_controller.rb
@@ -116,7 +116,7 @@ class GamesController < ApplicationController
@qrcode_str = Base64.encode64( qr.to_img.resize(400,400).to_s )
else
- @type = "image"
+ @type = ""
#conv = Iconv.new("GBK", "utf-8")
@game_challenge = @game.challenge
type = @game_challenge.show_type
diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb
index fa47fd7f6..1d6b15969 100644
--- a/app/controllers/myshixuns_controller.rb
+++ b/app/controllers/myshixuns_controller.rb
@@ -24,7 +24,7 @@ class MyshixunsController < ApplicationController
ActiveRecord::Base.transaction do
begin
@shixun = Shixun.select(:id, :identifier).find(@myshixun.shixun_id)
- @myshixun.destroy
+ @myshixun.destroy!
StudentWork.where(:myshixun_id => @myshixun.id).update_all(:myshixun_id => 0, :work_status => 0)
diff --git a/app/helpers/games_helper.rb b/app/helpers/games_helper.rb
index aff05904f..dfc3fb321 100644
--- a/app/helpers/games_helper.rb
+++ b/app/helpers/games_helper.rb
@@ -6,7 +6,7 @@ module GamesHelper
end
# 获取目录下所有文件,返回一个文件名的数组 type是查看文件的类型image表示图片
- # type [[1, "图片"], [2, "apk/exe"], [3, "txt"], [4, "html"]]
+ # type [[1, "图片"], [2, "apk/exe"], [3, "txt"], [4, "html"], [5, "mp3"], [6, "mp4"]]
def get_dir_filename(path, type, game_id)
answer_picture = []
return answer_picture unless File.directory?(path)
@@ -39,6 +39,12 @@ module GamesHelper
end
f.close
@type = 'txt'
+ elsif extension == 'mp3' && type == 5
+ answer_picture << file
+ @type = 'mp3'
+ elsif extension == 'mp4' && type == 6
+ answer_picture << file
+ @type = 'mp4'
end
end
diff --git a/app/models/challenge.rb b/app/models/challenge.rb
index 0bea54eb4..8e4d2ae42 100644
--- a/app/models/challenge.rb
+++ b/app/models/challenge.rb
@@ -1,5 +1,6 @@
class Challenge < ApplicationRecord
# difficulty: 关卡难度: 1.简单 2.中等 3.困难
+ # show_type: 效果展示:-1.无效果 1.图片 2.apk/exe 3.txt 4.html 5.mp3 6.mp4
default_scope { order("challenges.position asc") }
belongs_to :shixun, :touch => true, counter_cache: true
From 899827917ad86125990c2c94d6da83346cd8cd16 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Tue, 30 Jul 2019 14:42:50 +0800
Subject: [PATCH 005/623] =?UTF-8?q?=E6=89=80=E9=80=89=E5=AD=A6=E7=94=9F?=
=?UTF-8?q?=E5=88=86=E7=8F=AD=E8=87=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../coursesPublic/form/SchoolSelect.js | 2 +-
.../courses/members/modal/AddStudentModal.js | 19 ++++++++++---------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js b/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js
index e1a9062e3..67cf3c842 100644
--- a/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js
+++ b/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js
@@ -57,7 +57,7 @@ class SchoolSelect extends Component{
const { value, onChange } = this.props;
return (
姓名:
{this.setState({name: e.target.value})}}
- style={{ width: '242px'}}
+ style={{ width: '221px'}}
>
单位:
{/* {this.setState({school_name: e.target.value})}}
@@ -210,14 +210,7 @@ class AddStudentModal extends Component{
>搜索
{/* */}
- {course_groups && course_groups.length &&
- 分班:
-
-
}
+
@@ -271,6 +264,14 @@ class AddStudentModal extends Component{
+ {course_groups && course_groups.length &&
+ 所选学生分班至(选填):
+
+
}
: }
From b728139be22d7e7196d01695515e4de0a822cf74 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Tue, 30 Jul 2019 16:25:50 +0800
Subject: [PATCH 006/623] login
---
.../src/modules/courses/members/modal/AddStudentModal.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/public/react/src/modules/courses/members/modal/AddStudentModal.js b/public/react/src/modules/courses/members/modal/AddStudentModal.js
index 34af1d01a..1ad02c9f4 100644
--- a/public/react/src/modules/courses/members/modal/AddStudentModal.js
+++ b/public/react/src/modules/courses/members/modal/AddStudentModal.js
@@ -240,7 +240,12 @@ class AddStudentModal extends Component{
12 }>
-
+
From 89b7a5099f4b9426413eb99b8b6d0b642b4ab4c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Tue, 30 Jul 2019 17:53:34 +0800
Subject: [PATCH 007/623] =?UTF-8?q?=E4=BC=97=E5=8C=85=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/react/src/App.js | 2 +-
.../projectPackages/PackageIndex/PackageConcent.js | 4 ++--
.../PackageIndexNEITaskDetails.js | 6 +++---
.../PackageIndexNEIBannerConcent.js | 4 ++--
.../PackageIndexNewandEdit/PackageIndexNEISubmit.js | 4 ++--
.../PackageIndexNewandEditIndex.js | 2 +-
.../src/modules/projectPackages/ProjectPackageIndex.js | 8 ++++----
public/react/src/modules/tpm/NewHeader.js | 4 ++--
public/react/src/modules/user/usersInfo/Infos.js | 10 +++++-----
9 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/public/react/src/App.js b/public/react/src/App.js
index e713cd0fd..6d1e2a521 100644
--- a/public/react/src/App.js
+++ b/public/react/src/App.js
@@ -304,7 +304,7 @@ class App extends Component {
{/**/}
{/*众包创新*/}
-
+
{/*认证*/}
diff --git a/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js b/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js
index cfc54bb98..921c3e555 100644
--- a/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js
+++ b/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js
@@ -158,7 +158,7 @@ class PackageConcent extends Component {
enterButton={ 搜索}
onSearch={ (value)=>this.setdatafuns(value)} />
@@ -224,7 +224,7 @@ class PackageConcent extends Component {
diff --git a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js
index ac7c8a1a5..35ca952a7 100644
--- a/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js
+++ b/public/react/src/modules/projectPackages/PackageIndexNEITaskDetails/PackageIndexNEITaskDetails.js
@@ -230,7 +230,7 @@ class PackageIndexNEITaskDetails extends Component {
}
goback = () => {
// window.history.go(-1)
- window.location.href="/crowdsourcings";
+ window.location.href="/crowdsourcing";
}
render() {
@@ -252,7 +252,7 @@ class PackageIndexNEITaskDetails extends Component {
'} className={"fl"}>
{/*{this.props.current_user.username}*/}
- 众包创新
+ 众包创新
{data&&data.title}
@@ -353,7 +353,7 @@ class PackageIndexNEITaskDetails extends Component {
需求详情:
{data&&data.status==="pending"&&data&&data.operation.can_select_bidding_user===true?:""}
diff --git a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js
index eae5589f2..ccc78f04b 100644
--- a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js
+++ b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEIBannerConcent.js
@@ -462,7 +462,7 @@ class PackageIndexNEIBannerConcent extends Component {
if(type===true){
this.props.setPublicationfun(response.data.id)
}else{
- window.location.href="/crowdsourcings/"+response.data.id
+ window.location.href="/crowdsourcing/"+response.data.id
}
this.setState({
springtype:false
@@ -510,7 +510,7 @@ class PackageIndexNEIBannerConcent extends Component {
if(type===true){
this.props.setPublicationfun(response.data.id)
}else{
- window.location.href="/crowdsourcings/"+response.data.id
+ window.location.href="/crowdsourcing/"+response.data.id
}
this.setState({
springtype:false
diff --git a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEISubmit.js b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEISubmit.js
index 932b9295f..e44e654b9 100644
--- a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEISubmit.js
+++ b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNEISubmit.js
@@ -14,10 +14,10 @@ class PackageIndexNEISubmit extends Component {
}
setageload=(sum)=>{
if(sum===undefined){
- window.location.href="/crowdsourcings/new"
+ window.location.href="/crowdsourcing/new"
}else{
// this.props.history.push("/project_packages/"+sum)
- window.location.href="/crowdsourcings/"+sum
+ window.location.href="/crowdsourcing/"+sum
}
}
diff --git a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js
index 8d73a6e55..0481577bf 100644
--- a/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js
+++ b/public/react/src/modules/projectPackages/PackageIndexNewandEdit/PackageIndexNewandEditIndex.js
@@ -30,7 +30,7 @@ class PackageIndexNewandEditIndex extends Component{
goback = () => {
// window.history.go(-1)
- window.location.href="/crowdsourcings";
+ window.location.href="/crowdsourcing";
}
render() {
diff --git a/public/react/src/modules/projectPackages/ProjectPackageIndex.js b/public/react/src/modules/projectPackages/ProjectPackageIndex.js
index 6f2e32b8b..097e012e0 100644
--- a/public/react/src/modules/projectPackages/ProjectPackageIndex.js
+++ b/public/react/src/modules/projectPackages/ProjectPackageIndex.js
@@ -43,25 +43,25 @@ class ProjectPackageIndex extends Component {
{/*众包首页*/}
- ()
}
>
- ()
}
>
- ()
}
>
- ()
}
diff --git a/public/react/src/modules/tpm/NewHeader.js b/public/react/src/modules/tpm/NewHeader.js
index b84982d86..79b0aa443 100644
--- a/public/react/src/modules/tpm/NewHeader.js
+++ b/public/react/src/modules/tpm/NewHeader.js
@@ -718,7 +718,7 @@ submittojoinclass=(value)=>{
教学案例
众包创新
交流问答
{
我的实训
我的实践课程
我的项目
- {/*我的众包*/}
+ 我的众包
账号管理
{/*this.educoderlogin()} >登入测试接口*/}
{/*this.trialapplications()} >试用申请 */}
diff --git a/public/react/src/modules/user/usersInfo/Infos.js b/public/react/src/modules/user/usersInfo/Infos.js
index f20cd5be5..5286c5797 100644
--- a/public/react/src/modules/user/usersInfo/Infos.js
+++ b/public/react/src/modules/user/usersInfo/Infos.js
@@ -384,11 +384,11 @@ class Infos extends Component{
to={`/users/${username}/projects`}>项目
- {/**/}
- {/* this.setState({moduleName: 'package'})}*/}
- {/*to={`/users/${username}/package`}>众包*/}
- {/**/}
+
+ this.setState({moduleName: 'package'})}
+ to={`/users/${username}/package`}>众包
+
{/*{ data && data.identity!="学生" && 题库}*/}
From 0bc92a8729a1e8b9a8022d70c9cd26ee119e81ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Tue, 30 Jul 2019 23:18:22 +0800
Subject: [PATCH 008/623] =?UTF-8?q?=E4=BC=97=E5=8C=85=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../modules/user/usersInfo/InfosPackage.js | 125 +++++++++++++++---
1 file changed, 109 insertions(+), 16 deletions(-)
diff --git a/public/react/src/modules/user/usersInfo/InfosPackage.js b/public/react/src/modules/user/usersInfo/InfosPackage.js
index f1077cd62..65cf2467a 100644
--- a/public/react/src/modules/user/usersInfo/InfosPackage.js
+++ b/public/react/src/modules/user/usersInfo/InfosPackage.js
@@ -2,16 +2,35 @@ import React, { Component } from 'react';
import { SnackbarHOC } from 'educoder';
import {BrowserRouter as Router,Route,Switch} from 'react-router-dom';
import {Tooltip,Menu,Pagination,Spin} from 'antd';
-import Loadable from 'react-loadable';
-import Loading from '../../../Loading';
import axios from 'axios';
-import NoneData from '../../courses/coursesPublic/NoneData'
import {getImageUrl} from 'educoder';
-import { TPMIndexHOC } from '../../tpm/TPMIndexHOC';
-import { CNotificationHOC } from '../../courses/common/CNotificationHOC'
+import NoneData from '../../courses/coursesPublic/NoneData'
import "./usersInfo.css"
-import Create from './publicCreatNew'
+import moment from 'moment';
+let categorylist=[
+ {name:"全部",value:undefined},
+ {name:"前端开发",value:"front"},
+ {name:"后端开发",value:"backend"},
+ {name:"移动开发",value:"mobile"},
+ {name:"数据库",value:"database"},
+ {name:"云计算和大数据",value:"cloud_compute_and_big_data"},
+ {name:"人工智能",value:"ai"},
+ {name:"运维与测试",value:"devops_and_test"},
+ {name:"其他",value:"other"},
+]
+//
+function setcategorylist(val){
+ let vals=""
+ categorylist.some((item,key)=> {
+ if (item.name === val) {
+ vals=item.value
+ return true
+ }
+ }
+ )
+ return vals
+}
class InfosPackage extends Component{
constructor(props){
super(props);
@@ -19,8 +38,8 @@ class InfosPackage extends Component{
category:undefined,
status:undefined,
page:1,
- per_page:16,
-
+ per_page:20,
+ sort_direction:'desc',
totalCount:undefined,
data:undefined,
isSpin:false
@@ -36,12 +55,14 @@ class InfosPackage extends Component{
}
getCourses=(category,status,page)=>{
- let url=`/users/${this.props.match.params.username}/courses.json`;
+ let url=`/users/${this.props.match.params.username}/project_packages.json`;
axios.get((url),{params:{
category,
status,
page,
- per_page: this.props.is_current && category && page ==1?17:16
+ sort_by:"published_at",
+ sort_direction:'desc',
+ per_page:20
}}).then((result)=>{
if(result){
this.setState({
@@ -103,21 +124,93 @@ class InfosPackage extends Component{
} = this.state;
let is_current=this.props.is_current;
- console.log(this.props.current_user&&this.props.current_user.user_identity==="学生")
+ console.log(data)
return(
-
+ {
+ category=="manage"?
+ : category=="bidden"?
+ :""
+ }
- 共{0}个
+ 共{totalCount}个
发布时间
+ {/*bidden_status: "pending"*/}
+
+ {/*category_id: 2*/}
+
+ {/*status: "published"*/}
+
+ {/*type: "bidden"*/}
+
+
+ {data===undefined?:data.project_packages.length===0?:data.project_packages.map((item,key)=>{
+ return(
+
+
+
+
+
+
+
+
+
+
+
+
+ {item.min_price===null?"":¥{item.min_price}}
+ {item.max_price===null||item.min_price===null?"":~}
+ {item.max_price===null?"":¥{item.max_price}}
+ {item.min_price===null&&item.max_price===null?可议价:""}
+
+
+
+
+
+
+ {item.visit_count}人浏览
+
+
+
+ {moment(item.deadline_at).endOf('day').fromNow()}竞标截止
+
+
+
+ {item.bidding_users_count}人竞标
+
+
+
+ 发布于:{item.published_at}
+
+
+
+
+
+ )})}
+
+
+
)
From 8c584ba15d2080559518b2bdcc151452e1f3c1b5 Mon Sep 17 00:00:00 2001
From: daiao <358551898@qq.com>
Date: Wed, 31 Jul 2019 09:58:08 +0800
Subject: [PATCH 009/623] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=A4=9A=E5=AA=92?=
=?UTF-8?q?=E4=BD=93=E7=B1=BB=E7=9A=84=E5=AE=9E=E8=AE=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/games_controller.rb | 2 +-
app/views/games/picture_display.json.jbuilder | 25 +++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb
index b2de6dcad..510044aa4 100644
--- a/app/controllers/games_controller.rb
+++ b/app/controllers/games_controller.rb
@@ -116,7 +116,7 @@ class GamesController < ApplicationController
@qrcode_str = Base64.encode64( qr.to_img.resize(400,400).to_s )
else
- @type = "image"
+ @type = shixun_show_type @game_challenge.show_type
#conv = Iconv.new("GBK", "utf-8")
@game_challenge = @game.challenge
type = @game_challenge.show_type
diff --git a/app/views/games/picture_display.json.jbuilder b/app/views/games/picture_display.json.jbuilder
index 541c478a9..b43efa57e 100644
--- a/app/views/games/picture_display.json.jbuilder
+++ b/app/views/games/picture_display.json.jbuilder
@@ -24,5 +24,30 @@ elsif @type == "txt"
json.contents @contents.html_safe
elsif @type =="qrcode"
json.qrcode_str @qrcode_str
+elsif @type == "mp3" || @type == "mp4"
+ if @type == "mp4"
+ json.orignal_file [{"file_url": "http://120.27.231.56:48080/attachments/download/378171/123.mp4"}]
+ json.user_file [{"file_url": "http://120.27.231.56:48080/attachments/download/378172/456.mp4"}]
+ json.answer_file [{"file_url": "http://120.27.231.56:48080/attachments/download/378173/789.mp4"}]
+ else
+ json.orignal_file [{"file_url": "http://120.27.231.56:48080/attachments/download/378174/58099.mp3"}]
+ json.user_file [{"file_url": "http://120.27.231.56:48080/attachments/download/378175/654058514.mp3"}]
+ json.answer_file [{"file_url": "http://120.27.231.56:48080/attachments/download/378175/654058514.mp3"}]
+ end
+ # json.orignal_file do
+ # json.array! @orignal_picture do |file|
+ # json.file_url attachment_show_users_path(:file_name => file, :path => @original_path)
+ # end
+ # end
+ # json.user_file do
+ # json.array! @user_picture do |file|
+ # json.file_url attachment_show_users_path(:file_name => file, :path => @user_path, :time => Time.now.to_i)
+ # end
+ # end
+ # json.answer_file do
+ # json.array! @answer_picture do |file|
+ # json.file_url attachment_show_users_path(:file_name => file, :path => @answer_path)
+ # end
+ # end
end
\ No newline at end of file
From 60645e22064fc91d0ddc58e7eab94deb9e4922db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Wed, 31 Jul 2019 09:59:20 +0800
Subject: [PATCH 010/623] =?UTF-8?q?=E5=AE=9E=E8=AE=ADTPM=EF=BC=8C=E5=AE=9E?=
=?UTF-8?q?=E8=B7=B5=E4=BB=BB=E5=8A=A1=E7=9A=84=E6=95=88=E6=9E=9C=E5=B1=95?=
=?UTF-8?q?=E7=8E=B0=E5=A2=9E=E5=8A=A0=E2=80=9CMP3/MP4=E2=80=9D=E7=9A=84?=
=?UTF-8?q?=E8=8F=9C=E5=8D=95=E9=80=89=E9=A1=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../tpm/challengesnew/TPMevaluation.js | 56 ++++++++++---------
1 file changed, 30 insertions(+), 26 deletions(-)
diff --git a/public/react/src/modules/tpm/challengesnew/TPMevaluation.js b/public/react/src/modules/tpm/challengesnew/TPMevaluation.js
index 5d66829c3..6cd0b9977 100644
--- a/public/react/src/modules/tpm/challengesnew/TPMevaluation.js
+++ b/public/react/src/modules/tpm/challengesnew/TPMevaluation.js
@@ -339,9 +339,6 @@ export default class TPMevaluation extends Component {
goblakepath=(path,key)=>{
let {main,selectpath,pathtype} =this.state;
-
-
-
let newmain=[]
for(var i=0;i<=key;i++){
newmain.push(main[i])
@@ -366,16 +363,20 @@ export default class TPMevaluation extends Component {
});
if(pathtype===2){
- // var str=path;
- // str.slice(0,str.length-1)
- // debugger
- // console.log(str)
+ let paths = path.substring(0,path.length-1);
+ console.log(paths)
this.setState({
- selectpath: path,
+ selectpath: paths,
})
}
+
}
+
+
+
+
+
// delesavegetfilepath=(value)=>{
// let {selectpatharr} = this.state
// let newarr =selectpatharr;
@@ -674,6 +675,7 @@ export default class TPMevaluation extends Component {
this.setState({
selectpath:e.target.value
})
+
}
updatepath=(e,name,type)=>{
this.setState({
@@ -949,6 +951,8 @@ export default class TPMevaluation extends Component {
+
+
this.showrepositoryurltip(1)}>
- {pathoptionvalue===1?
+ {pathoptionvalue===1||pathoptionvalue===5||pathoptionvalue===6?
待处理图片路径
@@ -997,20 +1001,20 @@ export default class TPMevaluation extends Component {
:""}
- {pathoptionvalue===1?
+ {pathoptionvalue===1||pathoptionvalue===5||pathoptionvalue===6?
标准答案图片路径
@@ -1029,9 +1033,9 @@ export default class TPMevaluation extends Component {
value={shixunfilepicturepath}
onInput={(e)=>this.updatepath(e,"shixunfilepicturepath",2)}
onClick={(e)=>this.getfilepath(e,"shixunfilepicturepath",2)}
- placeholder="请在版本库中指定用来保存学员代码实际输出结果的路径。例:src/step1/outputimages"/>
+ placeholder="请在版本库中指定用来保存学员代码实际输出结果的路径。例:src/step1/outputfiles"/>
- 学员评测本关任务时生成的文件将保存在该路径下,并作为实际输出显示在查看效果页,供学员确认任务输出结果为文件时请指定该路径,并注意与程序文件所在文件夹分开
+ 学员评测本关任务时生成的文件将保存在该路径下,并作为实际输出显示在查看效果页,供学员确认;任务输出结果为文件时请指定该路径,并注意与程序文件所在文件夹分开。
@@ -1066,16 +1070,16 @@ export default class TPMevaluation extends Component {
-
- 系统评分占比:
-
- 均分比例
- 自定义比例
-
-
+
+ 系统评分占比:
+
+ 均分比例
+ 自定义比例
+
+
From 400e5c104011c1f593daf97092d230fa4acffc37 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Wed, 31 Jul 2019 10:08:01 +0800
Subject: [PATCH 011/623] export true
---
.../modules/courses/shixunHomework/Trainingjobsetting.js | 8 ++++----
.../courses/shixunHomework/Workquestionandanswer.js | 8 ++++----
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
index 8cbf0402f..99c295c40 100644
--- a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
+++ b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
@@ -1766,16 +1766,16 @@ class Trainingjobsetting extends Component {
daochushixunbaogao=()=>{
let url =`/zip/shixun_report?homework_common_id=${this.props.match.params.homeworkid}`;
- this.confirmysl(url + '&export=true');
+ this.confirmysl(url, url + '&export=true');
}
daochuzuoye =() =>{
let url = `/homework_commons/${this.props.match.params.homeworkid}/works_list.xlsx`;
- this.confirmysl(url + '?export=true');
+ this.confirmysl(url, url + '?export=true');
}
- confirmysl(url){
- axios.get(url).then((response) => {
+ confirmysl(url, urlWithExport){
+ axios.get(urlWithExport).then((response) => {
if(response === undefined){
return
}
diff --git a/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js b/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js
index 2da08e2ad..4ed45790d 100644
--- a/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js
+++ b/public/react/src/modules/courses/shixunHomework/Workquestionandanswer.js
@@ -339,16 +339,16 @@ class Workquestionandanswer extends Component {
daochushixunbaogao=()=>{
let url =`/zip/shixun_report?homework_common_id=${this.props.match.params.homeworkid}`;
- this.confirmysl(url + '&export=true');
+ this.confirmysl(url, url + '&export=true');
}
daochuzuoye =() =>{
let url = `/homework_commons/${this.props.match.params.homeworkid}/works_list.xlsx`;
- this.confirmysl(url + '?export=true');
+ this.confirmysl(url, url + '?export=true');
}
- confirmysl(url){
- axios.get(url).then((response) => {
+ confirmysl(url, urlWithExport){
+ axios.get(urlWithExport).then((response) => {
if(response === undefined){
return
}
From 2e889a74e56189c9077fa443a2a267df9cba4a22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Wed, 31 Jul 2019 11:20:32 +0800
Subject: [PATCH 012/623] =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=8E=A7=E5=88=B6?=
=?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E4=B8=8D=E8=83=BD=E9=80=89=E4=BB=8A?=
=?UTF-8?q?=E5=A4=A9=E4=B9=8B=E5=89=8D=E7=9A=84=E6=97=B6=E9=97=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../modules/courses/coursesPublic/HomeworkModal.js | 11 ++++++++++-
.../modules/courses/coursesPublic/SelectSetting.js | 8 +++++++-
.../src/modules/courses/coursesPublic/sendResource.js | 8 +++++++-
.../src/modules/courses/exercise/Exercisesetting.js | 8 ++++++++
.../graduation/tasks/GraduationTaskssetting.js | 9 +++++++++
public/react/src/modules/courses/new/CoursesNew.js | 4 ++++
.../modules/courses/poll/PollDetailTabForthRules.js | 8 ++++++++
.../courses/shixunHomework/Trainingjobsetting.js | 6 ++++++
.../react/src/modules/tpm/TPMsettings/TPMsettings.js | 7 ++++++-
public/react/src/modules/tpm/newshixuns/Newshixuns.js | 8 +++++---
10 files changed, 70 insertions(+), 7 deletions(-)
diff --git a/public/react/src/modules/courses/coursesPublic/HomeworkModal.js b/public/react/src/modules/courses/coursesPublic/HomeworkModal.js
index 440d8893c..deb329fb9 100644
--- a/public/react/src/modules/courses/coursesPublic/HomeworkModal.js
+++ b/public/react/src/modules/courses/coursesPublic/HomeworkModal.js
@@ -20,6 +20,14 @@ function disabledDateTime() {
// disabledSeconds: () => [55, 56],
};
}
+
+
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
+
+
+
class HomeworkModal extends Component{
constructor(props){
super(props);
@@ -81,7 +89,7 @@ class HomeworkModal extends Component{
// console.log('startValue',dateString);
this.setState({
- endtime: handleDateString(dateString),
+ endtime: date===null?"":handleDateString(dateString),
})
}
@@ -188,6 +196,7 @@ class HomeworkModal extends Component{
dropdownClassName="hideDisable"
showTime={{ format: 'HH:mm' }}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
showToday={false}
locale={locale}
format={dateFormat}
diff --git a/public/react/src/modules/courses/coursesPublic/SelectSetting.js b/public/react/src/modules/courses/coursesPublic/SelectSetting.js
index 08e01e28e..fa2e014f9 100644
--- a/public/react/src/modules/courses/coursesPublic/SelectSetting.js
+++ b/public/react/src/modules/courses/coursesPublic/SelectSetting.js
@@ -16,12 +16,17 @@ function range(start, end) {
}
return result;
}
+
function disabledDateTime() {
return {
disabledMinutes: () => range(1, 30).concat(range(31, 60)),
// disabledSeconds: () => range(1,60)
}
}
+
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
class Selectsetting extends Component{
constructor(props){
super(props);
@@ -698,6 +703,7 @@ class Selectsetting extends Component{
onChange={(e,index)=>this.onChangeTimepublishs(e,index,key)}
// onChange={ this.onChangeTimepublish }
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
/>
{key!=0?
this.deletegrouppublish(key)}>:""}
@@ -730,7 +736,7 @@ class Selectsetting extends Component{
value={datatime===undefined||datatime===""?"":moment(datatime, dateFormat)}
onChange={this.onChangeTimepublish}
disabledTime={disabledDateTime}
-
+ disabledDate={disabledDate}
/>
:""}
diff --git a/public/react/src/modules/courses/coursesPublic/sendResource.js b/public/react/src/modules/courses/coursesPublic/sendResource.js
index 397711ca3..8443061dd 100644
--- a/public/react/src/modules/courses/coursesPublic/sendResource.js
+++ b/public/react/src/modules/courses/coursesPublic/sendResource.js
@@ -22,6 +22,11 @@ function disabledDateTime() {
};
}
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
+
+
const dateFormat="YYYY-MM-DD HH:mm";
class Sendresource extends Component{
constructor(props){
@@ -525,6 +530,7 @@ class Sendresource extends Component{
onChange={(e,index)=>this.onChangeTimepublish(e,index,key,2)}
// onChange={ this.onChangeTimepublish }
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
/>
{key!=0?
this.deletegrouppublish(key)}>:""}
{key===course_group_publish_times.length-1&&key
:""}
@@ -551,7 +557,7 @@ class Sendresource extends Component{
value={datatime===undefined||datatime===""?undefined:moment(datatime, dateFormat)}
onChange={(e,index)=>this.onChangeTimepublish(e,index,undefined,1)}
disabledTime={disabledDateTime}
-
+ disabledDate={disabledDate}
/>
:""}
diff --git a/public/react/src/modules/courses/exercise/Exercisesetting.js b/public/react/src/modules/courses/exercise/Exercisesetting.js
index 9b6103fdb..a93aa9942 100644
--- a/public/react/src/modules/courses/exercise/Exercisesetting.js
+++ b/public/react/src/modules/courses/exercise/Exercisesetting.js
@@ -23,6 +23,7 @@ function range(start, end) {
}
return result;
}
+
function disabledDateTime() {
return {
// disabledHours: () => range(0, 24).splice(4, 20),
@@ -30,6 +31,11 @@ function disabledDateTime() {
// disabledSeconds: () => [0, 60],
};
}
+
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
+
const dataformat="YYYY-MM-DD HH:mm";
class Exercisesetting extends Component{
@@ -636,6 +642,7 @@ class Exercisesetting extends Component{
format="YYYY-MM-DD HH:mm"
showToday={false}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
onChange={this.onChangeTimepublish}
value={publish_time && moment(publish_time,"YYYY-MM-DD HH:mm")}
disabled={ publish_timetype===true?true:!flagPageEdit }
@@ -661,6 +668,7 @@ class Exercisesetting extends Component{
width={"240px"}
format="YYYY-MM-DD HH:mm"
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
onChange={this.onChangeTimeEnd}
value={end_time && moment(end_time,"YYYY-MM-DD HH:mm")}
disabled={ end_timetype===true?true:!flagPageEdit}
diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
index 5bbbe1a14..59d3dce17 100644
--- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
+++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssetting.js
@@ -27,6 +27,11 @@ function disabledDateTime() {
};
}
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
+
+
class GraduationTaskssettingapp extends Component{
constructor(props){
@@ -1181,6 +1186,7 @@ class GraduationTaskssettingapp extends Component{
value={publish_time===null||publish_time===""?"":moment(publish_time, dateFormat)}
onChange={this.onChangeTimepublish}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
disabled={this.props.isAdmin()===true?starttimetype===true?true:flagPageEdit===true?false:true:true}
className={ this.state.publishTimetypes===true?"noticeTip":""}
/>
@@ -1218,6 +1224,7 @@ class GraduationTaskssettingapp extends Component{
value={end_time===null||end_time===""?"":moment(end_time, dateFormat)}
onChange={this.onChangeTimeend}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
// disabled={this.props.isSuperAdmin()===true?flagPageEdit===true?false:true:this.props.isAdmin()===true?endtimetype===true?true:flagPageEdit===true?false:true:true}
disabled={this.props.isAdmin()===true?endtimetype===true?true:flagPageEdit===true?false:true:true}
className={this.state.endTimetypes===true||end_timetype===true?"noticeTip":""}
@@ -1269,6 +1276,7 @@ class GraduationTaskssettingapp extends Component{
width={"210px"}
value={latetime===null||latetime===""?"":moment(latetime, dateFormat)}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
onChange={this.onChangeTimelatetime}
disabled={this.props.isAdmin()===true?allowlate===true||allowlate===1?flagPageEdit===true?false:true:true:true}
className={ latetimetype===true?"noticeTip":""}
@@ -1319,6 +1327,7 @@ class GraduationTaskssettingapp extends Component{
width={"210px"}
value={commenttime===null||commenttime=== ""?"":moment(commenttime, dateFormat)}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
onChange={this.onChangeTimecommenttime}
disabled={this.props.isAdmin()===true?flagPageEdit===true?false:true:true}
className={ commenttimetype===true?"noticeTip":""}
diff --git a/public/react/src/modules/courses/new/CoursesNew.js b/public/react/src/modules/courses/new/CoursesNew.js
index b817136ed..c5602d285 100644
--- a/public/react/src/modules/courses/new/CoursesNew.js
+++ b/public/react/src/modules/courses/new/CoursesNew.js
@@ -28,6 +28,9 @@ function disabledDateTime() {
};
}
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
class CoursesNew extends Component {
@@ -572,6 +575,7 @@ class CoursesNew extends Component {
width={"210px"}
value={datatime === undefined ? "" :datatime === null ? "" : moment(datatime, dateFormat)}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
dropdownClassName="hideDisable"
onChange={this.onChangeTimepublishs}
/>
diff --git a/public/react/src/modules/courses/poll/PollDetailTabForthRules.js b/public/react/src/modules/courses/poll/PollDetailTabForthRules.js
index 292830fb8..8b62dd5e4 100644
--- a/public/react/src/modules/courses/poll/PollDetailTabForthRules.js
+++ b/public/react/src/modules/courses/poll/PollDetailTabForthRules.js
@@ -26,6 +26,12 @@ function disabledDateTime() {
// disabledSeconds: () => range(1,60)
}
}
+
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
+
+
class PollDetailTabForthRules extends Component{
constructor(props){
super(props);
@@ -404,6 +410,7 @@ class PollDetailTabForthRules extends Component{
showTime={{ format: 'HH:mm' }}
format="YYYY-MM-DD HH:mm"
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
disabled={ rule.e_timeflag ===undefined?rule.publish_time===null?false:!flagPageEdit:rule.p_timeflag == true ? true : !flagPageEdit}
style={{"height":"42px",width:'100%'}}
>
@@ -429,6 +436,7 @@ class PollDetailTabForthRules extends Component{
showTime={{ format: 'HH:mm' }}
format="YYYY-MM-DD HH:mm"
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
disabled={ rule.e_timeflag ===undefined?rule.publish_time===null?false:!flagPageEdit:rule.e_timeflag == true ? true : !flagPageEdit}
style={{"height":"42px"}}
>
diff --git a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
index b07392153..21f03a819 100644
--- a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
+++ b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js
@@ -47,6 +47,9 @@ function disabledDateTime() {
}
}
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
class Trainingjobsetting extends Component {
//unifiedsetting 统一设置
@@ -1935,6 +1938,7 @@ class Trainingjobsetting extends Component {
id={"publishtimeid"}
disabledDate={this.disabledStartDatestart}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
className={borreds}
showTime={{ format: 'HH:mm' }}
format="YYYY-MM-DD HH:mm"
@@ -1967,6 +1971,7 @@ class Trainingjobsetting extends Component {
showToday={false}
id={"end_timeid"}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
showTime={{ format: 'HH:mm' }}
className={borredss}
format="YYYY-MM-DD HH:mm"
@@ -2049,6 +2054,7 @@ class Trainingjobsetting extends Component {
showToday={false}
id={"late_timeid"}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
format="YYYY-MM-DD HH:mm"
value={late_time && moment(late_time, dataformat)}
onChange={this.onEndChangeys}
diff --git a/public/react/src/modules/tpm/TPMsettings/TPMsettings.js b/public/react/src/modules/tpm/TPMsettings/TPMsettings.js
index 8eb2c76dd..bb318ba13 100644
--- a/public/react/src/modules/tpm/TPMsettings/TPMsettings.js
+++ b/public/react/src/modules/tpm/TPMsettings/TPMsettings.js
@@ -199,6 +199,10 @@ function disabledDateTime() {
// disabledSeconds: () => [0, 60],
};
}
+
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
export default class TPMsettings extends Component {
constructor(props) {
super(props)
@@ -1144,7 +1148,7 @@ export default class TPMsettings extends Component {
}
onChangeTimePicker =(value, dateString)=> {
this.setState({
- opening_time:moment(handleDateStrings(dateString))
+ opening_time: dateString=== ""?"":moment(handleDateStrings(dateString))
})
}
@@ -1871,6 +1875,7 @@ export default class TPMsettings extends Component {
width={178}
locale={locale}
disabledTime={disabledDateTime}
+ disabledDate={disabledDate}
placeholder="请选择开启时间"
value={opening_time===null||opening_time===""?"":moment(opening_time, dateFormat)}
onChange={this.onChangeTimePicker}
diff --git a/public/react/src/modules/tpm/newshixuns/Newshixuns.js b/public/react/src/modules/tpm/newshixuns/Newshixuns.js
index f9c8f5b10..790402a22 100644
--- a/public/react/src/modules/tpm/newshixuns/Newshixuns.js
+++ b/public/react/src/modules/tpm/newshixuns/Newshixuns.js
@@ -191,7 +191,9 @@ function disabledDateTime() {
};
}
-
+function disabledDate(current) {
+ return current && current < moment().endOf('day').subtract(1, 'days');
+}
class Newshixuns extends Component {
constructor(props) {
super(props)
@@ -743,7 +745,7 @@ class Newshixuns extends Component {
onChangeTimePicker = (value, dateString) => {
this.setState({
- TimePickervalue: moment(handleDateStrings(dateString))
+ TimePickervalue: dateString=== ""?"":moment(handleDateStrings(dateString))
})
}
@@ -1288,7 +1290,7 @@ class Newshixuns extends Component {
placeholder="请选择开启时间"
onChange={this.onChangeTimePicker}
value={TimePickervalue && moment(TimePickervalue, "YYYY-MM-DD HH:mm")}
-
+ disabledDate={disabledDate}
disabledTime={disabledDateTime}
dropdownClassName="hideDisable"
/>
From 7eb2e4c71351398cbcbf5a1f2c9b77c1099a9e1b Mon Sep 17 00:00:00 2001
From: p31729568
Date: Wed, 31 Jul 2019 13:42:05 +0800
Subject: [PATCH 013/623] move user project search api controller
---
app/controllers/projects_controller.rb | 8 --------
app/controllers/users/base_controller.rb | 2 +-
app/controllers/users/projects_controller.rb | 11 +++++++++++
app/views/{ => users}/projects/search.json.jbuilder | 0
config/routes.rb | 2 +-
5 files changed, 13 insertions(+), 10 deletions(-)
rename app/views/{ => users}/projects/search.json.jbuilder (100%)
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index c9ed6c597..672477790 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -1,10 +1,2 @@
class ProjectsController < ApplicationController
- def search
- query_params = { keyword: params[:keyword], category: 'manage' }
- projects = Users::ProjectService.new(current_user, query_params).call
-
- params[:limit] = params[:per_page].to_i.zero? ? 20 : params[:per_page].to_i
- @count = projects.count
- @projects = paginate projects
- end
end
\ No newline at end of file
diff --git a/app/controllers/users/base_controller.rb b/app/controllers/users/base_controller.rb
index fd138a182..969aca320 100644
--- a/app/controllers/users/base_controller.rb
+++ b/app/controllers/users/base_controller.rb
@@ -43,7 +43,7 @@ class Users::BaseController < ApplicationController
page = page_value
per_page = per_page_value
- return Kaminari.paginate_array(objs).page(page).per(per_page) unless observed_logged_user? && opts[:special]
+ return Kaminari.paginate_array(objs).page(page).per(per_page) unless opts[:special] && observed_logged_user?
# note: 为实现第一页少一条记录,让前端放置新建入口
if page == 1
diff --git a/app/controllers/users/projects_controller.rb b/app/controllers/users/projects_controller.rb
index 863b99b37..07f4d5cac 100644
--- a/app/controllers/users/projects_controller.rb
+++ b/app/controllers/users/projects_controller.rb
@@ -1,4 +1,6 @@
class Users::ProjectsController < Users::BaseController
+ skip_before_action :check_observed_user_exists!, only: [:search]
+
def index
projects = Users::ProjectService.new(observed_user, query_params).call
@@ -6,6 +8,15 @@ class Users::ProjectsController < Users::BaseController
@projects = paginate(projects.includes(:project_score, owner: { user_extension: :school }), special: true)
end
+ def search
+ query_params = { keyword: params[:keyword], category: 'manage' }
+ projects = Users::ProjectService.new(current_user, query_params).call
+
+ params[:limit] = params[:per_page].to_i.zero? ? 20 : params[:per_page].to_i
+ @count = projects.count
+ @projects = paginate projects
+ end
+
private
def query_params
diff --git a/app/views/projects/search.json.jbuilder b/app/views/users/projects/search.json.jbuilder
similarity index 100%
rename from app/views/projects/search.json.jbuilder
rename to app/views/users/projects/search.json.jbuilder
diff --git a/config/routes.rb b/config/routes.rb
index 2f9eed61b..581f563b0 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -75,7 +75,7 @@ Rails.application.routes.draw do
get :system_update
resource :trial_apply, only: [:create]
- resources :projects, only: [] do
+ resources :projects, module: :users, only: [] do
get :search, on: :collection
end
From ea5d5dceaea5fe4323ae7bd96c315de4efe908d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Wed, 31 Jul 2019 13:58:06 +0800
Subject: [PATCH 014/623] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../courses/exercise/Studentshavecompletedthelist.js | 6 ++++--
.../modules/courses/exercise/Testpapersettinghomepage.js | 6 +++---
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js
index f7a989f79..0556d94e9 100644
--- a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js
+++ b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js
@@ -2312,11 +2312,13 @@ class Studentshavecompletedthelist extends Component {
};
_getRequestParams() {
- const { order, checkedValuesineinfo,searchtext, page ,limit} = this.state
+ const { order, checkedValuesineinfo,course_groupyslstwo ,searchtext, page ,limit,course_groupyslsthree} = this.state
return {
page,
+ review:course_groupyslsthree,
+ commit_status:course_groupyslstwo,
search:searchtext,
- group_id:checkedValuesineinfo,
+ exercise_group_id:checkedValuesineinfo,
limit: limit,
order,
}
diff --git a/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js b/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
index 24e960a9d..8e895b852 100644
--- a/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
+++ b/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
@@ -170,7 +170,7 @@ class Testpapersettinghomepage extends Component{
}
console.log("170");
console.log(params);
- axios.get(url+`?${queryString.stringify(params)}`).then((response) => {
+ axios.get(url+`?${queryString.stringify(params)}`+ '&export=true').then((response) => {
if(response===undefined){
return
}
@@ -193,7 +193,7 @@ class Testpapersettinghomepage extends Component{
}
}else {
this.props.showNotification(`正在下载中`);
- window.open("/api"+url+`?${queryString.stringify(params)}`, '_blank');
+ window.open("/api"+url+`?${queryString.stringify(params)}`+ '&export=true', '_blank');
}
}).catch((error) => {
console.log(error)
@@ -357,7 +357,7 @@ class Testpapersettinghomepage extends Component{
导出
:""}
From 730d83de4dc431e2810f085a276eb3a888b6b904 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Wed, 31 Jul 2019 14:00:53 +0800
Subject: [PATCH 015/623] Merge branch 'dev_aliyun' of
https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun
# Conflicts:
# public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
---
.../src/modules/courses/exercise/Testpapersettinghomepage.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js b/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
index 52dd9c080..8e895b852 100644
--- a/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
+++ b/public/react/src/modules/courses/exercise/Testpapersettinghomepage.js
@@ -357,7 +357,7 @@ class Testpapersettinghomepage extends Component{
导出
:""}
From 65e7c3231e09ed30c781cdae88dd501ca4b765c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Wed, 31 Jul 2019 14:12:14 +0800
Subject: [PATCH 016/623] =?UTF-8?q?=E5=AE=9E=E8=B7=B5=E8=AF=BE=E7=A8=8B?=
=?UTF-8?q?=E5=8F=91=E9=80=81=E8=87=B3=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/modules/paths/PathDetail/sendPanel.js | 51 ++++++++++++++++---
.../Collaborators/Collaborators.js | 15 +++---
2 files changed, 52 insertions(+), 14 deletions(-)
diff --git a/public/react/src/modules/paths/PathDetail/sendPanel.js b/public/react/src/modules/paths/PathDetail/sendPanel.js
index 84c7d8e23..2f9059a18 100644
--- a/public/react/src/modules/paths/PathDetail/sendPanel.js
+++ b/public/react/src/modules/paths/PathDetail/sendPanel.js
@@ -15,7 +15,6 @@ class sendPanel extends Component{
openSearch:false,
sendToCourseId:undefined,
sendToShixunArray:[],
- shixunNum:0,
Modalstype:false,
cardsModalcancel:this.cardsModalcancel,
cardsModalsave:this.cardsModalsave,
@@ -35,7 +34,9 @@ class sendPanel extends Component{
//隐藏发送至弹框
hideSenttothevalue =()=>{
this.setState({
- sentShixunPath:false
+ sentShixunPath:false,
+ sendToShixunArray:[],
+ sendToCourseId:undefined,
})
}
//打开课堂列表下拉框
@@ -63,7 +64,7 @@ class sendPanel extends Component{
changeCheckBoxs=(list)=>{
this.setState({
sendToShixunArray:list,
- shixunNum:list.length
+ // shixunNum:list.length
})
}
@@ -86,7 +87,9 @@ class sendPanel extends Component{
Modalstype:true,
sentShixunPath:false,
Modalstopval:result.data.message,
- courseurl:result.data.url
+ courseurl:result.data.url,
+ sendToShixunArray:[],
+ sendToCourseId:undefined,
})
}
}).catch((error)=>{
@@ -118,8 +121,33 @@ class sendPanel extends Component{
let {courseurl}=this.state;
window.location.href =courseurl;
}
+
+
+ allChange = (e) => {
+
+ if(e.target.checked===false){
+ this.setState({
+ sendToShixunArray: [],
+ })
+ }else{
+ let { sendToCourseList} = this.state;
+ let newlist = [];
+
+ sendToCourseList.stages.map((item,key)=>{
+ item.shixuns.map((items,keys)=>{
+ newlist.push(items.shixun_id)
+ })
+ })
+
+ this.setState({
+ sendToShixunArray: newlist,
+ })
+ }
+
+ }
+
render(){
- let{sentShixunPath,sendToCourseList,openSearch,shixunNum,Modalstype,Modalstopval,Modalsbottomval,cardsModalcancel,cardsModalsave}= this.state;
+ let{sentShixunPath,sendToCourseList,Modalstype,Modalstopval,Modalsbottomval,cardsModalcancel,cardsModalsave}= this.state;
return(
@@ -178,7 +206,7 @@ class sendPanel extends Component{
-
+
{
sendToCourseList && sendToCourseList.stages.map((item,key)=>{
@@ -197,7 +225,16 @@ class sendPanel extends Component{
- 已选择 {shixunNum} 个实训
+
+
+
+ this.allChange(e)}
+ >全选
+
+
+
+ 已选择 {this.state.sendToShixunArray.length} 个实训
取消
确定
diff --git a/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js b/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js
index 7811d12fd..95ce4b8aa 100644
--- a/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js
+++ b/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js
@@ -532,13 +532,14 @@ class Collaborators extends Component {
-
- 全选
-
- 请至少选择一个用户
-
-
+
+
+ 全选
+
+ 请至少选择一个用户
+
+
From e746a13f37caf14da3617e65e06b1d14173c8e34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Wed, 31 Jul 2019 14:38:14 +0800
Subject: [PATCH 017/623] =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=8D=A0=E6=AF=94?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/react/public/css/edu-all.css | 27 ++++++--
.../courses/coursesHome/css/CoursesHome.css | 66 ++++++++++---------
public/stylesheets/educoder/edu-all.css | 33 ++++++++--
3 files changed, 83 insertions(+), 43 deletions(-)
diff --git a/public/react/public/css/edu-all.css b/public/react/public/css/edu-all.css
index fad3568b4..600520410 100644
--- a/public/react/public/css/edu-all.css
+++ b/public/react/public/css/edu-all.css
@@ -332,8 +332,12 @@ label.infolabel{display: block;float: left;width: 56px;text-align: right;margin-
}
.shixunDes{font-family: 'panmen-webfont';display: block;position: absolute;height: 100%;width: 100%;text-align: center;line-height: 220px;color: #fff;top: 0px;font-size: 24px;background-color: rgba(5,16,26,0.4);border-radius: 6px 6px 0px 0px;}
/*TPM*/
-.shixunDetail_top{width: 100%;background-image: url("/images/educoder/shixun-detail.jpg");background-size: 100% 100%;height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+.shixunDetail_top{width: 100%;background-image: url("/images/educoder/shixun-detail.jpg"); height: 240px;
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.task-item{margin-top: 30px;padding-bottom: 30px;border-bottom: 1px solid #eee}
.task-item:last-child{border-bottom: none;}
.challengeNav a.active{color: #4CACFF;}
@@ -420,14 +424,23 @@ table.text-file{}
/*-------------------------------实训路径-------------------------------*/
-.path-head{width: 100%;height: 300px;background-image: url("/images/educoder/path.png");background-color: #081C4B;background-size: 100% 100%;}
+.path-head{width: 100%;height: 300px;background-image: url("/images/educoder/path.png");
+ background-color: #081C4B;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.pathNavLine{position: absolute;bottom: -8px;width: 100%;}
.path-nav li{float: left;padding: 0px 30px;height: 42px;}
.path-nav li a{color:#fff;font-size: 16px;display: block; height: 40px;}
.path-nav li.active a{border-bottom: 3px solid #4CACFF;color:#4CACFF;}
/*---实训路径详情----*/
.subhead{width: 100%;margin-bottom:40px;background-size: 100% 100%;background-image: url("/images/educoder/path-detail.jpg");height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.subhead_content{width: 1200px;margin: 0px auto;}
.pathInfo li{text-align: center;float: left;margin-right: 38px;}
.pathInfo li span{display: block;}
@@ -467,7 +480,11 @@ li.li-width7{width: 7%;text-align: left}
/*-----------------------------在线课堂动态----------------------------------*/
.courseHead{width: 100%;margin-bottom:40px;background-size: 100% 100%;background-image: url("/images/educoder/course-detail.jpg");height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.invite-tip{position: absolute;top: -5px;right: 140px;color: #fff; box-sizing: border-box;width: 170px;text-align: center;border-radius: 2px;background-color: rgba(5,16,26,0.6)}
.inviteTipbtn a{font-size:14px;width: 100%;height: 30px;line-height: 30px;display: block;color: #747A7F;background-color: rgba(5,16,26,0.4)}
.inviteTipbtn a:hover{color: #4cacff!important;}
diff --git a/public/react/src/modules/courses/coursesHome/css/CoursesHome.css b/public/react/src/modules/courses/coursesHome/css/CoursesHome.css
index 696d35ecc..af431da99 100644
--- a/public/react/src/modules/courses/coursesHome/css/CoursesHome.css
+++ b/public/react/src/modules/courses/coursesHome/css/CoursesHome.css
@@ -1,33 +1,35 @@
-.courses-head{
- width: 100%;
- height: 300px;
- background-image: url(./courses.jpg);
- background-color: #081C4B;
- background-size: 100% 100%;
-}
-a{
- text-decoration: none;
- color: #05101a;
-}
-.ant-input-affix-wrapper .ant-input:not(:last-child) {
- padding-right: 24px;
-}
-
-.memberscount{
- font-size: 55px !important;
- background: #fff;
- color: #dfdfdf;
- display: inline-block;
- padding-right: 15px;
-}
-.biaoqiancours{
- overflow: hidden;
- position: relative;
-}
-.coursesover{
- position: absolute;
- color: #fff;
- left: 17px;
- background: #dfdfdf;
- width: 200px;
+.courses-head{
+ width: 100%;
+ height: 300px;
+ background-image: url(./courses.jpg);
+ background-color: #081C4B;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
+a{
+ text-decoration: none;
+ color: #05101a;
+}
+.ant-input-affix-wrapper .ant-input:not(:last-child) {
+ padding-right: 24px;
+}
+
+.memberscount{
+ font-size: 55px !important;
+ background: #fff;
+ color: #dfdfdf;
+ display: inline-block;
+ padding-right: 15px;
+}
+.biaoqiancours{
+ overflow: hidden;
+ position: relative;
+}
+.coursesover{
+ position: absolute;
+ color: #fff;
+ left: 17px;
+ background: #dfdfdf;
+ width: 200px;
}
\ No newline at end of file
diff --git a/public/stylesheets/educoder/edu-all.css b/public/stylesheets/educoder/edu-all.css
index ec245b196..05e767ba4 100644
--- a/public/stylesheets/educoder/edu-all.css
+++ b/public/stylesheets/educoder/edu-all.css
@@ -334,8 +334,12 @@ label.infolabel{display: block;float: left;width: 56px;text-align: right;margin-
}
.shixunDes{font-family: 'panmen-webfont';display: block;position: absolute;height: 100%;width: 100%;text-align: center;line-height: 220px;color: #fff;top: 0px;font-size: 24px;background-color: rgba(5,16,26,0.4);border-radius: 6px 6px 0px 0px;}
/*TPM*/
-.shixunDetail_top{width: 100%;background-image: url("/images/educoder/shixun-detail.jpg");background-size: 100% 100%;height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+.shixunDetail_top{width: 100%;background-image: url("/images/educoder/shixun-detail.jpg"); height: 240px;
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.task-item{margin-top: 30px;padding-bottom: 30px;border-bottom: 1px solid #eee}
.task-item:last-child{border-bottom: none;}
.challengeNav a.active{color: #4CACFF;}
@@ -422,14 +426,23 @@ table.text-file{}
/*-------------------------------实训路径-------------------------------*/
-.path-head{width: 100%;height: 300px;background-image: url("/images/educoder/path.png");background-color: #081C4B;background-size: 100% 100%;}
+.path-head{width: 100%;height: 300px;background-image: url("/images/educoder/path.png");
+ background-color: #081C4B;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.pathNavLine{position: absolute;bottom: -8px;width: 100%;}
.path-nav li{float: left;padding: 0px 30px;height: 42px;}
.path-nav li a{color:#fff;font-size: 16px;display: block; height: 40px;}
.path-nav li.active a{border-bottom: 3px solid #4CACFF;color:#4CACFF;}
/*---实训路径详情----*/
.subhead{width: 100%;margin-bottom:40px;background-size: 100% 100%;background-image: url("/images/educoder/path-detail.jpg");height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.subhead_content{width: 1200px;margin: 0px auto;}
.pathInfo li{text-align: center;float: left;margin-right: 38px;}
.pathInfo li span{display: block;}
@@ -469,7 +482,11 @@ li.li-width7{width: 7%;text-align: left}
/*-----------------------------在线课堂动态----------------------------------*/
.courseHead{width: 100%;margin-bottom:40px;background-size: 100% 100%;background-image: url("/images/educoder/course-detail.jpg");height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
.invite-tip{position: absolute;top: -5px;right: 140px;color: #fff; box-sizing: border-box;width: 170px;text-align: center;border-radius: 2px;background-color: rgba(5,16,26,0.6)}
.inviteTipbtn a{font-size:14px;width: 100%;height: 30px;line-height: 30px;display: block;color: #747A7F;background-color: rgba(5,16,26,0.4)}
.inviteTipbtn a:hover{color: #4cacff!important;}
@@ -3055,7 +3072,11 @@ a.singlepublishtwo{
padding: 0px;
}
.project_packagesHead{width: 100%;margin-bottom:40px;background-size: 100% 100%;background-image: url("/images/educoder/project_packagesHead.jpg");height: 240px;
- justify-content: center;align-items: center;display: -webkit-flex;}
+ justify-content: center;align-items: center;display: -webkit-flex;
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
/* 个人中心-众包 */
From a358aaf63e08bcb74b7df903d90641b1a3af47ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Wed, 31 Jul 2019 14:40:24 +0800
Subject: [PATCH 018/623] =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=8D=A0=E6=AF=94?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/images/educoder/path.png | Bin 59814 -> 53938 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/public/images/educoder/path.png b/public/images/educoder/path.png
index d8b6f1715d7484cd22de10d27f241ac8522f0430..d3d816012532d053624565b95fecc84c40bf37b9 100644
GIT binary patch
literal 53938
zcmeGDXFycTvH%LNAtQ(q1OX){5g2j~O3qmjNy5y4z%am&vjJ2~D6FAzy3FFP9m(9#09
z0RSKZ2q6>zE(k%uKLA1p;A3F`u!hk8gzX_*-)V3_8UX;z0Y>nLh6rL|DiDsmX9wVY
zZ~F{<_5ddiZUO-3=^xL_a3^a7lkN>CHz(H{PR>jU3QSyDRxmphrhEYqCsDcn^mE-5PMWU5o(hKqN1LE>(T6pYO>eD~ld~lGs8Ym}BZO
zoB)8t84aqe6{?gkby<_2_K-3+XqoRC-wHIy3yfpT}mRA6B2)6td*e4fI#HL&x-
zP{`Z4VcKA-k9i`{+E$JTL#3;RAnLfY;|98DCnp;Ngqypwj;d_yd(HV}nr
z44iQOSr3-54dsz;sP8h6TD#jJ-Rw|UCSW}=mRdo}MB`Y0DGUo7UNHNmBgJnz>NvaE
zIiXy^dKwI+g0mayhuDAu(i;7CwHC!x)2#fhXi*YW2
zjKJS_UJMxMH(qp@BJO1{JJuaj1TgC`;Y|=A0IUHk00sUb05qlo{QWikhQqY^xrYCw
z`;Fiy?z?c9GRhr^S^F?b5?DLAqu{Q8nc*-u0k96^C;(nojL;!}~&ObJU6UW3D45miycw6{?TYp@4H1bc|3fB04
z#%Q_P{(0*mutK^STG{@IiVTK8A`KBhq{{>G14)Kk@l4EBc7p5bC6#U`HtzhBf8H