提交 f0d23696 authored 作者: wanyielin's avatar wanyielin

判断必选

上级 9130b850
...@@ -14,18 +14,13 @@ export default class TableSelect extends React.Component { ...@@ -14,18 +14,13 @@ export default class TableSelect extends React.Component {
constructor(props) { constructor(props) {
super(props) super(props)
const value = props.value || {}; const value = props.value || {};
this.state = { this.state = {
selects: value.selects||{}, selects: value.selects || {},
visiable: value.visiable , visiable: value.visiable,
isAll:value.isAll!=null?value.isAll:false, isAll: value.isAll != null ? value.isAll : false,
querys: value.querys||[], querys: value.querys || [],
sql: value.sql, sql: value.sql,
} }
} }
...@@ -33,6 +28,7 @@ export default class TableSelect extends React.Component { ...@@ -33,6 +28,7 @@ export default class TableSelect extends React.Component {
// 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) {
console.log("changedValue", changedValue)
onChange(Object.assign({}, this.state, changedValue)); onChange(Object.assign({}, this.state, changedValue));
} }
} }
...@@ -40,50 +36,50 @@ export default class TableSelect extends React.Component { ...@@ -40,50 +36,50 @@ export default class TableSelect extends React.Component {
// Should be a controlled component. // Should be a controlled component.
if ('value' in nextProps) { if ('value' in nextProps) {
const value = nextProps.value; const value = nextProps.value;
if(value!=null&& value instanceof Object){ if (value != null && value instanceof Object) {
this.setState(value); this.setState(value);
} }
// //
} }
} }
remove = (rowKey) => { remove = (rowKey) => {
console.log(rowKey)
const { selects } = this.state const { selects } = this.state
delete selects[rowKey] delete selects[rowKey]
console.log(selects)
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({ selects }); this.setState({ selects });
} }
this.triggerChange({ selects}); this.triggerChange({ selects });
} }
select = (obj) => { select = (obj) => {
var { selects} = this.state var { selects } = this.state
const { json: { isMultiple ,optionType} } = this.props const { json: { isMultiple, optionType } } = this.props
let valueName = this.props.json.valueName let valueName = this.props.json.valueName
if(optionType == "reference" &&this.props.dataColumn.referenceObjId){ if (optionType == "reference" && this.props.dataColumn.referenceObjId) {
valueName=this.props.dataColumn.referenceCodeName valueName = this.props.dataColumn.referenceCodeName
} }
const kk = obj[valueName] const kk = obj[valueName]
if (kk == null) { if (kk == null) {
message.error("指定的取值字段不存在或者值为空") message.error("指定的取值字段不存在或者值为空")
return return
} }
if (!isMultiple) { if (!isMultiple) {
selects = { [kk]: {...obj,selectKey:kk} } selects = { [kk]: { ...obj, selectKey: kk } }
} else { } else {
selects[kk] = obj; selects[kk] = obj;
selects[kk].selectKey=kk selects[kk].selectKey = kk
} }
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({ selects }); this.setState({ selects });
} }
this.triggerChange({ selects}); this.triggerChange({ selects });
...@@ -96,37 +92,35 @@ export default class TableSelect extends React.Component { ...@@ -96,37 +92,35 @@ export default class TableSelect extends React.Component {
values.splice(i, 1) values.splice(i, 1)
labels.splice(i, 1) labels.splice(i, 1)
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({ values, labels}); this.setState({ values, labels });
} }
this.triggerChange({ values, labels }); this.triggerChange({ values, labels });
} }
open = () => { open = () => {
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({ visiable: true}); this.setState({ visiable: true });
} }
this.triggerChange({ visiable: true }); this.triggerChange({ visiable: true });
} }
closeModal = () => { closeModal = () => {
if (!('value' in this.props)) { if (!('value' in this.props)) {
this.setState({ visiable: false}); this.setState({ visiable: false });
} }
this.triggerChange({ visiable: false }); this.triggerChange({ visiable: false });
} }
render() { render() {
const { json: { isMultiple, sql, optionType, showTable }, dataColumn: { referenceObjId }, sqlModel, columns, dataSource } = this.props
const { json: { isMultiple, sql, optionType, showTable }, dataColumn: { referenceObjId }, sqlModel, columns,dataSource } = this.props let { valueName, labelName } = this.props.json
let { valueName, labelName} =this.props.json if (optionType == "reference" && referenceObjId) {
valueName = this.props.dataColumn.referenceCodeName
if(optionType == "reference" &&referenceObjId){ labelName = this.props.dataColumn.referenceNameName
valueName=this.props.dataColumn.referenceCodeName
labelName=this.props.dataColumn.referenceNameName
} }
...@@ -134,45 +128,44 @@ export default class TableSelect extends React.Component { ...@@ -134,45 +128,44 @@ export default class TableSelect extends React.Component {
if (valueName == null || valueName == "") { if (valueName == null || valueName == "") {
return <>请指定取值的列名</> return <>请指定取值的列名</>
} }
const { selects, visiable, labels} = this.state const { selects, visiable, labels } = this.state
const keys=[] const keys = []
for(let i in selects){ for (let i in selects) {
keys.push(selects[i][valueName]) keys.push(selects[i][valueName])
} }
const columns2=[...columns,{ const columns2 = [...columns, {
title:"操作", title: "操作",
render:(val,record)=><a onClick={this.remove.bind(this,record.selectKey)}>移除</a> render: (val, record) => <a onClick={this.remove.bind(this, record.selectKey)}>移除</a>
}] }]
const columns3=[...columns,{ const columns3 = [...columns, {
title:"操作", title: "操作",
render: (val, record) =>
render:(val,record)=> keys.includes(record[valueName]) ? <span>已选择</span> : <a onClick={this.select.bind(this, record)}>选择</a>
keys.includes(record[valueName])?<span>已选择</span>:<a onClick={this.select.bind(this,record)}>选择</a>
}] }]
const custom={ const custom = {
isAll:this.state.isAll, isAll: this.state.isAll,
querys: this.state.querys, querys: this.state.querys,
sql: this.state.sql, sql: this.state.sql,
} }
console.log(columns3) // console.log(columns3)
let allWidth = 0 let allWidth = 0
if(columns3) { if (columns3) {
columns3.map((item,index) => { columns3.map((item, index) => {
if(index === columns3.length-1){ if (index === columns3.length - 1) {
item.fixed = 'right' item.fixed = 'right'
item.width = 50 item.width = 50
allWidth += 50 allWidth += 50
return item return item
} }
if(index === columns3.length-2){ if (index === columns3.length - 2) {
allWidth += 150 allWidth += 150
} else { } else {
if(item.width){ if (item.width) {
allWidth += item.width allWidth += item.width
} else { } else {
item.width = 180 item.width = 180
...@@ -182,23 +175,20 @@ export default class TableSelect extends React.Component { ...@@ -182,23 +175,20 @@ export default class TableSelect extends React.Component {
return item return item
}) })
} }
console.log(selects, Object.keys(selects).length)
return ( return (
<div> <div>
{Object.keys(selects).length > 0 ?
{Object.keys(selects).length > 0 ? showTable ? <Table rowKey={valueName} size="small" dataSource={Object.values(selects)} columns={columns2} pagination={false} /> : showTable ? <Table rowKey={valueName} size="small" dataSource={Object.values(selects)} columns={columns2} pagination={false} /> :
Object.keys(selects).map((k) => <Tag key={k} closable onClose={this.remove.bind(this, k)}>{selects[k][labelName]}</Tag>)
Object.keys(selects).map((k) => <Tag key={k} closable onClose={this.remove.bind(this, k)}>{selects[k][labelName]}</Tag>)
: "" : ""
} }
<Button type="primary" onClick={this.open}>选择</Button> <Button type="primary" onClick={this.open}>选择</Button>
<Modal <Modal
width="1200px" width="60%"
maskClosable={false} maskClosable={false}
title={`请选择`} title={`请选择`}
visible={visiable} visible={visiable}
onOk={this.closeModal} onOk={this.closeModal}
...@@ -206,9 +196,10 @@ export default class TableSelect extends React.Component { ...@@ -206,9 +196,10 @@ export default class TableSelect extends React.Component {
> >
{optionType == "reference" ? referenceObjId ? {optionType == "reference" ? referenceObjId ?
<FormList rights={this.props.rights || []} notShowBack={true} value={custom} objId={referenceObjId} isFormCom={true} isSelect={true} selects={keys} valueName={valueName} callback={this.select} sql={sql} /> : "未关联数据对象" <FormList rights={this.props.rights || []} notShowBack={true} value={custom} objId={referenceObjId} isFormCom={true} isSelect={true} selects={keys} valueName={valueName} callback={this.select} sql={sql} />
: "未关联数据对象"
: sqlModel.dataObjId ? : sqlModel.dataObjId ?
<FormList rights={this.props.rights || []} notShowBack={true} value={custom} objId={sqlModel.dataObjId} isFormCom={true} isSelect={true} selects={keys} valueName={valueName} callback={this.select} sql={sql} /> <FormList rights={this.props.rights || []} notShowBack={true} value={custom} objId={sqlModel.dataObjId} isFormCom={true} isSelect={true} selects={keys} valueName={valueName} callback={this.select} sql={sql} />
: <Table rowKey={valueName} size="small" dataSource={dataSource.list} columns={columns3} scroll={{ x: allWidth }} />} : <Table rowKey={valueName} size="small" dataSource={dataSource.list} columns={columns3} scroll={{ x: allWidth }} />}
</Modal> </Modal>
</div> </div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论