From da34633b25d16359cd91a656acad5e811f9972b7 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 14 三月 2023 18:09:54 +0800
Subject: [PATCH] 2023-03-14
---
src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx | 200 +++++++++++++++++++++++++------------------------
1 files changed, 102 insertions(+), 98 deletions(-)
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
index 9d3d7e7..09adfd9 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
@@ -1,8 +1,7 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Button, notification, Modal, Tooltip, Radio, Select } from 'antd'
-import { QuestionCircleOutlined } from '@ant-design/icons'
+import { Form, Row, Col, Button, notification, Tooltip, Select } from 'antd'
import moment from 'moment'
import Api from '@/api'
@@ -12,39 +11,100 @@
class CustomForm extends Component {
static propTpyes = {
- scripts: PropTypes.array, // 鑷畾涔夎剼鏈垪琛�
- usefulfields: PropTypes.any, // 鍙敤瀛楁
- systemScripts: PropTypes.array, // 绯荤粺鑴氭湰
- scriptsChange: PropTypes.func // 琛ㄥ崟
+ searches: PropTypes.any, // 鎼滅储鏉′欢
+ linefields: PropTypes.any,
+ scriptsChange: PropTypes.func
}
state = {
editItem: null,
+ systemScripts: [],
usefulfields: null,
loading: false,
- verifySql: ''
}
UNSAFE_componentWillMount () {
- this.resetfield(this.props.usefulfields)
+ this.resetfield(this.props.searches)
}
- UNSAFE_componentWillReceiveProps (nextProps) {
- if (nextProps.usefulfields && !is(fromJS(this.props.usefulfields), fromJS(nextProps.usefulfields))) {
- this.resetfield(nextProps.usefulfields)
+ UNSAFE_componentWillReceiveProps(nextProps) {
+ if (!is(fromJS(this.props.searches), fromJS(nextProps.searches))) {
+ this.resetfield(nextProps.searches)
}
}
- resetfield = (columns) => {
- columns = columns.filter(item => item.Column !== '$Index')
- let fields = columns.map(item => item.Column)
+ componentDidMount () {
+ this.getsysScript()
+ }
- 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)
- `
+ getsysScript = () => {
+ if (sessionStorage.getItem('mk_sys_scripts')) {
+ this.setState({
+ systemScripts: JSON.parse(sessionStorage.getItem('mk_sys_scripts'))
+ })
+ return
+ }
+ let _scriptSql = `Select distinct func+Remark as funcname,longparam, s.Sort from聽 s_custom_script s inner join (select OpenID from sapp where ID=@Appkey@) p on s.openid = case when s.appkey='' then s.openid else p.OpenID end order by s.Sort`
+
+ _scriptSql = Utils.formatOptions(_scriptSql)
+
+ let _sParam = {
+ func: 'sPC_Get_SelectedList',
+ LText: _scriptSql,
+ obj_name: 'data',
+ arr_field: 'funcname,longparam'
+ }
+
+ _sParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+ _sParam.secretkey = Utils.encrypt(_sParam.LText, _sParam.timestamp)
+ _sParam.open_key = Utils.encryptOpenKey(_sParam.secretkey, _sParam.timestamp) // 浜戠鏁版嵁楠岃瘉
+
+ Api.getSystemConfig(_sParam).then(res => {
+ if (res.status) {
+ let _scripts = res.data.map(item => {
+ return {
+ name: item.funcname,
+ value: window.decodeURIComponent(window.atob(item.longparam))
+ }
+ })
+
+ sessionStorage.setItem('mk_sys_scripts', JSON.stringify(_scripts))
+
+ this.setState({
+ systemScripts: _scripts
+ })
+ } else {
+ notification.warning({
+ top: 92,
+ message: res.message,
+ duration: 5
+ })
+ }
+ })
+ }
+
+ resetfield = (searches) => {
+ let _usefulFields = []
+ searches.forEach(item => {
+ if (!item.field) return
+
+ if (item.type === 'group') {
+ _usefulFields.push(item.field)
+ _usefulFields.push(item.datefield)
+ _usefulFields.push(item.datefield + '1')
+ } else if (['dateweek', 'datemonth', 'daterange'].includes(item.type)) {
+ _usefulFields.push(item.field)
+ _usefulFields.push(item.field + '1')
+ } else if (item.type === 'date' && _usefulFields.includes(item.field)) {
+ _usefulFields.push(item.field + '1')
+ } else {
+ _usefulFields.push(item.field)
+ }
+ })
+
this.setState({
- verifySql: _sql,
- usefulfields: fields.join(', ')
+ usefulfields: _usefulFields.join(', ')
})
}
@@ -63,6 +123,15 @@
// 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
this.props.form.validateFieldsAndScroll((err, values) => {
if (!err) {
+ if (/^[\s\n]+$/.test(values.sql)) {
+ notification.warning({
+ top: 92,
+ message: '璇疯緭鍏ql!',
+ duration: 5
+ })
+ return
+ }
+
values.uuid = this.state.editItem ? this.state.editItem.uuid : ''
let _quot = values.sql.match(/'{1}/g)
@@ -107,88 +176,22 @@
return
}
- let tail = `
- aaa:
- `
-
- let _initCustomScript = '' // 鍒濆鍖栬剼鏈�
- let _prevCustomScript = '' // 榛樿sql鍓嶆墽琛岃剼鏈�
- let _backCustomScript = '' // 榛樿sql鍚庢墽琛岃剼鏈�
-
- this.props.scripts.forEach(item => {
- if (item.status === 'false') return
-
- if (item.position === 'init') {
- _initCustomScript += `
- /* 鍒濆鍖栬剼鏈� */
- ${values.uuid === item.uuid ? values.sql : item.sql}
- `
- } else if (item.position === 'front') {
- _prevCustomScript += `
- /* 榛樿sql鍓嶈剼鏈� */
- ${values.uuid === item.uuid ? values.sql : item.sql}
- `
- } else {
- _backCustomScript += `
- /* 榛樿sql鍚庤剼鏈� */
- ${values.uuid === item.uuid ? values.sql : item.sql}
- `
- }
+ this.setState({
+ loading: true
})
- if (!values.uuid) {
- if (values.position === 'init') {
- _initCustomScript += `
- /* 鍒濆鍖栬剼鏈� */
- ${values.sql}
- `
- } else if (values.position === 'front') {
- _prevCustomScript += `
- /* 榛樿sql鍓嶈剼鏈� */
- ${values.sql}
- `
- } else {
- _backCustomScript += `
- /* 榛樿sql鍚庤剼鏈� */
- ${values.sql}
- `
- }
- }
-
- let param = {
- func: 's_debug_sql',
- exec_type: 'y',
- LText: this.state.verifySql + _initCustomScript + _prevCustomScript + _backCustomScript + tail
- }
-
- param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
- param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@(BID|ID|LoginUID|SessionUid|UserID|Appkey|time_id)@/ig, `'${param.timestamp}'`)
-
- // 澶栬仈鏁版嵁搴撴浛鎹�
- if (window.GLOB.externalDatabase !== null) {
- param.LText = param.LText.replace(/@db@/ig, window.GLOB.externalDatabase)
- }
-
- param.LText = Utils.formatOptions(param.LText)
- param.secretkey = Utils.encrypt('', param.timestamp)
-
- this.setState({loading: true})
- Api.genericInterface(param).then(res => {
- if (res.status) {
+ this.props.scriptsChange(values, (status) => {
+ if (status) {
this.setState({
loading: false,
editItem: null
- }, () => {
- this.props.scriptsChange(values)
})
this.props.form.setFieldsValue({
sql: ''
})
} else {
- this.setState({loading: false})
-
- Modal.error({
- title: res.message
+ this.setState({
+ loading: false
})
}
})
@@ -240,8 +243,8 @@
}
render() {
- const { systemScripts, sheet } = this.props
- const { usefulfields } = this.state
+ const { sheet, linefields } = this.props
+ const { usefulfields, systemScripts } = this.state
const { getFieldDecorator } = this.props.form
const formItemLayout = {
labelCol: {
@@ -269,12 +272,13 @@
</Col>
<Col span={24} className="sqlfield">
<Form.Item label={'鍙敤瀛楁'}>
- <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鍏叡鍊硷紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}><span style={{color: '#1890ff'}}>BID, ID, LoginUID, SessionUid, UserID, Appkey, time_id</span></Tooltip>,
- <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'绯荤粺鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}><span style={{color: '#fa8c16'}}>UserName, FullName, RoleID, mk_departmentcode, mk_organization, mk_user_type, mk_nation, mk_province, mk_city, mk_district, mk_address</span></Tooltip>,
- {usefulfields}
+ <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鍏叡鍊硷紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}><span style={{color: '#1890ff'}}>BID, ID, LoginUID, SessionUid, UserID, Appkey, time_id, typename</span></Tooltip>,
+ <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'绯荤粺鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}><span style={{color: '#fa8c16'}}>UserName, FullName, RoleID, mk_departmentcode, mk_organization, mk_user_type, mk_nation, mk_province, mk_city, mk_district, mk_address</span></Tooltip>
+ {usefulfields ? <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎼滅储鏉′欢锛岃鎸夌収@xxx@鏍煎紡浣跨敤銆�'}>, {usefulfields}</Tooltip> : null}
+ {linefields ? <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'琛ㄥ崟鍙婅鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}>, {linefields}</Tooltip> : null}
</Form.Item>
</Col>
- <Col span={8} style={{whiteSpace: 'nowrap'}}>
+ {/* <Col span={8} style={{whiteSpace: 'nowrap'}}>
<Form.Item style={{marginBottom: 0}} label={
<Tooltip placement="bottomLeft" title={'鑷畾涔夎剼鏈笌榛樿sql浣嶇疆鍏崇郴銆�'}>
<QuestionCircleOutlined className="mk-form-tip" />
@@ -291,8 +295,8 @@
</Radio.Group>
)}
</Form.Item>
- </Col>
- <Col span={10}>
+ </Col> */}
+ <Col span={8}>
<Form.Item style={{marginBottom: 0}} label={'蹇嵎娣诲姞'}>
<Select
showSearch
--
Gitblit v1.8.0