| | |
| | | "display": "standalone", |
| | | "theme_color": "#000000", |
| | | "background_color": "#ffffff", |
| | | "mk_version": "20250205" |
| | | "mk_version": "20250301" |
| | | } |
| | |
| | | } |
| | | |
| | | getWrapForms = () => { |
| | | const { setting } = this.state.group |
| | | const { group } = this.state |
| | | |
| | | return getSettingForm(setting) |
| | | let list = [] |
| | | group.components.forEach(item => { |
| | | if (item.type === 'card' && item.subtype === 'propcard') { |
| | | list.push({ |
| | | value: item.uuid, |
| | | label: item.name, |
| | | disabled: item.wrap.empty !== 'hidden' |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | return getSettingForm(group.setting, list) |
| | | } |
| | | |
| | | updateWrap = (res) => { |
| | |
| | | <NormalHeader hideSearch="true" config={group} updateComponent={this.updateComponent}/> |
| | | <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ |
| | | <div className="mk-popover-control"> |
| | | <NormalForm title="分组设置" width={700} update={this.updateWrap} getForms={this.getWrapForms}> |
| | | <NormalForm title="分组设置" width={800} update={this.updateWrap} getForms={this.getWrapForms}> |
| | | <EditOutlined style={{color: '#1890ff'}} title="编辑"/> |
| | | </NormalForm> |
| | | <CopyComponent type="group" card={group}/> |
| | |
| | | /** |
| | | * @description Wrap表单配置信息 |
| | | */ |
| | | export default function (setting) { |
| | | export default function (setting, list) { |
| | | let roleList = sessionStorage.getItem('sysRoles') |
| | | let appType = sessionStorage.getItem('appType') |
| | | |
| | |
| | | precision: 0, |
| | | required: true |
| | | }, |
| | | { |
| | | type: 'select', |
| | | field: 'bindPropId', |
| | | label: '显示状态绑定', |
| | | initval: setting.bindPropId || '', |
| | | tooltip: '分组可绑定设有空值隐藏的属性卡,当属性卡隐藏时分组一同隐藏。', |
| | | required: false, |
| | | options: list, |
| | | forbid: appType === 'mob' |
| | | }, |
| | | // { |
| | | // type: 'radio', |
| | | // field: 'print', |
| | |
| | | forms.forEach(col => { |
| | | 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 { |
| | |
| | | render: (_, record) => { |
| | | return <span className="anticon anticon-deepseek" onClick={() => { |
| | | if (record.sql) { |
| | | sessionStorage.setItem('deepseek_sql', record.sql) |
| | | sessionStorage.setItem('deepseek_sql', `请检查以下代码,指出其可优化的地方\n${record.sql}`) |
| | | |
| | | window.open('#/ai') |
| | | |
| | | setTimeout(() => { |
| | | sessionStorage.removeItem('deepseek_sql') |
| | | }, 0) |
| | | } |
| | | window.open('#/ai') |
| | | }}> |
| | | <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> |
| | |
| | | forms.forEach(col => { |
| | | 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 { |
| | |
| | | }) |
| | | } |
| | | let resetElement = (m) => { |
| | | if (m.field) { |
| | | if (m.field && m.field !== '$Index') { |
| | | m.field = m.field.toLowerCase() |
| | | } |
| | | if (m.posterField) { |
| | |
| | | if (item.subcards) { |
| | | item.subcards.forEach(card => { |
| | | if (card.setting) { |
| | | if (card.setting.controlField) { |
| | | if (card.setting.controlField && card.setting.controlField !== '$Index') { |
| | | card.setting.controlField = card.setting.controlField.toLowerCase() |
| | | } |
| | | if (card.setting.bgField) { |
| | |
| | | } |
| | | } |
| | | |
| | | if (config.urlFields && config.urlFields.length) { |
| | | config.urlFields.forEach(field => { |
| | | let key = field.toLowerCase() |
| | | if (urlparam[key] !== undefined) return |
| | | |
| | | urlparam[key] = '' |
| | | }) |
| | | } |
| | | |
| | | window.GLOB.CacheData.set(MenuID, urlparam) |
| | | |
| | | if (window.backend && config.allSqls) { |
| | |
| | | } |
| | | if (config.urlFields) { |
| | | config.urlFields.forEach(field => { |
| | | let val = `'${urlparam[field.toLowerCase()] || ''}'` |
| | | let val = `'${urlparam[field.toLowerCase()]}'` |
| | | regs.push({ |
| | | reg: new RegExp('@' + field + '@', 'ig'), |
| | | value: val |
| | |
| | | this.setState({data: _data}, () => { |
| | | if (selected !== 'false') { |
| | | this.checkTopLine() |
| | | } else if (config.wrap.empty === 'hidden') { |
| | | MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) |
| | | } |
| | | }) |
| | | }) |
| | |
| | | } else { |
| | | if (selected !== 'false') { |
| | | this.checkTopLine() |
| | | } else if (data.$$uuid) { |
| | | } else { |
| | | this.transferLine() |
| | | } |
| | | this.autoExec() |
| | |
| | | } else { |
| | | if (selected !== 'false') { |
| | | this.checkTopLine() |
| | | } else if (_data.$$uuid) { |
| | | } else { |
| | | this.transferLine() |
| | | } |
| | | this.autoExec() |
| | |
| | | transferLine = () => { |
| | | const { config, data } = this.state |
| | | |
| | | if (config.wrap.cardType) return |
| | | if (config.wrap.cardType) { |
| | | if (config.wrap.empty === 'hidden') { |
| | | MKEmitter.emit('resetSelectLine', config.uuid, data.$$uuid || '', data) |
| | | } |
| | | return |
| | | } |
| | | |
| | | MKEmitter.emit('resetSelectLine', config.uuid, data.$$uuid || '', data) |
| | | } |
| | |
| | | background: #ffffff; |
| | | } |
| | | } |
| | | .braft-content table.no-border { |
| | | td, th { |
| | | border: none; |
| | | .braft-content { |
| | | table.no-border { |
| | | td, th { |
| | | border: none; |
| | | } |
| | | } |
| | | } |
| | | .braft-content table.align-center { |
| | | td, th { |
| | | text-align: center; |
| | | table.align-center { |
| | | td, th { |
| | | text-align: center; |
| | | } |
| | | } |
| | | table.deep-border { |
| | | td, th { |
| | | border-color: rgba(0, 0, 0, 0.85); |
| | | } |
| | | } |
| | | table.word-break { |
| | | td, th { |
| | | word-break: break-all; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | .custom-braft-editor-box.no-border { |
| | | .braft-content { |
| | | table:not(.border) { |
| | | table:not(.border):not(.deep-border) { |
| | | td, th { |
| | | border: none!important; |
| | | } |
| | |
| | | } |
| | | .custom-braft-editor-box.word-break { |
| | | .braft-content { |
| | | table { |
| | | table:not(.no-break) { |
| | | td, th { |
| | | word-break: break-all!important; |
| | | } |
| | |
| | | } |
| | | .custom-braft-editor-box.tb-flex { |
| | | .braft-content { |
| | | table { |
| | | table:not(.no-flex) { |
| | | table-layout: fixed; |
| | | } |
| | | } |
| | |
| | | import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons' |
| | | |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import './index.scss' |
| | | |
| | | const TabTransfer = asyncComponent(() => import('@/tabviews/custom/components/share/tabtransfer')) |
| | |
| | | |
| | | state = { |
| | | visible: true, |
| | | hidden: this.props.config.setting.bindPropId ? null : false, |
| | | mergeAble: this.props.config.setting.mergeAble === 'true' |
| | | } |
| | | |
| | | componentDidMount () { |
| | | const { config } = this.props |
| | | |
| | | if (config.setting.bindPropId) { |
| | | MKEmitter.addListener('resetSelectLine', this.resetStatus) |
| | | } |
| | | } |
| | | |
| | | componentWillUnmount () { |
| | | this.setState = () => { |
| | | return |
| | | } |
| | | MKEmitter.removeListener('resetSelectLine', this.resetStatus) |
| | | } |
| | | |
| | | resetStatus = (MenuID, _, data) => { |
| | | const { config } = this.props |
| | | |
| | | if (config.setting.bindPropId !== MenuID) return |
| | | |
| | | if (!data || data.$$empty) { |
| | | this.setState({hidden: true}) |
| | | } else { |
| | | this.setState({hidden: false}) |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { config, style } = this.props |
| | | const { visible, mergeAble } = this.state |
| | | const { visible, mergeAble, hidden } = this.state |
| | | |
| | | if (config.components.length === 0) return (<div className={'ant-col ant-col-' + config.width} style={style}><div style={config.style}></div></div>) |
| | | |
| | | let _wrapStyle = style |
| | | if (hidden) { |
| | | _wrapStyle = {...style} |
| | | _wrapStyle.display = 'none' |
| | | } |
| | | |
| | | let title = config.setting && config.setting.title |
| | | |
| | | if (title && hidden === null) { |
| | | title = '' |
| | | } |
| | | |
| | | return ( |
| | | <div className={`ant-col ant-col-${config.width} ${mergeAble ? ' mk-merge-able mk-ctrl-' + (config.setting.ctrlNumber || 1) : ''} ${visible ? '' : ' close'}`} style={style}> |
| | | <div className={`ant-col ant-col-${config.width} ${mergeAble ? ' mk-merge-able mk-ctrl-' + (config.setting.ctrlNumber || 1) : ''} ${visible ? '' : ' close'}`} style={_wrapStyle}> |
| | | <div className={'normal-group-wrap ' + (config.setting.layout || '')} id={'anchor' + config.uuid} style={config.style}> |
| | | <div className="mk-control"> |
| | | <DoubleLeftOutlined onClick={() => this.setState({visible: false})}/> |
| | | <DoubleRightOutlined onClick={() => this.setState({visible: true})}/> |
| | | </div> |
| | | {config.setting && config.setting.title ? <div className="group-header" style={config.headerStyle}> |
| | | <span className="title">{config.setting.title}</span> |
| | | {title ? <div className="group-header" style={config.headerStyle}> |
| | | <span className="title">{title}</span> |
| | | </div> : null} |
| | | <TabTransfer config={config}/> |
| | | </div> |
| | |
| | | border-collapse: collapse; |
| | | border-spacing: 0; |
| | | margin: 10px 0px; |
| | | --table-font-size: 16px; |
| | | |
| | | tr:first-child { |
| | | background-color: #f0f0f0; |
| | | } |
| | | td, th { |
| | | padding: 5px 10px; |
| | | font-size: 16px; |
| | | font-size: var(--table-font-size, 16px); |
| | | border: 1px solid #ddd; |
| | | } |
| | | } |
| | |
| | | total: 0 |
| | | }) |
| | | reset && MKEmitter.emit('resetTable', config.uuid, 'true') // 列表重置 |
| | | MKEmitter.emit('transferData' + setting.tableId, []) |
| | | |
| | | this.requestId = '' |
| | | return |
| | |
| | | } |
| | | } |
| | | |
| | | if (config.urlFields && config.urlFields.length) { |
| | | config.urlFields.forEach(field => { |
| | | let key = field.toLowerCase() |
| | | if (urlparam[key] !== undefined) return |
| | | |
| | | urlparam[key] = '' |
| | | }) |
| | | } |
| | | |
| | | window.GLOB.CacheData.set(MenuID, urlparam) |
| | | |
| | | if (window.backend && config.allSqls) { |
| | |
| | | } |
| | | if (config.urlFields) { |
| | | config.urlFields.forEach(field => { |
| | | let val = `'${urlparam[field.toLowerCase()] || ''}'` |
| | | let val = `'${urlparam[field.toLowerCase()]}'` |
| | | regs.push({ |
| | | reg: new RegExp('@' + field + '@', 'ig'), |
| | | value: val |
| | |
| | | duration: 5 |
| | | }) |
| | | return false |
| | | } else if (btn.Ot !== 'notRequired' && data[0] && !data[0].$$uuid) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: dict['id_required'] || '未获取到ID值!', |
| | | duration: 5 |
| | | }) |
| | | return false |
| | | } else if (btn.Ot === 'requiredSgl' && data.length !== 1) { |
| | | // 需要选择单行时,校验数据 |
| | | notification.warning({ |
| | |
| | | const { btn } = this.props |
| | | |
| | | if (!btn.verify) return |
| | | if (btn.verify.noteEnable !== 'true' && btn.verify.wxNote !== 'true' && btn.verify.printEnable !== 'true' && btn.verify.emailEnable !== 'true') return |
| | | if (btn.verify.noteEnable !== 'true' && btn.verify.wxNote !== 'true' && btn.verify.printEnable !== 'true' && btn.verify.emailEnable !== 'true' && btn.verify.DeepSeekable !== 'true') return |
| | | |
| | | let id = '' |
| | | if (btn.output) { |
| | |
| | | } |
| | | if (btn.verify.emailEnable === 'true') { |
| | | this.sendEmail(btn.verify, id) |
| | | } |
| | | if (btn.verify.DeepSeekable === 'true') { |
| | | this.openDeepSeek(id) |
| | | } |
| | | if (btn.verify.wxNote === 'true') { |
| | | if (btn.verify.wxTemplateId === 'mk_category_temp') { |
| | |
| | | }) |
| | | } |
| | | |
| | | openDeepSeek = (id) => { |
| | | let param = { |
| | | func: 's_get_deepseek_local', |
| | | upid: id |
| | | } |
| | | |
| | | param.LText = Utils.getuuid() |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | |
| | | Api.genericInterface(param).then(res => { |
| | | if (!res.status) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | if (res.deepseek_text) { |
| | | sessionStorage.setItem('deepseek_sql', res.deepseek_text) |
| | | |
| | | window.open('#/ai') |
| | | |
| | | setTimeout(() => { |
| | | sessionStorage.removeItem('deepseek_sql') |
| | | }, 0) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 操作失败后处理 |
| | | * 1、状态码为 E、N、F、NM 时,显示相应提示信息 |
| | |
| | | |
| | | if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type)) { |
| | | item.options = item.options || [] |
| | | item.options = item.options.filter(cell => { |
| | | cell.value = cell.Value |
| | | cell.label = cell.Text |
| | | |
| | | return !cell.Hide |
| | | }) |
| | | item.$select = true |
| | | if (item.type === 'checkcard') { |
| | | item.options = item.options.filter(cell => { |
| | | cell.$value = cell.$value + '' |
| | | return !cell.Hide |
| | | }) |
| | | } else { |
| | | item.options = item.options.filter(cell => { |
| | | cell.value = cell.Value + '' |
| | | cell.label = cell.Text |
| | | |
| | | return !cell.Hide |
| | | }) |
| | | } |
| | | |
| | | if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 添加空值 |
| | | item.options.unshift({ |
| | | key: Utils.getuuid(), |
| | |
| | | newval = '' |
| | | } |
| | | } |
| | | } else if (item.$select && item.resourceType === '0') { |
| | | newval = newval + '' |
| | | } |
| | | |
| | | if (newval !== '$empty') { |
| | |
| | | if (isNaN(item.initval) || item.initval === '') { |
| | | item.initval = 0 |
| | | } |
| | | } else if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && item.resourceType === '1') { |
| | | } else if (item.$select && item.resourceType === '1') { |
| | | deForms.push(item) |
| | | } else if (item.type === 'rate') { |
| | | item.rateCount = item.rateCount || 5 |
| | |
| | | return fields |
| | | } |
| | | |
| | | transfer = (options) => { |
| | | if (options.length === 0) return options |
| | | // transfer = (options) => { |
| | | // if (options.length === 0) return options |
| | | |
| | | let isNumber = true |
| | | options.forEach(item => { |
| | | if (!item.Value || isNaN(item.Value)) { |
| | | isNumber = false |
| | | } |
| | | }) |
| | | // let isNumber = true |
| | | // options.forEach(item => { |
| | | // if (!item.Value || isNaN(item.Value)) { |
| | | // isNumber = false |
| | | // } |
| | | // }) |
| | | |
| | | if (isNumber) { |
| | | return options.map(item => { |
| | | item.Value = +item.Value |
| | | return item |
| | | }) |
| | | } else { |
| | | return options.map(item => { |
| | | item.Value = item.Value + '' |
| | | return item |
| | | }) |
| | | } |
| | | } |
| | | // if (isNumber) { |
| | | // return options.map(item => { |
| | | // item.Value = +item.Value |
| | | // return item |
| | | // }) |
| | | // } else { |
| | | // return options.map(item => { |
| | | // item.Value = item.Value + '' |
| | | // return item |
| | | // }) |
| | | // } |
| | | // } |
| | | |
| | | transferCard = (options) => { |
| | | if (options.length === 0) return options |
| | | // transferCard = (options) => { |
| | | // if (options.length === 0) return options |
| | | |
| | | let isNumber = true |
| | | options.forEach(item => { |
| | | if (!/^([0-9]|[1-9]\d{0,2})$/.test(item.$value)) { |
| | | isNumber = false |
| | | } |
| | | }) |
| | | // let isNumber = true |
| | | // options.forEach(item => { |
| | | // if (!/^([0-9]|[1-9]\d{0,2})$/.test(item.$value)) { |
| | | // isNumber = false |
| | | // } |
| | | // }) |
| | | |
| | | if (isNumber) { |
| | | return options.map(item => { |
| | | item.$value = +item.$value |
| | | return item |
| | | }) |
| | | } else { |
| | | return options.map(item => { |
| | | item.$value = item.$value + '' |
| | | return item |
| | | }) |
| | | } |
| | | } |
| | | // if (isNumber) { |
| | | // return options.map(item => { |
| | | // item.$value = +item.$value |
| | | // return item |
| | | // }) |
| | | // } else { |
| | | // return options.map(item => { |
| | | // item.$value = item.$value + '' |
| | | // return item |
| | | // }) |
| | | // } |
| | | // } |
| | | |
| | | handleConfirm = () => { |
| | | const { card, fields } = this.props |
| | |
| | | if (['multiselect', 'select', 'link', 'radio', 'checkbox'].includes(values.type)) { |
| | | if (values.resourceType === '0') { |
| | | values.options = values.options || [] |
| | | values.options = values.options.map(item => { |
| | | item.Value = item.Value + '' |
| | | return item |
| | | }) |
| | | values.dataSource = '' |
| | | let type = values.type |
| | | if (values.type === 'radio' && values.linkField) { |
| | | type = 'link' |
| | | } |
| | | |
| | | values.options = this.transfer(values.options) |
| | | // values.options = this.transfer(values.options) |
| | | |
| | | if (values.options.filter(op => op.Text === '').length > 0) { |
| | | notification.warning({ |
| | |
| | | let linkSubFields = values.linkSubField || [] |
| | | values.options = values.options.map(m => { |
| | | m.ParentID = m.ParentID || '' |
| | | m.$value = m.$value + '' |
| | | |
| | | linkSubFields.forEach(n => { |
| | | m[n] = m[n] || '' |
| | |
| | | return m |
| | | }) |
| | | |
| | | values.options = this.transferCard(values.options) |
| | | // values.options = this.transferCard(values.options) |
| | | |
| | | let type = values.type |
| | | if (values.linkField) { |
| | |
| | | <Col span={24}></Col> |
| | | <Col span={8}> |
| | | <Form.Item label={ |
| | | <Tooltip placement="bottomLeft" title="按钮执行完成后打开DeepSeek,请整理好需要提问的语句。"> |
| | | <QuestionCircleOutlined className="mk-form-tip" /> |
| | | DeekSeek |
| | | </Tooltip> |
| | | }> |
| | | <Radio.Group value={verify.DeepSeekable} onChange={(e) => {this.onOptionChange(e.target.value, 'DeepSeekable')}}> |
| | | <Radio value="true">开启</Radio> |
| | | <Radio value="false">不开启</Radio> |
| | | </Radio.Group> |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={24}></Col> |
| | | <Col span={8}> |
| | | <Form.Item label={ |
| | | <Tooltip placement="bottomLeft" title={'选择发送短信时,需完善短信设置。'}> |
| | | <QuestionCircleOutlined className="mk-form-tip" /> |
| | | 发送短信 |
| | |
| | | } |
| | | |
| | | _verify.default = _verify.default || 'true' |
| | | _verify.wxNote = _verify.wxNote || 'false' // 公众号消息推送是否开启 |
| | | _verify.noteEnable = _verify.noteEnable || 'false' // 短信发送是否开启 |
| | | _verify.emailEnable = _verify.emailEnable || 'false' // 邮件发送是否开启 |
| | | _verify.printEnable = _verify.printEnable || 'false' // 单据打印是否开启 |
| | | _verify.preHandle = _verify.preHandle || 'false' // 按钮预处理是否开启 |
| | | _verify.wxNote = _verify.wxNote || 'false' // 公众号消息推送是否开启 |
| | | _verify.noteEnable = _verify.noteEnable || 'false' // 短信发送是否开启 |
| | | _verify.DeepSeekable = _verify.DeepSeekable || 'false'// DeepSeek是否开启 |
| | | _verify.emailEnable = _verify.emailEnable || 'false' // 邮件发送是否开启 |
| | | _verify.printEnable = _verify.printEnable || 'false' // 单据打印是否开启 |
| | | _verify.preHandle = _verify.preHandle || 'false' // 按钮预处理是否开启 |
| | | _verify.invalid = _invalid |
| | | _verify.uniques = _verify.uniques || [] |
| | | _verify.contrasts = _verify.contrasts || [] |
| | |
| | | if (['pop', 'prompt', 'exec'].includes(cell.OpenType) && cell.verify && !cell.output) { |
| | | if (cell.verify.noteEnable === 'true') { |
| | | errors.push({ level: 0, detail: `按钮“${cell.label}”未设置返回值短信发送无效!`}) |
| | | } else if (cell.verify.wxNote === 'true') { |
| | | errors.push({ level: 0, detail: `按钮“${cell.label}”未设置返回值公众号消息无效!`}) |
| | | } else if (cell.verify.emailEnable === 'true') { |
| | | errors.push({ level: 0, detail: `按钮“${cell.label}”未设置返回值邮件发送无效!`}) |
| | | } else if (cell.verify.DeepSeekable === 'true') { |
| | | errors.push({ level: 0, detail: `按钮“${cell.label}”未设置返回值DeekSeek无效!`}) |
| | | } |
| | | } |
| | | |
| | |
| | | if (item.subButton.verify && !item.subButton.output) { |
| | | if (item.subButton.verify.noteEnable === 'true') { |
| | | errors.push({ level: 0, detail: `${item.subButton.label} 按钮未设置返回值短信发送无效!`}) |
| | | } else if (item.subButton.verify.wxNote === 'true') { |
| | | errors.push({ level: 0, detail: `${item.subButton.label} 按钮未设置返回值公众号消息无效!`}) |
| | | } else if (item.subButton.verify.emailEnable === 'true') { |
| | | errors.push({ level: 0, detail: `${item.subButton.label} 按钮未设置返回值邮件发送无效!`}) |
| | | } else if (item.subButton.verify.DeepSeekable === 'true') { |
| | | errors.push({ level: 0, detail: `${item.subButton.label} 按钮未设置返回值DeekSeek无效!`}) |
| | | } |
| | | } |
| | | |
| | |
| | | }) |
| | | return false |
| | | } else if (/\sdecimal\(8,/ig.test(sql)) { |
| | | let lines = '' |
| | | sql.split(/\n/).forEach((s, i) => { |
| | | if (/(^|\s)decimal\(8,/ig.test(s)) { |
| | | lines = '第' + (i + 1) + '行中' |
| | | } |
| | | }) |
| | | |
| | | notification.warning({ |
| | | top: 92, |
| | | message: `不可使用 decimal(8`, |
| | | message: `${lines}不可使用 decimal(8`, |
| | | duration: 5 |
| | | }) |
| | | return false |
| | |
| | | let param = JSON.parse(window.decodeURIComponent(window.atob(params.param))) |
| | | |
| | | sessionStorage.setItem('dataM', param.dataM || '') |
| | | let urlParam = {...param} |
| | | |
| | | delete urlParam.tempId |
| | | delete urlParam.pageId |
| | | delete urlParam.dataM |
| | | |
| | | Object.keys(urlParam).forEach(key => { |
| | | if (key === key.toLowerCase()) return |
| | | urlParam[key.toLowerCase()] = urlParam[key] |
| | | delete urlParam[key] |
| | | }) |
| | | |
| | | this.setState({ |
| | | BID: param.id || '', |
| | | tempId: param.tempId, |
| | | urlParam: param, |
| | | urlParam: urlParam, |
| | | pageId: param.pageId || '' |
| | | }, () => { |
| | | setTimeout(() => { |
| | |
| | | |
| | | config.components = config.components.filter(item => !['tabs', 'search'].includes(item.type)) |
| | | |
| | | let urlparam = urlParam ? {...urlParam} : {} |
| | | if (config.urlFields && config.urlFields.length) { |
| | | config.urlFields.forEach(field => { |
| | | let key = field.toLowerCase() |
| | | if (urlparam[key] !== undefined) return |
| | | urlparam[key] = '' |
| | | }) |
| | | } |
| | | |
| | | if (window.backend && config.allSqls) { |
| | | let urlparam = urlParam || {} |
| | | let keys = Object.keys(urlparam) |
| | | config.allSqls.forEach(item => { |
| | | item.id = md5(window.GLOB.appkey + item.v_id) |
| | |
| | | |
| | | if (config.urlFields) { |
| | | config.urlFields.forEach(field => { |
| | | let val = `'${urlParam ? (urlParam[field] || '') : ''}'` |
| | | let val = `'${urlparam[field.toLowerCase()]}'` |
| | | regs.push({ |
| | | reg: new RegExp('@' + field + '@', 'ig'), |
| | | value: val |
| | |
| | | if (status) { |
| | | return ( |
| | | <div className="item-title edit"> |
| | | <Input value={val} onChange={chanVal} onBlur={submit} onPressEnter={submit}/> |
| | | <Input value={val} autoFocus onChange={chanVal} onBlur={submit} onPressEnter={submit}/> |
| | | </div> |
| | | ) |
| | | } |
| | |
| | | UserID: '', |
| | | LoginUID: '', |
| | | textInput: '', |
| | | type: 'deepseek-chat', // deepseek-chat deepseek-reasoner |
| | | type: 'deepseek-reasoner', // deepseek-chat deepseek-reasoner |
| | | currentChat: {id: '', list: [], title: ''}, |
| | | chats: [] |
| | | } |
| | |
| | | if (!item.loading) { |
| | | list.push({ |
| | | role: item.role, |
| | | content: item.content |
| | | content: item.oriText || item.content |
| | | }) |
| | | } |
| | | }) |
| | |
| | | delete _chat.loading |
| | | _chat.list.pop() |
| | | |
| | | let _val = '' |
| | | let _html = '服务器繁忙,请稍后再试。' |
| | | let _val = '服务器繁忙,请稍后再试。' |
| | | let _html = _val |
| | | let tokens_count = 0 |
| | | if (res.success && res.choices && res.choices[0]) { |
| | | _val = res.choices[0].message.content |
| | | _html = this.getAssistVal(_val) |
| | | } else if (!res.success && res.rawStatusCode === 400 && res.message && /This\s*model's\s*maximum\s*context\s*length/.test(res.message)) { |
| | | _html = `当前对话已超出${type === 'deepseek-reasoner' ? '深度思考的' : ''}最大长度限制,开启一个新对话继续思考吧~` |
| | | _val = _html |
| | | } |
| | | |
| | | if (res.usage && res.usage.total_tokens) { |
| | |
| | | } |
| | | } |
| | | .input-wrap { |
| | | width: 800px; |
| | | width: 802px; |
| | | position: sticky; |
| | | bottom: 30px; |
| | | z-index: 2; |
| | | border-top-left-radius: 24px; |
| | | border-top-right-radius: 24px; |
| | | background-color: #ffffff; |
| | | .c9dd4ww { |
| | | cursor: text; |
| | | box-sizing: border-box; |