299 lines
9.9 KiB
JavaScript
299 lines
9.9 KiB
JavaScript
|
|
/**
|
|||
|
|
* @author jh
|
|||
|
|
* @desc 编辑字段页面组件
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
import React from "react";
|
|||
|
|
import {inject, observer} from 'mobx-react';
|
|||
|
|
import {toJS} from 'mobx';
|
|||
|
|
import {WeaSwitch} from 'comsMobx';
|
|||
|
|
import {Button, Row, Modal} from 'antd';
|
|||
|
|
import {
|
|||
|
|
WeaTools,
|
|||
|
|
WeaDialog,
|
|||
|
|
WeaCollect,
|
|||
|
|
WeaRichText,
|
|||
|
|
WeaFormItem,
|
|||
|
|
WeaRightMenu,
|
|||
|
|
WeaMoreButton,
|
|||
|
|
WeaSearchGroup,
|
|||
|
|
WeaLocaleProvider,
|
|||
|
|
WeaAlertPage,
|
|||
|
|
} from 'ecCom';
|
|||
|
|
|
|||
|
|
import {RichTextTitle} from "./RichTextTitle";
|
|||
|
|
|
|||
|
|
import isRegExp from 'lodash/isRegExp';
|
|||
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
|||
|
|
|
|||
|
|
|
|||
|
|
@observer
|
|||
|
|
export class UserPhraseEdit extends React.Component {
|
|||
|
|
|
|||
|
|
constructor(props) {
|
|||
|
|
super(props);
|
|||
|
|
|
|||
|
|
this.getDialogBtns.bind(this);
|
|||
|
|
|
|||
|
|
this.state = {
|
|||
|
|
isRequired: 'required',
|
|||
|
|
showCollect: false,
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
render() {
|
|||
|
|
const {store,visiable,setVisiable} = this.props;
|
|||
|
|
const {
|
|||
|
|
// visiable,
|
|||
|
|
onCancelEdit,
|
|||
|
|
form,
|
|||
|
|
success,
|
|||
|
|
conditions,
|
|||
|
|
richTextOnChange,
|
|||
|
|
phraseDescValue
|
|||
|
|
} = store;
|
|||
|
|
|
|||
|
|
const formParams = form.getFormParams();
|
|||
|
|
const {isRequired, showCollect} = this.state;
|
|||
|
|
|
|||
|
|
let conditionGroup = [];
|
|||
|
|
let extentsConfig = [];
|
|||
|
|
this.initExtentsConfig(extentsConfig);
|
|||
|
|
|
|||
|
|
if(success == -1){
|
|||
|
|
conditionGroup.push(
|
|||
|
|
<WeaAlertPage
|
|||
|
|
icon={<i className="icon-coms-locking" style = {{color : 'rgb(203, 203, 203)'}}/>}
|
|||
|
|
iconSize = {120}
|
|||
|
|
paddingTop ={'15%'}
|
|||
|
|
>
|
|||
|
|
<div style = {{color : 'rgb(154, 154, 154)',paddingTop:"10px"}}>
|
|||
|
|
对不起,您暂时没有权限 !
|
|||
|
|
</div>
|
|||
|
|
</WeaAlertPage>
|
|||
|
|
);
|
|||
|
|
}else if(success == 0){
|
|||
|
|
conditionGroup.push(
|
|||
|
|
<WeaAlertPage
|
|||
|
|
icon={<i className="icon-coms-locking" style = {{color : 'rgb(203, 203, 203)'}}/>}
|
|||
|
|
iconSize = {120}
|
|||
|
|
paddingTop ={'15%'}
|
|||
|
|
>
|
|||
|
|
<div style = {{color : 'rgb(154, 154, 154)',paddingTop:"10px"}}>
|
|||
|
|
发生异常,请刷新重新或联系管理员
|
|||
|
|
</div>
|
|||
|
|
</WeaAlertPage>
|
|||
|
|
)
|
|||
|
|
}else{
|
|||
|
|
form.isFormInit && conditions && conditions.map((g, index) => {
|
|||
|
|
|
|||
|
|
index == 0 ? conditionGroup.push(
|
|||
|
|
<WeaSearchGroup
|
|||
|
|
needTigger={true}
|
|||
|
|
title={g.title}
|
|||
|
|
center
|
|||
|
|
showGroup={g.defaultshow}
|
|||
|
|
>
|
|||
|
|
{
|
|||
|
|
g.items && g.items.map((item) => {
|
|||
|
|
if(item.domkey[0] === 'dsporder'){
|
|||
|
|
item.regExp = /^(-{0,1}|(-{0,1}[0-9]{1,}[.]?[0-9]*))$/;
|
|||
|
|
}
|
|||
|
|
return (
|
|||
|
|
<Row>
|
|||
|
|
<WeaFormItem
|
|||
|
|
label={`${item.label}`}
|
|||
|
|
labelCol={{span: `${item.labelcol}`}}
|
|||
|
|
wrapperCol={{span: `${item.fieldcol}`}}
|
|||
|
|
error={form.getError(item)}
|
|||
|
|
tipPosition={'bottom'}
|
|||
|
|
>
|
|||
|
|
<WeaSwitch
|
|||
|
|
fieldConfig={item}
|
|||
|
|
form={form}
|
|||
|
|
formParams={formParams}
|
|||
|
|
/>
|
|||
|
|
</WeaFormItem>
|
|||
|
|
</Row>
|
|||
|
|
)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
</WeaSearchGroup>
|
|||
|
|
)
|
|||
|
|
:
|
|||
|
|
conditionGroup.push(
|
|||
|
|
<WeaSearchGroup
|
|||
|
|
needTigger={true}
|
|||
|
|
title={<RichTextTitle isRequired={isRequired}/>}
|
|||
|
|
showGroup={g.defaultshow}
|
|||
|
|
>
|
|||
|
|
<WeaRichText
|
|||
|
|
onChange={this.onChange.bind(this)}
|
|||
|
|
value={phraseDescValue}
|
|||
|
|
ckConfig={this.getCkConfig()}
|
|||
|
|
extentsConfig={extentsConfig}
|
|||
|
|
onToolsChange={this.buttonBtnChange.bind(this)}
|
|||
|
|
ref={'WeaRichText'}
|
|||
|
|
/>
|
|||
|
|
</WeaSearchGroup>
|
|||
|
|
)
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<WeaDialog
|
|||
|
|
title={getLabel(84562, '添加常用批示语')}
|
|||
|
|
visible={visiable}
|
|||
|
|
icon='icon-coms-workflow'
|
|||
|
|
iconBgcolor='#0079DE'
|
|||
|
|
onCancel={() => {
|
|||
|
|
onCancelEdit();
|
|||
|
|
setVisiable(false);
|
|||
|
|
}}
|
|||
|
|
buttons={this.getDialogBtns()}
|
|||
|
|
style={{width: 800, height: 600}}
|
|||
|
|
draggable={true}
|
|||
|
|
>
|
|||
|
|
<WeaRightMenu
|
|||
|
|
datas={this.getMoreBtns()}
|
|||
|
|
>
|
|||
|
|
{conditionGroup}
|
|||
|
|
</WeaRightMenu>
|
|||
|
|
{/*收藏*/}
|
|||
|
|
<WeaCollect
|
|||
|
|
visible={showCollect}
|
|||
|
|
favname=''
|
|||
|
|
favouritetype={'5'}
|
|||
|
|
importantlevel={1}
|
|||
|
|
onClose={() => this.setState({showCollect: false})}
|
|||
|
|
submitBack={data => console.log('onOk: ', data)}
|
|||
|
|
/>
|
|||
|
|
</WeaDialog>
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
buttonBtnChange(name = '', ids = '', list = [], type = '',addfileid=''){
|
|||
|
|
let returnInfo = [];
|
|||
|
|
if(name === 'Upload'){
|
|||
|
|
if(type === 'image'){
|
|||
|
|
list.map(item => {
|
|||
|
|
const imglink = `/weaver/weaver.file.FileDownload?fileid=${item.fileid}`;
|
|||
|
|
returnInfo.push(`<img src='${imglink}' data-imgsrc='${imglink}' alt=''/>​`);
|
|||
|
|
});
|
|||
|
|
this.refs.WeaRichText.insertHTML(returnInfo.join(''));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return ' ';
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* 保存
|
|||
|
|
*/
|
|||
|
|
doSave() {
|
|||
|
|
const {isRequired} = this.state;
|
|||
|
|
if (isRequired == 'required') {
|
|||
|
|
Modal.warning({title:getLabel(131329,'信息确认'),okText: getLabel(33703, '确认'), content: getLabel(384146, '必要信息不完整,红色*为必填项')});
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
const {store, saveCallBack} = this.props;
|
|||
|
|
const {form} = store;
|
|||
|
|
const formParams = form.getFormParams();
|
|||
|
|
const {groupid = '', dsporder = 0} =formParams;
|
|||
|
|
if(groupid == '1' && dsporder < 0) {
|
|||
|
|
Modal.warning({title:getLabel(131329,'信息确认'),okText: getLabel(33703, '确认'), content: getLabel(385772, '显示顺序不能为负数!')});
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
store.onSave(saveCallBack);//weaworkflow_userdefault_store.getConditionInfo
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 富文本编辑器输入onChange事件
|
|||
|
|
* @param desc
|
|||
|
|
*/
|
|||
|
|
onChange(desc = '') {
|
|||
|
|
|
|||
|
|
const {store} = this.props;
|
|||
|
|
const {richTextOnChange} = store;
|
|||
|
|
richTextOnChange(desc);
|
|||
|
|
this.setState({
|
|||
|
|
isRequired: desc === '' ? 'required' : ''
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 富文本编辑器配置参数
|
|||
|
|
* @returns {{height: number, toolbar: string, toolbar_Full: *[]}}
|
|||
|
|
*/
|
|||
|
|
getCkConfig() {
|
|||
|
|
return {
|
|||
|
|
height: 240,
|
|||
|
|
removePlugins:'resize',
|
|||
|
|
toolbar: [{name: 'document', items: ['Source']},
|
|||
|
|
{name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'Strike',]},
|
|||
|
|
{name: 'styles', items: ['Font', 'FontSize']},
|
|||
|
|
{name: 'colors', items: ['TextColor', 'BGColor']},
|
|||
|
|
{
|
|||
|
|
name: 'paragraph',
|
|||
|
|
items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock']
|
|||
|
|
},
|
|||
|
|
{name: 'links', items: ['Link', 'Unlink']},
|
|||
|
|
{name: 'tools', items: ['Maximize']},
|
|||
|
|
{name: 'insert', items: ['Table', '-', 'Undo', 'Redo']}]
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getDialogBtns() {
|
|||
|
|
const {store} = this.props;
|
|||
|
|
return [
|
|||
|
|
(
|
|||
|
|
<Button
|
|||
|
|
type="primary"
|
|||
|
|
disabled={store.saveDisable}
|
|||
|
|
onClick={this.doSave.bind(this)}>{getLabel(30986, '保存')}
|
|||
|
|
</Button>),
|
|||
|
|
(<WeaMoreButton datas={this.getMoreBtns()}/>)
|
|||
|
|
];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
initExtentsConfig(extentsConfig) {
|
|||
|
|
extentsConfig.push({
|
|||
|
|
name: 'Upload',
|
|||
|
|
type: 'image',
|
|||
|
|
show: <div className="wea-cb-item">
|
|||
|
|
<span className={`wea-cbi-icon cke_button_icon cke_button__image_icon`}/>
|
|||
|
|
</div>,
|
|||
|
|
uploadUrl: '/api/doc/upload/uploadFile',
|
|||
|
|
category: 'all',
|
|||
|
|
limitType: 'jpg,gif,png',
|
|||
|
|
title: getLabel(20001, '上传图片'),
|
|||
|
|
needLoading: false
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getMoreBtns() {
|
|||
|
|
return [{
|
|||
|
|
key: "save",
|
|||
|
|
icon: <i className='icon-workflow-Right-menu-Preservation'/>,
|
|||
|
|
content: getLabel(30986, '保存'),
|
|||
|
|
onClick: () => {
|
|||
|
|
this.doSave();
|
|||
|
|
}
|
|||
|
|
}, {
|
|||
|
|
key: "coll",
|
|||
|
|
icon: <i className='icon-coms-Collection'/>,
|
|||
|
|
content: getLabel(28111, '收藏'),
|
|||
|
|
onClick: () => {
|
|||
|
|
this.setState({
|
|||
|
|
showCollect: true,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|