提交 582dc5db authored 作者: 钟是志's avatar 钟是志

增加 元数据管理的 导入 编辑 功能 且都是通过权限控制

上级 ce731b0a
...@@ -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}
......
//.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;
}
...@@ -10,7 +10,7 @@ const ExportAndImportAndDetail = (props) => { ...@@ -10,7 +10,7 @@ const ExportAndImportAndDetail = (props) => {
const Authority = { const Authority = {
add: true, // 新增 add: true, // 新增
delete: true, // 删除 delete: true, // 删除
detail: true, // 详情 edit: true, // 编辑
auditDetail: false, // 审核详情 auditDetail: false, // 审核详情
exportUtil: true, // 导出 exportUtil: true, // 导出
importUtil: true, // 导入 importUtil: true, // 导入
...@@ -20,4 +20,4 @@ const ExportAndImportAndDetail = (props) => { ...@@ -20,4 +20,4 @@ const ExportAndImportAndDetail = (props) => {
/>; />;
}; };
export default ExportAndDetail; 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,
...@@ -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: [],
}); });
...@@ -358,6 +359,7 @@ class FormList extends React.Component { ...@@ -358,6 +359,7 @@ class FormList extends React.Component {
isAdd, isAdd,
changeFormData: this.changeFormData, changeFormData: this.changeFormData,
}; };
console.log(this.columns);
return ( return (
<> <>
{showEdit ? ( {showEdit ? (
...@@ -402,12 +404,16 @@ class FormList extends React.Component { ...@@ -402,12 +404,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}
......
...@@ -61,7 +61,7 @@ const transLateTimeTOUnix = (value, dataType) => { ...@@ -61,7 +61,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(
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论