| | |
| | | import React, {Component} from 'react' |
| | | import React, { Component } from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { fromJS } from 'immutable' |
| | | import { Modal, Button, Drawer, Tooltip } from 'antd' |
| | | import { Modal, Button, Tooltip, Table } from 'antd' |
| | | import { ClockCircleOutlined, CheckCircleOutlined, CloseCircleOutlined, LoadingOutlined } from '@ant-design/icons' |
| | | |
| | | import Api from '@/api' |
| | |
| | | successIds: [], |
| | | errorIds: [], |
| | | errorMsg: {}, |
| | | execId: '' |
| | | execId: '', |
| | | columns: [ |
| | | { |
| | | title: '组件名', |
| | | dataIndex: 'name', |
| | | width: '25%' |
| | | }, |
| | | { |
| | | title: '名称', |
| | | dataIndex: 'label', |
| | | width: '25%' |
| | | }, |
| | | { |
| | | title: '上级', |
| | | dataIndex: 'supName', |
| | | width: '20%', |
| | | render: (_, record) => { |
| | | if (record.supName) { |
| | | return `${record.supName}-${record.tabName}` |
| | | } |
| | | return '' |
| | | } |
| | | }, |
| | | { |
| | | title: '状态', |
| | | dataIndex: 'status', |
| | | align: 'center', |
| | | width: '15%', |
| | | render: (_, record) => { |
| | | let status = <ClockCircleOutlined /> |
| | | |
| | | if (this.state.successIds.includes(record.uuid)) { |
| | | status = <CheckCircleOutlined /> |
| | | } else if (this.state.errorIds.includes(record.uuid)) { |
| | | if (this.state.errorMsg[record.uuid]) { |
| | | status = <Tooltip placement="topLeft" title={this.state.errorMsg[record.uuid]}> |
| | | <CloseCircleOutlined /> |
| | | </Tooltip> |
| | | } else { |
| | | status = <CloseCircleOutlined /> |
| | | } |
| | | } else if (record.uuid === this.state.execId) { |
| | | status = <LoadingOutlined /> |
| | | } |
| | | return status |
| | | } |
| | | }, |
| | | { |
| | | title: 'DeepSeek', |
| | | dataIndex: 'DeepSeek', |
| | | align: 'center', |
| | | width: '15%', |
| | | render: (_, record) => { |
| | | return <span className="anticon anticon-deepseek" onClick={() => { |
| | | if (record.sql) { |
| | | sessionStorage.setItem('deepseek_sql', `请检查以下代码,指出其可优化的地方\n${record.sql}`) |
| | | |
| | | window.open('#/ai') |
| | | |
| | | setTimeout(() => { |
| | | sessionStorage.removeItem('deepseek_sql') |
| | | }, 0) |
| | | } |
| | | }}> |
| | | <svg viewBox="0 0 1391 1024" width="1.5em" height="1.5em" fill="currentColor"> |
| | | <path d="M1361.92 83.136c-14.272-7.04-20.416 6.272-28.736 12.992-2.816 2.24-5.248 5.12-7.68 7.68-20.8 22.336-45.056 36.864-76.8 35.136-46.464-2.56-86.08 12.032-121.152 47.616-7.552-43.904-32.256-70.08-69.888-86.912-19.712-8.768-39.68-17.472-53.376-36.48-9.664-13.44-12.288-28.48-17.216-43.264-3.008-8.96-6.08-18.112-16.32-19.712-11.2-1.728-15.552 7.68-19.968 15.424-17.536 32.128-24.32 67.52-23.68 103.296 1.6 80.448 35.52 144.576 103.04 190.144 7.68 5.312 9.6 10.56 7.168 18.176-4.608 15.68-10.048 30.976-14.912 46.592-3.072 10.112-7.68 12.352-18.304 8a308.224 308.224 0 0 1-97.28-66.176c-48-46.4-91.392-97.664-145.472-137.792a655.36 655.36 0 0 0-38.528-26.432c-55.232-53.76 7.232-97.792 21.632-103.04 15.104-5.376 5.312-24.128-43.52-23.936C652.032 24.704 607.36 41.024 550.4 62.72a156.8 156.8 0 0 1-26.048 7.68 542.016 542.016 0 0 0-161.408-5.696c-105.6 11.904-189.888 61.824-251.904 147.2C36.608 314.24 19.072 430.848 40.512 552.32c22.528 128 87.808 234.048 188.16 316.992 104 85.888 223.808 128 360.512 120 82.944-4.864 175.424-16 279.68-104.32 26.368 13.056 53.888 18.24 99.712 22.272 35.2 3.328 69.184-1.792 95.424-7.232 41.216-8.704 38.4-46.848 23.424-53.888-120.576-56.32-94.208-33.408-118.272-51.84 61.376-72.768 153.792-148.224 189.952-392.768 2.816-19.392 0.384-31.552 0-47.36-0.256-9.536 1.92-13.312 12.8-14.4a231.04 231.04 0 0 0 86.592-26.56c78.272-42.88 109.696-113.024 117.184-197.184 1.088-12.928-0.256-26.24-13.76-32.96z m-681.408 757.76c-116.928-92.096-173.696-122.368-197.12-120.96-21.888 1.152-17.984 26.304-13.184 42.624 5.12 16.128 11.648 27.328 20.8 41.408 6.464 9.408 10.752 23.424-6.272 33.92-37.76 23.424-103.232-7.872-106.24-9.472-76.288-44.8-140.032-104.192-184.96-185.344-43.264-78.08-68.48-161.92-72.576-251.328-1.152-21.632 5.184-29.312 26.688-33.152a265.6 265.6 0 0 1 85.696-2.24c119.296 17.472 220.928 71.04 306.048 155.52 48.768 48.32 85.504 105.92 123.392 162.176 40.256 59.776 83.648 116.672 138.88 163.392 19.392 16.32 35.072 28.8 49.92 37.952-44.928 5.056-119.872 6.08-171.008-34.496z m56.064-361.024a17.152 17.152 0 1 1 2.752 9.6 16.896 16.896 0 0 1-2.752-9.664z m174.08 89.472a102.72 102.72 0 0 1-33.024 8.96 70.528 70.528 0 0 1-44.736-14.272c-15.296-12.8-26.176-19.968-30.848-42.496a99.264 99.264 0 0 1 0.832-32.96c4.032-18.368-0.384-30.08-13.248-40.768-10.624-8.768-23.872-11.072-38.592-11.072a31.168 31.168 0 0 1-14.272-4.416c-6.144-3.072-11.136-10.752-6.336-20.16 1.536-3.008 8.96-10.304 10.752-11.712 19.84-11.328 42.88-7.68 64.192 0.896 19.712 8.064 34.56 22.848 56 43.776 21.952 25.28 25.792 32.384 38.4 51.328 9.856 14.848 18.816 30.208 24.96 47.616 3.776 10.88-1.152 19.776-14.08 25.28z"></path> |
| | | </svg> |
| | | </span> |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | |
| | | sqlList = [] |
| | | verSqls = [] |
| | | linkMain = null |
| | | modules = null |
| | | supError = null |
| | | |
| | | trigger = () => { |
| | | let config = fromJS(this.props.config).toJS() |
| | |
| | | return |
| | | } |
| | | |
| | | this.modules = {} |
| | | this.supError = null |
| | | |
| | | this.getModules(config.components, config.interfaces) |
| | | |
| | | config.interfaces && config.interfaces.forEach(item => { |
| | | if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { |
| | | let id = item.setting.supModule[item.setting.supModule.length - 1] |
| | | if (!this.modules[id]) { |
| | | this.supError = item.name + '(公共数据源)' |
| | | } |
| | | } |
| | | }) |
| | | |
| | | this.checklink(config.components) |
| | | |
| | | if (this.supError) { |
| | | Modal.warning({ |
| | | title: this.supError + ':上级组件不存在!', |
| | | okText: '知道了' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | let getMsearch = (components) => { |
| | | let val = null |
| | | components.forEach(com => { |
| | | if (com.type !== 'search') return |
| | | |
| | | if (com.wrap && com.wrap.supModule && com.wrap.supModule.length > 0) { |
| | | let supModule = com.wrap.supModule[com.wrap.supModule.length - 1]; |
| | | |
| | | (com.search || []).forEach(item => { |
| | | if (item.type === 'datemonth') { |
| | | if (item.initval && item.dateShift) { |
| | | val = {supModule: supModule, name: com.name} |
| | | } |
| | | } else if (item.type === 'daterange') { |
| | | if (item.initval && item.dateShift) { |
| | | val = {supModule: supModule, name: com.name} |
| | | } |
| | | } else if ((item.type === 'select' || item.type === 'link') && item.resourceType === '1') { |
| | | if (/@BID@/ig.test(item.dataSource)) { |
| | | val = {supModule: supModule, name: com.name} |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | return val |
| | | } |
| | | |
| | | let checkSearch = (components, mSearch) => { |
| | | components.forEach(item => { |
| | | if (error) return |
| | | |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(tab => { |
| | | let _ms = getMsearch(tab.components) |
| | | |
| | | if (_ms) { |
| | | checkSearch(tab.components, _ms) |
| | | } else { |
| | | checkSearch(tab.components, mSearch) |
| | | } |
| | | }) |
| | | return |
| | | } else if (item.type === 'group') { |
| | | checkSearch(item.components, mSearch) |
| | | return |
| | | } else if (!mSearch || !item.setting) { |
| | | return |
| | | } else if (!(item.type === 'table' || (item.type === 'card' && ['datacard', 'dualdatacard'].includes(item.subtype)))) { |
| | | return |
| | | } |
| | | |
| | | if (item.setting.useMSearch === 'true' && item.setting.supModule && item.setting.supModule[0] !== 'empty') { |
| | | let id = item.setting.supModule[item.setting.supModule.length - 1] |
| | | if (mSearch.supModule !== id) { |
| | | error = `${item.name} 使用了外部搜索,但与外部搜索(${mSearch.name})的上级组件不一致。` |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | checkSearch(config.components, getMsearch(config.components)) |
| | | |
| | | if (error) { |
| | | Modal.warning({ |
| | | title: error, |
| | | okText: '知道了' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | this.sqlList = [] |
| | | this.linkMain = [] |
| | | |
| | | let regs = [ |
| | | { reg: /@userName@/ig, value: `'User_Name'` }, |
| | |
| | | if (process) { |
| | | regs.push({ reg: /@works_flow_code@/ig, value: `'1949-10-01 15:00:00'` }) |
| | | } |
| | | |
| | | if (config.interfaces && config.interfaces.length > 0) { |
| | | config.interfaces.forEach(m => { |
| | | if (m.status !== 'true' || m.setting.interType !== 'system') return false |
| | | |
| | | let sql = this.formatDataSource(m, regs) |
| | | |
| | | this.sqlList.push({label: m.setting.name, children: [{label: '数据源', sql: sql}]}) |
| | | }) |
| | | } |
| | | |
| | | this.filterComponent(config.components, [], regs, process) |
| | | let _mainSearch = [] |
| | | |
| | | let sqls = [] |
| | | let foreachSql = (list, name, tabName = '', supName = '') => { |
| | | list.forEach(item => { |
| | | if (item.children) { |
| | | if (item.tabName) { |
| | | item.children.forEach(cell => { |
| | | if (cell.children) { |
| | | foreachSql(cell.children, cell.label, item.tabName, name) |
| | | } |
| | | }) |
| | | } else { |
| | | foreachSql(item.children, name, tabName, supName) |
| | | } |
| | | } else if (item.sql) { |
| | | sqls.push({uuid: Utils.getuuid() ,label: item.label, name: name, tabName: tabName, supName: supName, sql: item.sql}) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | this.sqlList.forEach(item => { |
| | | if (item.children) { |
| | | foreachSql(item.children, item.label) |
| | | } |
| | | }) |
| | | |
| | | if (sqls.length === 0) { |
| | | Modal.warning({ |
| | | title: '当前菜单无可验证脚本。', |
| | | okText: '知道了' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | this.verSqls = sqls |
| | | let that = this |
| | | |
| | | Modal.confirm({ |
| | | content: `当前菜单共${this.sqlList.length}个组件,${sqls.length}项脚本需要检验${sqls.length > 20 ? ',时间大概需要' + parseInt(sqls.length / 2) + '秒' : ''}。`, |
| | | onOk() { |
| | | that.setState({visible: true, status: 'loading', sqlList: fromJS(sqls).toJS(), successIds: [], errorIds: [], errorMsg: {}, execId: ''}, () => { |
| | | that.roopSql() |
| | | }) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | | |
| | | this.sqlList = [] |
| | | } |
| | | |
| | | filterComponent = (components, mainSearch, regs, process, ispop = false) => { |
| | | let appType = sessionStorage.getItem('appType') |
| | | let _mainSearch = mainSearch || [] |
| | | |
| | | if (appType === 'mob') { |
| | | if (sessionStorage.getItem('appType') === 'mob') { |
| | | let search = [] |
| | | let ms = null |
| | | components.forEach(item => { |
| | | config.components.forEach(item => { |
| | | if (item.type === 'topbar' && item.wrap.type !== 'navbar' && item.search) { |
| | | ms = item.search |
| | | } else if (item.type === 'search' && item.wrap.field) { |
| | |
| | | _mainSearch = search |
| | | } |
| | | } else { |
| | | components.forEach(component => { |
| | | config.components.forEach(component => { |
| | | if (component.type !== 'search') return |
| | | |
| | | _mainSearch = component.search || [] |
| | | }) |
| | | } |
| | | |
| | | if (config.interfaces && config.interfaces.length > 0) { |
| | | config.interfaces.forEach(m => { |
| | | if (m.status !== 'true' || m.setting.interType !== 'system') return false |
| | | |
| | | m.setting.laypage = 'false' |
| | | m.setting.$top = true |
| | | |
| | | let sql = this.formatDataSource(m, regs, _mainSearch) |
| | | |
| | | this.sqlList.push({label: m.setting.name, children: [{label: '数据源', sql: sql}]}) |
| | | }) |
| | | } |
| | | |
| | | this.filterComponent(config.components, _mainSearch, regs, process) |
| | | |
| | | let sqls = [] |
| | | let foreachSql = (list, name, tabName = '', supName = '') => { |
| | | list.forEach(item => { |
| | | if (item.children) { |
| | | if (item.tabName) { |
| | | item.children.forEach(cell => { |
| | | if (cell.children) { |
| | | foreachSql(cell.children, cell.label, item.tabName, name) |
| | | } |
| | | }) |
| | | } else { |
| | | foreachSql(item.children, name, tabName, supName) |
| | | } |
| | | } else if (item.sql) { |
| | | sqls.push({uuid: Utils.getuuid() ,label: item.label, name: name, tabName: tabName, supName: supName, sql: item.sql}) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | this.sqlList.forEach(item => { |
| | | if (item.children) { |
| | | foreachSql(item.children, item.label) |
| | | } |
| | | }) |
| | | |
| | | if (sqls.length === 0) { |
| | | Modal.warning({ |
| | | title: '当前菜单无可验证脚本。', |
| | | okText: '知道了' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | this.verSqls = sqls |
| | | let that = this |
| | | |
| | | let formErrors = [] |
| | | if (this.linkMain.length) { |
| | | let map = new Map() |
| | | if (config.interfaces) { |
| | | config.interfaces.forEach(m => { |
| | | if (m.status !== 'true' || !m.columns) return false |
| | | |
| | | map.set(m.uuid, m.columns) |
| | | }) |
| | | } |
| | | |
| | | let forEachComs = (components) => { |
| | | components.forEach(item => { |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(tab => { |
| | | forEachComs(tab.components) |
| | | }) |
| | | } else if (item.type === 'group') { |
| | | forEachComs(item.components) |
| | | } else if (item.columns && item.columns.length) { |
| | | map.set(item.uuid, item.columns) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | forEachComs(config.components) |
| | | |
| | | this.linkMain.forEach(item => { |
| | | if (item.config.wrap && item.config.wrap.datatype === 'public') return |
| | | |
| | | let supModule = '' |
| | | if (item.config.wrap && item.config.wrap.datatype === 'static') { |
| | | supModule = item.config.wrap.supModule ? item.config.wrap.supModule[item.config.wrap.supModule.length - 1] : '' |
| | | } else if (item.config.setting && item.config.setting.supModule) { |
| | | supModule = item.config.setting.supModule[item.config.setting.supModule.length - 1] || '' |
| | | if (supModule === 'empty') { |
| | | supModule = '' |
| | | } |
| | | } |
| | | |
| | | if (!supModule) return |
| | | |
| | | let cols = map.get(supModule) |
| | | |
| | | if (!cols) { |
| | | formErrors.push(<div key={item.forms[0].uuid}> |
| | | 组件<span style={{color: '#1890ff', margin: '0 2px 0 2px'}}>{item.config.name}{item.label ? '-' + item.label : ''}</span>中表单<span style={{color: 'orange', margin: '0 2px 0 2px'}}>{item.forms.map(c => c.label + ' (' + c.field + ')').join('、')}</span>无效 |
| | | </div>) |
| | | } else { |
| | | let _forms = [] |
| | | let _cols = cols.map(col => col.field.toLowerCase()) |
| | | |
| | | item.forms.forEach(m => { |
| | | if (_cols.includes(m.field.toLowerCase())) return |
| | | |
| | | _forms.push(m.label + ' (' + m.field + ')') |
| | | }) |
| | | |
| | | if (_forms.length) { |
| | | formErrors.push(<div key={item.forms[0].uuid}> |
| | | 组件<span style={{color: '#1890ff', margin: '0 2px 0 2px'}}>{item.config.name}{item.label ? '-' + item.label : ''}</span>中表单<span style={{color: 'orange', margin: '0 2px 0 2px'}}>{_forms.join('、')}</span>无效 |
| | | </div>) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | formErrors = formErrors.length ? formErrors : '' |
| | | |
| | | Modal.confirm({ |
| | | content: <div style={{paddingLeft: '38px'}}> |
| | | {`当前菜单共${this.sqlList.length}个组件,${sqls.length}项脚本需要检验${sqls.length > 20 ? ',时间大概需要' + parseInt(sqls.length / 2) + '秒' : ''}。`} |
| | | {formErrors} |
| | | </div>, |
| | | onOk() { |
| | | that.setState({visible: true, status: 'loading', sqlList: fromJS(sqls).toJS(), successIds: [], errorIds: [], errorMsg: {}, execId: ''}, () => { |
| | | that.roopSql() |
| | | }) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | | |
| | | this.sqlList = [] |
| | | } |
| | | |
| | | getModules = (components, interfaces, sups = []) => { |
| | | components.forEach(item => { |
| | | this.modules[item.uuid] = [...sups, item.uuid] |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(f_tab => { |
| | | this.getModules(f_tab.components, null, [...sups, item.uuid, f_tab.uuid]) |
| | | }) |
| | | } else if (item.type === 'group') { |
| | | item.components.forEach(cell => { |
| | | this.modules[cell.uuid] = [...sups, item.uuid, cell.uuid] |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | if (interfaces && interfaces.length > 0) { |
| | | interfaces.forEach(item => { |
| | | this.modules[item.uuid] = [item.uuid] |
| | | }) |
| | | } |
| | | } |
| | | |
| | | checklink = (components, suplabel = '') => { |
| | | if (this.supError) return |
| | | components.forEach(item => { |
| | | if (this.supError) return |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(f_tab => { |
| | | this.checklink(f_tab.components, suplabel) |
| | | }) |
| | | } else if (item.type === 'group' ) { |
| | | item.components && this.checklink(item.components, suplabel) |
| | | } else { |
| | | if (item.wrap && item.wrap.supType === 'multi') { |
| | | if (item.setting && item.setting.supModule) { |
| | | item.setting.supModule = '' |
| | | } |
| | | if (item.supNodes) { |
| | | item.supNodes.forEach(cell => { |
| | | let id = cell.nodes[cell.nodes.length - 1] |
| | | if (!this.modules[id]) { |
| | | this.supError = suplabel + item.name |
| | | } |
| | | }) |
| | | } |
| | | } else if ((item.wrap && item.wrap.datatype === 'static') || (['mainsearch', 'voucher'].includes(item.subtype))) { |
| | | if (item.wrap && item.wrap.supModule && item.wrap.supModule[0]) { |
| | | let id = item.wrap.supModule[item.wrap.supModule.length - 1] |
| | | if (!this.modules[id]) { |
| | | this.supError = suplabel + item.name |
| | | } |
| | | } |
| | | } else if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { |
| | | let id = item.setting.supModule[item.setting.supModule.length - 1] |
| | | if (!this.modules[id]) { |
| | | this.supError = suplabel + item.name |
| | | } |
| | | } |
| | | |
| | | if (this.supError) return |
| | | |
| | | if (['card', 'carousel', 'timeline'].includes(item.type)) { |
| | | item.subcards.forEach(card => { |
| | | card.elements && card.elements.forEach(cell => { |
| | | if (cell.eleType === 'button' && cell.OpenType === 'popview') { |
| | | if (cell.config && cell.config.components && cell.config.enabled) { |
| | | this.checklink(cell.config.components, item.name + '-' + cell.label + '(弹窗标签)-') |
| | | } |
| | | } |
| | | }) |
| | | card.backElements && card.backElements.forEach(cell => { |
| | | if (cell.eleType === 'button' && cell.OpenType === 'popview') { |
| | | if (cell.config && cell.config.components && cell.config.enabled) { |
| | | this.checklink(cell.config.components, item.name + '-' + cell.label + '(弹窗标签)-') |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } else if (item.type === 'balcony') { |
| | | item.elements && item.elements.forEach(cell => { |
| | | if (cell.eleType === 'button' && cell.OpenType === 'popview') { |
| | | if (cell.config && cell.config.components && cell.config.enabled) { |
| | | this.checklink(cell.config.components, item.name + '-' + cell.label + '(弹窗标签)-') |
| | | } |
| | | } |
| | | }) |
| | | } else if (item.type === 'table' && item.cols) { |
| | | let loopCol = (cols) => { |
| | | cols.forEach(col => { |
| | | if (col.type === 'colspan' && col.subcols) { |
| | | loopCol(col.subcols) |
| | | } else if (col.type === 'custom' && col.elements) { |
| | | col.elements.forEach(cell => { |
| | | if (cell.eleType === 'button' && cell.OpenType === 'popview') { |
| | | if (cell.config && cell.config.components && cell.config.enabled) { |
| | | this.checklink(cell.config.components, item.name + '-' + cell.label + '(弹窗标签)-') |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | loopCol(item.cols) |
| | | } |
| | | |
| | | item.action && item.action.forEach(cell => { |
| | | if (cell.OpenType === 'popview') { |
| | | if (cell.config && cell.config.components && cell.config.enabled) { |
| | | this.checklink(cell.config.components, item.name + '-' + cell.label + '(弹窗标签)-') |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | filterComponent = (components, mainSearch, regs, process, ispop = false) => { |
| | | let appType = sessionStorage.getItem('appType') |
| | | |
| | | components.forEach(item => { |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(tab => { |
| | | if (tab.hide === 'true') return |
| | | |
| | | let _mainSearch = mainSearch || [] |
| | | |
| | | if (appType !== 'mob') { |
| | | tab.components.forEach(com => { |
| | | if (com.type !== 'search') return |
| | | |
| | | _mainSearch = com.search || [] |
| | | }) |
| | | } |
| | | this.filterComponent(tab.components, _mainSearch, regs, process) |
| | | }) |
| | | } else if (item.type === 'group') { |
| | | this.filterComponent(item.components, _mainSearch, regs, process) |
| | | this.filterComponent(item.components, mainSearch, regs, process) |
| | | } else { |
| | | let children = [] |
| | | if (item.wrap && item.setting) { |
| | |
| | | } |
| | | |
| | | if (item.setting && item.setting.interType === 'system') { |
| | | let sql = this.formatDataSource(item, regs, _mainSearch) |
| | | if (item.format === 'object') { |
| | | item.setting.laypage = 'false' |
| | | item.setting.$top = true |
| | | } |
| | | |
| | | let sql = this.formatDataSource(item, regs, mainSearch) |
| | | |
| | | children.push({label: '数据源', sql: sql}) |
| | | } else if (item.setting && item.setting.useMSearch === 'true') { |
| | | let searches = item.search || [] |
| | | if (_mainSearch.length > 0) { |
| | | searches = [...searches, ..._mainSearch] |
| | | if (mainSearch.length > 0) { |
| | | searches = [...searches, ...mainSearch] |
| | | } |
| | | item.$searches = fromJS(searches).toJS() |
| | | } |
| | |
| | | getCols(item.cols) |
| | | |
| | | if (item.subtype === 'editable' && item.submit.intertype === 'system') { |
| | | let sql = this.getEditTableSql(item.submit, item.cols, item.columns) |
| | | let sql = this.getEditTableSql(item.submit, item.cols, item.columns, item.setting) |
| | | children.push({label: '提交', sql: sql}) |
| | | } |
| | | } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') { |
| | |
| | | if (!group.subButton.Ot) { |
| | | group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl' |
| | | } |
| | | |
| | | if (group.fields) { |
| | | let cells = group.fields.filter(cell => cell.type === 'linkMain') |
| | | |
| | | if (cells.length) { |
| | | this.linkMain.push({ |
| | | config: item, |
| | | forms: cells |
| | | }) |
| | | } |
| | | } |
| | | |
| | | let res = this.resetButton(item, group.subButton, process, group) |
| | | |
| | | if (res) { |
| | |
| | | |
| | | resetButton = (item, cell, process, group, isback) => { |
| | | let sql = '' |
| | | if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { |
| | | if (cell.modal && cell.modal.fields.length) { |
| | | let cells = cell.modal.fields.filter(n => n.type === 'linkMain') |
| | | |
| | | if (cells.length) { |
| | | this.linkMain.push({ |
| | | config: item, |
| | | forms: cells, |
| | | label: cell.label |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | if (['exec', 'prompt', 'pop', 'form', 'formSubmit'].includes(cell.OpenType)) { |
| | | if (cell.intertype === 'system' || cell.procMode === 'system') { // 系统接口 |
| | | if (item.subtype === 'dualdatacard' && isback) { |
| | |
| | | } |
| | | } else if (cell.OpenType === 'excelIn') { |
| | | if (cell.intertype === 'system') { |
| | | sql = this.getExcelInSql(cell) |
| | | sql = this.getExcelInSql(cell, process) |
| | | } |
| | | } else if (cell.OpenType === 'excelOut') { |
| | | if (cell.intertype === 'system' && cell.verify && cell.verify.dataType === 'custom') { |
| | |
| | | } else if (cell.OpenType === 'funcbutton') { |
| | | if (cell.funcType === 'print') { |
| | | |
| | | } else if ((cell.funcType === 'refund' || cell.funcType === 'pay') && cell.payMode === 'system') { |
| | | sql = this.getPaySql(cell, item) |
| | | } |
| | | } else if (cell.OpenType === 'innerpage' || cell.OpenType === 'outerpage') { |
| | | if (cell.pageTemplate === 'pay' && cell.payMode === 'system') { |
| | | sql = this.getPaySql(cell, item) |
| | | } |
| | | } else if (cell.OpenType === 'popview') { |
| | | if (cell.config && cell.config.components) { |
| | |
| | | if (process) { |
| | | regs.push({ reg: /@works_flow_code@/ig, value: `'1949-10-01 15:00:00'` }) |
| | | } |
| | | this.filterComponent(cell.config.components, [], regs, process, true) |
| | | |
| | | let _mainSearch = [] |
| | | |
| | | if (sessionStorage.getItem('appType') === 'mob') { |
| | | cell.config.components.forEach(item => { |
| | | if (item.type === 'search' && item.wrap.field) { |
| | | _mainSearch.push({ |
| | | type: 'text', |
| | | label: item.wrap.label, |
| | | field: item.wrap.field, |
| | | match: item.wrap.match, |
| | | required: item.wrap.required, |
| | | value: item.wrap.initval || '' |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | cell.config.components.forEach(component => { |
| | | if (component.type !== 'search') return |
| | | |
| | | _mainSearch = component.search || [] |
| | | }) |
| | | } |
| | | |
| | | this.filterComponent(cell.config.components, _mainSearch, regs, process, true) |
| | | |
| | | if (this.sqlPopList.length) { |
| | | sql = fromJS(this.sqlPopList).toJS() |
| | |
| | | } |
| | | }) |
| | | |
| | | if (!_prev) return '' |
| | | if (!_prev) return _back |
| | | |
| | | let tbs = [] |
| | | _prev.replace(/\n|\r/g, ' ').split(/\sdeclare\s/ig).forEach(line => { |
| | | if (!/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) return |
| | | let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(.+(\)|date|datetime)\s*\)/ig) |
| | | _prev.replace(/\/\*[^/*]+\*\//g, '').replace(/\n|\r/g, ' ').split(/\sdeclare\s+|\screate\s+table\s+/ig).forEach(line => { |
| | | if (/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) { |
| | | line = line.replace(/\s+table\s+\(/, '(') |
| | | } |
| | | if (!/^\s*(@|#)[a-zA-Z0-9_]+\s*\(/ig.test(line)) return |
| | | let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s*\(.+(\)|date|datetime)\s*\)/ig) |
| | | |
| | | if (tb && tb.length === 1) { |
| | | tbs.push(tb[0]) |
| | |
| | | |
| | | if (!tbName) return |
| | | |
| | | let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(\s*/, '').replace(/\s*\)$/, '') |
| | | let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s*\(\s*/, '').replace(/\s*\)$/, '') |
| | | content = content.replace(/decimal\(\s*\d+\s*,\s*\d+\s*\)/ig, 'decimal') |
| | | |
| | | let keys = [] |
| | |
| | | let BID = Utils.getuuid() |
| | | let verify = btn.verify || {} |
| | | let _actionType = null |
| | | let setting = component.setting |
| | | let setting = component.setting || {} |
| | | let columns = component.columns || [] |
| | | |
| | | if (verify.invalid === 'true') { |
| | | if (component.wrap && (component.wrap.datatype === 'static' || component.wrap.datatype === 'public')) { |
| | | verify.invalid = 'false' |
| | | } else if (setting.maxScript && setting.maxScript >= 300) { |
| | | verify.invalid = 'false' |
| | | } else if (!setting.dataresource) { |
| | | verify.invalid = 'false' |
| | | } else if (btn.intertype !== 'system' && btn.procMode !== 'system') { |
| | | verify.invalid = 'false' |
| | | } else if (btn.sqlType === 'insert') { |
| | | verify.invalid = 'false' |
| | | } else if (btn.Ot === 'notRequired') { |
| | | verify.invalid = 'false' |
| | | } |
| | | } |
| | | if (verify.uniques && verify.uniques.length > 0 && btn.Ot === 'requiredOnce') { |
| | | if (component.wrap && (component.wrap.datatype === 'static' || component.wrap.datatype === 'public')) { |
| | | verify.uniques = [] |
| | | } |
| | | } |
| | | |
| | | if (verify.default !== 'false') { // 判断是否使用默认sql |
| | | _actionType = btn.sqlType |
| | |
| | | }) |
| | | |
| | | // 需要声明的变量集 |
| | | let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'mk_deleted', 'bid'] |
| | | let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'mk_deleted', 'bid', 'mk_submit_type'] |
| | | |
| | | // 主键字段 |
| | | let primaryKey = setting.primaryKey || 'id' |
| | |
| | | writein: item.writein !== 'false', |
| | | type: item.type |
| | | } |
| | | |
| | | if (item.type === 'linkMain' && item.verifyVal === 'true') { |
| | | _item.$verify = true |
| | | _item.label = item.label |
| | | } |
| | | |
| | | if (_item.type === 'datemonth') { |
| | | _item.type = 'text' |
| | | } else if (_item.type === 'number' || _item.type === 'rate') { |
| | | _item.fieldlen = item.decimal || 0 |
| | | } else if (_item.type === 'date') { |
| | | } else if (_item.type === 'date') { |
| | | _item.type = item.declareType === 'nvarchar(50)' ? 'text' : 'date' |
| | | } else if (_item.type === 'datetime') { |
| | | _item.type = 'date' |
| | | } else if (item.declare === 'decimal') { |
| | | _item.type = 'number' |
| | | _item.fieldlen = item.decimal || 0 |
| | |
| | | writein: item.writein !== 'false', |
| | | type: item.type |
| | | } |
| | | |
| | | if (item.type === 'linkMain' && item.verifyVal === 'true') { |
| | | _item.$verify = true |
| | | _item.label = item.label |
| | | } |
| | | |
| | | if (_item.type === 'datemonth') { |
| | | _item.type = 'text' |
| | | } else if (_item.type === 'number' || _item.type === 'rate') { |
| | | _item.fieldlen = item.decimal || 0 |
| | | } else if (_item.type === 'date') { |
| | | } else if (_item.type === 'date') { |
| | | _item.type = item.declareType === 'nvarchar(50)' ? 'text' : 'date' |
| | | } else if (_item.type === 'datetime') { |
| | | _item.type = 'date' |
| | | } else if (item.declare === 'decimal') { |
| | | _item.type = 'number' |
| | | _item.fieldlen = item.decimal || 0 |
| | |
| | | }) |
| | | } |
| | | } |
| | | |
| | | if (formdata && formdata.findIndex(item => item.type === 'vercode') > -1) { |
| | | formdata.push({ |
| | | type: 'text', |
| | | fieldlen: 50, |
| | | writein: false, |
| | | key: 'mk_timestamp' |
| | | }, { |
| | | type: 'text', |
| | | fieldlen: 50, |
| | | writein: false, |
| | | key: 'mk_send_type' |
| | | }, { |
| | | type: 'text', |
| | | fieldlen: 50, |
| | | writein: false, |
| | | key: 'mk_n_id' |
| | | }) |
| | | } |
| | | |
| | | let verifyValSql = '' |
| | | // 获取字段键值对 |
| | | formdata && formdata.forEach(form => { |
| | | if (form.$verify) { |
| | | verifyValSql += ` |
| | | if @${form.key}=${form.type === 'number' ? 0 : `''`} |
| | | begin |
| | | select @errorcode='E',@retmsg='${form.label},关联主表失效' |
| | | goto aaa |
| | | end |
| | | ` |
| | | } |
| | | |
| | | let _key = form.key.toLowerCase() |
| | | if (!_initvars.includes(_key)) { |
| | | _initvars.push(_key) |
| | |
| | | } else if (form.type === 'rate') { |
| | | _type = `decimal(18,2)` |
| | | } |
| | | |
| | | if (['appkey'].includes(_key)) return |
| | | |
| | | _declarefields.push(`@${_key} ${_type}`) |
| | | } |
| | | }) |
| | | |
| | | // 添加数据中字段,表单值优先(按钮不选行或多行拼接时跳过) |
| | | if (btn.Ot !== 'notRequired' && columns && columns.length > 0) { |
| | | const setField = (col) => { |
| | | if (btn.Ot !== 'notRequired' && columns.length > 0) { |
| | | columns.forEach(col => { |
| | | if (!col.field) return |
| | | let _key = col.field.toLowerCase() |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | if (!_vars.includes(_key)) { |
| | | if (!_vars.includes(_key) && !['appkey'].includes(_key)) { |
| | | _vars.push(_key) |
| | | |
| | | if (col.datatype) { |
| | | _declarefields.push(`@${_key} ${col.datatype}`) |
| | | } else { |
| | | if (col.fieldlength && col.fieldlength > 4000) { |
| | | col.fieldlength = 'max' |
| | | } |
| | | |
| | | let _type = `nvarchar(${col.fieldlength || 50})` |
| | | |
| | | if (col.type === 'number') { |
| | | let _length = col.decimal ? col.decimal : 0 |
| | | _type = `decimal(18,${_length})` |
| | | } else if (col.type === 'picture' || col.type === 'textarea') { |
| | | _type = `nvarchar(${col.fieldlength || 512})` |
| | | } |
| | | |
| | | _declarefields.push(`@${_key} ${_type}`) |
| | | } |
| | | } |
| | | } |
| | | |
| | | columns.forEach(col => { |
| | | if (col.type === 'colspan' || col.type === 'old_colspan') { |
| | | col.subcols.forEach(cell => { |
| | | setField(cell) |
| | | }) |
| | | } else { |
| | | setField(col) |
| | | _declarefields.push(`@${_key} ${col.datatype || 'nvarchar(50)'}`) |
| | | } |
| | | }) |
| | | } |
| | |
| | | if (_declarefields) { |
| | | _declarefields = ',' + _declarefields |
| | | } |
| | | _sql = `Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50),@ModularDetailCode nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@mk_deleted int,@bid nvarchar(50)${_declarefields} |
| | | _sql = `Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50),@ModularDetailCode nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@mk_deleted int,@bid nvarchar(50),@mk_submit_type nvarchar(50)${_declarefields} |
| | | ` |
| | | |
| | | let userName = 'User_Name' |
| | |
| | | // 初始化凭证及用户信息字段 |
| | | _sql += ` |
| | | /* 凭证及用户信息初始化赋值 */ |
| | | select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}', @mk_deleted=1, @bid='${BID}', @BillCode='', @ModularDetailCode='' |
| | | select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}', @mk_deleted=1, @bid='${BID}', @mk_submit_type='', @BillCode='', @ModularDetailCode='' |
| | | ` |
| | | |
| | | // 表单变量赋值 |
| | |
| | | } |
| | | |
| | | // 失效验证,添加数据时不用 |
| | | if (btn.sqlType !== 'insert' && btn.Ot !== 'notRequired' && verify.invalid === 'true' && setting.dataresource) { |
| | | if (verify.invalid === 'true') { |
| | | let datasource = setting.dataresource |
| | | let customScript = setting.customScript || '' |
| | | let orderBy = setting.order |
| | | |
| | | let regoptions = [{ |
| | | reg: new RegExp('@userName@', 'ig'), |
| | | value: `'${userName}'` |
| | | }, { |
| | | reg: new RegExp('@fullName@', 'ig'), |
| | | value: `'${fullName}'` |
| | | }, { |
| | | reg: new RegExp('@orderBy@', 'ig'), |
| | | value: setting.order || primaryKey |
| | | }, { |
| | | reg: new RegExp('@pageSize@', 'ig'), |
| | | value: 1 |
| | | }, { |
| | | reg: new RegExp('@pageIndex@', 'ig'), |
| | | value: 1 |
| | | }] |
| | | |
| | | if (setting.queryType === 'statistics' || customScript) { |
| | | let searches = formatSearch(component.$searches || []) |
| | | let regoptions = getSearchRegs(searches) |
| | | |
| | | regoptions.push({ |
| | | reg: new RegExp('@userName@', 'ig'), |
| | | value: `'${userName}'` |
| | | }, { |
| | | reg: new RegExp('@fullName@', 'ig'), |
| | | value: `'${fullName}'` |
| | | }, { |
| | | reg: new RegExp('@orderBy@', 'ig'), |
| | | value: orderBy |
| | | }, { |
| | | reg: new RegExp('@pageSize@', 'ig'), |
| | | value: 999999 |
| | | }, { |
| | | reg: new RegExp('@pageIndex@', 'ig'), |
| | | value: 1 |
| | | }) |
| | | |
| | | regoptions.forEach(item => { |
| | | datasource = datasource.replace(item.reg, item.value) |
| | | customScript = customScript.replace(item.reg, item.value) |
| | | }) |
| | | } |
| | | regoptions.forEach(item => { |
| | | datasource = datasource.replace(item.reg, item.value) |
| | | customScript = customScript.replace(item.reg, item.value) |
| | | }) |
| | | |
| | | if (customScript) { |
| | | _sql += ` |
| | |
| | | |
| | | verify.billcodes.forEach(item => { |
| | | let _key = item.field.toLowerCase() |
| | | let _linkKey = item.linkField ? item.linkField.toLowerCase() : '' |
| | | |
| | | if (!keys.includes(_key)) return // 表单中不含单号生成字段 |
| | | |
| | | let _ModularDetailCode = '' |
| | | let _lpline = '' |
| | | if (item.TypeCharOne === 'Lp') { |
| | | if (_linkKey === 'bid' && BID) { // 替换bid |
| | | if (/^BID$/ig.test(item.linkField)) { |
| | | _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@BID@,48)` |
| | | } else { |
| | | _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${_linkKey},48)` |
| | | _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${item.linkField},48)` |
| | | } |
| | | _ModularDetailCode = '@ModularDetailCode' |
| | | } else if (item.TypeCharOne === 'BN') { |
| | | let _val = '' |
| | | if (_linkKey === 'bid' && BID) { // 替换bid |
| | | _val = BID |
| | | if (/^BID$/ig.test(item.linkField)) { |
| | | _lpline = `set @ModularDetailCode= 'BN'+ right(@BID@,48)` |
| | | } else { |
| | | _val = 0 |
| | | _lpline = `set @ModularDetailCode= 'BN'+ right(@${item.linkField},48)` |
| | | } |
| | | _ModularDetailCode = `'${item.TypeCharOne + _val}'` |
| | | } else { |
| | | _ModularDetailCode = `'${item.ModularDetailCode}'` |
| | | } |
| | | |
| | | let _declare = '' |
| | | |
| | | if (!_vars.includes(_key)) { |
| | | _declare = `Declare @${_key} nvarchar(50)` |
| | | _vars.push(_key) |
| | | _lpline = `set @ModularDetailCode= right('${item.ModularDetailCode}',50)` |
| | | } |
| | | |
| | | _billcodesSql += ` |
| | | /* 单号生成 */ |
| | | ${_declare} |
| | | select @BillCode='', @${_key}='', @ModularDetailCode='' |
| | | ${_lpline} |
| | | exec s_get_BillCode |
| | | @ModularDetailCode=${_ModularDetailCode}, |
| | | @ModularDetailCode=@ModularDetailCode, |
| | | @Type=${item.Type}, |
| | | @TypeCharOne='${item.TypeCharOne}', |
| | | @TypeCharTwo ='${item.TypeCharTwo}', |
| | |
| | | item.field.split(',').forEach((_field, index) => { |
| | | let _key = _field.toLowerCase() |
| | | let _val = '' |
| | | let _val2 = '' |
| | | |
| | | arr.push(_key) |
| | | if (_key === 'bid') { // 表单中没有bid则使用系统bid变量 |
| | | _val = BID |
| | | if (_key === 'bid') { |
| | | _val = `'${BID}'` |
| | | } else { |
| | | _val = `@${_field}` |
| | | } |
| | | |
| | | _fieldValue.push(`${_key}='${_val}'`) |
| | | _value.push(`${_labels[index] || ''}:${_val || ''}`) |
| | | if (_key === 'bid') { |
| | | _val2 = BID |
| | | } else { |
| | | _val2 = `' + @${_field} + '` |
| | | } |
| | | |
| | | _fieldValue.push(`${_key}=${_val}`) |
| | | _value.push(`${_labels[index] || ''}:${_val2}`) |
| | | }) |
| | | |
| | | let _verifyType = '' |
| | | if (item.verifyType === 'logic') { |
| | | _verifyType = ' and deleted=0' |
| | | } |
| | | |
| | | if (!arr.includes(primaryKey.toLowerCase())) { |
| | | if (!arr.includes(primaryKey.toLowerCase()) && btn.Ot !== 'notRequired') { |
| | | _fieldValue.push(`${primaryKey} !='${primaryId}'`) |
| | | } |
| | | |
| | | _sql += ` |
| | | /* 唯一性验证 */ |
| | | select @tbid='', @ErrorCode='',@retmsg='' |
| | | select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${_verifyType} |
| | | select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${item.verifyType === 'logic' ? ' and deleted=0' : ''} |
| | | If @tbid!='' |
| | | Begin |
| | | select @ErrorCode='${item.errorCode}',@retmsg='${_value.join(', ')} 已存在' |
| | |
| | | let hasvoucher = false |
| | | |
| | | // 凭证-显示列中选取,必须选行 |
| | | if (verify.voucher && verify.voucher.enabled && btn.Ot !== 'requiredOnce') { |
| | | if (verify.voucher && verify.voucher.enabled) { |
| | | let _voucher = verify.voucher |
| | | let linkField = `@${_voucher.linkField}` |
| | | |
| | | if (/^BID$/ig.test(_voucher.linkField)) { |
| | | linkField = `'${BID}'` |
| | | } |
| | | |
| | | hasvoucher = true |
| | | |
| | | _sql += ` |
| | | /* 创建凭证 */ |
| | | exec s_BVoucher_Create |
| | | @Bill ='0', |
| | | @Bill = ${linkField}, |
| | | @BVoucherType ='${_voucher.BVoucherType}', |
| | | @VoucherTypeOne ='${_voucher.VoucherTypeOne}', |
| | | @VoucherTypeTwo ='${_voucher.VoucherTypeTwo}', |
| | |
| | | if (columns && columns.length > 0 && btn.Ot !== 'notRequired') { |
| | | let _index = 0 |
| | | columns.forEach(col => { |
| | | if (!col.field || col.Hide === 'true' || _index >= 4) return |
| | | if (!col.field || col.Hide === 'true' || _index >= 4 || col.field === primaryKey) return |
| | | _msg += col.label + '=0,' |
| | | _index++ |
| | | }) |
| | |
| | | if (_backCustomScript) { |
| | | _sql += _backCustomScript |
| | | } |
| | | |
| | | _sql = _sql.replace(/@start_type@/ig, `'开始'`) |
| | | _sql = _sql.replace(/@check_type@/ig, `'审核'`) |
| | | _sql = _sql.replace(/@notice_type@/ig, `'抄送'`) |
| | | _sql = _sql.replace(/@check_userids@/ig, `''`) |
| | | _sql = _sql.replace(/@notice_userids@/ig, `''`) |
| | | _sql = _sql.replace(/@works_flow_sign@/ig, `''`) |
| | | |
| | | _sql = _sql.replace(/@works_flow_code@/ig, `'mk'`) |
| | | _sql = _sql.replace(/@works_flow_name@/ig, `'mk'`) |
| | | _sql = _sql.replace(/@works_flow_param@/ig, `''`) |
| | |
| | | _sql = _sql.replace(/@statusname@/ig, `'${statusName}'`) |
| | | _sql = _sql.replace(/@work_group@/ig, `'mk'`) |
| | | _sql = _sql.replace(/@work_grade@/ig, `'0'`) |
| | | |
| | | if (verify.flowType === 'start') { |
| | | _sql = _sql.replace(/@start_type@/ig, `'开始'`) |
| | | } else { |
| | | _sql = _sql.replace(/@check_type@/ig, `'审核'`) |
| | | _sql = _sql.replace(/@notice_type@/ig, `'抄送'`) |
| | | |
| | | _sql = _sql.replace(/@check_userids@/ig, `''`) |
| | | _sql = _sql.replace(/@notice_userids@/ig, `''`) |
| | | |
| | | _sql = _sql.replace(/@works_flow_sign@/ig, `''`) |
| | | } |
| | | } else if (_backCustomScript) { |
| | | _sql += _backCustomScript |
| | | } |
| | | |
| | | if (verifyValSql) { |
| | | _sql += verifyValSql |
| | | } |
| | | |
| | | if (btn.procMode === 'system') { |
| | |
| | | _sql = _sql.replace(/@BID@/ig, `'${BID}'`) |
| | | _sql = _sql.replace(/@typename@/ig, `'typename'`) |
| | | _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`) |
| | | _sql = _sql.replace(/\$check@|@check\$/ig, '') |
| | | |
| | | return _sql |
| | | } |
| | |
| | | |
| | | let _uniquesql = '' |
| | | if (btn.uniques && btn.uniques.length > 0) { |
| | | let textFields = [] |
| | | let numberFields = [] |
| | | let dateFields = [] |
| | | btn.columns.forEach((col) => { |
| | | if (/Nvarchar/ig.test(col.type)) { |
| | | textFields.push(col.Column) |
| | | } else if (/Decimal|int/ig.test(col.type)) { |
| | | numberFields.push(col.Column) |
| | | } else if (/date/ig.test(col.type)) { |
| | | dateFields.push(col.Column) |
| | | } |
| | | }) |
| | | btn.uniques.forEach(unique => { |
| | | if (unique.status === 'false' || !unique.verifyType) return |
| | | |
| | | let _fields = unique.field.split(',') |
| | | let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) |
| | | let _afields = _fields.map(_field => `a.${_field}`) |
| | | _fields_ = _fields_.join(' and ') |
| | | |
| | | let _where = [] |
| | | _fields.forEach(f => { |
| | | if (textFields.includes(f)) { |
| | | _where.push(`${f}!=''`) |
| | | } else if (numberFields.includes(f)) { |
| | | _where.push(`${f}!=0`) |
| | | } else if (dateFields.includes(f)) { |
| | | _where.push(`${f}>'1949-10-01'`) |
| | | } |
| | | }) |
| | | _where = _where.length ? `where ${_where.join(' and ')} ` : '' |
| | | |
| | | if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') { |
| | | _fields_ += ' and b.deleted=0' |
| | | } |
| | | |
| | | let _afields = [] |
| | | _fields = _fields.map(f => { |
| | | if (numberFields.includes(f)) { |
| | | _afields.push(`cast(a.${f} as nvarchar(50))`) |
| | | return `cast(${f} as nvarchar(50))` |
| | | } else if (dateFields.includes(f)) { |
| | | _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`) |
| | | return `CONVERT(nvarchar(50), ${f}, 21)` |
| | | } |
| | | _afields.push(`a.${f}`) |
| | | |
| | | return f |
| | | }) |
| | | |
| | | _uniquesql += ` |
| | | /* 重复性验证 */ |
| | |
| | | end |
| | | |
| | | ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid='' |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from #${sheet} a Inner join ${sheet} b on ${_fields_} |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${sheet} b on ${_fields_} |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | |
| | | |
| | | ${_uniquesql} |
| | | ${_prevCustomScript} |
| | | ${_insert} |
| | | ${_backCustomScript} |
| | | ${_insert}` |
| | | |
| | | drop table #${sheet} |
| | | |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | if (btn.workFlow === 'true' && process) { |
| | | if (btn.flowSql === 'true') { |
| | | sql += ` |
| | | /* 工作流默认sql */ |
| | | insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) |
| | | select jskey,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ |
| | | from #${sheet} |
| | | |
| | | insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) |
| | | select jskey,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ |
| | | from #${sheet} |
| | | |
| | | insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid) |
| | | select jskey,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@ |
| | | from #${sheet} |
| | | |
| | | insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone) |
| | | select jskey,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin' |
| | | from #${sheet} |
| | | ` |
| | | } |
| | | |
| | | sql += ` |
| | | ${_backCustomScript} |
| | | |
| | | drop table #${sheet} |
| | | |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | |
| | | sql = sql.replace(/@start_type@/ig, `'开始'`) |
| | | sql = sql.replace(/@works_flow_code@/ig, `'mk'`) |
| | | sql = sql.replace(/@works_flow_name@/ig, `'mk'`) |
| | | sql = sql.replace(/@works_flow_param@/ig, `''`) |
| | | sql = sql.replace(/@works_flow_detail_id@/ig, `'0'`) |
| | | sql = sql.replace(/@status@/ig, `'888'`) |
| | | sql = sql.replace(/@statusname@/ig, `'结束'`) |
| | | sql = sql.replace(/@work_group@/ig, `'mk'`) |
| | | sql = sql.replace(/@work_grade@/ig, `'0'`) |
| | | } else { |
| | | sql += ` |
| | | ${_backCustomScript} |
| | | |
| | | drop table #${sheet} |
| | | |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | } |
| | | |
| | | sql = sql.replace(/\$check@|@check\$/ig, '') |
| | | |
| | | return sql |
| | | } |
| | | |
| | | getEditTableSql = (verify, cols, columns) => { |
| | | getEditTableSql = (verify, cols, columns, setting) => { |
| | | let btn = verify |
| | | let userName = sessionStorage.getItem('User_Name') || '' |
| | | let fullName = sessionStorage.getItem('Full_Name') || '' |
| | |
| | | |
| | | let vals = [] |
| | | let forms = [] |
| | | let _fields = {} |
| | | |
| | | columns.forEach(col => { |
| | | _fields[col.field] = col.datatype |
| | | }) |
| | | let _forms = {} |
| | | let index = 0 |
| | | |
| | | let getColumns = (cols) => { |
| | | cols.forEach(item => { |
| | | if (item.type === 'colspan') { |
| | | getColumns(item.subcols) |
| | | } else if (item.editable === 'true') { |
| | | forms.push({ |
| | | field: item.field, |
| | | type: item.type, |
| | | datatype: _fields[item.field] || 'nvarchar(50)' |
| | | }) |
| | | item.$sort = index |
| | | _forms[item.field] = item |
| | | index++ |
| | | } |
| | | }) |
| | | } |
| | | |
| | | getColumns(cols) |
| | | |
| | | columns.forEach(item => { |
| | | if (item.field === setting.primaryKey) return |
| | | |
| | | if (_forms[item.field]) { |
| | | let _item = {..._forms[item.field]} |
| | | if (_item.editType === 'date') { |
| | | _item.datatype = _item.declareType || 'datetime' |
| | | } else { |
| | | _item.datatype = item.datatype |
| | | } |
| | | |
| | | forms.push(_item) |
| | | } else { |
| | | forms.push({...item, $sort: 999}) |
| | | } |
| | | }) |
| | | |
| | | forms.sort((a, b) => a.$sort - b.$sort) |
| | | |
| | | forms.forEach(col => { |
| | | if (col.type === 'number') { |
| | | if (/date/.test(col.datatype)) { |
| | | vals.push(`'1949-10-01'`) |
| | | } else if (col.editType && ['select', 'popSelect'].includes(col.editType)) { |
| | | vals.push(`'0'`) |
| | | } else if (col.type === 'number') { |
| | | vals.push(`1`) |
| | | } else { |
| | | vals.push(`'mk'`) |
| | |
| | | |
| | | let _uniquesql = '' |
| | | if (btn.uniques && btn.uniques.length > 0) { |
| | | let textFields = [] |
| | | let numberFields = [] |
| | | let dateFields = [] |
| | | columns.forEach((col) => { |
| | | if (/Nvarchar/ig.test(col.datatype)) { |
| | | textFields.push(col.field) |
| | | } else if (/Decimal|int/ig.test(col.datatype)) { |
| | | numberFields.push(col.field) |
| | | } else if (/date/ig.test(col.datatype)) { |
| | | dateFields.push(col.field) |
| | | } |
| | | }) |
| | | btn.uniques.forEach(unique => { |
| | | if (unique.status === 'false' || !unique.verifyType) return |
| | | |
| | | let _fields = unique.field.split(',') |
| | | let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) |
| | | let _afields = _fields.map(_field => `a.${_field}`) |
| | | _fields_ = _fields_.join(' and ') |
| | | _fields_ += ` and a.jskey != b.${setting.primaryKey || 'id'}` |
| | | |
| | | let _where = [] |
| | | _fields.forEach(f => { |
| | | if (textFields.includes(f)) { |
| | | _where.push(`${f}!=''`) |
| | | } else if (numberFields.includes(f)) { |
| | | _where.push(`${f}!=0`) |
| | | } else if (dateFields.includes(f)) { |
| | | _where.push(`${f}>'1949-10-01'`) |
| | | } |
| | | }) |
| | | _where = _where.length ? `where ${_where.join(' and ')} ` : '' |
| | | |
| | | if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') { |
| | | _fields_ += ' and b.deleted=0' |
| | | } |
| | | |
| | | let _afields = [] |
| | | _fields = _fields.map(f => { |
| | | if (numberFields.includes(f)) { |
| | | _afields.push(`cast(a.${f} as nvarchar(50))`) |
| | | return `cast(${f} as nvarchar(50))` |
| | | } else if (dateFields.includes(f)) { |
| | | _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`) |
| | | return `CONVERT(nvarchar(50), ${f}, 21)` |
| | | } |
| | | _afields.push(`a.${f}`) |
| | | |
| | | return f |
| | | }) |
| | | |
| | | _uniquesql += ` |
| | | /* 重复性验证 */ |
| | |
| | | end |
| | | |
| | | ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid='' |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from #${sheet} a Inner join ${sheet} b on ${_fields_} |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${sheet} b on ${_fields_} |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | |
| | | |
| | | let declarefields = [] |
| | | let fields = [] |
| | | let upFields = [] |
| | | |
| | | forms.forEach(col => { |
| | | let key = col.field.toLowerCase() |
| | |
| | | |
| | | declarefields.push(`${col.field} ${col.datatype}`) |
| | | fields.push(col.field) |
| | | upFields.push(`${col.field}=t.${col.field}`) |
| | | }) |
| | | |
| | | fields = fields.join(',') |
| | | upFields = upFields.join(',') |
| | | |
| | | let _insert = '' |
| | | if (btn.default !== 'false') { |
| | | _insert = ` |
| | | /* 默认sql */ |
| | | Insert into ${database}${sheet} (${fields},createuserid,createuser,createstaff,bid) |
| | | update a set ${upFields},modifydate=getdate(),modifyuserid='${sessionStorage.getItem('UserID') || ''}',modifyuser=@username,modifystaff=@fullname,deleted=0 |
| | | from (select * from #${sheet} where data_type='upt') t |
| | | inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'} |
| | | |
| | | update a set deleted=1,modifydate=getdate(),modifyuserid='${sessionStorage.getItem('UserID') || ''}',modifyuser=@username,modifystaff=@fullname |
| | | from (select * from #${sheet} where data_type='del') t |
| | | inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'} |
| | | |
| | | delete t from #${sheet} t inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'} |
| | | |
| | | Insert into ${database}${sheet} (${fields},createuserid,createuser,createstaff,bid) |
| | | Select ${fields},'${sessionStorage.getItem('UserID') || ''}',@username,@fullname,'${BID}' From #${sheet} |
| | | ` |
| | | } |
| | |
| | | { reg: /@datam@/ig, value: `''` }, |
| | | ] |
| | | |
| | | let process = this.props.config.process === 'true' |
| | | if (process) { |
| | | regs.push({ reg: /@works_flow_code@/ig, value: `'1949-10-01 15:00:00'` }) |
| | | } |
| | | |
| | | let sql = this.formatDataSource(item, regs) |
| | | |
| | | return sql |
| | | } |
| | | |
| | | getPaySql = (btn, component) => { |
| | | let sysfields = ['username', 'fullname', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'tbid', 'bid'] |
| | | let _declare = [] |
| | | let _select = [] |
| | | |
| | | component.columns.forEach(_f => { |
| | | if (sysfields.includes(_f.field.toLowerCase())) return |
| | | |
| | | if (/decimal|int/ig.test(_f.datatype)) { |
| | | _select.push(`@${_f.field}=1`) |
| | | } else if (/date/ig.test(_f.datatype)) { |
| | | _select.push(`@${_f.field}='1949-10-01'`) |
| | | } else { |
| | | _select.push(`@${_f.field}=''`) |
| | | } |
| | | |
| | | _declare.push(`@${_f.field} ${_f.datatype}`) |
| | | }) |
| | | |
| | | _declare = _declare.join(', ') |
| | | _select = _select.join(', ') |
| | | |
| | | let _sql = `Declare @UserName nvarchar(50), @FullName nvarchar(50), @RoleID nvarchar(512), @mk_departmentcode nvarchar(512), @mk_organization nvarchar(512), @mk_user_type nvarchar(20), @mk_nation nvarchar(50), @mk_province nvarchar(50), @mk_city nvarchar(50), @mk_district nvarchar(50), @mk_address nvarchar(100), @ErrorCode nvarchar(50), @retmsg nvarchar(4000), @bid nvarchar(50), @tbid nvarchar(50), ${_declare} |
| | | Select @UserName='', @FullName='', @RoleID='', @mk_departmentcode='', @mk_organization='', @mk_user_type='', @mk_nation='', @mk_province='', @mk_city='', @mk_district='', @mk_address='', @ErrorCode='', @retmsg='', @bid='', ${_select} |
| | | ` |
| | | |
| | | btn.verify.scripts.forEach(item => { |
| | | if (item.status === 'false') return |
| | | |
| | | _sql += ` |
| | | ${item.sql} |
| | | ` |
| | | }) |
| | | |
| | | if (btn.output) { |
| | | _sql += ` |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${btn.output} as mk_b_id` |
| | | } else { |
| | | _sql += ` |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | } |
| | | |
| | | _sql = _sql.replace(/@typename@/ig, `'typename'`) |
| | | _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`) |
| | | |
| | | return _sql |
| | | } |
| | | |
| | | formatDataSource = (item, regs, mainSearch = []) => { |
| | | if (!item.setting || item.setting.interType !== 'system') return false |
| | | |
| | | |
| | | let searches = item.search || [] |
| | | if (item.setting.useMSearch === 'true' && mainSearch.length > 0) { |
| | | searches = [...searches, ...mainSearch] |
| | |
| | | searches = formatSearch(searches) |
| | | |
| | | let _columns = [] |
| | | if (item.subtype === 'dualdatacard') { |
| | | if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') { |
| | | _columns = [...item.columns, ...item.subColumns] |
| | | } else if (item.columns) { |
| | | _columns = [...item.columns] |
| | |
| | | _search = '' |
| | | } |
| | | |
| | | let custompage = false |
| | | |
| | | if (/order\s+by\s+sort_id\s*$/i.test(_dataresource)) { |
| | | custompage = true |
| | | } else if (/@pageSize@|@orderBy@|@mk_total/i.test(_dataresource + _customScript)) { |
| | | custompage = true |
| | | } |
| | | |
| | | if (/\s/.test(_dataresource)) { |
| | | _dataresource = '(' + _dataresource + ') tb' |
| | | } |
| | |
| | | item.setting.dataresource = _dataresource |
| | | item.setting.customScript = _customScript |
| | | |
| | | let custompage = /@pageSize@|@orderBy@/i.test(_dataresource + _customScript) |
| | | |
| | | if (_dataresource) { |
| | | if (custompage) { |
| | | _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` |
| | | } else if (item.setting.laypage === 'true' && item.setting.order) { |
| | | _dataresource = `/*system_query*/select top 10 ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${item.setting.order}) as rows from ${_dataresource} ${_search}) tmptable where rows > 0 order by tmptable.rows ` |
| | | } else if (item.setting.$top) { |
| | | if (item.setting.order) { |
| | | _dataresource = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} order by ${item.setting.order} ` |
| | | } else { |
| | | _dataresource = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} ` |
| | | } |
| | | } else if (item.setting.order) { |
| | | _dataresource = `/*system_query*/select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${item.setting.order}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows ` |
| | | _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} order by ${item.setting.order} ` |
| | | } else { |
| | | _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` |
| | | } |
| | |
| | | ) |
| | | |
| | | if (item.hasExtend) { |
| | | regs.push({reg: /@mk_time@/ig, value: '2024-04-29 17:20:00'}) |
| | | regoptions.push({reg: /@mk_time@/ig, value: `'2024-04-29 17:20:00'`}) |
| | | } |
| | | if (item.type === 'calendar') { |
| | | regoptions.push({ reg: /@mk_year@/ig, value: '2024' }) |
| | | regoptions.push({ reg: /@mk_year@/ig, value: `'2024'` }) |
| | | } |
| | | if (window.GLOB.getLocation) { |
| | | regoptions.push( |
| | | {reg: /@mk_longitude@/ig, value: 0}, |
| | | {reg: /@mk_latitude@/ig, value: 0} |
| | | ) |
| | | } |
| | | |
| | | regoptions.forEach(cell => { |
| | |
| | | |
| | | this.setState({status: this.verSqls.length > 0 ? 'loading' : 'over', execId: item.uuid}) |
| | | |
| | | console.info(`/* 组件:${item.name} 检验项:${item.label} */`) |
| | | window.mkInfo(`/* 组件:${item.name} 检验项:${item.label} */`) |
| | | |
| | | Api.sDebug(item.sql).then(result => { |
| | | if (result.status || result.ErrCode === '-2') { |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { visible, sqlList, status, successIds, errorIds, execId, errorMsg } = this.state |
| | | const { visible, status, columns, sqlList } = this.state |
| | | |
| | | return ( |
| | | <> |
| | | <Button className="mk-border-yellow" icon="bug" onClick={this.trigger}>调试</Button> |
| | | <Drawer |
| | | <Button className="mk-border-yellow" icon="bug" onClick={this.trigger}>DeepSeek调试</Button> |
| | | <Modal |
| | | className="debug-modal" |
| | | width={600} |
| | | title="DeepSeek调试" |
| | | width="60vw" |
| | | visible={visible} |
| | | closable={false} |
| | | placement="left" |
| | | centered={true} |
| | | footer={null} |
| | | destroyOnClose |
| | | > |
| | | <div className="mk-sql-wrap"> |
| | | {/* <div className="header"> |
| | | <div className="sql-item"> |
| | | <div className="sql-1">组件</div> |
| | | <div className="sql-2">检验项</div> |
| | | <div className="sql-3">其他</div> |
| | | <div className="sql-4">状态</div> |
| | | </div> |
| | | </div> */} |
| | | <div className="body"> |
| | | {sqlList.map(item => { |
| | | let other = '' |
| | | if (item.supName) { |
| | | other = `上级:${item.supName}-${item.tabName}` |
| | | } |
| | | |
| | | let status = <ClockCircleOutlined /> |
| | | |
| | | if (successIds.includes(item.uuid)) { |
| | | status = <CheckCircleOutlined /> |
| | | } else if (errorIds.includes(item.uuid)) { |
| | | if (errorMsg[item.uuid]) { |
| | | status = <Tooltip placement="topLeft" title={errorMsg[item.uuid]}> |
| | | <CloseCircleOutlined /> |
| | | </Tooltip> |
| | | } else { |
| | | status = <CloseCircleOutlined /> |
| | | } |
| | | } else if (item.uuid === execId) { |
| | | status = <LoadingOutlined /> |
| | | } |
| | | |
| | | return <div className="sql-item" key={item.uuid}> |
| | | <div className="sql-1" title={item.name}><div>{item.name}</div></div> |
| | | <div className="sql-2" title={item.label}><div>{item.label}</div></div> |
| | | <div className="sql-3" title={other}><div>{other}</div></div> |
| | | <div className="sql-4">{status}</div> |
| | | </div> |
| | | })} |
| | | </div> |
| | | <div className="mk-sql-wrap mk-scrollbar"> |
| | | <Table |
| | | bordered |
| | | rowKey="uuid" |
| | | dataSource={sqlList} |
| | | columns={columns} |
| | | pagination={false} |
| | | /> |
| | | </div> |
| | | <div className="mk-footer"> |
| | | {status === 'error' ? <Button key="skip" className="mk-border-green" onClick={this.roopSql}> |
| | |
| | | 关闭 |
| | | </Button> |
| | | </div> |
| | | </Drawer> |
| | | </Modal> |
| | | </> |
| | | ) |
| | | } |