提交 79cb4c87 authored 作者: 徐立's avatar 徐立
...@@ -7,6 +7,7 @@ import { getToken } from '@/utils/authority'; ...@@ -7,6 +7,7 @@ import { getToken } from '@/utils/authority';
import config from '@/config/config'; import config from '@/config/config';
import QueryItem from './QueryItem'; import QueryItem from './QueryItem';
import OrderItem from './OrderItem'; import OrderItem from './OrderItem';
import ButtonDiy from '@/baseComponent/ButtonDiy';
import FormdataWrapper from '@/utils/object-to-formdata-custom'; import FormdataWrapper from '@/utils/object-to-formdata-custom';
...@@ -359,8 +360,10 @@ export default class Index extends React.Component { ...@@ -359,8 +360,10 @@ export default class Index extends React.Component {
} = this.state; } = this.state;
return ( return (
<span> <span>
<Button shape='round' onClick={this.open}>自定义导出</Button> <ButtonDiy handleClick={this.open} name={'自定义导出'}/>
<div id='downloadDiv' style={{ display: 'none' }}></div> <div id='downloadDiv' style={{ display: 'none' }}>
</div>
<Modal <Modal
width={670} width={670}
maskClosable={false} maskClosable={false}
......
// import React, { Fragment } from 'react'; import React, { Fragment } from 'react';
// import { import { Button, Modal, Steps, Upload, Icon, message, Tabs, Table } from 'antd';
// Button, import styles from './ImportUtil.less';
// Modal, import ButtonDiy from '@/baseComponent/ButtonDiy';
// Steps, import { exportExcel } from 'xlsx-oc';
// Upload, import config from '@/config/config';
// Icon, import { connect } from 'dva';
// message,
// Tabs, const Step = Steps.Step;
// Table,
// } from 'antd'; const TabPane = Tabs.TabPane;
// import styles from './ImportUtil.less';
// import ButtonDiy from '@/baseComponent/ButtonDiy'; @connect(({ DataObj, loading }) => ({
// import { exportExcel } from 'xlsx-oc' DataObj,
// import config from '@/config/config'; loading: loading.models.DataObj,
// import { connect } from 'dva'; }))
// const Step = Steps.Step; export default class ImportUtil extends React.PureComponent {
// constructor(props) {
// super(props);
// const TabPane = Tabs.TabPane;
// const exportTemplateUrl = encodeURI(
// `${config.sqlFormsServer}/DataObjApi/importTemplateDownload?objId=${this.props.objId}&name=${
// @connect(({ DataObj, loading }) => ({ props.fileName
// DataObj, }`,
// loading: loading.models.DataObj, );
// }))
// export default class ImportUtil extends React.PureComponent { this.state = {
// constructor(props) { ch: false,
// super(props); currentKey: '1',
// visible: false,
// const exportTemplateUrl= encodeURI(`${config.sqlFormsServer}/DataObjApi/importTemplateDownload?objId=${this.props.objId}&name=${props.fileName}`); current: 0,
// isShow: true,
// this.state = { filekey: '',
// ch:false, sucData: [],
// currentKey:"1", errData: [],
// visible: false, column: [],
// current: 0,
// isShow: true, exportTemplateUrl,
// filekey: '',
// sucData: [], isNextDisabled: false,
// errData: [], };
// column: [], }
//
// exportTemplateUrl, showModal = () => {
// this.setState({
// isNextDisabled:false, visible: true,
// }; });
// } };
// handleOk = (e) => {
// showModal = () => { this.setState({
// visible: false,
// this.setState({ });
// visible: true, };
// }); handleCancel = (e) => {
// }; this.setState({
// handleOk = (e) => { visible: false,
// this.setState({ });
// visible: false, };
// });
// }; next() {
// handleCancel = (e) => { const current = this.state.current + 1;
// this.setState({ if (current === 2) {
// visible: false, this.setState({
// }); current: current,
// }; isShow: false,
// });
// next() { if (this.state.errData.lenth > 0) {
// const current = this.state.current + 1; message.error('请检查数据');
// if (current === 2) { return;
// this.setState({ } else {
// current: current, this.import();
// isShow: false, }
// }); }
// if (this.state.errData.lenth > 0) { if (current === 3) {
// message.error('请检查数据'); this.setState({
// return; current: current,
// } else { isShow: true,
// this.import(); });
// } if (this.props.callback) {
// } this.props.callback();
// if (current === 3) { }
// this.setState({ }
// current: current, }
// isShow: true,
// }); prev() {
// if (this.props.callback) { const current = this.state.current - 1;
// this.props.callback(); this.setState({ current });
// } }
// }
// import() {
// } const { dispatch, importParams } = this.props;
// dispatch({
// prev() { type: 'DataObj/importExecute',
// const current = this.state.current - 1; payload: {
// this.setState({ current }); ...(importParams || {}),
// } cacheKey: this.state.filekey,
//
// import() { objId: this.props.objId,
// const { dispatch ,importParams } = this.props; },
// dispatch({ callback: (res) => {
// type: 'DataObj/importExecute', this.next();
// payload: { message.success('导入成功');
// ...(importParams||{}),
// cacheKey:this.state.filekey, this.setState({
// current: 3,
// objId: this.props.objId, isShow: true,
// }, visible: false,
// callback: (res) => { });
// if (this.props.callback) {
// this.next(); this.props.callback();
// message.success('导入成功'); }
// },
// this.setState({ });
// current: 3, }
// isShow: true,
// visible: false, getCachKey = (filePath) => {
// const { dispatch, importParams } = this.props;
// }); dispatch({
// if(this.props.callback){ type: 'DataObj/importAnalyse',
// this.props.callback(); payload: {
// } ...(importParams || {}),
// } isLocal: false,
// }) filePath,
// objId: this.props.objId,
// },
// } callback: (res) => {
// this.setState({
// getCachKey = (filePath) => { filekey: res.cacheKey,
// const { dispatch ,importParams } = this.props; });
// dispatch({ this.queryFile(res.cacheKey);
// type: 'DataObj/importAnalyse', },
// payload: { });
// ...(importParams||{}), };
// isLocal:false, queryFile = (cacheKey) => {
// filePath, const { dispatch, importParams } = this.props;
// objId: this.props.objId, dispatch({
// }, type: 'DataObj/importDataQuery',
// callback: (res) => { payload: {
// this.setState({ ...(importParams || {}),
// filekey: res.cacheKey, cacheKey,
// objId: this.props.objId,
// }); },
// this.queryFile(res.cacheKey); callback: (res) => {
// this.setState({
// } current: 1,
// }) isShow: false,
//
// sucData: res.pass,
// }; errData: res.noPass,
// queryFile = (cacheKey) => { column: res.column,
// const { dispatch ,importParams } = this.props; });
// dispatch({ if (res.noPass && res.noPass.length == 0) {
// type: 'DataObj/importDataQuery', if (res.pass.length == 0) {
// payload: { message.error('当前没有验证成功的数据,无法导入。');
// ...(importParams||{}), this.setState({
// cacheKey, currentKey: '1',
// objId: this.props.objId, ch: !this.state.ch,
// }, isNextDisabled: true,
// callback: (res) => { });
// this.setState({ } else {
// current: 1, message.success('所有数据验证通过,请确认后点击下一步。');
// isShow: false, this.setState({
// currentKey: '2',
// sucData: res.pass, ch: !this.state.ch,
// errData: res.noPass, isNextDisabled: false,
// column: res.column });
// }); }
// if(res.noPass&&res.noPass.length==0){ } else {
// message.error('当前存在未验证通过的数据,请按错误提示检测更正导入文件');
// this.setState({
// if (res.pass.length==0) { currentKey: '1',
// message.error('当前没有验证成功的数据,无法导入。'); ch: !this.state.ch,
// this.setState({ isNextDisabled: true,
// currentKey:"1", });
// ch:!this.state.ch, }
// isNextDisabled: true },
// }); });
// } else { };
// message.success('所有数据验证通过,请确认后点击下一步。'); changePane = (activeKey) => {
// this.setState({ this.setState({ currentKey: activeKey });
// currentKey:"2", };
// ch:!this.state.ch, exportError = (column, dataSource) => {
// isNextDisabled: false var _headers = [];
// }); for (var i = 0; i < column.length; i++) {
// } _headers.push({ k: column[i].dataIndex, v: column[i].title });
// }else{ }
// message.error('当前存在未验证通过的数据,请按错误提示检测更正导入文件'); for (var j = 0; j < dataSource.length; j++) {
// this.setState({ dataSource[j].index = j + 1;
// currentKey:"1", }
// ch:!this.state.ch, exportExcel(_headers, dataSource);
// isNextDisabled: true };
// });
// } render() {
// const props = {
// } name: 'file',
// }) action: config.sqlFormsServer + '/upload',
// };
// changePane=(activeKey)=>{ headers: {
// this.setState({currentKey:activeKey}) authorization: 'authorization-text',
// } },
// exportError=(column,dataSource)=>{ accept: '.xlsx',
// showUploadList: false,
// onChange: (info) => {
// var _headers = [] if (info.file.status !== 'uploading') {
// for(var i=0;i<column.length;i++){ }
// _headers.push({k:column[i].dataIndex,v:column[i].title}) if (info.file.status === 'done') {
// } message.success(`${info.file.name} 上传成功`);
// for(var j=0;j<dataSource.length;j++){ let x = info.file.response;
// dataSource[j].index=j+1
// } this.getCachKey(x);
// exportExcel(_headers, dataSource); } else if (info.file.status === 'error') {
// message.error(`${info.file.name} file upload failed.`);
// }
// } },
// render() { };
// const steps = [
// const props = { {
// name: 'file', title: '上传Excel',
// action: config.uploadUrl, },
// {
// headers: { title: '验证数据',
// authorization: 'authorization-text', },
// }, {
// accept:'.xlsx', title: '数据导入',
// showUploadList: false, },
// onChange: (info) => { {
// if (info.file.status !== 'uploading') { title: '导入完成',
// },
// } ];
// if (info.file.status === 'done') {
// message.success(`${info.file.name} 上传成功`); const { current } = this.state;
// let x = info.file.response; const { name, loading } = this.props;
// const column1 = this.state.column
// ? [
// {
// this.getCachKey(x); title: '序号',
// dataIndex: 'index',
// } else if (info.file.status === 'error') { fixed: 'left',
// message.error(`${info.file.name} file upload failed.`); width: 50,
// } render: (v, r, i) => i + 1,
// }, },
// }; ...this.state.column,
// const steps = [{ ]
// title: '上传Excel', : [];
// }, { var column2 = this.state.column ? [...this.state.column] : [];
// title: '验证数据', if (column1.length > 1)
// }, { column1[1].render = (val) => <span style={{ color: 'red' }}>{val}</span>;
// title: '数据导入',
// }, column2.splice(0, 1);
// { column2 = [{ title: '序号', fixed: 'left', width: 50, render: (v, r, i) => i + 1 }, ...column2];
// title: '导入完成',
// }]; return (
// <span>
// const { current } = this.state; <ButtonDiy
// const {name, loading} = this.props name={name || '批量导入'}
// const column1=this.state.column?[{title:"序号",dataIndex:"index",fixed:"left",width:50, render:(v,r,i)=>i+1},...this.state.column]:[] type="default"
// var column2=this.state.column?[...this.state.column]:[] className="defaultBlue"
// if(column1.length>1) column1[1].render=(val)=><span style={{color:"red"}}>{val}</span> handleClick={this.showModal}
// />
// column2.splice(0,1) <Modal
// column2=[{title:"序号",fixed:"left",width:50, render:(v,r,i)=>i+1},...column2] visible={this.state.visible}
// onOk={this.handleOk}
// return ( maskClosable={false}
// <span> destroyOnClose
// <ButtonDiy name={name||'批量导入'} onCancel={this.handleCancel}
// type='default' title={null}
// className='defaultBlue' footer={null}
// handleClick={this.showModal}/> width={'80%'}>
// <Modal <div className={styles.nomal}>
// visible={this.state.visible} <p className={styles.import}>EXCEL导入向导</p>
// onOk={this.handleOk} <div style={{ margin: 'auto 23px' }}>
// maskClosable={false} <Steps current={current}>
// destroyOnClose {steps.map((item) => (
// onCancel={this.handleCancel} <Step key={item.title} title={item.title} />
// title={null} ))}
// footer={null} </Steps>
// width={"80%"} <div className="steps-content">{steps[this.state.current].content}</div>
// > <div className={styles.button}>
// {this.state.current < steps.length - 1 &&
// <div className={styles.nomal}> this.state.current !== 0 && (
// <p className={styles.import}> <ButtonDiy
// EXCEL导入向导 name={this.state.current == 3 ? '确认导入' : '下一步'}
// </p> type="primary"
// <div style={{ margin: 'auto 23px' }}> disabled={this.state.current != 3 && this.state.isNextDisabled}
// <Steps current={current}> className="primaryBlue"
// {steps.map(item => handleClick={() => this.next()}
// <Step key={item.title} />
// title={item.title}/>)} )}
// </Steps>
// <div className="steps-content"> {this.state.current > 0 && (
// {steps[this.state.current].content} <ButtonDiy
// </div> style={{ marginLeft: 8 }}
// <div className={styles.button}> name="上一步"
// { className="defaultBlue"
// (this.state.current < steps.length - 1 && this.state.current !== 0) handleClick={() => this.prev()}
// && />
// <ButtonDiy name={this.state.current==3?"确认导入":"下一步"} type="primary" disabled={this.state.current!=3 && this.state.isNextDisabled} className='primaryBlue' handleClick={() => this.next()}/> )}
// </div>
// } </div>
//
// { <div className={styles.tip}>
// this.state.current > 0 <p className={styles.tipContent}>
// && <span>欢迎使用EXCEL导入向导,首先请您上传需要导入的EXCEL文件。</span>
// <ButtonDiy style={{ marginLeft: 8 }} name="上一步" className='defaultBlue' handleClick={() => this.prev()}/> <span>
// 点击“选择文件”选择您要导入的EXCEL文件,点击“开始上传”将其上传到服务器上,点击“清空队列”清空当前上传文件队列。
// } </span>
// </div> </p>
// </div> </div>
// {this.state.isShow ? (
// <div className={styles.tip}> <div className={styles.buttonDown}>
// <p className={styles.tipContent}> <Upload {...props}>
// <span>欢迎使用EXCEL导入向导,首先请您上传需要导入的EXCEL文件。</span> <Button style={{ marginRight: '20px' }}>
// <span>点击“选择文件”选择您要导入的EXCEL文件,点击“开始上传”将其上传到服务器上,点击“清空队列”清空当前上传文件队列。</span> <Icon type="upload" />
// </p> 点击上传
// </Button>
// </div> </Upload>
// { <Button href={this.state.exportTemplateUrl} target="_blank" type="danger">
// this.state.isShow ? 下载模板
// <div className={styles.buttonDown}> </Button>
// <Upload {...props}> </div>
// <Button> ) : (
// <Icon type="upload"/>点击上传 <Upload {...props}>
// </Button> <Button>
// </Upload> <Icon type="upload" />
// <Button href={this.state.exportTemplateUrl } 重新上传
// target="_blank" </Button>
// type="danger"> </Upload>
// 下载模板 )}
// </Button>
// </div> : {this.state.isShow ? (
// <Upload {...props}> <div className={styles.attentionItem}>
// <Button> <p>导入事项</p>
// <Icon type="upload"/> <p>1. 导入操作一次只能上传 1 EXCEL文件。</p>
// 重新上传 <p>2. 导入文件最大文件大小上传 1 GB</p>
// </Button> <p>3. 只能上传EXCEL文件(XLS, XLSX) 默认支持EXCEL 2003EXCEL 2007</p>
// </Upload> <p>4. 请将EXCEL文件的所有单元格格式设置为“文本”格式</p>
// } </div>
// ) : (
// { <div className={styles.error} style={{ marginTop: 20 }}>
// this.state.isShow ? <div className={styles.attentionItem}> <Tabs
// <p>导入事项</p> activeKey={this.state.currentKey}
// <p>1. 导入操作一次只能上传 1 个EXCEL文件。</p> key={this.state.ch}
// <p>2. 导入文件最大文件大小上传 1 GB。</p> onChange={this.changePane}
// <p>3. 只能上传EXCEL文件(XLS, XLSX) 默认支持EXCEL 2003和EXCEL 2007。</p> type="card">
// <p>4. 请将EXCEL文件的所有单元格格式设置为“文本”格式</p> {this.state.errData && this.state.errData.length == 0 ? (
// </div> : ''
// <div className={styles.error} style={{marginTop:20}}> ) : (
// <TabPane tab={<span style={{ color: 'red' }}>验证错误列表</span>} key="1">
// <Tabs activeKey={this.state.currentKey} key={this.state.ch} onChange={this.changePane} type="card"> <Button
// {this.state.errData&&this.state.errData.length==0?"":<TabPane tab={<span style={{color:"red"}}>验证错误列表</span>} key="1"> style={{ marginTop: 5, marginBottom: 5 }}
// <Button style={{marginTop:5,marginBottom:5}} type="danger" onClick={this.exportError.bind(this,column1,this.state.errData)}>导出错误信息</Button> type="danger"
// onClick={this.exportError.bind(this, column1, this.state.errData)}>
// <Table columns={column1} size="small" 导出错误信息
// style={{overflow: 'auto'}} </Button>
// dataSource={this.state.errData}
// bordered={true}/></TabPane>} <Table
// <TabPane tab={<span style={{color:"green"}}>验证成功列表</span>} key="2"> columns={column1}
// size="small"
// <Button style={{marginTop:5,marginBottom:5}} type="primary" onClick={this.exportError.bind(this,column2,this.state.sucData)}>导出正确信息</Button> style={{ overflow: 'auto' }}
// dataSource={this.state.errData}
// <Table columns={column2} size="small" bordered={true}
// style={{overflow: 'auto'}} />
// dataSource={this.state.sucData} </TabPane>
// bordered={true}/></TabPane> )}
// <TabPane tab={<span style={{ color: 'green' }}>验证成功列表</span>} key="2">
// </Tabs> <Button
// style={{ marginTop: 5, marginBottom: 5 }}
// type="primary"
// </div> onClick={this.exportError.bind(this, column2, this.state.sucData)}>
// } 导出正确信息
// </div> </Button>
//
// </Modal> <Table
// </span> columns={column2}
// ); size="small"
// } style={{ overflow: 'auto' }}
// } dataSource={this.state.sucData}
bordered={true}
/>
</TabPane>
</Tabs>
</div>
)}
</div>
</Modal>
</span>
);
}
}
//.nomal{ .nomal {
// background: #fff; background: #fff;
// padding: 10px; padding: 10px;
//} }
//.title{
// display: flex; .title {
// margin-bottom: 20px; display: flex;
//} margin-bottom: 20px;
//.info{ }
// text-align: center;
// font-weight: bold; .info {
// font-size: 18px; text-align: center;
//} font-weight: bold;
//.detail{ font-size: 18px;
// text-align: center; }
// margin:30px auto;
//} .detail {
//.detail img{ text-align: center;
// margin: auto 10px; margin: 30px auto;
//} }
//.button{
// display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */ .detail img {
// display: -moz-box; /* 老版本语法: Firefox (buggy) */ margin: auto 10px;
// display: -ms-flexbox; /* 混合版本语法: IE 10 */ }
// display: -webkit-flex; /* 新版本语法: Chrome 21+ */
// display: -moz-flex; .button {
// display: flex; display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
// -moz-box-pack: center; /*Firefox*/ display: -moz-box; /* 老版本语法: Firefox (buggy) */
// -webkit-box-pack: center; /*Safari,Opera,Chrome*/ display: -ms-flexbox; /* 混合版本语法: IE 10 */
// box-pack: center; display: -webkit-flex; /* 新版本语法: Chrome 21+ */
// -moz-justify-content: center; display: -moz-flex;
// -webkit-justify-content: center; display: flex;
// justify-content: center; -moz-box-pack: center; /*Firefox*/
//} -webkit-box-pack: center; /*Safari,Opera,Chrome*/
//.operation{ box-pack: center;
// display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */ -moz-justify-content: center;
// display: -moz-box; /* 老版本语法: Firefox (buggy) */ -webkit-justify-content: center;
// display: -ms-flexbox; /* 混合版本语法: IE 10 */ justify-content: center;
// display: -webkit-flex; /* 新版本语法: Chrome 21+ */ }
// display: -moz-flex;
// display: flex; .operation {
// -moz-box-pack: center; /*Firefox*/ display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
// -webkit-box-pack: center; /*Safari,Opera,Chrome*/ display: -moz-box; /* 老版本语法: Firefox (buggy) */
// box-pack: center; display: -ms-flexbox; /* 混合版本语法: IE 10 */
// -moz-justify-content: center; display: -webkit-flex; /* 新版本语法: Chrome 21+ */
// -webkit-justify-content: center; display: -moz-flex;
// justify-content: center; display: flex;
//} -moz-box-pack: center; /*Firefox*/
//.button Button{ -webkit-box-pack: center; /*Safari,Opera,Chrome*/
// margin: auto 10px; box-pack: center;
// -moz-justify-content: center;
//} -webkit-justify-content: center;
//.titleInfo p span{ justify-content: center;
// font-weight: bold; }
//}
//.import{ .button Button {
// color: #6ca3c9; margin: auto 10px;
// font-size: 16px;
//} }
//.button{
// // background: #eff3f8; .titleInfo p span {
// text-align: center; font-weight: bold;
// padding:20px; }
// margin-top: 20px;
//} .import {
//.tip{ color: #6ca3c9;
// margin:20px auto; font-size: 16px;
// padding:10px; }
// border-top: 1px solid #ccc;
//} .button {
//.tip span{ // background: #eff3f8;
// display: block; text-align: center;
// margin:10px; padding: 20px;
// font-size: 16px; margin-top: 20px;
//} }
//.tip::after{
// content: ''; .tip {
// position: absolute; margin: 20px auto;
// width: 5px; padding: 10px;
// height: 57px; border-top: 1px solid #ccc;
// background: #e5eaf1; }
// margin-top: -141px;
// margin-left: -13px; .tip span {
//} display: block;
//.select button{ margin: 10px;
// color: #fff; font-size: 16px;
// padding:10px; }
// background: #abbac3;
// border: none; .tip::after {
// margin: 10px; content: '';
//} position: absolute;
//.attentionItem{ width: 5px;
// background: #f4f5f4; height: 57px;
// padding: 10px; background: #e5eaf1;
// box-shadow: 1px 1px 1px #ccc; margin-top: -141px;
//} margin-left: -13px;
//.attentionItem p:nth-child(1){ }
// font-size: 16px;
// margin-left: 0; .select button {
//} color: #fff;
//.attentionItem p{ padding: 10px;
// font-size: 14px; background: #abbac3;
// margin-left: 45px; border: none;
//} margin: 10px;
//.submitButtons{ }
// margin-left: 34px;
//} .attentionItem {
//.contentTable{ background: #f4f5f4;
// display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */ padding: 10px;
// display: -moz-box; /* 老版本语法: Firefox (buggy) */ box-shadow: 1px 1px 1px #ccc;
// display: -ms-flexbox; /* 混合版本语法: IE 10 */ }
// display: -webkit-flex; /* 新版本语法: Chrome 21+ */
// display: -moz-flex; .attentionItem p:nth-child(1) {
// display: flex; font-size: 16px;
// -moz-box-pack: justify; /*Firefox*/ margin-left: 0;
// -webkit-box-pack:justify; /*Safari,Opera,Chrome*/ }
// box-pack: justify;
// -moz-justify-content: space-between; .attentionItem p {
// -webkit-justify-content: space-between; font-size: 14px;
// justify-content: space-between; margin-left: 45px;
// margin-top: 20px; }
//}
//.left{ .submitButtons {
// width: 50%; margin-left: 34px;
//} }
//.right{
// width: 50%; .contentTable {
// border-left: 1px solid #317ecc; display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
//} display: -moz-box; /* 老版本语法: Firefox (buggy) */
//.error p{ display: -ms-flexbox; /* 混合版本语法: IE 10 */
// color: #fff; display: -webkit-flex; /* 新版本语法: Chrome 21+ */
// background: #317ecc; display: -moz-flex;
// // margin: 10px auto; display: flex;
// text-align: left; -moz-box-pack: justify; /*Firefox*/
// font-size: 18px; -webkit-box-pack: justify; /*Safari,Opera,Chrome*/
//} box-pack: justify;
//.download{ -moz-justify-content: space-between;
// background: #f5f5f5; -webkit-justify-content: space-between;
// padding: 5px; justify-content: space-between;
// margin-top: -16px; margin-top: 20px;
//} }
//.download img{
// margin-top: -2px; .left {
// margin-right: 5px; width: 50%;
//} }
//.download button{
// border: none; .right {
// background: #f5f5f5 width: 50%;
//} border-left: 1px solid #317ecc;
//.download button:nth-child(1){ }
// border-right: 1px solid #ccc;
//} .error p {
//.download button:nth-child(2){ color: #fff;
// border-right: 1px solid #ccc; background: #317ecc;
//} // margin: 10px auto;
//.buttonDown{ text-align: left;
// display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */ font-size: 18px;
// display: -moz-box; /* 老版本语法: Firefox (buggy) */ }
// display: -ms-flexbox; /* 混合版本语法: IE 10 */
// display: -webkit-flex; /* 新版本语法: Chrome 21+ */ .download {
// display: -moz-flex; background: #f5f5f5;
// display: flex; padding: 5px;
// -moz-box-pack: start; /*Firefox*/ margin-top: -16px;
// -webkit-box-pack: start; /*Safari,Opera,Chrome*/ }
// box-pack: start;
// -moz-justify-content: flex-start; .download img {
// -webkit-justify-content: flex-start; margin-top: -2px;
// justify-content: flex-start; margin-right: 5px;
// margin-bottom: 20px; }
//}
//.buttonDown>button{ .download button {
// margin-left: 10px; border: none;
// background: #abbac3; background: #f5f5f5
// border: none; }
// color: #fff;
// padding: 5px 12px; .download button:nth-child(1) {
// border-radius: 5px; border-right: 1px solid #ccc;
//} }
.download button:nth-child(2) {
border-right: 1px solid #ccc;
}
.buttonDown {
display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
display: -moz-box; /* 老版本语法: Firefox (buggy) */
display: -ms-flexbox; /* 混合版本语法: IE 10 */
display: -webkit-flex; /* 新版本语法: Chrome 21+ */
display: -moz-flex;
display: flex;
-moz-box-pack: start; /*Firefox*/
-webkit-box-pack: start; /*Safari,Opera,Chrome*/
box-pack: start;
-moz-justify-content: flex-start;
-webkit-justify-content: flex-start;
justify-content: flex-start;
margin-bottom: 20px;
}
.buttonDown > button {
margin-left: 10px;
background: #abbac3;
border: none;
color: #fff;
padding: 5px 12px;
border-radius: 5px;
}
/***
* 钟是志 权限配置
* 2020年5月8日 16:57:11
* 这个只需要 详情 和 导出 和 流程审核详情
* */
import React from 'react'; import React from 'react';
import List from './index';
import GetIdByPath from './GetIdByPath'; import GetIdByPath from './GetIdByPath';
const ExportAndDetail = (props) => { const ExportAndDetail = (props) => {
......
/***
* 钟是志 权限配置
* 2020年5月8日 16:57:11
* 这个只需要 新增 删除 详情 导入 导出 编辑
* */
import React from 'react';
import GetIdByPath from './GetIdByPath';
const ExportAndImportAndDetail = (props) => {
const Authority = {
add: true, // 新增
delete: true, // 删除
edit: true, // 编辑
auditDetail: false, // 审核详情
exportUtil: true, // 导出
importUtil: true, // 导入
};
return <GetIdByPath {...props}
Authority={Authority}
/>;
};
export default ExportAndImportAndDetail;
...@@ -8,7 +8,7 @@ import ButtonDiy from '@/baseComponent/ButtonDiy'; ...@@ -8,7 +8,7 @@ import ButtonDiy from '@/baseComponent/ButtonDiy';
import Shell from '../Shell'; import Shell from '../Shell';
import FormArray from '../AffairPage/component/FormArray'; import FormArray from '../AffairPage/component/FormArray';
import Edit from '../Edit/index'; import Edit from '../Edit/index';
// import ImportUtil from '../ImportUtil/ImportUtil'; import ImportUtil from '../ImportUtil/ImportUtil';
import SearchDom from '@/highOrderComponent/SearchDom'; import SearchDom from '@/highOrderComponent/SearchDom';
import StandardTable from '@/components/StandardTable'; import StandardTable from '@/components/StandardTable';
import { getHead, fetchData, deleteItem, add, getDetailId } from './services'; import { getHead, fetchData, deleteItem, add, getDetailId } from './services';
...@@ -80,18 +80,25 @@ class FormList extends React.Component { ...@@ -80,18 +80,25 @@ class FormList extends React.Component {
} }
// 渲染值 // 渲染值
componentDidMount() { componentDidMount() {
this.getTableHead(); this.getTableHead();
} }
getTableHead = () => { getTableHead = () => {
const { objId, Authority } = this.props; const { objId, Authority } = this.props;
getHead({ dataObjId: objId }, datas => { getHead({ dataObjId: objId }, datas => {
if (!datas) return; if (!datas) return;
let findPrimaryKey = datas.find((x) => {
return x.isPrimaryKey === true;
});
if (findPrimaryKey) {
this.setState({
primaryKey: findPrimaryKey.name,
});
} else {
console.error('没有数据主键,无法执行删除操作');
}
datas = datas.filter((x) => { datas = datas.filter((x) => {
return x.isHidden !== true; return x.isHidden !== true;
}); });
...@@ -99,23 +106,20 @@ class FormList extends React.Component { ...@@ -99,23 +106,20 @@ class FormList extends React.Component {
item.extendType = item.extendTypeId; item.extendType = item.extendTypeId;
item.dataIndex = item.name; item.dataIndex = item.name;
item.dataType = item.type; item.dataType = item.type;
if (item.isPrimaryKey) {
this.setState({
primaryKey: item.name,
});
}
} }
datas = handleColumns(datas); datas = handleColumns(datas);
if (Authority && Authority.auditDetail) { if (Authority && Authority.auditDetail) { //流程审核详情 和 编辑,查看 不能 同时存在.
datas.push( datas.push(
{ {
dataIndex: 'operation', dataIndex: 'auditProcessDetail',
title: '操作', title: '审核详情',
fixed: datas.length > 12 ? 'right' : false, fixed: datas.length > 12 ? 'right' : false,
render: (text, record) => { render: (text, record) => {
return (<a onClick={()=>{this.getIdByCode(record.process_biz_key)}}> return (<a onClick={() => {
this.getIdByCode(record.process_biz_key);
}}>
流程审核详情 流程审核详情
</a> ); </a>);
/*return (<Link to={ /*return (<Link to={
{ {
pathname: './Detail', pathname: './Detail',
...@@ -131,24 +135,9 @@ class FormList extends React.Component { ...@@ -131,24 +135,9 @@ class FormList extends React.Component {
}, },
); );
} }
this.columns = datas; this.columns = datas;
this.setState({ formItem: datas }); this.setState({ formItem: datas });
/* let i = 0;
for (let t in datas) {
/!* if (i < 10) {
let column = {};
column.title = datas[t].title;
column.dataIndex = datas[t].name;
if (date.includes(datas[t].type)) {
column.render = val => val && moment(val).format('YYYY-MM-DD HH:mm:ss');
}
this.columns.push(column);
i++;
}*!/
if (datas[t].isPrimaryKey) {
}
}*/
let searchConfig = []; let searchConfig = [];
for (let item of datas) { for (let item of datas) {
if (item.isShowQuery) { if (item.isShowQuery) {
...@@ -164,37 +153,40 @@ class FormList extends React.Component { ...@@ -164,37 +153,40 @@ class FormList extends React.Component {
this.setState({ this.setState({
searchConfig, searchConfig,
}); });
/*let opt = { if (Authority && Authority.edit) { //编辑功能
title: '操作', datas.push(
render: (text, record) => ( {
<Fragment> dataIndex: 'operationEdit',
<div> title: '编辑',
<a onClick={this.modify.bind(this, record)}> fixed: 'right',
编辑 width: 60,
</a> render: (text, record) => {
</div> return (
</Fragment> <a onClick={this.modify.bind(this, record)}>
), 编辑
}; </a>);
this.columns.push(opt);*/ },
},
);
}
this.getPage(); this.getPage();
}); });
}; };
getIdByCode = (code) => { getIdByCode = (code) => {
getDetailId({code},res=>{ getDetailId({ code }, res => {
router.push({ router.push({
pathname: './Detail', pathname: './Detail',
state: { state: {
record: {id: res.id}, record: { id: res.id },
} },
}); });
}) });
}; };
modify = record => { modify = record => {
const { formItem } = this.state; const { formItem } = this.state;
if (formItem.length < 10) { if (formItem.length < 10 || true) {
this.setState({ this.setState({
formData: { ...record }, formData: { ...record },
modalVisible: true, modalVisible: true,
...@@ -239,7 +231,7 @@ class FormList extends React.Component { ...@@ -239,7 +231,7 @@ class FormList extends React.Component {
}; };
fetchData({ ...params, dataObjId: objId }, res => { fetchData({ ...params, dataObjId: objId }, res => {
if (!res.rows) { if (!res.rows) {
console.log('分页接口rows返回null报错'); console.error('分页接口rows返回null报错');
} }
this.setState({ this.setState({
pageData: { pageData: {
...@@ -293,7 +285,7 @@ class FormList extends React.Component { ...@@ -293,7 +285,7 @@ class FormList extends React.Component {
add = () => { add = () => {
const { formItem } = this.state; const { formItem } = this.state;
if (formItem.length < 10) { if (formItem.length < 10 || true) {
this.setState({ this.setState({
modalVisible: true, modalVisible: true,
formData: {}, formData: {},
...@@ -314,14 +306,23 @@ class FormList extends React.Component { ...@@ -314,14 +306,23 @@ class FormList extends React.Component {
}); });
}; };
batchDelete = e => { batchDelete = (e) => {
const { objId } = this.props; const { objId } = this.props;
const { selectedRows, formItem } = this.state; const { selectedRows, formItem } = this.state;
if (!selectedRows) return; if (!selectedRows || selectedRows.length < 1) {
const Keys = formItem.filter(i => i.isPrimaryKey).reduce((acc, i) => { message.warning('请选择您要删除的数据');
return { ...acc, [i.name]: selectedRows.map(row => row[i.name]).join(',') }; return false;
}
// 找出主键
const { primaryKey } = this.state;
let Keys = selectedRows.map((x) => {
return x[primaryKey];
}); });
deleteItem({ keys: JSON.stringify(Keys), objId }, () => { deleteItem({
keys: JSON.stringify({ [primaryKey]: Keys.join(',') }),
objId,
// isSelf: true,
}, () => {
this.setState({ this.setState({
selectedRows: [], selectedRows: [],
}); });
...@@ -383,8 +384,11 @@ class FormList extends React.Component { ...@@ -383,8 +384,11 @@ class FormList extends React.Component {
config={{ condition: searchConfig, fromTab: true }} config={{ condition: searchConfig, fromTab: true }}
/> />
) : null} ) : null}
<Shell> <Shell styleShell={searchConfig.length > 0 ? {} : { marginTop: 0 }}>
<div style={{ paddingLeft: '10px', marginTop: '20px' }} <div style={{
paddingLeft: '10px',
paddingTop: '10px',
}}
> >
{ {
Authority && Authority.add === false ? null : Authority && Authority.add === false ? null :
...@@ -402,12 +406,16 @@ class FormList extends React.Component { ...@@ -402,12 +406,16 @@ class FormList extends React.Component {
Authority && Authority.exportUtil === false ? null : Authority && Authority.exportUtil === false ? null :
<ExportInfo objId={objId}/> <ExportInfo objId={objId}/>
} }
{/* <ImportUtil objId={objId} />*/} {
Authority && Authority.importUtil === false ? null :
<ImportUtil objId={objId}
callback={this.getPage}
/>
}
</div> </div>
<StandardTable <StandardTable
rowKey="row_id" rowKey={primaryKey}
data={pageData} data={pageData}
columns={this.columns} columns={this.columns}
selectedRows={selectedRows} selectedRows={selectedRows}
......
...@@ -37,15 +37,16 @@ const text = [ ...@@ -37,15 +37,16 @@ const text = [
const number = ['BIGINT', 'DOUBLE', 'FLOAT', 'INT', 'INTEGER', 'NUMERIC', 'SMALLINT', 'TINYINT']; const number = ['BIGINT', 'DOUBLE', 'FLOAT', 'INT', 'INTEGER', 'NUMERIC', 'SMALLINT', 'TINYINT'];
const date = ['DATE', 'DATETIME', 'TIME', 'TIMESTAMP', 'YEAR']; const date = ['DATE', 'DATETIME', 'TIME', 'TIMESTAMP', 'YEAR'];
const taskNode = ['TASKNODE'];
const format = { const format = {
//欢哥那边定义好的 时间格式类型 // 欢哥那边定义好的 时间格式类型
DATE: 'YYYY-MM-DD HH:mm', DATE: 'YYYY-MM-DD HH:mm',
DATETIME: 'YYYY-MM-DD HH:mm:ss', DATETIME: 'YYYY-MM-DD HH:mm:ss',
TIME: 'HH:mm:ss', TIME: 'HH:mm:ss',
TIMESTAMP: 'HH:mm:ss', TIMESTAMP: 'HH:mm:ss',
YEAR: 'YYYY', YEAR: 'YYYY',
}; };
const taskNode = ['TASKNODE'];
/** /**
* 将时间格式转化为unix时间戳 * 将时间格式转化为unix时间戳
...@@ -61,7 +62,7 @@ const transLateTimeTOUnix = (value, dataType) => { ...@@ -61,7 +62,7 @@ const transLateTimeTOUnix = (value, dataType) => {
const getFormArrayConfig = header => { const getFormArrayConfig = header => {
let config = []; let config = [];
for (let item of header) { for (let item of header) {
if (item.isPrimaryKey || item.isHidden) { if (item.isPrimaryKey || item.isHidden || item.dataIndex === 'operationEdit') {
// 主键 // 主键
continue; continue;
/* config.push( /* config.push(
......
...@@ -88,29 +88,29 @@ export const addOrEditTableItem = ({ objId, data, isAdd, isBase = true }) => { ...@@ -88,29 +88,29 @@ export const addOrEditTableItem = ({ objId, data, isAdd, isBase = true }) => {
* @param {String} id 申报数据的id * @param {String} id 申报数据的id
* @param {String} code 申报数据的code * @param {String} code 申报数据的code
*/ */
export const getHistoryFormDetail = ({id, code}) => { export const getHistoryFormDetail = ({ id, code }) => {
return uaaRequest('/UnifiedAppFormApi/getFormDetail', { id, code, }); return uaaRequest('/UnifiedAppFormApi/getFormDetail', { id, code });
}; };
export function getOnestopKey(key='',formKey='key_list', formValue='value_list'){ export function getOnestopKey(key = '', formKey = 'key_list', formValue = 'value_list') {
return fetchTableData({ return fetchTableData({
dataObjId: config.onestopConfigDataObjId || '1248169933162938368', dataObjId: config.onestopConfigDataObjId || '1248169933162938368',
pageNo: 1, pageNo: 1,
pageSize: 5000, pageSize: 5000,
}).then((x)=>{ }).then((x) => {
if(x && x.rows && x.rows.length){ if (x && x.rows && x.rows.length) {
let onestopConfigList = {}; const onestopConfigList = {};
for(let item of x.rows){ for (const item of x.rows) {
onestopConfigList[item[formKey]] = item[formValue]; onestopConfigList[item[formKey]] = item[formValue];
}
setOneStopConfig(onestopConfigList);
if(key){
return onestopConfigList[key];
}
}else{
message.warning('没有配置服务,无法使用此功能');
return false;
} }
}) setOneStopConfig(onestopConfigList);
if (key) {
return onestopConfigList[key];
}
} else {
console.error('没有配置一站式相关服务,无法使用部分功能');
return false;
}
});
} }
...@@ -571,6 +571,7 @@ export default class ZdyTable extends Component { ...@@ -571,6 +571,7 @@ export default class ZdyTable extends Component {
<TableCom <TableCom
formCode={formCode} // 当前表单code formCode={formCode} // 当前表单code
modalInit={modalInit}
formId={formId} // 当前表单Id formId={formId} // 当前表单Id
i={i} // 当前组件下标 i={i} // 当前组件下标
j={j} // 当前行数下班 j={j} // 当前行数下班
...@@ -657,6 +658,7 @@ export default class ZdyTable extends Component { ...@@ -657,6 +658,7 @@ export default class ZdyTable extends Component {
}) : ""} }) : ""}
<IsNewTable <IsNewTable
modalInit={modalInit}
items={items} items={items}
checkAllHidden={this.checkAllHidden} checkAllHidden={this.checkAllHidden}
isBorder={isBorder} isBorder={isBorder}
......
...@@ -8,6 +8,7 @@ import { Row, Col } from 'antd'; ...@@ -8,6 +8,7 @@ import { Row, Col } from 'antd';
export default class isNewTable extends Component { export default class isNewTable extends Component {
render() { render() {
const { const {
items, items,
checkAllHidden, checkAllHidden,
isBorder, isBorder,
...@@ -30,7 +31,8 @@ export default class isNewTable extends Component { ...@@ -30,7 +31,8 @@ export default class isNewTable extends Component {
formCode, formCode,
formId, formId,
fatherObj, fatherObj,
style style,
modalInit
} = this.props } = this.props
if(!isEdit ){ // 展示栏 暂不做处理 if(!isEdit ){ // 展示栏 暂不做处理
return <> return <>
...@@ -51,6 +53,7 @@ export default class isNewTable extends Component { ...@@ -51,6 +53,7 @@ export default class isNewTable extends Component {
item.map((ary, j) => { item.map((ary, j) => {
return !allhidden && ary.hidden ? "" return !allhidden && ary.hidden ? ""
: <><TableCom : <><TableCom
modalInit={modalInit}
formCode={formCode} formCode={formCode}
formId={formId} formId={formId}
i={i} i={i}
...@@ -176,6 +179,7 @@ export default class isNewTable extends Component { ...@@ -176,6 +179,7 @@ export default class isNewTable extends Component {
title={ title={
!allhidden && ary.hidden ? "" !allhidden && ary.hidden ? ""
:<><TableCom :<><TableCom
modalInit={modalInit}
formCode={formCode} formCode={formCode}
formId={formId} formId={formId}
i={i} i={i}
...@@ -208,6 +212,7 @@ export default class isNewTable extends Component { ...@@ -208,6 +212,7 @@ export default class isNewTable extends Component {
// textAlign:ary.content&&ary.content.comName === 'Table'?"left":'right' // textAlign:ary.content&&ary.content.comName === 'Table'?"left":'right'
}} }}
> <><TableCom > <><TableCom
modalInit={modalInit}
formCode={formCode} formCode={formCode}
formId={formId} formId={formId}
i={i} i={i}
......
...@@ -33,6 +33,7 @@ export default class isNewWebTable extends Component { ...@@ -33,6 +33,7 @@ export default class isNewWebTable extends Component {
fatherObj, fatherObj,
style, style,
max, max,
modalInit
} = this.props } = this.props
return ( return (
<div <div
...@@ -89,6 +90,7 @@ export default class isNewWebTable extends Component { ...@@ -89,6 +90,7 @@ export default class isNewWebTable extends Component {
isEdit={isEdit} isEdit={isEdit}
formKey={currentFormKey} formKey={currentFormKey}
init={init} init={init}
modalInit={modalInit}
get={get} // 区分移动端或wen端 get={get} // 区分移动端或wen端
json={cell.content} json={cell.content}
obj={obj || {}} // 是否存在默认值 obj={obj || {}} // 是否存在默认值
......
...@@ -32,11 +32,15 @@ import SearchInfo from '../../App/SearchInfo'; ...@@ -32,11 +32,15 @@ import SearchInfo from '../../App/SearchInfo';
import {Base16Encode} from "../../Base16/index"; import {Base16Encode} from "../../Base16/index";
import baseX from 'base-x' import baseX from 'base-x'
import {isEmpty} from 'lodash' import {isEmpty} from 'lodash'
import FilePreview from "@/webPublic/one_stop_public/filePreview";
import {queryApiActionPath} from "@/webPublic/one_stop_public/utils/queryConfig";
import UploadCom from "@/webPublic/one_stop_public/libs/UploadCom";
const BASE16 = '0123456789abcdef' const BASE16 = '0123456789abcdef'
const bs16 = baseX(BASE16) const bs16 = baseX(BASE16)
const FormItem = Form.Item; const FormItem = Form.Item;
let AllWidth = 0; // 表格总长度 let AllWidth = 0; // 表格总长度
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const text = [ const text = [
'BINARY', 'BINARY',
'BIT', 'BIT',
...@@ -104,7 +108,7 @@ const CreateForm = Form.create()(props => { ...@@ -104,7 +108,7 @@ const CreateForm = Form.create()(props => {
handleAdd(params, isAdd); handleAdd(params, isAdd);
}); });
}; };
console.log("isView",isView)
//需要获取动态表单 //需要获取动态表单
return ( return (
<Modal <Modal
...@@ -232,6 +236,24 @@ class TreeList extends React.Component { ...@@ -232,6 +236,24 @@ class TreeList extends React.Component {
// } // }
}; };
isJSON = (str) => {
if (typeof str == 'string') {
try {
var obj = JSON.parse(str);
if (typeof obj == 'object' && obj) {
return true;
} else {
return false;
}
} catch (e) {
console.log('error:' + str + '!!!' + e);
return false;
}
}
console.log('这不是个字符串')
}
delete = record => { delete = record => {
//找出主键 //找出主键
let Keys = {}; let Keys = {};
...@@ -361,7 +383,7 @@ class TreeList extends React.Component { ...@@ -361,7 +383,7 @@ class TreeList extends React.Component {
const b = nextProps.value||{} const b = nextProps.value||{}
const a = this.props.value||{} const a = this.props.value||{}
if(JSON.stringify(a)!=JSON.stringify(b)){ if(JSON.stringify(a)!=JSON.stringify(b)){
const params = { const params = {
...@@ -369,18 +391,17 @@ class TreeList extends React.Component { ...@@ -369,18 +391,17 @@ class TreeList extends React.Component {
pageSize: this.props.pageSize||10, pageSize: this.props.pageSize||10,
query: JSON.stringify(this.state.formValues), query: JSON.stringify(this.state.formValues),
}; };
this.columns=nextProps.value.columns if(nextProps.value.columns!=null&&nextProps.value.columns.length>0){
this.columns=nextProps.value.columns
}
this.custom=Base16Encode(JSON.stringify(b)) this.custom=Base16Encode(JSON.stringify(b))
if( nextProps.value.getPage){ if( nextProps.value.getPage){
this.getPage(params,null,nextProps.value.getPage); this.getPage(params,null,nextProps.value.getPage);
}else{ }else{
if(this.state.objId)this.getPage(params) if(this.state.objId)this.getPage(params)
} }
}
}
const x=nextProps.selects const x=nextProps.selects
const y = this.props.selects const y = this.props.selects
if(JSON.stringify(x)!=JSON.stringify(y)){ if(JSON.stringify(x)!=JSON.stringify(y)){
...@@ -441,7 +462,27 @@ class TreeList extends React.Component { ...@@ -441,7 +462,27 @@ class TreeList extends React.Component {
} }
}else if(datas[t].name.indexOf("process_status")>-1){ }else if(datas[t].name.indexOf("process_status")>-1){
column.render=(val)=>val?(val==="0"?"审核通过":"审核未通过"):null column.render=(val)=>val?(val==="0"?"审核通过":"审核未通过"):null
}else { }else if(datas[t].extendTypeId&&datas[t].extendTypeId.indexOf("file")>-1){ //特殊处理附件
column.render =( val) =>{
if(this.isJSON(val)){
val = JSON.parse(val);
let files = val.files;
let xx =( <ul>
{files.map((f, index2) => {
return <li key={index2}><FilePreview
path={queryApiActionPath() + f.path}
pathName={f.name}
/></li>
}
)}
</ul>
)
return xx;
}else {
return val;
}
}
}else{
column.render=(val)=>val&&val.length>100? <Tooltip title={val} overlayStyle={{width:1000}}> column.render=(val)=>val&&val.length>100? <Tooltip title={val} overlayStyle={{width:1000}}>
<span style={{width:column.width||200,display:"block", wordBreak:"keep-all",whiteSpace:"nowrap", overflow:"hidden", textOverflow:"ellipsis"}}>{val}</span> <span style={{width:column.width||200,display:"block", wordBreak:"keep-all",whiteSpace:"nowrap", overflow:"hidden", textOverflow:"ellipsis"}}>{val}</span>
</Tooltip>:val </Tooltip>:val
...@@ -767,7 +808,18 @@ class TreeList extends React.Component { ...@@ -767,7 +808,18 @@ class TreeList extends React.Component {
</FormItem> </FormItem>
); );
} else if(isQuery&&item.isGroupQuery!=null&&item.isGroupQuery){ //如果是查询 并且是组合查询 } else if(item.extendTypeId&&item.extendTypeId.indexOf("file")>-1){
//特殊处理附件 如果是查询就 跳过
if(isQuery) return ;
return (
<FormItem labelCol={labelCol} wrapperCol={wrapperCol} label={item.title} key={item.id}>
{form.getFieldDecorator(item.name, {
initialValue: formData == null ? '' : (formData[item.name]&&this.isJSON(formData[item.name])?JSON.parse(formData[item.name]):null),
rules: [{ required: !item.isNull }],
})(<UploadCom />)}
</FormItem>
);
} else if(isQuery&&item.isGroupQuery!=null&&item.isGroupQuery){ //如果是查询 并且是组合查询
const ops = groups[item.id + ''] || [] const ops = groups[item.id + ''] || []
return ( return (
...@@ -845,7 +897,7 @@ class TreeList extends React.Component { ...@@ -845,7 +897,7 @@ class TreeList extends React.Component {
form, form,
get, get,
} = this.props; } = this.props;
console.log(get)
const { querys } = this.state const { querys } = this.state
if (querys.length == 0) { if (querys.length == 0) {
return ''; return '';
...@@ -962,7 +1014,7 @@ class TreeList extends React.Component { ...@@ -962,7 +1014,7 @@ class TreeList extends React.Component {
onClick={this.view.bind(this, record)}>查看详情</a><Divider type="vertical"/></>} onClick={this.view.bind(this, record)}>查看详情</a><Divider type="vertical"/></>}
{rights && !rights.includes('edit') ? '' : <><a {rights && !rights.includes('edit') ? '' : <><a
onClick={this.modify.bind(this, record)}>编辑</a><Divider type="vertical"/></>} onClick={this.modify.bind(this, record)}>编辑</a><Divider type="vertical"/></>}
{rights &&rights.includes("viewProcess")&&record.process_biz_key?<><a onClick={this.viewProcess.bind(this, record)}>查看流程详情</a><Divider type="vertical"/></>:''} {rights&&rights.includes("viewProcess")&&record.process_biz_key?<><a onClick={this.viewProcess.bind(this, record)}>查看流程详情</a><Divider type="vertical"/></>:''}
{rights && !rights.includes('delete') ? '' : <> <Popconfirm {rights && !rights.includes('delete') ? '' : <> <Popconfirm
title="确定删除该数据?" title="确定删除该数据?"
onConfirm={this.delete.bind(this, record)} onConfirm={this.delete.bind(this, record)}
......
...@@ -32,11 +32,15 @@ import SearchInfo from '../../App/SearchInfo'; ...@@ -32,11 +32,15 @@ import SearchInfo from '../../App/SearchInfo';
import {Base16Encode} from "../../Base16/index"; import {Base16Encode} from "../../Base16/index";
import baseX from 'base-x' import baseX from 'base-x'
import {isEmpty} from 'lodash' import {isEmpty} from 'lodash'
import FilePreview from "@/webPublic/one_stop_public/filePreview";
import {queryApiActionPath} from "@/webPublic/one_stop_public/utils/queryConfig";
import UploadCom from "@/webPublic/one_stop_public/libs/UploadCom";
const BASE16 = '0123456789abcdef' const BASE16 = '0123456789abcdef'
const bs16 = baseX(BASE16) const bs16 = baseX(BASE16)
const FormItem = Form.Item; const FormItem = Form.Item;
let AllWidth = 0; // 表格总长度 let AllWidth = 0; // 表格总长度
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const text = [ const text = [
'BINARY', 'BINARY',
'BIT', 'BIT',
...@@ -104,7 +108,7 @@ const CreateForm = Form.create()(props => { ...@@ -104,7 +108,7 @@ const CreateForm = Form.create()(props => {
handleAdd(params, isAdd); handleAdd(params, isAdd);
}); });
}; };
console.log("isView",isView)
//需要获取动态表单 //需要获取动态表单
return ( return (
<Modal <Modal
...@@ -232,6 +236,24 @@ class FormList extends React.Component { ...@@ -232,6 +236,24 @@ class FormList extends React.Component {
// } // }
}; };
isJSON = (str) => {
if (typeof str == 'string') {
try {
var obj = JSON.parse(str);
if (typeof obj == 'object' && obj) {
return true;
} else {
return false;
}
} catch (e) {
console.log('error:' + str + '!!!' + e);
return false;
}
}
console.log('这不是个字符串')
}
delete = record => { delete = record => {
//找出主键 //找出主键
let Keys = {}; let Keys = {};
...@@ -361,7 +383,7 @@ class FormList extends React.Component { ...@@ -361,7 +383,7 @@ class FormList extends React.Component {
const b = nextProps.value||{} const b = nextProps.value||{}
const a = this.props.value||{} const a = this.props.value||{}
if(JSON.stringify(a)!=JSON.stringify(b)){ if(JSON.stringify(a)!=JSON.stringify(b)){
const params = { const params = {
...@@ -369,18 +391,17 @@ class FormList extends React.Component { ...@@ -369,18 +391,17 @@ class FormList extends React.Component {
pageSize: this.props.pageSize||10, pageSize: this.props.pageSize||10,
query: JSON.stringify(this.state.formValues), query: JSON.stringify(this.state.formValues),
}; };
this.columns=nextProps.value.columns if(nextProps.value.columns!=null&&nextProps.value.columns.length>0){
this.columns=nextProps.value.columns
}
this.custom=Base16Encode(JSON.stringify(b)) this.custom=Base16Encode(JSON.stringify(b))
if( nextProps.value.getPage){ if( nextProps.value.getPage){
this.getPage(params,null,nextProps.value.getPage); this.getPage(params,null,nextProps.value.getPage);
}else{ }else{
if(this.state.objId)this.getPage(params) if(this.state.objId)this.getPage(params)
} }
}
}
const x=nextProps.selects const x=nextProps.selects
const y = this.props.selects const y = this.props.selects
if(JSON.stringify(x)!=JSON.stringify(y)){ if(JSON.stringify(x)!=JSON.stringify(y)){
...@@ -441,7 +462,27 @@ class FormList extends React.Component { ...@@ -441,7 +462,27 @@ class FormList extends React.Component {
} }
}else if(datas[t].name.indexOf("process_status")>-1){ }else if(datas[t].name.indexOf("process_status")>-1){
column.render=(val)=>val?(val==="0"?"审核通过":"审核未通过"):null column.render=(val)=>val?(val==="0"?"审核通过":"审核未通过"):null
}else { }else if(datas[t].extendTypeId&&datas[t].extendTypeId.indexOf("file")>-1){ //特殊处理附件
column.render =( val) =>{
if(this.isJSON(val)){
val = JSON.parse(val);
let files = val.files;
let xx =( <ul>
{files.map((f, index2) => {
return <li key={index2}><FilePreview
path={queryApiActionPath() + f.path}
pathName={f.name}
/></li>
}
)}
</ul>
)
return xx;
}else {
return val;
}
}
}else{
column.render=(val)=>val&&val.length>100? <Tooltip title={val} overlayStyle={{width:1000}}> column.render=(val)=>val&&val.length>100? <Tooltip title={val} overlayStyle={{width:1000}}>
<span style={{width:column.width||200,display:"block", wordBreak:"keep-all",whiteSpace:"nowrap", overflow:"hidden", textOverflow:"ellipsis"}}>{val}</span> <span style={{width:column.width||200,display:"block", wordBreak:"keep-all",whiteSpace:"nowrap", overflow:"hidden", textOverflow:"ellipsis"}}>{val}</span>
</Tooltip>:val </Tooltip>:val
...@@ -767,7 +808,18 @@ class FormList extends React.Component { ...@@ -767,7 +808,18 @@ class FormList extends React.Component {
</FormItem> </FormItem>
); );
} else if(isQuery&&item.isGroupQuery!=null&&item.isGroupQuery){ //如果是查询 并且是组合查询 } else if(item.extendTypeId&&item.extendTypeId.indexOf("file")>-1){
//特殊处理附件 如果是查询就 跳过
if(isQuery) return ;
return (
<FormItem labelCol={labelCol} wrapperCol={wrapperCol} label={item.title} key={item.id}>
{form.getFieldDecorator(item.name, {
initialValue: formData == null ? '' : (formData[item.name]&&this.isJSON(formData[item.name])?JSON.parse(formData[item.name]):null),
rules: [{ required: !item.isNull }],
})(<UploadCom />)}
</FormItem>
);
} else if(isQuery&&item.isGroupQuery!=null&&item.isGroupQuery){ //如果是查询 并且是组合查询
const ops = groups[item.id + ''] || [] const ops = groups[item.id + ''] || []
return ( return (
...@@ -845,7 +897,7 @@ class FormList extends React.Component { ...@@ -845,7 +897,7 @@ class FormList extends React.Component {
form, form,
get, get,
} = this.props; } = this.props;
console.log(get)
const { querys } = this.state const { querys } = this.state
if (querys.length == 0) { if (querys.length == 0) {
return ''; return '';
......
...@@ -425,7 +425,7 @@ export default class tableCom extends Component { ...@@ -425,7 +425,7 @@ export default class tableCom extends Component {
componentWillReceiveProps(props) { componentWillReceiveProps(props) {
const { json, mapData, obj } = props; const { json, mapData, obj } = props;
if (json == null) { if (json == null||this.props.safe) {
return; return;
} }
if (!(this.dataFilter.includes(json.comName) || json.comName == "TableSelect") && json.isFormulaOnce) { if (!(this.dataFilter.includes(json.comName) || json.comName == "TableSelect") && json.isFormulaOnce) {
...@@ -1282,9 +1282,9 @@ export default class tableCom extends Component { ...@@ -1282,9 +1282,9 @@ export default class tableCom extends Component {
} }
} }
this.getData(json, dataColumn, obj) this.getData(json, dataColumn, obj)
if (json.formula != null && json.formula != "") { if (json.formula != null && json.formula != ""&&!this.props.safe) {
this.getFunctionValue(json.formula, dataColumn, json) this.getFunctionValue(json.formula, dataColumn, json)
} }
......
...@@ -59,9 +59,9 @@ export function changeToDraftState(blocks) { ...@@ -59,9 +59,9 @@ export function changeToDraftState(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)
...@@ -90,15 +90,7 @@ export function preHandle(values) { ...@@ -90,15 +90,7 @@ export function preHandle(values) {
for (var key in values) { for (var key in values) {
if(!values[key]) continue; if(!values[key]) continue;
if (key.indexOf("img") > -1) { if (key.indexOf("$") > -1) {
var xx = key.split("$")
values[xx[1]] = values[key].response
delete values[key]
} else 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++) {
...@@ -109,7 +101,7 @@ export function preHandle(values) { ...@@ -109,7 +101,7 @@ export function preHandle(values) {
} }
} }
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) {
...@@ -118,6 +110,28 @@ export function preHandle(values) { ...@@ -118,6 +110,28 @@ export function preHandle(values) {
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'){
//处理子表单中的日期值
let objValues = values[key];
for(let k in objValues){
if(k!=''&&objValues[k] instanceof Object){
let childObj = objValues[k];
for(let j in childObj){
if(childObj[j]!=null){
if (childObj[j] instanceof moment) {
values[key][k][j] = values[key][k][j].valueOf()
}else if (childObj[j] instanceof Date) {
values[key][k][j] = values[key][k][j].valueOf()
} else if (childObj[j] instanceof Boolean) {
values[key][k][j] = values[key][k][j] ? 0 : 1
}
}
}
}
}
} }
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论