From f3d4db769ba9b51b799d981511a710fd443d0e08 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 21 四月 2025 12:18:03 +0800 Subject: [PATCH] Merge branch 'master' into positec --- src/components/editor/index.jsx | 159 ++++++---------------------------------------------- 1 files changed, 20 insertions(+), 139 deletions(-) diff --git a/src/components/editor/index.jsx b/src/components/editor/index.jsx index dae66f6..a9e96de 100644 --- a/src/components/editor/index.jsx +++ b/src/components/editor/index.jsx @@ -1,25 +1,15 @@ -import React, {Component} from 'react' +import React, { Component } from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' import BraftEditor from 'braft-editor' import 'braft-editor/dist/index.css' import 'braft-extensions/dist/table.css' -// import 'braft-editor/dist/output.css' import Table from 'braft-extensions/dist/table' -import SparkMD5 from 'spark-md5' -import moment from 'moment' import Api from '@/api' import './index.scss' BraftEditor.use(Table()) - -let service = '' -if (process.env.NODE_ENV === 'production') { - service = document.location.origin + '/' + window.GLOB.service -} else { - service = window.GLOB.location + '/' + window.GLOB.service -} class NormalEditor extends Component { static propTpyes = { @@ -29,7 +19,7 @@ state = { editorState: '', - encryption: 'false', + encryption: 'false' } UNSAFE_componentWillMount () { @@ -59,6 +49,7 @@ encryption }) } + shouldComponentUpdate (nextProps, nextState) { return !is(fromJS(this.props), fromJS(nextProps)) } @@ -80,37 +71,21 @@ } } - shardupload = (params, param) => { - let _param = params.chunks.shift() + handleUpload(param) { let form = new FormData() - form.append('file', _param.binary) - form.append('fileMd5', params.file.fileMd5) - form.append('shardingMd5', _param.chunkMd5) - form.append('baseDomain', service) - form.append('rootPath', 'Content/images/upload/') - form.append('fileName', params.file.fileName) - form.append('fileExt', params.file.fileType) - form.append('shardingCnt', _param.chunks) - form.append('shardingNo', _param.chunk) - form.append('LoginUID', sessionStorage.getItem('LoginUID') || '') - form.append('UserID', sessionStorage.getItem('UserID') || '') + form.append('file', param.file) - Api.getLargeFileUpload(form).then(res => { + Api.getFileUpload(form).then(res => { if (res.status) { - if (params.chunks.length > 0) { - param.progress(Math.floor(100 * (_param.chunk / _param.chunks))) - this.shardupload(params, param) + if (res.urlPath) { + param.success({ + url: res.urlPath + }) } else { - if (res.urlPath) { - param.success({ - url: res.urlPath - }) - } else { - param.error({ - url: '涓婁紶澶辫触锛�' - }) - } + param.error({ + url: '涓婁紶澶辫触锛�' + }) } } else { param.error({ @@ -120,111 +95,17 @@ }) } - getuuid = () => { - let uuid = [] - let _options = '0123456789abcdefghigklmnopqrstuv' - for (let i = 0; i < 19; i++) { - uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) - } - uuid = uuid.join('') - return uuid - } - - handleUpload(param) { - const file = param.file - - let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice - let chunkSize = 1024 * 1024 * 2 // 鍒囩墖姣忔2M - let chunks = Math.ceil(file.size / chunkSize) // 鍒囩墖鎬绘暟 - let currentChunk = 0 // 褰撳墠涓婁紶鐨刢hunk - let spark = new SparkMD5.ArrayBuffer() // 瀵筧rrayBuffer鏁版嵁杩涜md5鍔犲瘑锛屼骇鐢熶竴涓猰d5瀛楃涓� - let chunkFileReader = new FileReader() // 鐢ㄤ簬璁$畻鍑烘瘡涓猚hunkMd5 - let totalFileReader = new FileReader() // 鐢ㄤ簬璁$畻鍑烘�绘枃浠剁殑fileMd5 - let params = {chunks: [], file: {}} // 鐢ㄤ簬涓婁紶鎵�鏈夊垎鐗囩殑md5淇℃伅 - - params.file.fileName = file.name.replace(/\.{1}[^.]*$/ig, '') // 鏂囦欢鍚嶏紙鍘婚櫎鍚庣紑鍚嶏級 - params.file.fileType = file.name.replace(/^.*\.{1}/ig, '') // 鏂囦欢绫诲瀷 - params.file.fileSize = file.size // 鏂囦欢澶у皬 - params.file.fileChunks = chunks // 璁板綍鎵�鏈塩hunks鐨勯暱搴� - - if (!/^[A-Za-z0-9]+$/.test(params.file.fileName)) { // 鏂囦欢鍚嶇О鍚湁鑻辨枃鍙婃暟瀛椾箣澶栧瓧绗︽椂锛屽悕绉扮郴缁熺敓鎴� - params.file.fileName = moment().format('YYYYMMDDHHmmss') + this.getuuid() - } - - totalFileReader.readAsArrayBuffer(file) - totalFileReader.onload = (e) => { // 瀵规暣涓猼otalFile鐢熸垚md5 - spark.append(e.target.result) - params.file.fileMd5 = spark.end() // 璁$畻鏁翠釜鏂囦欢鐨刦ileMd5 - - let _param = new FormData() - _param.append('fileMd5', params.file.fileMd5) - - Api.getFilePreUpload(_param).then(res => { - if (res.status && res.urlPath) { - param.success({ - url: res.urlPath - }) - } else if (res.shardings && res.shardings.length > 0) { - res.shardings.forEach(shard => { - if (shard.shardingNo && parseInt(shard.shardingNo) > currentChunk) { - currentChunk = parseInt(shard.shardingNo) - } - }) - loadNext() - } else { - loadNext() - } - }) - } - - chunkFileReader.onload = (e) => { - spark.append(e.target.result) // 瀵规瘡涓�鐗囧垎鐗囪繘琛宮d5鍔犲瘑 - - params.chunks[params.chunks.length - 1].chunkMd5 = spark.end() // 娣诲姞鍒囩墖md5 - - currentChunk++ // 姣忎竴娆″垎鐗噊nload,currentChunk閮介渶瑕佸鍔狅紝浠ヤ究鏉ヨ绠楀垎鐗囩殑娆℃暟 - - if (currentChunk < chunks) { // 褰撳墠鍒囩墖鎬绘暟娌℃湁杈惧埌鎬绘暟鏃� - loadNext() - } else { - this.shardupload(params, param) - } - } - - chunkFileReader.onerror = () => { - param.error({ - url: '涓婁紶澶辫触锛�' - }) - console.warn('File reading failed.') - } - totalFileReader.onerror = () => { - param.error({ - url: '涓婁紶澶辫触锛�' - }) - } - - let loadNext = () => { - let start = currentChunk * chunkSize // 璁$畻鍒嗙墖鐨勮捣濮嬩綅缃� - let end = Math.min(file.size, start + chunkSize) // 璁$畻鍒嗙墖鐨勭粨鏉熶綅缃� - - let obj = { // 姣忎竴涓垎鐗囬渶瑕佸寘鍚殑淇℃伅 - chunk: currentChunk + 1, - binary: file.slice(start, end), - start: start, - end: end, - chunks - } - - params.chunks.push(obj) - chunkFileReader.readAsArrayBuffer(blobSlice.call(file, start, end)) - } - } - render() { + const { config } = this.props const { editorState } = this.state + let style = null + if (config && config.contHeidht) { + style = {'--editor-height': config.contHeidht < 100 ? config.contHeidht + 'vh' : config.contHeidht + 'px'} + } + return ( - <div className="normal-braft-editor"> + <div className="normal-braft-editor" style={style}> <BraftEditor value={editorState} onChange={this.handleEditorChange} -- Gitblit v1.8.0