From 291b0107a031282e92d1d1fc0a9d3a3dc8229b85 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 16 五月 2024 11:46:00 +0800 Subject: [PATCH] 2024-05-16 --- src/tabviews/zshare/actionList/index.jsx | 2729 ++++------------------------------------------------------ 1 files changed, 204 insertions(+), 2,525 deletions(-) diff --git a/src/tabviews/zshare/actionList/index.jsx b/src/tabviews/zshare/actionList/index.jsx index 70767bc..8e213d8 100644 --- a/src/tabviews/zshare/actionList/index.jsx +++ b/src/tabviews/zshare/actionList/index.jsx @@ -1,2573 +1,252 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import moment from 'moment' import { is, fromJS } from 'immutable' -import { Button, Affix, Modal, notification, Spin, message } from 'antd' -import * as XLSX from 'xlsx' -import MutilForm from '@/tabviews/zshare/mutilform' -import ExcelIn from '../excelin' -import Utils from '@/utils/utils.js' -import options from '@/store/options.js' -import Api from '@/api' +import { Affix, Dropdown } from 'antd' +import { DownOutlined } from '@ant-design/icons' + +import asyncComponent from './asyncButtonComponent' import './index.scss' -const { confirm } = Modal -let socket = null +const NormalButton = asyncComponent(() => import('./normalbutton')) +const ExcelInButton = asyncComponent(() => import('./excelInbutton')) +const ExcelOutButton = asyncComponent(() => import('./exceloutbutton')) +const PopupButton = asyncComponent(() => import('./popupbutton')) +const TabButton = asyncComponent(() => import('./tabbutton')) +const NewPageButton = asyncComponent(() => import('./newpagebutton')) +const ChangeUserButton = asyncComponent(() => import('./changeuserbutton')) +const PrintButton = asyncComponent(() => import('./printbutton')) +const FuncMegvii = asyncComponent(() => import('./funcMegvii')) +const FuncZip = asyncComponent(() => import('./funczip')) +const EditLine = asyncComponent(() => import('./editLine')) +const ExportPdf = asyncComponent(() => import('./exportPdf')) +const FuncButton = asyncComponent(() => import('./funcbutton')) -class MainAction extends Component { +class ActionList extends Component { static propTpyes = { - menuType: PropTypes.any, // 鑿滃崟绫诲瀷锛屾櫘閫氳彍鍗曟垨HS - BID: PropTypes.string, // 涓昏〃ID + BID: PropTypes.any, // 涓昏〃ID BData: PropTypes.any, // 涓昏〃鏁版嵁 - Tab: PropTypes.any, // 濡傛灉褰撳墠鍏冪礌涓烘爣绛炬椂锛宼ab涓烘爣绛句俊鎭� - type: PropTypes.string, // 鍒ゆ柇褰撳墠涓轰富琛紙main锛夈�佸瓙琛紙sub锛夈�佸瓙琛ㄦ爣绛撅紙subtab锛� + selectedData: PropTypes.any, // 瀛愯〃涓�夋嫨鏁版嵁 MenuID: PropTypes.string, // 鑿滃崟ID actions: PropTypes.array, // 鎸夐挳缁� - logcolumns: PropTypes.array, // 鏄剧ず鍒� - dict: PropTypes.object, // 瀛楀吀椤� + columns: PropTypes.array, // 鏄剧ず鍒� setting: PropTypes.any, // 椤甸潰閫氱敤璁剧疆 - ContainerId: PropTypes.any, // tab椤甸潰ID锛岀敤浜庡脊绐楁帶鍒� - refreshdata: PropTypes.func, // 鎵ц瀹屾垚鍚庢暟鎹埛鏂� - triggerPopview: PropTypes.func, // 寮圭獥鏍囩椤佃Е鍙� - getexceloutparam: PropTypes.func, // 鑾峰彇excel瀵煎嚭鏁版嵁 - gettableselected: PropTypes.func, // 鑾峰彇琛ㄦ牸涓暟鎹� - permRoles: PropTypes.any, // 鐢ㄦ埛鏉冮檺鍒楄〃 - triggerBtn: PropTypes.any } state = { - visible: false, - formdata: null, - tabledata: null, - confirmLoading: false, - execAction: null, - loadingUuid: '', - btnloading: false, - configMap: {}, - running: false + actions: [], + mores: null } - /** - * @description 涓婄骇鑿滃崟id鍙樺寲鏃讹紝鍒锋柊鏁版嵁 - */ - UNSAFE_componentWillReceiveProps(nextProps) { - if (nextProps.triggerBtn && !is(fromJS(this.props.triggerBtn), fromJS(nextProps.triggerBtn)) && nextProps.triggerBtn.parentId === this.props.MenuID) { - if (!this.state.loadingUuid && !this.state.visible && !this.state.running) { - let _btn = nextProps.triggerBtn.button - if (!_btn.OpenType) { - _btn = this.props.actions.filter(item => item.uuid === _btn.uuid)[0] - } - if (_btn) { - this.actionTrigger(_btn, nextProps.triggerBtn.data) - } - } - } - } + UNSAFE_componentWillMount() { + const { setting, actions } = this.props - refreshdata = (item, type) => { - this.props.refreshdata(item, type) - } - - /** - * @description 瑙﹀彂鎸夐挳鎿嶄綔 - */ - actionTrigger = (item, record) => { - const { setting, type, Tab, BID } = this.props - - if (type === 'sub' && Tab && Tab.supMenu && !BID) { - notification.warning({ - top: 92, - message: '闇�瑕佷笂绾т富閿�硷紒', - duration: 5 - }) - return - } - - let _this = this - let data = this.props.gettableselected() || [] - - if (record) { // 琛ㄦ牸涓Е鍙戞寜閽� - data = [record] - } - - if (item.Ot !== 'notRequired' && data.length === 0) { - // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹� - notification.warning({ - top: 92, - message: this.props.dict['main.action.confirm.selectline'], - duration: 5 - }) - return - } else if (item.Ot === 'requiredSgl' && data.length !== 1) { - // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁 - notification.warning({ - top: 92, - message: this.props.dict['main.action.confirm.selectSingleLine'], - duration: 5 - }) - return - } else if (item.Ot !== 'notRequired' && !setting.primaryKey) { - // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿� - notification.warning({ - top: 92, - message: '鏈缃富閿紒', - duration: 5 - }) - return - } - - if (item.OpenType === 'prompt') { - this.setState({ - running: true - }) - confirm({ - title: this.props.dict['main.action.confirm.tip'], - onOk() { - return new Promise(resolve => { - _this.execSubmit(item, data, resolve) - }) - }, - onCancel() { - _this.setState({ - running: false - }) - } - }) - } else if (item.OpenType === 'exec') { - this.setState({loadingUuid: item.uuid}) - this.execSubmit(item, data, () => { - this.setState({loadingUuid: ''}) - }) - } else if (item.OpenType === 'pop') { - this.setState({ - execAction: item, - tabledata: data, - btnloading: true - }, () => { - this.improveAction(item) - }) - } else if (item.OpenType === 'excelOut') { - if ( - item.intertype === 'inner' && !item.innerFunc && - ((setting.interType === 'inner' && setting.innerFunc) || setting.interType === 'outer') - ) { - notification.warning({ - top: 92, - message: '瀵煎嚭鎸夐挳閰嶇疆閿欒锛�', - duration: 5 - }) - return - } - - this.triggerExcelout(item) - - } else if (item.OpenType === 'excelIn') { - if (item.verify && item.verify.sheet && item.verify.columns && item.verify.columns.length > 0) { - let primaryId = '' // 瀵煎叆鏃惰Id - if (item.Ot === 'requiredSgl') { - primaryId = data[0][setting.primaryKey] || '' - } - - this.refs.excelIn.exceltrigger(item, primaryId) - } else { - notification.warning({ - top: 92, - message: 'excel瀵煎叆楠岃瘉淇℃伅鏈缃紒', - duration: 5 - }) - } - } else if (item.OpenType === 'popview' && this.props.type !== 'subtab') { - this.props.triggerPopview(item, data) - } else if (item.OpenType === 'popview' && this.props.type === 'subtab') { - notification.warning({ - top: 92, - message: '寮圭獥椤甸潰涓嶆敮鎸佹璁剧疆锛�', - duration: 5 - }) - } else if (item.OpenType === 'innerpage') { - let Id = data[0][setting.primaryKey] - - if (item.pageTemplate === 'print') { - let cloudmsg = '&cuid=' + (sessionStorage.getItem('CloudUserID') || '') + '&csid=' + (sessionStorage.getItem('CloudSessionUid') || '') + '&clid=' + (sessionStorage.getItem('CloudLoginUID') || '') + '&cun=' + (sessionStorage.getItem('CloudUserName') || '') - let msg = '&uid=' + sessionStorage.getItem('UserID') + '&sid=' + sessionStorage.getItem('SessionUid') + '&lid=' + sessionStorage.getItem('LoginUID') + '&un=' + sessionStorage.getItem('User_Name') - let src = '#/print/' + window.btoa('ID=' + Id + msg + cloudmsg) - window.open(src) - } else { - notification.warning({ - top: 92, - message: '椤甸潰绫诲瀷璁剧疆閿欒锛�', - duration: 5 - }) - } - } else if (item.OpenType === 'outerpage') { - let url = item.url - if (item.Ot === 'requiredSgl' && setting.primaryKey) { - url = url + '?ID=' + data[0][setting.primaryKey] - } else if (item.Ot !== 'notRequired' && !setting.primaryKey) { - let ids = data.map(_data => _data[setting.primaryKey]).join(',') - url = url + '?ID=' + ids - } - window.open(url) - } else if (item.OpenType === 'tab' || item.OpenType === 'blank') { - this.props.triggerPopview(item, data) - } else if (item.OpenType === 'funcbutton') { - if (item.funcType === 'changeuser') { - this.changeUser(item, data) - } else if (item.funcType === 'print') { - if (item.execMode === 'pop') { - this.setState({ - execAction: item, - tabledata: data, - btnloading: true - }, () => { - this.improveAction(item) - }) - } else if (item.execMode === 'prompt') { - this.setState({ - running: true - }) - confirm({ - title: this.props.dict['main.action.confirm.tip'], - onOk() { - _this.triggerPrint(item, data) - }, - onCancel() { - _this.setState({ - running: false - }) - } - }) - } else { - this.triggerPrint(item, data) - } - } + if (!setting.btnlimit || setting.btnlimit >= actions.length) { + this.setState({actions: actions}) } else { - notification.warning({ - top: 92, - message: '瀹屽杽涓�傘�傘��', - duration: 5 - }) - } - } - - /** - * @description 瑙﹀彂鎵撳嵃 - */ - triggerPrint = (btn, data, formlist = []) => { - let formdata = {} - formlist.forEach(_data => { - formdata[_data.key] = _data.value - }) - - if ( - !btn.verify || - (btn.verify.printMode === 'normal' && (!btn.verify.Template || !btn.verify.linkUrl)) || - (btn.verify.printMode === 'custom' && (!btn.verify.printFunc || !btn.verify.linkUrl)) - ) { - notification.warning({ - top: 92, - message: '璇峰畬鍠勬墦鍗伴獙璇佷俊鎭紒', - duration: 5 - }) - return - } - - let printlist = [] - let templates = [] - let printCount = 1 - - if (formdata.printCount && typeof(formdata.printCount) === 'number' && formdata.printCount >= 1) { - printCount = formdata.printCount - } - - this.setState({loadingUuid: btn.uuid}) - - new Promise(resolve => { - if (btn.intertype === 'inner' && !btn.innerFunc) { - let printcell = {} - - printcell.printType = formdata.printType || '' - printcell.printCount = printCount - printcell.templateID = btn.verify.Template || '' - - if (btn.Ot === 'notRequired') { - printcell.data = [formdata] - } else { - printcell.data = data.map(cell => { - return {...cell, ...formdata} - }) - } - - templates.push(printcell.templateID) - - printlist.push(printcell) - - resolve(true) - } else { - this.getprintdata(btn, data, formdata, formlist).then(result => { - if (result.next) { - printlist = result.list.map(cell => { - cell.templateID = cell.templateID || btn.verify.Template - cell.printType = cell.printType || formdata.printType || '' - - let _printCount = printCount - if (cell.printCount && typeof(cell.printCount) === 'number' && cell.printCount >= 1) { - _printCount = cell.printCount - } - - cell.printCount = _printCount - - templates.push(cell.templateID) - - return cell - }) - } - - resolve(result.next) - }) - } - }).then(res => { - // 鑾峰彇鎵撳嵃妯℃澘 getTemp - if (!res) return false - - if (btn.verify.printMode === 'custom') { - this.execCustomPrint(btn, printlist, formdata) - - return false - } - - templates = Array.from(new Set(templates)) // 鍘婚噸 - - let deffers = templates.map(tempId => { - return new Promise(resolve => { - let param = { - func: 's_PrintTemplateMGetData', - Type: 'Y', - ID: tempId - } - - if (window.GLOB.mainSystemApi) { // 浠庡崟鐐圭櫥褰曟湇鍔″櫒鍙栨墦鍗伴厤缃俊鎭� - param.rduri = window.GLOB.mainSystemApi - } - - Api.getLocalConfig(param).then(result => { - result.tempId = tempId - resolve(result) - }) - }) - }) - - return Promise.all(deffers) - }).then(result => { - if (!result) return - - let errorMsg = '' - let _temps = {} - - result.forEach(res => { - if (res.status && !errorMsg) { - let _temp = this.getPrintConfigParam(res) - - if (_temp.error) { - errorMsg = { - ErrCode: 'N', - message: _temp.error, - ErrMesg: _temp.error, - status: false - } - } else { - _temps[res.tempId] = _temp - } - } else if (!errorMsg) { - errorMsg = res - } - }) - - if (!errorMsg) { - this.execPrint(btn, printlist, _temps, formdata) - } else { - this.execError(errorMsg, btn) - } - }) - } - - execCustomPrint = (item, printlist, formdata) => { - this.setState({loadingUuid: ''}) - this.execSuccess(item, { - ErrCode: '-1', - message: '', - ErrMesg: '', - status: true - }) - - try { - // eslint-disable-next-line - let func = new Function('data', 'form', 'printer', 'notification', item.verify.printFunc) - func(printlist, formdata, item.verify, notification) - } catch (e) { - console.warn(e) - - try { - // eslint-disable-next-line - let evalfunc = eval('(true && function (data, form, printer, notification) {' + item.verify.printFunc + '})') - evalfunc(printlist, formdata, item.verify, notification) - } catch (error) { - console.warn(error) - notification.warning({ - top: 92, - message: '鑷畾涔夊嚱鏁版墽琛岄敊璇紒', - duration: 5 - }) - } - } - } - - /** - * @description 鑾峰彇鎵撳嵃鏁版嵁 - */ - getprintdata = (btn, data, formdata, formlist) => { - const { setting } = this.props - - let _list = [] - return new Promise(resolve => { - let params = [] - let param = { - BID: this.props.BID - } - - if (btn.Ot === 'notRequired') { - let _param = { ...param, ...formdata } - params.push(_param) - } else if (btn.Ot === 'requiredSgl') { - param[setting.primaryKey] = data[0][setting.primaryKey] - - let _param = { ...param, ...formdata } - - params.push(_param) - } else if (btn.Ot === 'requiredOnce') { - let ids = data.map(d => { return d[setting.primaryKey]}) - ids = ids.filter(Boolean) - ids = ids.join(',') - - param[setting.primaryKey] = ids - - let _param = { ...param, ...formdata } - - params.push(_param) - } else if (btn.Ot === 'required') { - params = data.map((cell, index) => { - let _param = { ...param } - _param[setting.primaryKey] = cell[setting.primaryKey] - - formlist.forEach(_data => { - if (index !== 0 && _data.readin && cell.hasOwnProperty(_data.key)) { - _param[_data.key] = cell[_data.key] - } else { - _param[_data.key] = _data.value - } - }) - return _param - }) - } - - if (btn.intertype === 'inner') { - params = params.map(_param => { - _param.func = btn.innerFunc - - return _param - }) - - if (params.length <= 20) { - let deffers = params.map(par => { - return new Promise(resolve => { - Api.genericInterface(par).then(res => { - resolve(res) - }) - }) - }) - Promise.all(deffers).then(result => { - let errorMsg = '' - result.forEach(res => { - if (!res.status) { - errorMsg = res - } - }) - if (!errorMsg) { - resolve({next: true, list: result}) - } else { - this.execError(errorMsg, btn) - resolve({next: false, list: []}) - } - }) - } else { - this.printInnerLoopRequest(params, btn, _list, resolve) - } - } else { - this.printOuterLoopRequest(params, btn, _list, resolve) - } - }) - } - - /** - * @description 澶栭儴璇锋眰寰幆鎵ц - */ - printOuterLoopRequest = (params, btn, _list, _resolve) => { - let param = params.shift() - let _outParam = null - - new Promise(resolve => { - // 鍐呴儴璇锋眰 - if (btn.innerFunc) { - param.func = btn.innerFunc - // 瀛樺湪鍐呴儴鍑芥暟鏃讹紝鏁版嵁棰勫鐞� - Api.genericInterface(param).then(res => { - if (res.status) { - delete res.ErrCode - delete res.ErrMesg - delete res.message - delete res.status - - // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛 - let keys = Object.keys(res) // 鎻愪氦澶栭儴鎺ュ彛鍓嶏紝娣诲姞BID - if (keys.filter(key => key.toLowerCase() === 'bid').length === 0) { - res.BID = this.props.BID - } - - resolve(res) - } else { - this.execError(res, btn) - resolve(false) - _resolve({next: false, list: []}) - } - }) - } else { - resolve(param) - } - }).then(res => { - if (!res) return - // 澶栭儴璇锋眰 - _outParam = JSON.parse(JSON.stringify(res)) - - if (this.props.menuType === 'HS') { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - res.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - res.rduri = btn.interface - } - } else { - if (btn.sysInterface === 'true') { - res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - res.rduri = btn.interface - } - } - - if (btn.outerFunc) { - res.func = btn.outerFunc - } - - return Api.genericInterface(res) - }).then(response => { - if (!response) return - - if (btn.callbackFunc) { - // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤 - delete response.message - delete response.status - - response.func = btn.callbackFunc - - let _callbackparam = {..._outParam, ...response} - - return Api.genericInterface(_callbackparam) - } else if (response.status) { - - _list.push(response) - - // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹� - if (params.length === 0) { - _resolve({next: true, list: _list}) - } else { - this.printOuterLoopRequest(params, btn, _list, _resolve) - } - } else { - this.execError(response, btn) - _resolve({next: false, list: []}) - } - }).then(response => { - if (!response) return - - if (response.status) { - _list.push(response) - - // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹� - if (params.length === 0) { - _resolve({next: true, list: _list}) - } else { - this.printOuterLoopRequest(params, btn, _list, _resolve) - } - } else { - this.execError(response, btn) - _resolve({next: false, list: []}) - } - }) - } - - /** - * @description 鍐呴儴璇锋眰寰幆鎵ц - */ - printInnerLoopRequest = (params, btn, _list, _resolve) => { - let param = params.shift() - - Api.genericInterface(param).then(res => { - if (res.status) { - _list.push(res) - - if (params.length === 0) { - _resolve({next: true, list: _list}) - } else { - this.printInnerLoopRequest(params, btn, _list, _resolve) - } - } else { - this.execError(res, btn) - _resolve({next: false, list: []}) - } - }) - } - - getPrintConfigParam = (res) => { - let error = '' // 閿欒淇℃伅 - let configParam = '' // 妯℃澘閰嶇疆淇℃伅 - let _configparam = '' // 鎵撳嵃閰嶇疆淇℃伅 - let fields = [] // 妯℃澘涓墍闇�瀛楁 - let nonEFields = [] // 闈炵┖瀛楁 - - if (!res.ConfigParam) { - error = '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�' - } else { - try { - configParam = JSON.parse(window.decodeURIComponent(window.atob(res.ConfigParam))) - } catch (e) { - configParam = '' - } - - if (!configParam) { - error = '鎵撳嵃妯℃澘瑙f瀽閿欒锛�' - } else { - - let control = configParam.elements.map(element => { - let _field = element.field - - if (_field === 'other_field') { - _field = element.cusfield || '' - } - - let item = { - Name: element.name || '', - Type: element.type, - Value: element.value || '', - Field: _field, - Left: element.left, - Top: element.top, - Width: element.width, - Height: element.height, - Rotate: element.rotate, - BorderSize: element.borderSize / 10, - BorderColor: element.borderColor, - Align: element.align, - VerticalAlign: element.vertialAlign, - BackColor: element.background, - ForeColor: 'black' - } - - if (!item.Width || !item.Height) { - item.Type = 'line' - item.Value = '' - item.Field = '' - item.FontFamily = element.fontFamily || '' - item.FontSize = element.fontSize || '' - item.FontStyle = (!element.fontWeight || element.fontWeight === 'normal') ? 'regular' : element.fontWeight - item.Padding = 0 - item.Trimming = '' - } else if (item.Type === 'image') { - item.ImageWidth = element.imgWidth - item.ImageHeight = element.imgHeight - item.Trimming = '' - } else if (item.Type === 'text') { - item.FontFamily = element.fontFamily - item.FontSize = element.fontSize - item.FontStyle = element.fontWeight === 'normal' ? 'regular' : element.fontWeight - item.Padding = element.padding / 2 - item.Trimming = '' - } else if (item.Type === 'barcode') { - item.BarcodeType = element.barcodeType - item.BarcodeWidth = element.barcodeWidth - item.BarcodeHeight = element.barcodeHeight - item.BarcodeLabel = element.barcodeLabel - item.LabelSize = element.fontSize - } else if (item.Type === 'qrcode') { - item.Type = 'barcode' - item.BarcodeType = element.barcodeType - item.BarcodeWidth = element.qrcodeWidth - item.BarcodeHeight = element.qrcodeWidth - item.BarcodeLabel = false - } - - if (item.Field) { - fields.push(item.Field) - // 鏉$爜浜岀淮鐮佸瓧娈典笉鍙负绌� - if (item.Type === 'qrcode' || item.Type === 'barcode') { - nonEFields.push(item.Field) - } - } - - return item - }) - - _configparam = { - Version: '', - Title: configParam.name, - Author: sessionStorage.getItem('UserID'), - Description: configParam.remark, - PrintTempNO: configParam.PrintTempNO, - PageSetting: { - Width: configParam.width, - Height: configParam.height, - Left: '0', - Right: '0', - Top: '0', - Bottom: '0', - Landscape: false - }, - PageHeader: [], - ReportHeader: { - Control: control - }, - ReportFooter: [], - PageFooter: [] - } - } - } - - return { - error: error, - config: _configparam, - fields: fields, - nonEFields: nonEFields - } - } - - execPrint = (item, list, template, formdata) => { - let _errors = [] - - let defaultPrinter = item.verify.defaultPrinter || 'lackprinter' - let printers = {} - if (item.verify.printerTypeList && item.verify.printerTypeList.length > 0) { - item.verify.printerTypeList.forEach(cell => { - if (cell.printer) { - printers[cell.Value] = cell.printer - } - }) - } - - let printdata = {} - - list.forEach(res => { - let _printer = defaultPrinter - - if (res.printType && printers[res.printType]) { - _printer = printers[res.printType] - } - - printdata[_printer] = printdata[_printer] || [] - - printdata[_printer].push(res) - }) - - let printerList = [] - - Object.keys(printdata).forEach(printer => { - let _documents = [] - Object.keys(template).forEach(key => { - let _datalist = printdata[printer].filter(cell => cell.templateID === key) - - if (_datalist.length > 0) { - let _data = [] - _datalist.forEach(res => { - res.data.forEach(_cell => { - for (let i = 0; i < res.printCount; i++) { - _data.push({...formdata, ..._cell}) - } - }) - }) - - let _fields = Array.from(new Set(template[key].fields)) - let _nonEFields = Array.from(new Set(template[key].nonEFields)) - let lacks = [] - let emptys = [] - - _data.forEach(d => { - _fields.forEach(f => { - if (!d.hasOwnProperty(f)) { - lacks.push(f) - } else if (_nonEFields.includes(f) && !d[f] && d[f] !== 0) { - emptys.push(f) - } - }) - }) - - let _cell = { - documentID: Utils.getuuid(), - contents: [ - { - data: _data, - templateURL: JSON.stringify(template[key].config) - } - ] - } - - if (lacks.length > 0 || emptys.length > 0) { - lacks = Array.from(new Set(lacks)) - emptys = Array.from(new Set(emptys)) - - _errors.push({ - title: template[key].config.Title, - lacks: lacks, - emptys: emptys - }) - } - - _documents.push(_cell) - } - }) - - if (_documents.length > 0) { - printerList.push({ - cmd: 'print', - requestID: Utils.getuuid(), - version: Utils.getuuid(), - task: { - taskID: Utils.getuuid(), - preview: false, - printer: printer, - documents: _documents - } - }) - } - }) - - if (list.length === 0) { - this.setState({loadingUuid: ''}) - this.execError({ - ErrCode: 'N', - message: '鏈幏鍙栧埌鎵撳嵃淇℃伅锛�', - ErrMesg: '', - status: false - }, item) - return - } else if (_errors.length > 0) { - let lackerror = [] - let emptyerror = [] - - _errors.forEach(err => { - if (err.lacks.length > 0) { - lackerror.push(`鏁版嵁涓湭鑾峰彇鍒版ā鏉匡紙${err.title}锛�${err.lacks.join('銆�')} 瀛楁`) - } - if (err.emptys.length > 0) { - emptyerror.push(`鏁版嵁涓ā鏉匡紙${err.title}锛� ${err.emptys.join('銆�')} 瀛楁涓嶅彲涓虹┖`) - } - }) - - let msg = [] - if (lackerror.length > 0) { - msg.push(lackerror.join(' ; ')) - } - - if (emptyerror.length > 0) { - msg.push(emptyerror.join(' ; ')) - } - - this.setState({loadingUuid: ''}) - this.execError({ - ErrCode: 'N', - message: msg.join(' ; ') + ' !', - ErrMesg: '', - status: false - }, item) - return - } - - let lackItems = printerList.filter(cell => cell.task.printer === 'lackprinter')[0] - - if (!socket || socket.readyState !== 1 || socket.url !== 'ws://' + item.verify.linkUrl) { - socket = new WebSocket('ws://' + item.verify.linkUrl) - } else { - if (lackItems) { - let request = { - requestID: '', - version: '', - cmd: 'getPrinters' - } - socket.send(JSON.stringify(request)) - } else { - printerList.forEach(cell => { - socket.send(JSON.stringify(cell)) - }) - - this.setState({loadingUuid: ''}) - this.execSuccess(item, { - ErrCode: 'S', - message: '', - ErrMesg: '鎵撳嵃璇锋眰宸插彂鍑恒��', - status: true - }) - } - } - // 鎵撳紑Socket - socket.onopen = () =>{ - if (lackItems) { - let request = { - requestID: '', - version: '', - cmd: 'getPrinters' - } - socket.send(JSON.stringify(request)) - } else { - printerList.forEach(cell => { - socket.send(JSON.stringify(cell)) - }) - - this.setState({loadingUuid: ''}) - this.execSuccess(item, { - ErrCode: 'S', - message: '', - ErrMesg: '鎵撳嵃璇锋眰宸插彂鍑恒��', - status: true - }) - } - } - // 鐩戝惉娑堟伅 - socket.onmessage = (event) => { - let data = '' - - if (event.data) { - try { - data = JSON.parse(event.data) - } catch { - this.setState({loadingUuid: ''}) - this.execError({ - ErrCode: 'N', - message: event.data, - ErrMesg: '', - status: false - }, item) - - data = '' - } - } - - if (data && data.cmd === 'getPrinters' && data.status) { - printerList.forEach(cell => { - if (cell.task.printer === 'lackprinter') { - cell.task.printer = data.defaultPrinter - } - socket.send(JSON.stringify(cell)) - }) - - this.setState({loadingUuid: ''}) - this.execSuccess(item, { - ErrCode: 'S', - message: '', - ErrMesg: '鎵撳嵃璇锋眰宸插彂鍑恒��', - status: true - }) - } else if (data && data.message && !data.status) { - this.setState({loadingUuid: ''}) - this.execError({ - ErrCode: 'N', - message: data.message, - ErrMesg: '', - status: false - }, item) - } - } - - socket.onerror = () => { - this.setState({loadingUuid: ''}) - this.execError({ - ErrCode: 'N', - message: '鏃犳硶杩炴帴鍒�:' + item.verify.linkUrl, - ErrMesg: '', - status: false - }, item) - } - } - - /** - * @description 鍒囨崲鐢ㄦ埛 - */ - changeUser = (btn, data) => { - const { setting } = this.props - let _this = this - - let param = { - BID: this.props.BID, - func: 'webapi_ChangeUser', - appkey: window.GLOB.appkey || '', - rduri: window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } - - param[setting.primaryKey] = data[0][setting.primaryKey] - - this.setState({ - running: true - }) - confirm({ - title: this.props.dict['main.action.confirm.tip'], - onOk() { - return new Promise(resolve => { - Api.genericInterface(param).then(res => { - resolve() - if (res.status) { - sessionStorage.setItem('avatar', res.icon || '') - sessionStorage.setItem('UserID', res.UserID) - sessionStorage.setItem('SessionUid', Utils.getuuid()) - sessionStorage.setItem('LoginUID', res.LoginUID) - sessionStorage.setItem('User_Name', res.UserName) - sessionStorage.setItem('Full_Name', res.FullName) - - window.location.reload() - } else { - notification.error({ - top: 92, - message: res.message || res.ErrMesg, - duration: btn.verify && btn.verify.ntime ? btn.verify.ntime : 15 - }) - } - }) - }) - }, - onCancel() { - _this.setState({ - running: false - }) - } - }) - } - - /** - * @description 鎸夐挳鎻愪氦鎵ц - */ - execSubmit = (btn, data, _resolve, formdata) => { - const { setting, logcolumns } = this.props - - if (btn.OpenType === 'funcbutton' && btn.funcType === 'print' && btn.execMode === 'pop') { - this.setState({ - confirmLoading: false, - visible: false - }) - this.triggerPrint(btn, data, formdata) - return - } - if (btn.intertype === 'inner') { - // 浣跨敤鍐呴儴鎺ュ彛鏃讹紝鍐呴儴鍑芥暟鍜屾暟鎹簮涓嶅彲鍚屾椂涓虹┖, 浣跨敤绯荤粺鍑芥暟鏃讹紝绫诲瀷涓嶅彲涓虹┖ - if (!btn.innerFunc && (!btn.sql || (btn.sql && !btn.sqlType))) { - this.actionSettingError() - _resolve() - return - } - - // 鎵ц鏂瑰紡涓哄琛屾嫾鎺ワ紝涓旀墦寮�鏂瑰紡涓鸿〃鍗曟椂锛屼細杞负寰幆鍙戦�佽姹� - // 鎵撳紑鏂瑰紡涓烘ā鎬佹锛屼娇鐢ㄥ唴閮ㄥ嚱鏁版坊鍔�(鏈夋壒閲忔坊鍔犲満鏅紝宸插幓闄�) - if ( - btn.Ot === 'notRequired' || - btn.Ot === 'requiredSgl' || - (btn.Ot === 'requiredOnce' && btn.OpenType !== 'pop') - ) { - - // 鍒涘缓鍑瘉鏃讹紝闇�瑕侀�夋嫨琛屾椂 - if (data.length === 0 && !btn.innerFunc && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { - notification.warning({ - top: 92, - message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒', - duration: 5 - }) - return - } - - let param = { // 绯荤粺瀛樺偍杩囩▼ - func: 'sPC_TableData_InUpDe', - BID: this.props.BID - } - let primaryId = setting.primaryKey && data[0] ? (data[0][setting.primaryKey] || '') : '' - - if (btn.OpenType === 'prompt' || btn.OpenType === 'exec') { // 鏄惁寮规鎴栫洿鎺ユ墽琛� - let ID = '' - if (btn.Ot === 'notRequired') { - - } else if (btn.Ot === 'requiredSgl') { - ID = data[0][setting.primaryKey] - } else if (btn.Ot === 'requiredOnce') { // id鍊兼嫾鎺� - let ids = data.map(d => { return d[setting.primaryKey]}) - ID = ids.join(',') - } - - if (btn.innerFunc) { // 浣跨敤鑷畾涔夊嚱鏁� - param.func = btn.innerFunc - if (setting.primaryKey) { // 涓婚敭瀛樺湪鏃讹紝璁剧疆涓婚敭鍙傛暟 - param[setting.primaryKey] = ID - } - } else if (btn.sql) { - param.ID = primaryId - param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, data[0], logcolumns)) // 鏁版嵁婧� - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - } - } else if (btn.OpenType === 'pop') { // 琛ㄥ崟 - if (btn.innerFunc) { - param.func = btn.innerFunc - - if (setting.primaryKey) { // 涓婚敭瀛樺湪鏃讹紝璁剧疆涓婚敭鍙傛暟 - param[setting.primaryKey] = primaryId - } - - formdata.forEach(_data => { - param[_data.key] = _data.value - }) - - } else if (btn.sql && btn.sqlType === 'insert') { // 绯荤粺鍑芥暟娣诲姞鏃讹紝鐢熸垚uuid - primaryId = '' - - if (formdata && setting.primaryKey) { // 琛ㄥ崟涓瓨鍦ㄤ富閿瓧娈碉紝涓婚敭鍊间互琛ㄥ崟涓殑鍊间负鍑� - let _form = formdata.filter(_form => _form.key === setting.primaryKey)[0] - if (_form) { - primaryId = _form.value - } - } - - param.ID = primaryId || Utils.getguid() - param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns)) // 鏁版嵁婧� - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - } else if (btn.sql) { - param.ID = primaryId - param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0], logcolumns)) // 鏁版嵁婧� - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - } - } - - Api.genericInterface(param).then((res) => { - if (res.status) { - this.execSuccess(btn, res) - } else { - this.execError(res, btn) - } - _resolve() - }) - } else if (btn.Ot === 'required' || (btn.Ot === 'requiredOnce' && btn.OpenType === 'pop')) { - let _formPrimaryId = '' - if (formdata && setting.primaryKey) { // 琛ㄥ崟涓瓨鍦ㄤ富閿瓧娈碉紝涓婚敭鍊间互琛ㄥ崟涓殑鍊间负鍑� - let _form = formdata.filter(_form => _form.key === setting.primaryKey)[0] - if (_form) { - _formPrimaryId = _form.value - } - } - - let _params = data.map((cell, index) => { - let param = { - func: 'sPC_TableData_InUpDe', - BID: this.props.BID - } - let primaryId = setting.primaryKey ? cell[setting.primaryKey] : '' - - if (btn.OpenType === 'prompt' || btn.OpenType === 'exec') { // 鏄惁寮规鎴栫洿鎺ユ墽琛� - - if (btn.innerFunc) { - param.func = btn.innerFunc - if (setting.primaryKey) { - param[setting.primaryKey] = primaryId - } - } else if (btn.sql) { - param.ID = primaryId - param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, cell, logcolumns)) // 鏁版嵁婧� - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - } - } else if (btn.OpenType === 'pop') { // 琛ㄥ崟 - if (btn.innerFunc) { - param.func = btn.innerFunc - - formdata.forEach(_data => { - if (index !== 0 && _data.readin && cell.hasOwnProperty(_data.key)) { - param[_data.key] = cell[_data.key] - } else { - param[_data.key] = _data.value - } - }) - - if (setting.primaryKey) { - param[setting.primaryKey] = primaryId - } - } else if (btn.sql && btn.sqlType === 'insert') { // 绯荤粺鍑芥暟娣诲姞鏃讹紝鐢熸垚uuid - param.ID = _formPrimaryId || Utils.getguid() - param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns)) // 鏁版嵁婧� - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - } else if (btn.sql) { - if (index !== 0) { - formdata = formdata.map(_data => { - if (_data.readin && cell.hasOwnProperty(_data.key)) { - _data.value = cell[_data.key] - } - return _data - }) - } - - param.ID = primaryId - param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns)) // 鏁版嵁婧� - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - } - } - - return param - }) - - if (_params.length <= 20) { - let deffers = _params.map(param => { - return new Promise(resolve => { - Api.genericInterface(param).then(res => { - resolve(res) - }) - }) - }) - Promise.all(deffers).then(result => { - let iserror = false - let errorMsg = '' - result.forEach(res => { - if (res.status) { - errorMsg = res - } else { - iserror = true - errorMsg = res - } - }) - if (!iserror) { - this.execSuccess(btn, errorMsg) - } else { - this.execError(errorMsg, btn) - } - _resolve() - }) - } else { // 瓒呭嚭20涓姹傛椂寰幆鎵ц - this.innerLoopRequest(_params, btn, _resolve) - } - } else { - this.actionSettingError() - _resolve() - return - } - } else if (btn.intertype === 'outer') { - /** *********************璋冪敤澶栭儴鎺ュ彛************************* */ - if (!btn.interface) { // 鎺ュ彛鍦板潃涓嶅瓨鍦ㄦ椂鎶ラ敊 - this.actionSettingError() - _resolve() - return - } - - let _params = [] // 璇锋眰鍙傛暟鏁扮粍 - - if (btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') { - let param = { - BID: this.props.BID - } - - if (btn.OpenType === 'pop' && formdata) { // 琛ㄥ崟 - formdata.forEach(_data => { - param[_data.key] = _data.value - }) - } - - // 鑾峰彇id - if (btn.Ot === 'notRequired') { - - } else if (btn.Ot === 'requiredSgl' && setting.primaryKey) { - param[setting.primaryKey] = data[0][setting.primaryKey] - } else if (btn.Ot === 'requiredOnce' && setting.primaryKey) { - let ids = data.map(d => { return d[setting.primaryKey]}) - param[setting.primaryKey] = ids.join(',') - } - - _params.push(param) - } else if (btn.Ot === 'required') { - // 閫夋嫨澶氳锛屽惊鐜皟鐢� - _params = data.map((cell, index) => { - let _cell = { - BID: this.props.BID, - } - - let _formparam = {} - if (btn.OpenType === 'pop' && formdata) { // 琛ㄥ崟 - formdata.forEach(_data => { - if (index !== 0 && _data.readin && cell.hasOwnProperty(_data.key)) { - _formparam[_data.key] = cell[_data.key] - } else { - _formparam[_data.key] = _data.value - } - }) - } - - if (setting.primaryKey) { - _cell[setting.primaryKey] = cell[setting.primaryKey] - } - - _cell = {..._formparam, ..._cell} - - return _cell - }) - } else { - this.actionSettingError() - _resolve() - return - } - - // 寰幆璋冪敤澶栭儴鎺ュ彛锛堝寘鎷唴閮ㄥ強鍥炶皟鍑芥暟锛� - this.outerLoopRequest(_params, btn, _resolve) + let mores = fromJS(actions).toJS() - } else { - this.actionSettingError() - _resolve() - return - } - } - - /** - * @description 鍐呴儴璇锋眰寰幆鎵ц - */ - innerLoopRequest = (params, btn, _resolve) => { - if (!params && params.length === 0) return - - let param = params.shift() - - Api.genericInterface(param).then(res => { - if (res.status) { - if (params.length === 0) { - this.execSuccess(btn, res) - _resolve() - } else { - this.innerLoopRequest(params, btn, _resolve) - } - } else { - this.execError(res, btn) - _resolve() - } - }) - } - - /** - * @description 澶栭儴璇锋眰寰幆鎵ц - */ - outerLoopRequest = (params, btn, _resolve) => { - if (!params && params.length === 0) return - - let param = params.shift() - let _outParam = null - - new Promise(resolve => { - // 鍐呴儴璇锋眰 - if (btn.innerFunc) { - param.func = btn.innerFunc - // 瀛樺湪鍐呴儴鍑芥暟鏃讹紝鏁版嵁棰勫鐞� - Api.genericInterface(param).then(res => { - if (res.status) { - delete res.ErrCode - delete res.ErrMesg - delete res.message - delete res.status - - // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛 - let keys = Object.keys(res) // 鎻愪氦澶栭儴鎺ュ彛鍓嶏紝娣诲姞BID - if (keys.filter(key => key.toLowerCase() === 'bid').length === 0) { - res.BID = this.props.BID - } - - resolve(res) - } else { - this.execError(res, btn) - resolve(false) - _resolve() - } - }) - } else { - resolve(param) - } - }).then(res => { - if (!res) return - // 澶栭儴璇锋眰 - _outParam = JSON.parse(JSON.stringify(res)) - - if (this.props.menuType === 'HS') { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - res.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - res.rduri = btn.interface - } - } else { - if (btn.sysInterface === 'true') { - res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - res.rduri = btn.interface - } - } - - // res.method = btn.method - if (btn.outerFunc) { - res.func = btn.outerFunc - } - - res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey - - return Api.genericInterface(res) - }).then(response => { - if (!response) return - // 鍥炶皟璇锋眰 - if (btn.callbackFunc) { - // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤 - delete response.message - delete response.status - - response.func = btn.callbackFunc - - let _callbackparam = {..._outParam, ...response} - return Api.genericInterface(_callbackparam) - } else { - if (response.status) { - // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹� - - if (params.length === 0) { - this.execSuccess(btn, response) - _resolve() - } else { - this.outerLoopRequest(params, btn, _resolve) - } - } else { - this.execError(response, btn) - _resolve() - } - } - }).then(res => { - if (!res) return - - if (res.status) { - if (params.length === 0) { - this.execSuccess(btn, res) - _resolve() - } else { - this.outerLoopRequest(params, btn, _resolve) - } - } else { - this.execError(res, btn) - _resolve() - } - }) - } - - /** - * @description 鎿嶄綔鎴愬姛鍚庡鐞� - * 1銆乪xcel瀵煎嚭锛屾垚鍔熷悗鍙栨秷瀵煎嚭鎸夐挳鍔犺浇涓姸鎬� - * 2銆佺姸鎬佺爜涓� S 鏃讹紝鏄剧ず鎴愬姛淇℃伅鍚庣郴缁熼粯璁や俊鎭� - * 3銆佺姸鎬佺爜涓� -1 鏃讹紝涓嶆樉绀轰换浣曚俊鎭� - * 4銆佹ā鎬佹鎵ц鎴愬姛鍚庢槸鍚﹀叧闂� - * 5銆侀�氱煡涓诲垪琛ㄥ埛鏂� - */ - execSuccess = (btn, res) => { - if (res && res.ErrCode === 'S') { // 鎵ц鎴愬姛 - notification.success({ - top: 92, - message: res.ErrMesg || this.props.dict['main.action.confirm.success'], - duration: btn.verify && btn.verify.stime ? btn.verify.stime : 2 - }) - } else if (res && res.ErrCode === 'Y') { // 鎵ц鎴愬姛 - Modal.success({ - title: res.ErrMesg || this.props.dict['main.action.confirm.success'] - }) - } else if (res && res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず - - } - - if (btn.OpenType === 'pop' && btn.setting && btn.setting.finish !== 'unclose') { this.setState({ - visible: false - }) - } - - this.setState({ - loadingUuid: '', - running: false - }) - - this.refreshdata(btn, 'success') - } - - /** - * @description 鎿嶄綔澶辫触鍚庡鐞� - * 1銆佺姸鎬佺爜涓� E銆丯銆丗銆丯M 鏃讹紝鏄剧ず鐩稿簲鎻愮ず淇℃伅 - * 2銆乪xcel瀵煎嚭锛屽け璐ュ悗鍙栨秷瀵煎嚭鎸夐挳鍔犺浇涓姸鎬� - * 3銆侀�氱煡涓诲垪琛ㄥ埛鏂� - */ - execError = (res, btn) => { - if (res.ErrCode === 'E') { - Modal.error({ - title: res.message || res.ErrMesg, - }) - } else if (res.ErrCode === 'N') { - notification.error({ - top: 92, - message: res.message || res.ErrMesg, - duration: btn.verify && btn.verify.ntime ? btn.verify.ntime : 15 - }) - } else if (res.ErrCode === 'F') { - notification.error({ - className: 'notification-custom-error', - top: 92, - message: res.message || res.ErrMesg, - duration: btn.verify && btn.verify.ftime ? btn.verify.ftime : 15 - }) - } else if (res.ErrCode === 'NM') { - message.error(res.message || res.ErrMesg) - } - - this.setState({ - loadingUuid: '', - running: false - }) - - this.refreshdata(btn, 'error') - } - - /** - * @description 鎸夐挳閰嶇疆淇℃伅閿欒鎻愮ず - */ - actionSettingError = () => { - this.setState({ - running: false - }) - notification.warning({ - top: 92, - message: this.props.dict['main.action.settingerror'], - duration: 5 - }) - } - - /** - * @description 鑾峰彇鎸夐挳閰嶇疆淇℃伅 - */ - improveAction = (action) => { - const { configMap, execAction } = this.state - - let _config = configMap[action.uuid] - - if (_config) { - this.setState({ - execAction: {..._config, ...execAction} - }, () => { - this.improveActionForm() - }) - } else { - Api.getSystemCacheConfig({ - func: 'sPC_Get_LongParam', - MenuID: action.uuid - }).then(res => { - let _LongParam = '' - - if (res.status && res.LongParam) { - try { - _LongParam = JSON.parse(window.decodeURIComponent(window.atob(res.LongParam))) - } catch (e) { - console.warn('Parse Failure') - _LongParam = '' - } - } - - if (!res.status) { - notification.warning({ - top: 92, - message: res.message, - duration: 5 - }) - this.setState({ - execAction: null, - tabledata: null, - btnloading: false - }) - } else if (!_LongParam || (action.OpenType === 'pop' && _LongParam.type !== 'Modal')) { - notification.warning({ - top: 92, - message: '鏈幏鍙栧埌鎸夐挳閰嶇疆淇℃伅锛�', - duration: 5 - }) - this.setState({ - execAction: null, - tabledata: null, - btnloading: false - }) - } else { - if (_LongParam.groups.length > 0) { - _LongParam.groups.forEach(group => { - group.sublist = group.sublist.filter(cell => { - if (!cell.blacklist || cell.blacklist.length === 0) return true - - let _black = cell.blacklist.filter(v => { - return this.props.permRoles.indexOf(v) !== -1 - }) - - if (_black.length > 0) { - return false - } else { - return true - } - }) - }) - } else { - _LongParam.fields = _LongParam.fields.filter(cell => { - if (!cell.blacklist || cell.blacklist.length === 0) return true - - let _black = cell.blacklist.filter(v => { - return this.props.permRoles.indexOf(v) !== -1 - }) - - if (_black.length > 0) { - return false - } else { - return true - } - }) - } - - this.setState({ - configMap: {...configMap, [action.uuid]: _LongParam}, - execAction: {..._LongParam, ...execAction} - }, () => { - this.improveActionForm() - }) - } + actions: mores.splice(0, setting.btnlimit), + mores }) } } - /** - * @description 鑾峰彇涓嬫媺琛ㄥ崟閫夐」淇℃伅 - */ - improveActionForm = () => { - const { configMap, execAction } = this.state - let subfields = [] - - if (execAction.setting.display === 'prompt') { // 濡傛灉琛ㄥ崟浠ユ槸鍚︽灞曠ず锛屼笉璇锋眰涓嬫媺鑿滃崟淇℃伅 - this.setState({ - btnloading: false - }) - this.modelconfirm() - return - } - - if (execAction.groups.length > 0) { - execAction.groups.forEach(group => { - group.sublist.forEach(field => { - if ((field.type === 'select' || field.type === 'link' || field.type === 'multiselect') && field.resourceType === '1' && field.dataSource) { - subfields.push(field) - } - }) - }) - } else { - execAction.fields.forEach(field => { - if ((field.type === 'select' || field.type === 'link' || field.type === 'multiselect') && field.resourceType === '1' && field.dataSource) { - subfields.push(field) - } - }) - } - - if (subfields.length === 0) { - this.setState({ - visible: true, - btnloading: false - }) - return - } - - let deffers = subfields.map(item => { - let _option = Utils.getSelectQueryOptions(item) - let _sql = Utils.formatOptions(_option.sql) - let isSSO = item.database === 'sso' - - let param = { - func: 'sPC_Get_SelectedList', - LText: _sql, - obj_name: 'data', - arr_field: _option.field - } - - if (this.props.BID) { - param.BID = this.props.BID - } - - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - - return new Promise(resolve => { - Api.getSystemCacheConfig(param, isSSO).then(res => { - res.search = item - resolve(res) - }) - }) - }) - - let _field = {} - let error = '' - Promise.all(deffers).then(result => { - result.forEach(res => { - if (res.status) { - let options = res.data.map(cell => { - let item = { - key: Utils.getuuid(), - Value: cell[res.search.valueField], - Text: cell[res.search.valueText] - } - - if (res.search.type === 'link') { - item.parentId = cell[res.search.linkField] - } else if (res.search.type === 'select' && res.search.linkSubField && res.search.linkSubField.length > 0) { - res.search.linkSubField.forEach(_field => { - item[_field] = (cell[_field] || cell[_field] === 0) ? cell[_field] : '' - }) - } - - return item - }) - - _field[res.search.uuid] = options - } else { - error = res - } - }) - - if (error) { - notification.warning({ - top: 92, - message: error.message, - duration: 5 - }) - } - - this.setState({ - configMap: {...configMap, ..._field} - }, () => { - this.setState({ - visible: true, - btnloading: false - }) - }) - }) + shouldComponentUpdate (nextProps, nextState) { + return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) } - /** - * @description Excel 瀵煎叆 - */ - getexceldata = (data, btn, errors, primaryId) => { - if (errors) { - if (errors === 'notexit') { - notification.warning({ - top: 92, - message: '宸ヤ綔琛ㄣ��' + btn.verify.sheet + '銆嬩笉瀛樺湪锛�', - duration: 5 - }) - } else if (errors === 'empty') { - notification.warning({ - top: 92, - message: '宸ヤ綔琛ㄣ��' + btn.verify.sheet + '銆嬩负绌猴紒', - duration: 5 - }) - } else if (errors === 'headerError') { - notification.warning({ - top: 92, - message: '宸ヤ綔琛ㄣ��' + btn.verify.sheet + '銆嬭〃澶磋缃敊璇紒', - duration: 5 - }) - } - - return - } - - if (!data || data.length === 0) { - notification.warning({ - top: 92, - message: '鏈幏鍙栧埌宸ヤ綔琛ㄣ��' + btn.verify.sheet + '銆嬫暟鎹紒', - duration: 5 - }) - return - } - - let result = Utils.getExcelInSql(btn, data, this.props.dict) - if (result.errors) { - notification.warning({ - top: 92, - message: result.errors, - duration: 5 - }) - return - } - - let param = { - BID: this.props.BID, - ID: primaryId - } - - param.LText = Utils.formatOptions(result.sql) - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - - this.setState({loadingUuid: btn.uuid}) - - if (btn.intertype === 'inner' && !btn.innerFunc) { // 绯荤粺瀛樺偍杩囩▼ - param.func = 'sPC_TableData_InUpDe' - - Api.genericInterface(param).then((res) => { - if (res.status) { - this.execSuccess(btn, res) - } else { - this.execError(res, btn) - } - }) - } else if (btn.intertype === 'inner' && btn.innerFunc) { // 鑷畾涔夊瓨鍌ㄨ繃绋� - param.func = btn.innerFunc - - Api.genericInterface(param).then((res) => { - if (res.status) { - this.execSuccess(btn, res) - } else { - this.execError(res, btn) - } - }) - } else if (btn.intertype === 'outer') { // 澶栭儴鎺ュ彛 - let _outParam = null - - new Promise(resolve => { - // 鍐呴儴璇锋眰 - if (btn.innerFunc) { - param.func = btn.innerFunc - // 瀛樺湪鍐呴儴鍑芥暟鏃讹紝鏁版嵁棰勫鐞� - Api.genericInterface(param).then(res => { - if (res.status) { - delete res.ErrCode - delete res.ErrMesg - delete res.message - delete res.status - - // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛 - let keys = Object.keys(res) // 鎻愪氦澶栭儴鎺ュ彛鍓嶏紝娣诲姞BID - if (keys.filter(key => key.toLowerCase() === 'bid').length === 0) { - res.BID = this.props.BID - } - resolve(res) - } else { - this.execError(res, btn) - resolve(false) - } - }) - } else { - resolve(param) - } - }).then(res => { - if (!res) return - // 澶栭儴璇锋眰 - _outParam = JSON.parse(JSON.stringify(res)) - - if (this.props.menuType === 'HS') { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - param.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - param.rduri = btn.interface + getButtonList = (actions) => { + const { BID, BData, MenuID, columns, setting, selectedData } = this.props + return actions.map(item => { + if (['exec', 'prompt', 'pop'].includes(item.OpenType)) { + return ( + <NormalButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + setting={setting} + columns={columns} + selectedData={selectedData} + /> + ) + } else if (item.OpenType === 'excelIn') { + return ( + <ExcelInButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + setting={setting} + selectedData={selectedData} + /> + ) + } else if (item.OpenType === 'excelOut') { + return ( + <ExcelOutButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + setting={setting} + selectedData={selectedData} + /> + ) + } else if (item.OpenType === 'popview') { + return ( + <PopupButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + setting={setting} + selectedData={selectedData} + /> + ) + } else if (item.OpenType === 'tab') { + return ( + <TabButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + btn={item} + BID={BID} + BData={BData} + MenuID={MenuID} + selectedData={selectedData} + /> + ) + } else if (item.OpenType === 'innerpage' || item.OpenType === 'outerpage') { + return ( + <NewPageButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + selectedData={selectedData} + /> + ) + } else if (item.OpenType === 'funcbutton') { + if (item.funcType === 'changeuser' || item.funcType === 'closetab') { + return ( + <ChangeUserButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + MenuID={MenuID} + setting={setting} + selectedData={selectedData} + /> + ) + } else if (item.funcType === 'print') { + return ( + <PrintButton + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + BData={BData} + setting={setting} + columns={columns} + selectedData={selectedData} + /> + ) + } else if (item.funcType === 'megvii') { + return ( + <FuncMegvii + key={item.uuid} + show={item.show || 'actionList'} + disabled={false} + BID={BID} + btn={item} + setting={setting} + selectedData={selectedData} + /> + ) + } else if (item.funcType === 'filezip') { + return ( + <FuncZip + key={item.uuid} + disabled={false} + BID={BID} + btn={item} + BData={BData} + setting={setting} + selectedData={selectedData} + /> + ) + } else if (item.funcType === 'expPdf') { + return ( + <ExportPdf + key={item.uuid} + btn={item} + /> + ) + } else if (item.funcType === 'addline' || item.funcType === 'delline') { + return ( + <EditLine + key={item.uuid} + disabled={false} + btn={item} + selectedData={selectedData} + /> + ) } } else { - if (btn.sysInterface === 'true') { - param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - param.rduri = btn.interface - } + return ( + <FuncButton + key={item.uuid} + BID={BID} + btn={item} + selectedData={selectedData} + /> + ) } - - if (btn.outerFunc) { - res.func = btn.outerFunc - } - - res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey - - return Api.genericInterface(res) - }).then(response => { - if (!response) return - // 鍥炶皟璇锋眰 - if (btn.callbackFunc) { - // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤 - delete response.message - delete response.status - - response.func = btn.callbackFunc - - let _callbackparam = {..._outParam, ...response} - return Api.genericInterface(_callbackparam) - } else { - if (response.status) { - this.execSuccess(btn, response) - } else { - this.execError(response, btn) - } - } - }).then(res => { - if (!res) return - - if (res.status) { - this.execSuccess(btn, res) - } else { - this.execError(res, btn) - } - }) - } - } - - /** - * @description Excel 瀵煎嚭 - */ - triggerExcelout = (btn) => { - let viewParam = this.props.getexceloutparam() - let name = `${viewParam.menuName}${moment().format('YYYYMMDDHHmmss')}.xlsx` - let pageSize = 1000 - - this.setState({loadingUuid: btn.uuid}) - - if (btn.pagination !== 'true') { - if (btn.intertype === 'inner' && !btn.innerFunc) { // 浣跨敤绯荤粺鍑芥暟 - if (!viewParam.arr_field) { - this.execError({ErrCode: 'N', message: '鏈缃樉绀哄垪锛�'}, btn) - return - } - - let param = this.getExcelDefaultParam(viewParam.arr_field, viewParam.orderBy, viewParam.search) - - Api.genericInterface(param).then(result => { - if (result.status) { - this.exportExcel(result.data, btn, name) - } else { - this.execError(result, btn) - } - }) - } else if (btn.intertype === 'inner' && btn.innerFunc) { // 浣跨敤鍐呴儴鍑芥暟 - let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search) - param.func = btn.innerFunc - - Api.genericInterface(param).then(result => { - if (result.status) { - this.exportExcel(result.data, btn, name) - } else { - this.execError(result, btn) - } - }) - } else if (btn.intertype === 'outer' && !btn.innerFunc) { // 浣跨敤澶栭儴鍑芥暟 - let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search) - - if (this.props.menuType === 'HS') { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - param.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - param.rduri = btn.interface - } - } else { - if (btn.sysInterface === 'true') { - param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - param.rduri = btn.interface - } - } - - param.appkey = window.GLOB.appkey || '' - - if (btn.outerFunc) { - param.func = btn.outerFunc - } - - Api.genericInterface(param).then(result => { - if (result.status) { - this.exportExcel(result.data, btn, name) - } else { - this.execError(result, btn) - } - }) - } else if (btn.intertype === 'outer' && btn.innerFunc) { - let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search) - param.func = btn.innerFunc - - Api.genericInterface(param).then(res => { - if (res.status) { - delete res.ErrCode - delete res.ErrMesg - delete res.message - delete res.status - - if (btn.sysInterface === 'true') { - res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - res.rduri = btn.interface - } - - if (btn.outerFunc) { - res.func = btn.outerFunc - } - - res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey - - Api.genericInterface(res).then(result => { - if (result.status) { - this.exportExcel(result.data, btn, name) - } else { - this.execError(result, btn) - } - }) - } else { - this.execError(res, btn) - } - }) - } else { - this.execError({ErrCode: 'N', message: '瀵煎嚭鎸夐挳璁剧疆閿欒锛�'}, btn) - } - } else if (btn.intertype === 'outer' && btn.innerFunc) { // 鍒嗛〉锛屼笖涓ゆ璇锋眰 - this.getExcelOutDoubleData(btn, viewParam, 1, pageSize, [], name) - } else { // 鍒嗛〉锛屼竴姝ヨ姹� - this.getExcelOutData(btn, viewParam, 1, pageSize, [], name) - } - } - - /** - * @description 涓ゆ鍒嗛〉璇锋眰 - */ - getExcelOutDoubleData = (btn, viewParam, pageIndex, pageSize, data, name) => { - let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize) - param.func = btn.innerFunc - - Api.genericInterface(param).then(res => { - if (res.status) { - delete res.ErrCode - delete res.ErrMesg - delete res.message - delete res.status - - if (this.props.menuType === 'HS') { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - param.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - param.rduri = btn.interface - } - } else { - if (btn.sysInterface === 'true') { - param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - param.rduri = btn.interface - } - } - - if (btn.outerFunc) { - res.func = btn.outerFunc - } - - res.appkey = window.GLOB.appkey || '' // 澶栭儴璇锋眰鏃讹紝缁熶竴娣诲姞appkey - - Api.genericInterface(res).then(result => { - if (result.status) { - if (!result.data) { - this.execError({ErrCode: 'N', message: '鏈幏鍙栧埌鏁版嵁淇℃伅锛�'}, btn) - } else if (result.data.length >= pageSize) { - data = data.concat(result.data) - pageIndex++ - this.getExcelOutDoubleData(btn, viewParam, pageIndex, pageSize, data, name) - } else { - data = data.concat(result.data) - this.exportExcel(data, btn, name) - } - } else { - this.execError(result, btn) - } - }) - } else { - this.execError(res, btn) - } + return null }) - } - - /** - * @description 涓�姝ュ垎椤佃姹� - */ - getExcelOutData = (btn, viewParam, pageIndex, pageSize, data, name) => { - let param = null - if (btn.intertype === 'inner' && !btn.innerFunc) { // 浣跨敤绯荤粺鍑芥暟 - if (!viewParam.arr_field) { - this.execError({ErrCode: 'N', message: '鏈缃樉绀哄垪锛�'}, btn) - return - } - - param = this.getExcelDefaultParam(viewParam.arr_field, viewParam.orderBy, viewParam.search, true, pageIndex, pageSize) - - - } else if (btn.intertype === 'inner' && btn.innerFunc) { // 浣跨敤鍐呴儴鍑芥暟 - param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize) - param.func = btn.innerFunc - - } else if (btn.intertype === 'outer' && !btn.innerFunc) { // 浣跨敤澶栭儴鍑芥暟 - param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize) - - if (this.props.menuType === 'HS') { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - param.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - param.rduri = btn.interface - } - } else { - if (btn.sysInterface === 'true') { - param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi - } else { - param.rduri = btn.interface - } - } - - - param.appkey = window.GLOB.appkey || '' - - if (btn.outerFunc) { - param.func = btn.outerFunc - } - } - - Api.genericInterface(param).then(result => { - if (result.status) { - if (!result.data) { - this.execError({ErrCode: 'N', message: '鏈幏鍙栧埌鏁版嵁淇℃伅锛�'}, btn) - } else if (result.data.length >= pageSize) { - data = data.concat(result.data) - pageIndex++ - this.getExcelOutData(btn, viewParam, pageIndex, pageSize, data, name) - } else { - data = data.concat(result.data) - this.exportExcel(data, btn, name) - } - } else { - this.execError(result, btn) - } - }) - } - - /** - * @description Excel 鐢熸垚 - */ - exportExcel = (data, btn, name) => { - const { logcolumns } = this.props - if (data && data.length > 0) { - try { - let _header = [] - let _topRow = {} - let colwidth = [] - - let hidecolumns = [] - - let verifyColumn = {} // 璁板綍楠岃瘉淇℃伅涓殑Excel鍒楅厤缃� - if (btn.verify && btn.verify.columns && btn.verify.columns.length > 0) { - btn.verify.columns.forEach(col => { - verifyColumn[col.Column] = col - }) - } - - logcolumns.forEach(col => { - if (col.Hide === 'true') { - hidecolumns.push(col.field) - return - } - if (!data[0].hasOwnProperty(col.field)) return - if (_topRow[col.field]) return - - if (verifyColumn[col.field]) { // 浼樺厛浣跨敤楠岃瘉淇℃伅涓殑鍒楄缃� - _header.push(col.field) - _topRow[col.field] = verifyColumn[col.field].Text - - colwidth.push({width: verifyColumn[col.field].Width}) - } else { - _header.push(col.field) - _topRow[col.field] = col.label - - let _colwidth = Math.floor(col.Width / 6) - - if (!_colwidth || _colwidth < 5) { - _colwidth = 5 - } - - colwidth.push({width: _colwidth}) - } - }) - - if (btn.verify && btn.verify.columns && btn.verify.columns.length > 0) { - btn.verify.columns.forEach(col => { - if (hidecolumns.includes(col.Column)) return - if (!data[0].hasOwnProperty(col.Column)) return - if (_topRow[col.Column]) return - - _header.push(col.Column) - _topRow[col.Column] = col.Text - - colwidth.push({width: col.Width}) - }) - } - - Object.keys(data[0]).forEach(key => { - if (hidecolumns.includes(key)) return - if (_topRow[key]) return - - _header.push(key) - _topRow[key] = key - - colwidth.push({width: 12}) - }) - - let table = [] - - table.push(_topRow) - - data.forEach(item => { - let _row = {} - _header.forEach(field => { - _row[field] = item[field] - }) - - table.push(_row) - }) - - const ws = XLSX.utils.json_to_sheet(table, {header: _header, skipHeader: true}) - - ws['!cols'] = colwidth - - const wb = XLSX.utils.book_new() - XLSX.utils.book_append_sheet(wb, ws, 'Sheet1') - - XLSX.writeFile(wb, name) - - this.execSuccess(btn, {ErrCode: 'S', ErrMesg: '瀵煎嚭鎴愬姛锛�'}) - } catch { - this.execError({ErrCode: 'N', message: 'Excel鐢熸垚澶辫触锛�'}, btn) - } - - } else { - this.execError({ErrCode: 'N', message: '鏈煡璇㈠埌瀵煎嚭鏁版嵁锛�'}, btn) - } - } - - /** - * @description 鑾峰彇鐢ㄦ埛鑷畾涔夊瓨鍌ㄨ繃绋嬩紶鍙� - */ - getExcelCustomParam = (orderBy, search, pagination = false, pageIndex = 1, pageSize = 100) => { - let _search = Utils.formatCustomMainSearch(search) - - let param = { - OrderCol: orderBy, - ..._search - } - - if (this.props.BID) { - param.BID = this.props.BID - } - - if (pagination) { - param.PageIndex = pageIndex - param.PageSize = pageSize - } - - return param - } - - /** - * @description 鑾峰彇榛樿瀛樺偍杩囩▼璇锋眰鍙傛暟 - */ - getExcelDefaultParam = (arr_field, orderBy, search, pagination = false, pageIndex = 1, pageSize = 100) => { - const { setting } = this.props - - let _search = Utils.joinMainSearchkey(search) - - _search = _search ? 'where ' + _search : '' - - let param = { - func: 'sPC_Get_TableData', - obj_name: 'data', - arr_field: arr_field, - appkey: window.GLOB.appkey || '' - } - - if (this.props.BID) { - param.BID = this.props.BID - } - - let _dataresource = setting.dataresource - - if (/\s/.test(_dataresource)) { - _dataresource = '(' + _dataresource + ') tb' - } - - if (setting.queryType === 'statistics') { // 缁熻鏁版嵁婧愶紝鍐呭鏇挎崲 - let fieldmap = new Map() - let options = search.map(item => { - let _field = item.key - - if (fieldmap.has(_field)) { - _field = _field + '1' - } - - fieldmap.set(item.key, true) - - return { - reg: new RegExp('@' + _field, 'ig'), - value: item.value - } - }) - - options.reverse() - - options.forEach(item => { - _dataresource = _dataresource.replace(item.reg, `'${item.value}'`) - }) - - _search = '' - } - - let LText = '' - if (pagination) { - LText = `select top ${pageSize} ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows` - } else { - LText = `select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows` - } - - param.LText = Utils.formatOptions(LText) - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' - param.secretkey = Utils.encrypt(param.LText, param.timestamp) - param.DateCount = '' - - return param - } - - /** - * @description 妯℃�佹锛堣〃鍗曪級锛岀‘璁� - */ - handleOk = () => { - this.formRef.handleConfirm().then(res => { - this.setState({ - confirmLoading: true - }) - - this.execSubmit(this.state.execAction, this.state.tabledata, () => { - this.setState({ - confirmLoading: false - }) - }, res) - }, () => {}) - } - - /** - * @description 妯℃�佹锛堣〃鍗曪級锛屽彇娑� - */ - handleCancel = () => { - this.setState({ - visible: false - }) - } - - modelconfirm = () => { - const { BData } = this.props - const { execAction, tabledata } = this.state - let _this = this - let _fields = [] - - if (execAction.groups.length > 0) { - execAction.groups.forEach(group => { - _fields = [..._fields, ...group.sublist] - }) - } else { - _fields = execAction.fields - } - - let result = _fields.map(item => { - let _readin = item.readin !== 'false' - let _initval = item.initval - - if (item.type === 'linkMain' || item.type === 'funcvar') { - _readin = false - } - - if (item.type === 'linkMain' && BData && BData.hasOwnProperty(item.field)) { - _initval = BData[item.field] - } else if (_readin && tabledata[0] && tabledata[0].hasOwnProperty(item.field)) { - _initval = tabledata[0][item.field] - } - - let _fieldlen = item.fieldlength || 50 - if (item.type === 'textarea' || item.type === 'fileupload' || item.type === 'multiselect') { - _fieldlen = item.fieldlength || 512 - } else if (item.type === 'number') { - _fieldlen = item.decimal ? item.decimal : 0 - } - - return { - key: item.field, - readonly: item.readonly === 'true', - readin: _readin, - fieldlen: _fieldlen, - type: item.type, - value: _initval - } - }) - this.setState({ - running: true - }) - - confirm({ - title: this.props.dict['main.action.confirm.tip'], - onOk() { - return new Promise(resolve => { - _this.execSubmit(execAction, tabledata, resolve, result) - }) - }, - onCancel() { - _this.setState({ - running: false - }) - } - }) - } - - /** - * @description 鏄剧ず妯℃�佹 - */ - getModels = () => { - const { execAction } = this.state - - if (!execAction || !this.state.visible) return - - let title = '' - let width = '62vw' - let clickouter = false - let container = document.body - - if (execAction && execAction.setting) { - title = execAction.setting.title - width = execAction.setting.width + 'vw' - - if (execAction.setting.container === 'tab' && this.props.ContainerId) { - width = execAction.setting.width + '%' - container = () => document.getElementById(this.props.ContainerId) - } - - if (execAction.setting.clickouter === 'close') { - clickouter = true - } - } - - if (this.props.type === 'subtab') { - container = document.body - } - - return ( - <Modal - title={title} - maskClosable={clickouter} - getContainer={container} - wrapClassName='action-modal' - visible={this.state.visible} - width={width} - onOk={this.handleOk} - confirmLoading={this.state.confirmLoading} - onCancel={this.handleCancel} - destroyOnClose - > - <MutilForm - dict={this.props.dict} - action={execAction} - inputSubmit={this.handleOk} - configMap={this.state.configMap} - data={this.state.tabledata[0]} - BData={this.props.BData} - wrappedComponentRef={(inst) => this.formRef = inst} - /> - </Modal> - ) } render() { - const { loadingUuid, btnloading } = this.state + const { setting } = this.props + const { actions, mores } = this.state - if (this.props.setting.actionfixed && this.props.type === 'main') { // 鎸夐挳鏄惁鍥哄畾鍦ㄥご閮� + if (setting.actionfixed === 'true') { return ( <Affix offsetTop={48}> - <div className="button-list toolbar-button" id={this.props.MenuID + 'mainaction'}> - {this.props.actions.map((item, index) => { - if (loadingUuid === item.uuid) { - return ( - <Button - className={'mk-btn mk-' + item.class} - icon={item.icon} - key={'action' + index} - onClick={() => {this.actionTrigger(item)}} - loading - >{item.label}</Button> - ) - } else { - return ( - <Button - className={'mk-btn mk-' + item.class} - icon={item.icon} - key={'action' + index} - onClick={() => {this.actionTrigger(item)}} - >{item.label}</Button> - ) - } - })} - {this.getModels()} - {btnloading && <Spin size="large" />} - <ExcelIn MenuID={this.props.MenuID} returndata={this.getexceldata} ref="excelIn" /> + <div className="button-list toolbar-button"> + {this.getButtonList(actions)} + {mores ? <Dropdown overlay={<div className="mk-button-dropdown-wrap">{this.getButtonList(mores)}</div>} trigger={['hover']}> + <div className="mk-button-more">鏇村<DownOutlined/></div> + </Dropdown> : null} </div> </Affix> ) } else { return ( <div className="button-list toolbar-button"> - {this.props.actions.map((item, index) => { - if (loadingUuid === item.uuid) { - return ( - <Button - className={'mk-btn mk-' + item.class} - icon={item.icon} - key={'action' + index} - onClick={() => {this.actionTrigger(item)}} - loading - >{item.label}</Button> - ) - } else { - return ( - <Button - className={'mk-btn mk-' + item.class} - icon={item.icon} - key={'action' + index} - onClick={() => {this.actionTrigger(item)}} - >{item.label}</Button> - ) - } - })} - {this.getModels()} - {btnloading && <Spin size="large" />} - <ExcelIn MenuID={this.props.MenuID} returndata={this.getexceldata} ref="excelIn" /> + {this.getButtonList(actions)} + {mores ? <Dropdown overlay={<div className="mk-button-dropdown-wrap">{this.getButtonList(mores)}</div>} trigger={['hover']}> + <div className="mk-button-more">鏇村<DownOutlined/></div> + </Dropdown> : null} </div> ) } } } -export default MainAction \ No newline at end of file +export default ActionList \ No newline at end of file -- Gitblit v1.8.0