From 2aa5ab63b4bbce5c36dbb3511b205b3b5f6af9bd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 07 五月 2024 11:34:20 +0800 Subject: [PATCH] 2024-05-07 --- src/templates/sharecomponent/fieldscomponent/index.jsx | 127 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 118 insertions(+), 9 deletions(-) diff --git a/src/templates/sharecomponent/fieldscomponent/index.jsx b/src/templates/sharecomponent/fieldscomponent/index.jsx index c493ccd..52d7eb1 100644 --- a/src/templates/sharecomponent/fieldscomponent/index.jsx +++ b/src/templates/sharecomponent/fieldscomponent/index.jsx @@ -3,6 +3,7 @@ import { is, fromJS } from 'immutable' import { Button, Modal, Empty, notification } from 'antd' +import Api from '@/api' import Utils from '@/utils/utils.js' import EditCard from './editcard' @@ -11,8 +12,8 @@ class FieldsComponent extends Component { static propTpyes = { - type: PropTypes.string, // 鎼滅储鏉′欢娣诲姞銆佹樉绀哄垪娣诲姞 - config: PropTypes.object, // 瀹瑰櫒Id + type: PropTypes.string, + config: PropTypes.object, updatefield: PropTypes.func } @@ -23,10 +24,8 @@ selectCards: [] } - queryField = () => { - const { type, config } = this.props - // 鍒ゆ柇鏄惁宸查�夋嫨琛ㄥ悕 - if (!window.GLOB.tableFields || window.GLOB.tableFields.length === 0) { + checkField = () => { + if (!window.GLOB.publicTables || window.GLOB.publicTables.length === 0) { notification.warning({ top: 92, message: '璇烽�夋嫨琛ㄥ悕锛�', @@ -35,9 +34,110 @@ return } + window.GLOB.tableFields = window.GLOB.tableFields || [] + + let index = 0 + + let deffers = window.GLOB.publicTables.map(item => { + let tb = window.GLOB.tableFields.filter(tab => tab.tableName === item.TbName)[0] + + if (tb) { + return Promise.resolve(fromJS(tb).toJS()) + } + + return new Promise(resolve => { + setTimeout(() => { + Api.getCloudConfig({func: 'sPC_Get_FieldName', TBName: item.TbName}).then(res => { + let tabmsg = { + status: res.status, + message: res.message, + tableName: item.TbName, + columns: [] + } + + if (res.FDName && res.FDName.length > 0) { + tabmsg.columns = res.FDName.map(item => { + let _type = item.FieldType.toLowerCase() + let _datatype = item.FieldType.toLowerCase() + let _decimal = 0 + let _length = 50 + if (/^nvarchar/.test(_type)) { + try { // 瀛樺湪max + _length = +_type.match(/\d+/)[0] || 50 + } catch (e) { + _length = 4000 + } + _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' + } + + if (/^nvarchar/.test(_datatype)) { + _datatype = _datatype.replace(/^nvarchar/, 'Nvarchar') + } else if (/^decimal/.test(_datatype)) { + _datatype = _datatype.replace(/^decimal/, 'Decimal') + } else if (/^int/.test(_datatype)) { + _datatype = _datatype.replace(/^int/, 'Int') + } + + return { + field: item.FieldName || '', + label: item.FieldDec, + type: _type, + datatype: _type, + decimal: _decimal, + length: _length, + $datatype: _datatype + } + }) + } + + resolve(tabmsg) + }) + }, index * 50) + + index++ + }) + }) + Promise.all(deffers).then(response => { + let error = false + let _columns = response + + response.forEach(item => { + if (!item.status) { + error = item.message || '瀛楁鏌ヨ澶辫触锛�' + } + }) + + if (error) { + notification.warning({ + top: 92, + message: error, + duration: 5 + }) + } else { + window.GLOB.tableFields = _columns + this.queryField(_columns) + } + }) + } + + queryField = (tableFields) => { + const { type, config } = this.props + // 琛ㄥ瓧娈甸泦杞负map鏁版嵁 let columns = new Map() - window.GLOB.tableFields.forEach(table => { + tableFields.forEach(table => { table.columns.forEach(column => { columns.set(column.field.toLowerCase(), column) }) @@ -141,7 +241,7 @@ field: item.field, Hide: 'false', IsSort: 'true', - type: item.type, + type: item.type === 'number' ? 'number' : 'text', Width: item.type === 'number' ? 80 : 120 } @@ -149,6 +249,12 @@ newcard.decimal = item.decimal } else { newcard.fieldlength = item.length || 50 + } + + if (item.type === 'date') { + newcard.textFormat = 'YYYY-MM-DD' + } else if (item.type === 'datetime') { + newcard.textFormat = 'YYYY-MM-DD HH:mm:ss' } items.push(newcard) @@ -166,6 +272,7 @@ field: item.field, datatype: _t } + items.unshift(newcard) keys.push(item.field.toLowerCase()) }) @@ -225,6 +332,8 @@ newcard.span = 24 newcard.labelwidth = 16.2 } + } else if (item.type === 'text') { + newcard.fieldlength = item.length || 50 } items.push(newcard) @@ -281,7 +390,7 @@ return ( <div className="quickly-add"> - <Button type="primary" block onClick={this.queryField}>{label}</Button> + <Button type="primary" block onClick={this.checkField}>{label}</Button> {/* 鏍规嵁瀛楁鍚嶆坊鍔犳樉绀哄垪鍙婃悳绱㈡潯浠� */} <Modal wrapClassName="model-table-fieldmanage-modal" -- Gitblit v1.8.0