提交 c7d27b64 authored 作者: 钟是志's avatar 钟是志

移动端代码优化

上级 31d1a691
...@@ -21,6 +21,7 @@ export default class MobileDate extends Component { ...@@ -21,6 +21,7 @@ export default class MobileDate extends Component {
} }
triggerChange = changedValue => { triggerChange = changedValue => {
console.log(changedValue);
// Should provide an event to pass value to Form. // Should provide an event to pass value to Form.
const onChange = this.props.onChange; const onChange = this.props.onChange;
// console.log(changedValue); // console.log(changedValue);
...@@ -57,9 +58,9 @@ export default class MobileDate extends Component { ...@@ -57,9 +58,9 @@ export default class MobileDate extends Component {
} }
this.triggerChange(dates); this.triggerChange(dates);
}; };
handelEndChange = date => { handelEndChange = date => {
const { dates } = this.state; const { dates } = this.state;
if (dates.length === 0) { if (dates.length === 0) {
dates.push(null); dates.push(null);
dates.push(moment(date.valueOf())); dates.push(moment(date.valueOf()));
...@@ -68,7 +69,6 @@ export default class MobileDate extends Component { ...@@ -68,7 +69,6 @@ export default class MobileDate extends Component {
Toast.fail('结束时间必须在开始时间之后', 1); Toast.fail('结束时间必须在开始时间之后', 1);
return false; return false;
} }
dates.push(moment(date.valueOf())); dates.push(moment(date.valueOf()));
} else { } else {
if (dates[0].isAfter(moment(date.valueOf()), 'second')) { if (dates[0].isAfter(moment(date.valueOf()), 'second')) {
...@@ -95,7 +95,7 @@ export default class MobileDate extends Component { ...@@ -95,7 +95,7 @@ export default class MobileDate extends Component {
formatDateShow = (v) => { formatDateShow = (v) => {
} };
render() { render() {
let { dates } = this.state; let { dates } = this.state;
...@@ -107,12 +107,11 @@ export default class MobileDate extends Component { ...@@ -107,12 +107,11 @@ export default class MobileDate extends Component {
if (!showTime) { if (!showTime) {
mode = 'date'; mode = 'date';
} }
console.log(formatDiy);
const startTime = dates.length > 0 ? dates[0] && dates[0].valueOf() : null; const startTime = dates.length > 0 ? dates[0] && dates[0].valueOf() : null;
const endTime = dates.length > 1 ? dates[1] && dates[1].valueOf() : null; const endTime = dates.length > 1 ? dates[1] && dates[1].valueOf() : null;
const MustSpan = this.MustSpan(); const MustSpan = this.MustSpan();
// console.log(startTime, endTime, dates);
// return null; // console.log(startTime, endTime);
return ( return (
<div> <div>
......
import { EditorState, convertFromRaw, convertToRaw, CompositeDecorator } from 'draft-js'; import { EditorState, convertFromRaw, convertToRaw, CompositeDecorator } from 'draft-js';
import { stateToHTML } from 'draft-js-export-html'; import { stateToHTML } from 'draft-js-export-html';
import moment from 'moment'; import moment from 'moment';
import React from "react"; import React from 'react';
function findLinkEntities(contentBlock, callback, contentState) { function findLinkEntities(contentBlock, callback, contentState) {
contentBlock.findEntityRanges( contentBlock.findEntityRanges(
(character) => { character => {
const entityKey = character.getEntity(); const entityKey = character.getEntity();
return entityKey !== null && contentState.getEntity(entityKey).getType() === 'LINK'; return entityKey !== null && contentState.getEntity(entityKey).getType() === 'LINK';
}, },
function () { function() {
console.log(arguments); console.log(arguments);
callback(...arguments); callback(...arguments);
}, },
); );
} }
const Link = (props) => { const Link = props => {
const { url } = props.contentState.getEntity(props.entityKey).getData(); const { url } = props.contentState.getEntity(props.entityKey).getData();
return ( return (
<a href={url} target="_blank"> <a href={url} target="_blank">
{props.children} {props.children}
</a> </a>
); );
}; };
const decorator = new CompositeDecorator([ const decorator = new CompositeDecorator([
{ {
strategy: findLinkEntities, strategy: findLinkEntities,
component: Link, component: Link,
}, },
]); ]);
export function changeHtml(msg) { export function changeHtml(msg) {
var msg = msg.replace(/<\/?[^>]*>/g, ''); //去除HTML Tag var msg = msg.replace(/<\/?[^>]*>/g, ''); //去除HTML Tag
msg = msg.replace(/[|]*\n/, ''); //去除行尾空格 msg = msg.replace(/[|]*\n/, ''); //去除行尾空格
msg = msg.replace(/&npsp;/gi, ''); //去掉npsp msg = msg.replace(/&npsp;/gi, ''); //去掉npsp
return msg; return msg;
} }
export function changeToDraftState(blocks) { export function changeToDraftState(blocks) {
if (blocks == null || blocks == '') { if (blocks == null || blocks == '') {
return EditorState.createEmpty(decorator); return EditorState.createEmpty(decorator);
} }
let x; let x;
if (typeof blocks === 'string' && blocks) { if (typeof blocks === 'string' && blocks) {
try { try {
x = JSON.parse(blocks); x = JSON.parse(blocks);
} catch (e) { } catch (e) {
return EditorState.createEmpty(decorator); return EditorState.createEmpty(decorator);
} }
} else { } else {
x = blocks; x = blocks;
} }
if (!x.blocks) { if (!x.blocks) {
return EditorState.createEmpty(decorator); return EditorState.createEmpty(decorator);
} }
const b = convertFromRaw(x); const b = convertFromRaw(x);
return EditorState.createWithContent(b, decorator); return EditorState.createWithContent(b, decorator);
} }
export function changeFromDraftState(editorState) { export function changeFromDraftState(editorState) {
const x = editorState.getCurrentContent(); const x = editorState.getCurrentContent();
const blocks = JSON.stringify(convertToRaw(x)); const blocks = JSON.stringify(convertToRaw(x));
const content = stateToHTML(x); const content = stateToHTML(x);
return { content, blocks }; return {
content,
blocks,
};
} }
export function changeToDraftState2(blocks) { export function changeToDraftState2(blocks) {
const b = convertFromRaw(blocks); const b = convertFromRaw(blocks);
return EditorState.createWithContent(b, decorator); return EditorState.createWithContent(b, decorator);
} }
export function changeFromDraftState2(editorState) { export function changeFromDraftState2(editorState) {
if (editorState == null) return; if (editorState == null) return;
const x = editorState.getCurrentContent(); const x = editorState.getCurrentContent();
const blocks = convertToRaw(x); const blocks = convertToRaw(x);
return blocks; return blocks;
} }
export function preHandle(values) { export function preHandle(values) {
// console.trace('123'); // console.trace('123');
for (var key in values) { for (var key in values) {
if (!values[key]) continue; if (!values[key]) continue;
if (key.indexOf('$') > -1) { if (key.indexOf('$') > -1) {
var xx = key.split('$'); var xx = key.split('$');
for (var i = 0; i < xx.length; i++) { for (var i = 0; i < xx.length; i++) {
if (values[key][i] instanceof moment) { if (values[key][i] instanceof moment) {
values[xx[i]] = values[key][i].valueOf(); values[xx[i]] = values[key][i].valueOf();
} else { } else {
values[xx[i]] = values[key][i]; values[xx[i]] = values[key][i];
} }
} }
delete values[key]; delete values[key];
} else { } else {
if (values[key] != null) { if (values[key] != null) {
if (values[key] instanceof moment) { if (values[key] instanceof moment) {
values[key] = values[key].valueOf(); values[key] = values[key].valueOf();
} else if (values[key] instanceof Date) { } else if (values[key] instanceof Date) {
values[key] = values[key].valueOf(); values[key] = values[key].valueOf();
} else if (values[key] instanceof Boolean) { } else if (values[key] instanceof Boolean) {
values[key] = values[key] ? 0 : 1; values[key] = values[key] ? 0 : 1;
} else if (values[key] instanceof Object && key != 'defaultValues') { } else if (values[key] instanceof Object && key != 'defaultValues') {
//处理子表单中的日期值 //处理子表单中的日期值
let objValues = values[key]; let objValues = values[key];
for (let k in objValues) { for (let k in objValues) {
if (k != '' && objValues[k] instanceof Object) { if (k != '' && objValues[k] instanceof Object) {
let childObj = objValues[k]; let childObj = objValues[k];
for (let j in childObj) { for (let j in childObj) {
// 我写的代码 // 我写的代码
if (j.indexOf('$') > -1 && Array.isArray(childObj[j]) && childObj[j].length === 2) { if (j.indexOf('$') > -1 && Array.isArray(childObj[j]) && childObj[j].length === 2) {
j.split('$').map((g, index) => {
j.split('$').map((g,index) => { if (moment.isMoment(childObj[j][index])) {
if(moment.isMoment(childObj[j][index])){ childObj[g] = childObj[j][index].valueOf();
childObj[g] = childObj[j][index].valueOf();
// childObj[j][index] = childObj[j][index].valueOf();
} }
}); });
delete childObj[j]; delete childObj[j];
// 我写的代码 // 我写的代码
// 欢哥写的代码. // 欢哥写的代码.
// for (var i = 0; i < xxx.length; i++) { // for (var i = 0; i < xxx.length; i++) {
// if (childObj[j][i] instanceof moment) { // if (childObj[j][i] instanceof moment) {
// values[key][k][xxx[i]] = values[key][k][j][i].valueOf(); // values[key][k][xxx[i]] = values[key][k][j][i].valueOf();
// } else { // } else {
// values[key][k][xxx[i]] = values[key][k][j][i]; // values[key][k][xxx[i]] = values[key][k][j][i];
// } // }
// } // }
//delete values[key][k][j]; //delete values[key][k][j];
} else { } else {
if (childObj[j] != null) { if (childObj[j] != null) {
if (childObj[j] instanceof moment) { if (childObj[j] instanceof moment) {
values[key][k][j] = values[key][k][j].valueOf(); values[key][k][j] = values[key][k][j].valueOf();
} else if (childObj[j] instanceof Date) { } else if (childObj[j] instanceof Date) {
values[key][k][j] = values[key][k][j].valueOf(); values[key][k][j] = values[key][k][j].valueOf();
} else if (childObj[j] instanceof Boolean) { } else if (childObj[j] instanceof Boolean) {
values[key][k][j] = values[key][k][j] ? 0 : 1; values[key][k][j] = values[key][k][j] ? 0 : 1;
} }
} }
} }
} }
}
}
}
} }
} }
} }
}
}
}
} }
/** /**
* 深拷贝函数 一站式使用 * 深拷贝函数 一站式使用
* */ * */
export function deepCopy(obj, parent = null) { export function deepCopy(obj, parent = null) {
if (React.isValidElement(obj)) { if (React.isValidElement(obj)) {
return React.cloneElement(obj); return React.cloneElement(obj);
} }
// if(moment.isMoment(obj)){ // if(moment.isMoment(obj)){
// return moment().clone) // return moment().clone)
// } // }
if (['boolean', 'string', 'number'].indexOf(typeof obj) > -1 || !obj) { if (['boolean', 'string', 'number'].indexOf(typeof obj) > -1 || !obj) {
return obj; return obj;
} }
let result; let result;
if (obj.constructor === Array) { if (obj.constructor === Array) {
result = []; result = [];
} else { } else {
result = {}; result = {};
} }
let keys = Object.keys(obj), let keys = Object.keys(obj),
key = null, key = null,
temp = null, temp = null,
_parent = parent; _parent = parent;
// 该字段有父级则需要追溯该字段的父级 // 该字段有父级则需要追溯该字段的父级
while (_parent) { while (_parent) {
// 如果该字段引用了它的父级则为循环引用 // 如果该字段引用了它的父级则为循环引用
if (_parent.originalParent === obj) { if (_parent.originalParent === obj) {
// 循环引用直接返回同级的新对象 // 循环引用直接返回同级的新对象
return _parent.currentParent; return _parent.currentParent;
} }
_parent = _parent.parent; _parent = _parent.parent;
} }
for (let i = 0; i < keys.length; i++) { for (let i = 0; i < keys.length; i++) {
key = keys[i]; key = keys[i];
temp = obj[key]; temp = obj[key];
if (temp && moment.isMoment(temp)) { if (temp && moment.isMoment(temp)) {
result[key] = temp.clone(); result[key] = temp.clone();
} else if (temp && typeof temp === 'object') { // 如果字段的值也是一个对象 } else if (temp && typeof temp === 'object') {
// 递归执行深拷贝 将同级的待拷贝对象与新对象传递给 parent 方便追溯循环引用 // 如果字段的值也是一个对象
result[key] = deepCopy(temp, { // 递归执行深拷贝 将同级的待拷贝对象与新对象传递给 parent 方便追溯循环引用
originalParent: obj, result[key] = deepCopy(temp, {
currentParent: result, originalParent: obj,
parent: parent, currentParent: result,
}); parent: parent,
} else { });
result[key] = temp; } else {
} result[key] = temp;
} }
return result; }
return result;
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论