diff --git a/src/common/model/matter/Matter.ts b/src/common/model/matter/Matter.ts index 6c2bf70..05e4964 100644 --- a/src/common/model/matter/Matter.ts +++ b/src/common/model/matter/Matter.ts @@ -438,6 +438,7 @@ export default class Matter extends BaseEntity { //验证是否满足过滤器 if (!this.validateFileType()) { + MessageBoxUtil.error('文件类型不满足,请重试'); return; } diff --git a/src/pages/matter/List.tsx b/src/pages/matter/List.tsx index c177d2e..cbe7b58 100644 --- a/src/pages/matter/List.tsx +++ b/src/pages/matter/List.tsx @@ -42,14 +42,14 @@ export default class List extends TankComponent { searchText: string | null = null; //获取分页的一个帮助器 pager = new Pager(this, Matter, 100); - //移动的目标文件夹 - targetMatterUuid: string | null = null; user = Moon.getSingleton().user; preference = Moon.getSingleton().preference; + // 导演 director = new Director(); - share = new Share(); //当前面包屑模型数组。 breadcrumbModels: BreadcrumbModel[] = [] + // 分享 + share = new Share(); newMatterRef = React.createRef(); diff --git a/src/pages/matter/widget/MatterImage.less b/src/pages/matter/widget/MatterImage.less new file mode 100644 index 0000000..55fc17b --- /dev/null +++ b/src/pages/matter/widget/MatterImage.less @@ -0,0 +1,31 @@ +.matter-image { + .composite-box { + display: flex; + .content { + display: flex; + flex-grow: 1; + position: relative; + .text { + display: flex; + justify-content: center; + align-content: center; + } + } + .ant-upload { + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; + } + .border-short { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .handle { + flex-shrink: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + } +} diff --git a/src/pages/matter/widget/MatterImage.tsx b/src/pages/matter/widget/MatterImage.tsx new file mode 100644 index 0000000..108284a --- /dev/null +++ b/src/pages/matter/widget/MatterImage.tsx @@ -0,0 +1,120 @@ +import React from "react"; +import TankComponent from "../../../common/component/TankComponent"; +import Moon from "../../../common/model/global/Moon"; +import Matter from "../../../common/model/matter/Matter"; +import ImagePreviewer from "../../widget/previewer/ImagePreviewer"; +import { Input, Upload, Button } from "antd"; +import UploadMatterPanel from "./UploadMatterPanel"; +import "./MatterImage.less"; +import MessageBoxUtil from "../../../common/util/MessageBoxUtil"; +import SafeUtil from "../../../common/util/SafeUtil"; + +interface IProps { + value?: string; + onChange?: (value: string) => any; + preview?: boolean; //上传的照片是否需要预览 + previewWidth?: number; + filter?: string; + uploadHint?: string; +} + +interface IState {} + +export default class MatterImage extends TankComponent { + // 是否手动上传模式 + manual = false; + matter = new Matter(this); + user = Moon.getSingleton().user; + + constructor(props: IProps) { + super(props); + } + + changeLink = (e: any) => { + SafeUtil.safeCallback(this.props.onChange)(e.target.value); + }; + + triggerUpload = (fileObj: any) => { + const { file } = fileObj; + const { filter = "image", uploadHint = "" } = this.props; + if (file) { + if (this.user.sizeLimit >= 0 && file.size > this.user.sizeLimit) { + MessageBoxUtil.error("文件大小超过了限制"); + return; + } + this.matter.assign({ + uploadHint, + filter, + file, + puuid: "root", + privacy: false, + dir: false, + alien: true, + userUuid: this.user.uuid, + }); + this.matter.httpUpload( + () => { + SafeUtil.safeCallback(this.props.onChange)( + this.matter.getPreviewUrl() + ); + this.matter = new Matter(); + this.updateUI(); + }, + () => this.updateUI() + ); + } + }; + + toggleHandle = () => { + this.manual = !this.manual; + this.updateUI(); + }; + + render() { + const { manual, matter } = this; + const { + value, + preview = true, + previewWidth = 200, + uploadHint, + } = this.props; + + return ( +
+
+ {preview && value ? ( + ImagePreviewer.showSinglePhoto(value)} + /> + ) : null} +
+
+ {manual ? ( + + ) : ( + + + + )} + +
+ {uploadHint ?
{uploadHint}
: null} + +
+ ); + } +} diff --git a/src/pages/preference/Edit.tsx b/src/pages/preference/Edit.tsx index bce1f23..1499fe5 100644 --- a/src/pages/preference/Edit.tsx +++ b/src/pages/preference/Edit.tsx @@ -1,105 +1,93 @@ -import React from 'react'; -import {RouteComponentProps} from "react-router-dom"; -import "./Edit.less" +import React from "react"; +import { RouteComponentProps } from "react-router-dom"; +import "./Edit.less"; import TankComponent from "../../common/component/TankComponent"; import User from "../../common/model/user/User"; import Moon from "../../common/model/global/Moon"; import TankTitle from "../widget/TankTitle"; -import {Button, Form, Input, InputNumber, Switch} from "antd"; -import {SaveOutlined} from '@ant-design/icons'; +import { Button, Form, Input, InputNumber, Switch } from "antd"; +import { SaveOutlined } from "@ant-design/icons"; import TankContentCard from "../widget/TankContentCard"; import Preference from "../../common/model/preference/Preference"; import FileUtil from "../../common/util/FileUtil"; -import {FormInstance} from "antd/lib/form"; +import { FormInstance } from "antd/lib/form"; import MessageBoxUtil from "../../common/util/MessageBoxUtil"; import Sun from "../../common/model/global/Sun"; import Lang from "../../common/model/global/Lang"; +import MatterImage from "../matter/widget/MatterImage"; -interface IProps extends RouteComponentProps { +interface IProps extends RouteComponentProps {} -} - -interface IState { - -} +interface IState {} export default class Edit extends TankComponent { - formRef = React.createRef(); - user: User = Moon.getSingleton().user - preference: Preference = Moon.getSingleton().preference + user: User = Moon.getSingleton().user; + preference: Preference = Moon.getSingleton().preference; constructor(props: IProps) { super(props); this.state = {}; - this.preference.detailLoading = true + this.preference.detailLoading = true; } componentDidMount() { + let that = this; - let that = this - - that.refreshPreference() + that.refreshPreference(); } refreshPreference() { - - let that = this + let that = this; that.preference.httpFetch(function () { - that.preference.detailLoading = false - that.updateUI() - }) + that.preference.detailLoading = false; + that.updateUI(); + }); } onFinish(values: any) { - console.log('Success:', values); + console.log("Success:", values); - let that = this + let that = this; - let user = that.user + let user = that.user; - that.preference.assign(values) + that.preference.assign(values); that.preference.httpSave(function () { - MessageBoxUtil.success(Lang.t("operationSuccess")) + MessageBoxUtil.success(Lang.t("operationSuccess")); - Sun.updateFrame() + Sun.updateFrame(); - Sun.navigateTo("/preference/index") - }) - - }; + Sun.navigateTo("/preference/index"); + }); + } onFinishFailed(errorInfo: any) { - console.log('Failed:', errorInfo); - }; - + console.log("Failed:", errorInfo); + } render() { + let that = this; - let that = this - - let preference = that.preference + let preference = that.preference; const layout = { - labelCol: {span: 6}, - wrapperCol: {span: 18}, + labelCol: { span: 6 }, + wrapperCol: { span: 18 }, }; - let initialValues: any = preference.getForm() + let initialValues: any = preference.getForm(); return (
- - - + -
{ initialValues={initialValues} onFinish={this.onFinish.bind(this)} onFinishFailed={this.onFinishFailed.bind(this)} - onValuesChange={() => { - that.updateUI() - }} + onValuesChange={() => that.updateUI()} > - - + - - + + - - + + - - + + - - + + - - + + - + - - + - {Lang.t("preference.current")}: - {(this.formRef && this.formRef.current) ? - FileUtil.humanFileSize(this.formRef.current.getFieldValue("downloadDirMaxSize")) + + {" "} + {Lang.t("preference.current")}: + {this.formRef && this.formRef.current + ? FileUtil.humanFileSize( + this.formRef.current.getFieldValue("downloadDirMaxSize") + ) : FileUtil.humanFileSize(preference.defaultTotalSizeLimit)} - - + - {Lang.t("preference.current")}: - {(this.formRef && this.formRef.current) ? - FileUtil.humanFileSize(this.formRef.current.getFieldValue("defaultTotalSizeLimit")) + + {" "} + {Lang.t("preference.current")}: + {this.formRef && this.formRef.current + ? FileUtil.humanFileSize( + this.formRef.current.getFieldValue( + "defaultTotalSizeLimit" + ) + ) : FileUtil.humanFileSize(preference.defaultTotalSizeLimit)} @@ -205,21 +209,17 @@ export default class Edit extends TankComponent { required={true} valuePropName="checked" > - +
-
-
-
); } } - - diff --git a/src/pages/user/Edit.tsx b/src/pages/user/Edit.tsx index 6ebc705..24a3e4d 100644 --- a/src/pages/user/Edit.tsx +++ b/src/pages/user/Edit.tsx @@ -15,6 +15,7 @@ import ColorSelectionOption from "../../common/model/base/option/ColorSelectionO import MessageBoxUtil from "../../common/util/MessageBoxUtil"; import Sun from "../../common/model/global/Sun"; import Lang from "../../common/model/global/Lang"; +import MatterImage from "../matter/widget/MatterImage"; interface RouteParam { @@ -141,7 +142,7 @@ export default class Edit extends TankComponent { name="avatarUrl" initialValue={currentUser.avatarUrl} > - + )}