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

23680 求职创业补贴---,详情页资预览料图片可以自由缩放大小

上级 7d04a3f0
...@@ -60,6 +60,8 @@ export default class index extends Component { ...@@ -60,6 +60,8 @@ export default class index extends Component {
type = Array.isArray(type) && type.length && type[type.length - 1]; type = Array.isArray(type) && type.length && type[type.length - 1];
} }
// return null;
return ( return (
<> <>
{isShow ? ( {isShow ? (
......
// 图片上传组件
import React from 'react'; import React from 'react';
import {Button, Icon, message, Modal, Upload} from 'antd'; import { Button, Icon, message, Modal, Upload } from 'antd';
import {queryApiActionPath} from '../utils/queryConfig'; import { queryApiActionPath } from '../utils/queryConfig';
import config from '@/webPublic/one_stop_public/config'; import config from '@/webPublic/one_stop_public/config';
import styles from './style.less'; import styles from './style.less';
import UploadComDiyForQnZy from '@/webPublic/one_stop_public/libs/UploadComDiyForQnZy'; import UploadComDiyForQnZy from '@/webPublic/one_stop_public/libs/UploadComDiyForQnZy';
import {getContainer} from "@/webPublic/one_stop_public/utils/utils"; import { getContainer } from '@/webPublic/one_stop_public/utils/utils';
import Viewer from 'react-viewer';
message.config({ message.config({
top: 300, top: 300,
}) });
export function checkIsImage(path) { export function checkIsImage(path) {
if (!path) { if (!path) {
return false; return false;
} }
let p = path.toLowerCase(); let p = path.toLowerCase();
let find = ['.jpg', '.png', '.jpeg', '.bmp', '.gif', '.bmp', '.svg'].find(x => { let find = ['.jpg', '.png', '.jpeg', '.bmp', '.gif', '.bmp', '.svg'].find((x) => {
return path.indexOf(x) > -1; return path.indexOf(x) > -1;
}); });
return !!find; return !!find;
...@@ -57,12 +59,11 @@ class UploadCom extends React.Component { ...@@ -57,12 +59,11 @@ class UploadCom extends React.Component {
try { try {
this.otherProps = new Function(this.otherProps)(); this.otherProps = new Function(this.otherProps)();
// console.log(this.otherProps); // console.log(this.otherProps);
} catch (e) { } catch (e) {}
}
} }
} }
triggerChange = changedValue => { triggerChange = (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;
if (onChange) { if (onChange) {
...@@ -71,37 +72,35 @@ class UploadCom extends React.Component { ...@@ -71,37 +72,35 @@ class UploadCom extends React.Component {
}; };
//图片上传之前进行判断 //图片上传之前进行判断
beforeUpload = file => { beforeUpload = (file) => {
return this.isSize(file).then(res => { return this.isSize(file).then((res) => {
message.info('正在上传中,请等待'); message.info('正在上传中,请等待');
return true; return true;
}); });
}; };
//检测尺寸 //检测尺寸
isSize = file => { isSize = (file) => {
const {limitWarnningMessage} = this.otherProps; const { limitWarnningMessage } = this.otherProps;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let {width, height, widthMinusHeight} = this.otherProps.limitImageSize; let { width, height, widthMinusHeight } = this.otherProps.limitImageSize;
let _URL = window.URL || window.webkitURL; let _URL = window.URL || window.webkitURL;
let img = new Image(); let img = new Image();
img.onload = function () { img.onload = function() {
let valid = img.width >= width && img.height >= height; let valid = img.width >= width && img.height >= height;
if(!!widthMinusHeight && valid){ if (!!widthMinusHeight && valid) {
if (widthMinusHeight > 0) {
if(widthMinusHeight > 0){ if (img.width - img.height < widthMinusHeight) {
if((img.width - img.height) < widthMinusHeight){
// widthMinusHeight: number// 限制必须宽度大于高度 且 宽度 - 高度 >= widthMinusHeight // widthMinusHeight: number// 限制必须宽度大于高度 且 宽度 - 高度 >= widthMinusHeight
valid = false; valid = false;
} }
} }
if(widthMinusHeight < 0){ if (widthMinusHeight < 0) {
if((img.height - img.width) < Math.abs(widthMinusHeight)){ if (img.height - img.width < Math.abs(widthMinusHeight)) {
// widthMinusHeight: number// 限制必须高度大于宽度 // widthMinusHeight: number// 限制必须高度大于宽度
valid = false; valid = false;
} }
} }
} }
valid ? resolve() : reject(); valid ? resolve() : reject();
}; };
...@@ -111,9 +110,7 @@ class UploadCom extends React.Component { ...@@ -111,9 +110,7 @@ class UploadCom extends React.Component {
return file; return file;
}, },
() => { () => {
message.error( message.error(file.name + limitWarnningMessage);
file.name + limitWarnningMessage,
);
return Promise.reject(); return Promise.reject();
}, },
); );
...@@ -127,20 +124,20 @@ class UploadCom extends React.Component { ...@@ -127,20 +124,20 @@ class UploadCom extends React.Component {
} }
} }
changeUrl = info => { changeUrl = (info) => {
if (info.file.status === 'done') { if (info.file.status === 'done') {
message.success(`${info.file.name} 上传成功`); message.success(`${info.file.name} 上传成功`);
const files = this.state.files; const files = this.state.files;
files.push({path: info.file.response, name: info.file.name}); files.push({ path: info.file.response, name: info.file.name });
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({files}); this.setState({ files });
} }
this.triggerChange({files}); this.triggerChange({ files });
} else if (info.file.status === 'error') { } else if (info.file.status === 'error') {
message.error(`${info.file.name} 上传失败`); message.error(`${info.file.name} 上传失败`);
} }
}; };
remove = path => { remove = (path) => {
const files = this.state.files; const files = this.state.files;
for (var i = 0; i < files.length; i++) { for (var i = 0; i < files.length; i++) {
if (files[i].path == path) { if (files[i].path == path) {
...@@ -149,14 +146,14 @@ class UploadCom extends React.Component { ...@@ -149,14 +146,14 @@ class UploadCom extends React.Component {
} }
} }
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({files}); this.setState({ files });
} }
this.triggerChange({files}); this.triggerChange({ files });
}; };
render() { render() {
const {files, previewVisible, previewImage} = this.state; const { files, previewVisible, previewImage, previewImageName } = this.state;
const {isMultiple, accept, btnName, disabled} = this.props; const { isMultiple, accept, btnName, disabled } = this.props;
const props = { const props = {
name: 'file', name: 'file',
multiple: isMultiple, multiple: isMultiple,
...@@ -165,7 +162,6 @@ class UploadCom extends React.Component { ...@@ -165,7 +162,6 @@ class UploadCom extends React.Component {
showUploadList: false, showUploadList: false,
onChange: this.changeUrl, onChange: this.changeUrl,
beforeUpload: this.otherProps?.limitImageSize ? this.beforeUpload : undefined, beforeUpload: this.otherProps?.limitImageSize ? this.beforeUpload : undefined,
}; };
return ( return (
<div> <div>
...@@ -174,26 +170,22 @@ class UploadCom extends React.Component { ...@@ -174,26 +170,22 @@ class UploadCom extends React.Component {
{!disabled && ( {!disabled && (
<> <>
<Button> <Button>
<Icon type="upload"/> <Icon type="upload" />
{btnName ? btnName : '上传附件'} {btnName ? btnName : '上传附件'}
</Button> </Button>
{ {this.otherProps?.limitImageInfo && <div>{this.otherProps?.limitImageInfo}</div>}
this.otherProps?.limitImageInfo &&
<div>
{this.otherProps?.limitImageInfo}
</div>
}
</> </>
)} )}
</Upload> </Upload>
<ul className={styles.ulImageList}> <ul className={styles.ulImageList}>
{(Array.isArray(files) && files || []).map(f => { {((Array.isArray(files) && files) || []).map((f) => {
// console.log(f);
if (f.path && checkIsImage(f.path)) { if (f.path && checkIsImage(f.path)) {
return ( return (
<li key={f.path} className={styles.preview_img}> <li key={f.path} className={styles.preview_img}>
<div className={styles.preview_div}> <div className={styles.preview_div}>
<img <img
style={{width: '100px', height: 'auto'}} style={{ width: '100px', height: 'auto' }}
className={styles.img} className={styles.img}
src={queryApiActionPath() + f.path} src={queryApiActionPath() + f.path}
/> />
...@@ -202,17 +194,17 @@ class UploadCom extends React.Component { ...@@ -202,17 +194,17 @@ class UploadCom extends React.Component {
onClick={() => { onClick={() => {
// window.open(queryApiActionPath() + f.path); // window.open(queryApiActionPath() + f.path);
this.setState({ this.setState({
previewVisible: true,
previewImage: queryApiActionPath() + f.path, previewImage: queryApiActionPath() + f.path,
previewImageName : f.name,
previewVisible: true,
}); });
}} }}>
> <Icon type="eye" className={styles.icon_eye} />
<Icon type="eye" className={styles.icon_eye}/>
</div> </div>
</div> </div>
{!disabled && ( {!disabled && (
<Icon <Icon
style={{marginLeft: 10}} style={{ marginLeft: 10 }}
type="delete" type="delete"
onClick={this.remove.bind(this, f.path)} onClick={this.remove.bind(this, f.path)}
/> />
...@@ -227,7 +219,7 @@ class UploadCom extends React.Component { ...@@ -227,7 +219,7 @@ class UploadCom extends React.Component {
</a>{' '} </a>{' '}
{!disabled && ( {!disabled && (
<Icon <Icon
style={{marginLeft: 10}} style={{ marginLeft: 10 }}
type="delete" type="delete"
onClick={this.remove.bind(this, f.path)} onClick={this.remove.bind(this, f.path)}
/> />
...@@ -236,24 +228,18 @@ class UploadCom extends React.Component { ...@@ -236,24 +228,18 @@ class UploadCom extends React.Component {
); );
})} })}
</ul> </ul>
<Modal <Viewer
visible={previewVisible} visible={previewVisible}
footer={null} onClose={() => {
getContainer={getContainer} this.setState({ previewVisible: false });
onCancel={() => this.setState({previewVisible: false})} }}
width={'90vw'} images={[
> {
<div style={{ src: previewImage,
textAlign: 'center', alt: previewImageName,
width: '100%', },
}}> ]}
<img alt="example" style={{ />
maxWidth: '1200px',
maxHeight: '700px',
height: 'auto',
}} src={previewImage}/>
</div>
</Modal>
</div> </div>
); );
} }
......
...@@ -2100,15 +2100,6 @@ export default class tableCom extends Component { ...@@ -2100,15 +2100,6 @@ export default class tableCom extends Component {
cm = ( cm = (
<ul className={styles.imageUl}> <ul className={styles.imageUl}>
{files.map((f, index2) => { {files.map((f, index2) => {
// if (f.path.indexOf('.png') != -1 || f.path.indexOf('.jpg') != -1) {
// return (
// <img
// key={index2}
// style={{ width: 100, height: 100 }}
// src={queryApiActionPath() + f.path}
// />
// );
// }
if (get === 'web' && !this.props.isPrint) { if (get === 'web' && !this.props.isPrint) {
return ( return (
<li key={index2}> <li key={index2}>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论