| | |
| | | |
| | | state = { |
| | | tables: [], // 系统表 |
| | | tableFields: [], // 已选表字段集 |
| | | selectedTables: [], // 已选表 |
| | | } |
| | | |
| | |
| | | |
| | | this.setState({ |
| | | selectedTables: tables |
| | | }, () => { |
| | | this.gettableFields() |
| | | }) |
| | | } |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | gettableFields = () => { |
| | | let deffers = this.state.selectedTables.map((item, i) => { |
| | | return new Promise(resolve => { |
| | | let param = {func: 'sPC_Get_FieldName', TBName: item.TbName} |
| | | if (window.GLOB.cloudServiceApi) { // 且存在云端地址 |
| | | param.rduri = window.GLOB.cloudServiceApi |
| | | param.userid = sessionStorage.getItem('CloudUserID') || '' |
| | | param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' |
| | | } |
| | | |
| | | setTimeout(() => { |
| | | Api.getSystemCacheConfig(param).then(res => { |
| | | res.TBName = item.TbName |
| | | resolve(res) |
| | | }) |
| | | }, (i + 1) * 100) |
| | | }) |
| | | }) |
| | | Promise.all(deffers).then(response => { |
| | | let _columns = [] |
| | | response.forEach(res => { |
| | | if (res.status) { |
| | | let tabmsg = { |
| | | tableName: res.TBName, |
| | | columns: res.FDName.map(item => { |
| | | let _type = item.FieldType.toLowerCase() |
| | | let _decimal = 0 |
| | | let _length = 50 |
| | | if (/^nvarchar/.test(_type)) { |
| | | try { // 存在max |
| | | _length = +_type.match(/\d+/)[0] || 50 |
| | | } catch (e) { |
| | | _length = 2048 |
| | | } |
| | | _type = 'text' |
| | | } else if (/^int/.test(_type)) { |
| | | _type = 'number' |
| | | } else if (/^decimal/.test(_type)) { |
| | | _decimal = _type.split(',')[1] |
| | | _decimal = parseInt(_decimal) |
| | | _type = 'number' |
| | | } else if (/^datetime/.test(_type)) { |
| | | _type = 'datetime' |
| | | } else if (/^date/.test(_type)) { |
| | | _type = 'date' |
| | | } else { |
| | | _type = 'text' |
| | | } |
| | | |
| | | return { |
| | | field: item.FieldName || '', |
| | | label: item.FieldDec, |
| | | type: _type, |
| | | datatype: _type, |
| | | decimal: _decimal, |
| | | length: _length, |
| | | $datatype: item.FieldType.toLowerCase() |
| | | } |
| | | }) |
| | | } |
| | | _columns.push(tabmsg) |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | this.setState({ |
| | | tableFields: _columns |
| | | }) |
| | | window.GLOB.tableFields = _columns |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 添加表名 |
| | | */ |
| | | onTableChange = (value) => { |
| | | const { config } = this.props |
| | | const { tables, tableFields, selectedTables } = this.state |
| | | const { tables, selectedTables } = this.state |
| | | |
| | | let _table = tables.filter(item => item.TbName === value)[0] |
| | | let isSelected = !!selectedTables.filter(cell => cell.TbName === value)[0] |
| | | if (!isSelected) { |
| | | let _tables = [...selectedTables, _table] |
| | | |
| | | window.GLOB.publicTables = _tables |
| | | if (selectedTables.findIndex(cell => cell.TbName === value) > -1) return |
| | | |
| | | this.setState({ |
| | | selectedTables: _tables |
| | | }) |
| | | let _tables = [...selectedTables, _table] |
| | | |
| | | let _config = {...config, tables: _tables} |
| | | |
| | | Api.getCloudConfig({func: 'sPC_Get_FieldName', TBName: value}).then(res => { |
| | | if (res.status) { |
| | | let tabmsg = { |
| | | tableName: _table.TbName, |
| | | columns: res.FDName.map(item => { |
| | | let _type = item.FieldType.toLowerCase() |
| | | let _decimal = 0 |
| | | let _length = 50 |
| | | window.GLOB.publicTables = _tables |
| | | |
| | | if (/^nvarchar/.test(_type)) { |
| | | try { // 存在max |
| | | _length = +_type.match(/\d+/)[0] || 50 |
| | | } catch (e) { |
| | | _length = 2048 |
| | | } |
| | | _type = 'text' |
| | | } else if (/^int/.test(_type)) { |
| | | _type = 'number' |
| | | } else if (/^decimal/.test(_type)) { |
| | | _decimal = _type.split(',')[1] |
| | | _decimal = parseInt(_decimal) |
| | | _type = 'number' |
| | | } else if (/^datetime/.test(_type)) { |
| | | _type = 'datetime' |
| | | } else if (/^date/.test(_type)) { |
| | | _type = 'date' |
| | | } else { |
| | | _type = 'text' |
| | | } |
| | | this.setState({ |
| | | selectedTables: _tables |
| | | }) |
| | | |
| | | return { |
| | | field: item.FieldName, |
| | | label: item.FieldDec, |
| | | type: _type, |
| | | datatype: _type, |
| | | decimal: _decimal, |
| | | length: _length, |
| | | $datatype: item.FieldType.toLowerCase() |
| | | } |
| | | }) |
| | | } |
| | | |
| | | let _columns = [...tableFields, tabmsg] |
| | | |
| | | this.setState({ |
| | | tableFields: _columns |
| | | }) |
| | | |
| | | window.GLOB.tableFields = _columns |
| | | |
| | | this.props.updatetable(_config) |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | let _config = {...config, tables: _tables} |
| | | |
| | | this.props.updatetable(_config) |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | deleteTable = (table) => { |
| | | const { config } = this.props |
| | | const { selectedTables, tableFields } = this.state |
| | | const { selectedTables } = this.state |
| | | |
| | | let _tables = selectedTables.filter(item => item.TbName !== table.TbName) |
| | | let _fields = tableFields.filter(item => item.tableName !== table.TbName) |
| | | |
| | | window.GLOB.publicTables = _tables |
| | | |
| | | this.setState({ |
| | | selectedTables: _tables, |
| | | tableFields: _fields |
| | | }) |
| | | |
| | | window.GLOB.tableFields = _fields |
| | | |
| | | this.props.updatetable({...config, tables: _tables}) |
| | | } |