From ea471bc4b911b8f8ee4177a9eaafe900935451bf Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 09 十二月 2022 15:26:07 +0800 Subject: [PATCH] Merge branch 'master' into positec --- src/views/systemproc/proc/index.jsx | 77 +++++ src/mob/components/topbar/normal-navbar/index.scss | 2 src/views/design/header/index.scss | 46 -- src/views/printTemplate/option.js | 18 + src/views/design/header/index.jsx | 86 +++-- src/views/rolemanage/index.jsx | 15 src/views/systemfunc/index.jsx | 4 src/views/mobdesign/index.jsx | 14 src/components/mk-icon/index.jsx | 2 src/utils/utils.js | 2 src/components/normalform/modalform/mkSelect/index.jsx | 2 src/views/systemproc/index.scss | 9 src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx | 130 +++++++- src/views/pcdesign/index.jsx | 8 src/views/printTemplate/mutilform/index.jsx | 2 src/mob/components/menubar/normal-menubar/menucomponent/options.jsx | 2 src/router/index.js | 2 src/menu/components/card/cardcomponent/index.jsx | 2 src/components/mkIcon/index.jsx | 19 + src/tabviews/zshare/actionList/printbutton/index.jsx | 295 ++++++++++++++++++-- src/views/systemproc/proc/index.scss | 35 ++ src/menu/components/share/actioncomponent/actionform/index.jsx | 4 src/views/systemproc/index.jsx | 24 + src/tabviews/custom/components/card/cardcellList/index.scss | 3 src/views/systemfunc/sidemenu/config.jsx | 4 src/menu/components/card/cardcomponent/options.jsx | 4 src/views/login/index.jsx | 15 + 27 files changed, 658 insertions(+), 168 deletions(-) diff --git a/src/components/mk-icon/index.jsx b/src/components/mk-icon/index.jsx index bb8a2ee..939b7ff 100644 --- a/src/components/mk-icon/index.jsx +++ b/src/components/mk-icon/index.jsx @@ -471,7 +471,7 @@ MkIcons[type](resProps) ) } else { - return <span className={'anticon ' + (resProps.className || '')} style={resProps.style || null} dangerouslySetInnerHTML={{ __html: type }}></span> + return <span className={'anticon anticon-mk ' + (resProps.className || '')} style={resProps.style || null} dangerouslySetInnerHTML={{ __html: type }}></span> } } } diff --git a/src/components/mkIcon/index.jsx b/src/components/mkIcon/index.jsx index 0447f06..105f627 100644 --- a/src/components/mkIcon/index.jsx +++ b/src/components/mkIcon/index.jsx @@ -89,13 +89,26 @@ }) } + trigger = () => { + const { selectIcon, cusicons } = this.state + + this.setState({visible: true}) + + if (cusicons.length > 0 && selectIcon && /<svg/.test(selectIcon)) { + setTimeout(() => { + let node = document.getElementById('mk-custom-tab') + node && node.click() + }, 200) + } + } + render() { const { selectIcon, visible, icons, allowClear, cusicons } = this.state return ( <div className="mk-icon-box"> {selectIcon ? <MkIcon type={selectIcon}/> : <span style={{color: '#bcbcbc'}}>璇烽�夋嫨</span>} - <MkIcon className="trigger" onClick={() => this.setState({visible: true})} type="swap"/> + <MkIcon className="trigger" onClick={this.trigger} type="swap"/> {allowClear && selectIcon ? <CloseCircleFilled className="close" onClick={() => this.checkIcon('')}/> : null} <Modal wrapClassName="mk-pop-modal mk-icon-wrap" @@ -118,13 +131,13 @@ </Row> </TabPane> <TabPane tab={ - <span className="tab-control"> + <span className="tab-control" id="mk-custom-tab"> <RedoOutlined onClick={(e) => {this.getIcons()}}/> 鑷畾涔� </span> } key="scripts"> <Row> - {cusicons.map(icon => <Col key={icon.id} span={4} onClick={() => this.checkIcon(icon.icon_svg)}> + {cusicons.map(icon => <Col className={icon.icon_svg === selectIcon ? 'active' : ''} key={icon.id} span={4} onClick={() => this.checkIcon(icon.icon_svg)}> <MkIcon type={icon.icon_svg} /> </Col>)} </Row> diff --git a/src/components/normalform/modalform/mkSelect/index.jsx b/src/components/normalform/modalform/mkSelect/index.jsx index 660fea9..92784fe 100644 --- a/src/components/normalform/modalform/mkSelect/index.jsx +++ b/src/components/normalform/modalform/mkSelect/index.jsx @@ -119,7 +119,7 @@ onChange={(val) => val === undefined && this.selectChange('')} > {options.map((option, i) => - <Select.Option key={i} disabled={option.disabled} extend={option[config.extendName] || ''} value={option.value || option.field || ''}>{option.label || option.text}</Select.Option> + <Select.Option key={i} disabled={option.disabled} title={option.label || option.text} extend={option[config.extendName] || ''} value={option.value || option.field || ''}>{option.label || option.text}</Select.Option> )} </Select> ) diff --git a/src/menu/components/card/cardcomponent/index.jsx b/src/menu/components/card/cardcomponent/index.jsx index c4bb5f3..f418268 100644 --- a/src/menu/components/card/cardcomponent/index.jsx +++ b/src/menu/components/card/cardcomponent/index.jsx @@ -320,7 +320,7 @@ <div className="mk-popover-control"> <PlusOutlined className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} /> <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} /> - <NormalForm title="鍗$墖璁剧疆" width={800} update={this.updateSetting} getForms={this.getSettingForms}> + <NormalForm title="鍗$墖璁剧疆" width={950} update={this.updateSetting} getForms={this.getSettingForms}> <EditOutlined className="edit" title="缂栬緫"/> </NormalForm> <CopyComponent type="cardcell" card={card}/> diff --git a/src/menu/components/card/cardcomponent/options.jsx b/src/menu/components/card/cardcomponent/options.jsx index a2faaf0..40d460f 100644 --- a/src/menu/components/card/cardcomponent/options.jsx +++ b/src/menu/components/card/cardcomponent/options.jsx @@ -242,7 +242,7 @@ editable: true, unique: true, required: false, - width: '35%' + width: '30%' }, { title: '鑿滃崟', @@ -251,7 +251,7 @@ editable: true, required: true, extends: !appType ? 'Menu' : [{key: 'label', value: 'label'}], - width: '35%', + width: '40%', render: (text, record) => record.label, options: menulist } diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx index efe091f..ddbb440 100644 --- a/src/menu/components/share/actioncomponent/actionform/index.jsx +++ b/src/menu/components/share/actioncomponent/actionform/index.jsx @@ -807,7 +807,7 @@ getPopupContainer={() => document.getElementById('winter')} > {item.options.map((option, index) => - <Select.Option key={index} extend={option[item.extendName] || ''} value={(option.value || option.field)}> + <Select.Option key={index} title={option.text || option.label} extend={option[item.extendName] || ''} value={(option.value || option.field)}> {(option.text || option.label)} </Select.Option> )} @@ -821,7 +821,7 @@ getPopupContainer={() => document.getElementById('winter')} > {item.options.map((option, index) => - <Select.Option key={index} value={(option.value || option.field)}> + <Select.Option key={index} title={option.text || option.label} value={(option.value || option.field)}> {(option.text || option.label)} </Select.Option> )} diff --git a/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx b/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx index 8e189c7..5ce1a43 100644 --- a/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx +++ b/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx @@ -204,7 +204,7 @@ field: 'primaryId', label: '闈欐�佷富閿��', initval: setting.primaryId || '', - tooltip: '鍙綔涓築ID浼犲埌涓嬩竴椤甸潰銆�', + tooltip: '鍙綔涓築ID浼犲埌涓嬩竴椤甸潰銆傛敞锛欯userid@浼氭浛鎹负鐢ㄦ埛ID銆�', required: false } ] diff --git a/src/mob/components/topbar/normal-navbar/index.scss b/src/mob/components/topbar/normal-navbar/index.scss index 80403dc..eb91cad 100644 --- a/src/mob/components/topbar/normal-navbar/index.scss +++ b/src/mob/components/topbar/normal-navbar/index.scss @@ -39,7 +39,7 @@ .img { width: 30px; height: 30px; - border-radius: 4px; + border-radius: 30px; margin-top: 9px; margin-right: 5px; background-size: cover; diff --git a/src/router/index.js b/src/router/index.js index ab91632..b384ad4 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -25,6 +25,7 @@ const Interface = asyncLoadComponent(() => import('@/views/interface')) const RoleManage = asyncLoadComponent(() => import('@/views/rolemanage')) const SystemFunc = asyncLoadComponent(() => import('@/views/systemfunc')) +const SystemProc = asyncLoadComponent(() => import('@/views/systemproc')) const routers = [ {path: '/login', name: 'login', component: Login, auth: false}, @@ -47,6 +48,7 @@ {path: '/tab/:menuId', name: 'tab', component: MainParams, auth: false}, {path: '/role/:param', name: 'role', component: RoleManage, auth: true}, {path: '/hs', name: 'hs', component: SystemFunc, auth: true}, + {path: '/proc', name: 'proc', component: SystemProc, auth: true}, {path: '/interface', name: 'interface', component: Interface, auth: true} ] diff --git a/src/tabviews/custom/components/card/cardcellList/index.scss b/src/tabviews/custom/components/card/cardcellList/index.scss index fa2af83..587b487 100644 --- a/src/tabviews/custom/components/card/cardcellList/index.scss +++ b/src/tabviews/custom/components/card/cardcellList/index.scss @@ -33,6 +33,9 @@ } span { text-indent: 0px; + font-style: inherit; + font-weight: inherit; + text-decoration: inherit; } } .ant-mk-text:not(.line1):not(.line) { diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx index 0e665c5..988c039 100644 --- a/src/tabviews/zshare/actionList/printbutton/index.jsx +++ b/src/tabviews/zshare/actionList/printbutton/index.jsx @@ -183,11 +183,7 @@ // 鏁版嵁閫夋嫨绫诲瀷鏍¢獙 this.actionSettingError() return - } else if ( - !btn.verify || - (btn.verify.printMode === 'normal' && (!btn.verify.Template || !btn.verify.linkUrl)) || - (btn.verify.printMode === 'custom' && (!btn.verify.printFunc || !btn.verify.linkUrl)) - ) { + } else if (!btn.verify || !btn.verify.printMode) { notification.warning({ top: 92, message: '璇峰畬鍠勬墦鍗伴獙璇佷俊鎭紒', @@ -232,10 +228,20 @@ } } + triggerPrint = (data, formlist = []) => { + const { btn } = this.props + + if (btn.verify.printMode === 'RFID') { + this.triggerRFIDPrint(data, formlist) + } else { + this.triggerNormalPrint(data, formlist) + } + } + /** * @description 瑙﹀彂鎵撳嵃 */ - triggerPrint = (data, formlist = []) => { + triggerNormalPrint = (data, formlist) => { const { btn } = this.props let formdata = {} let baseCount = 1 @@ -378,7 +384,7 @@ param.rduri = window.GLOB.mainSystemApi } - Api.genericInterface(param).then(result => { + Api.getSystemCacheConfig(param).then(result => { result.tempId = tempId resolve(result) }) @@ -448,6 +454,109 @@ } } else { this.execError(errorMsg) + } + }) + } + + /** + * @description 瑙﹀彂RFID鎵撳嵃 + */ + triggerRFIDPrint = (data, formlist) => { + const { btn } = this.props + let formdata = {} + let list = [] + + formlist.forEach(_data => { + formdata[_data.key] = _data.value + }) + + new Promise(resolve => { + if (btn.intertype === 'system') { // 浣跨敤绯荤粺鏃讹紝鐩存帴浠庤〃鏍兼垨琛ㄥ崟涓�夊彇鏁版嵁 + if (btn.Ot === 'notRequired') { + if (formlist.length > 0) { + list = [formdata] + } + } else { + data.forEach(cell => { + let _cell = {...cell, ...formdata} + list.push(_cell) + }) + } + + resolve(true) + } else { + this.getprintdata(btn, data, formdata, formlist).then(result => { + if (result.next) { + result.list.forEach(cell => { + // 绯荤粺鎵撳嵃鏁版嵁锛屾牎楠宒ata瀛楁 + if (!cell.data || cell.data.length === 0) return + + cell.data.forEach(m => { + let _cell = {...m, ...formdata} + list.push(_cell) + }) + }) + } + + resolve(result.next) + }) + } + }).then(res => { + // 鑾峰彇鎵撳嵃妯℃澘 getTemp + if (!res) return false + + if (list.length === 0) { + notification.warning({ + top: 92, + message: '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', + duration: 5 + }) + return false + } + + let param = { + func: 's_PrintTemplateMGetData', + Type: 'Y', + // ID: tempId, // 娣诲姞妯℃澘鏃讹紝淇濆瓨鍙婃煡璇娇鐢ㄦā鏉垮弬鏁� + PrintTempNO: btn.verify.Template + } + + if (window.GLOB.mainSystemApi) { // 浠庡崟鐐圭櫥褰曟湇鍔″櫒鍙栨墦鍗伴厤缃俊鎭� + param.rduri = window.GLOB.mainSystemApi + } + + return Api.getSystemCacheConfig(param) + }).then(result => { + if (!result) { + this.setState({ loading: false }) + return + } + + if (!result.ConfigParam) { + notification.warning({ + top: 92, + message: '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�', + duration: 5 + }) + this.setState({ loading: false }) + } else { + let configParam = '' + try { + configParam = JSON.parse(window.decodeURIComponent(window.atob(result.ConfigParam))) + } catch (e) { + configParam = '' + } + + if (!configParam) { + notification.warning({ + top: 92, + message: '鎵撳嵃妯℃澘瑙f瀽閿欒锛�', + duration: 5 + }) + this.setState({ loading: false }) + } else { + this.execRfidPrint(list, configParam) + } } }) } @@ -1087,48 +1196,152 @@ } } - // execRfidPrint = () => { - // let type = 'HF' - // let printparamsJsonArray = [] + execRfidPrint = (list, template) => { + const { btn } = this.props - // let mm = 12 - // if (type === 'HF') { - // printparamsJsonArray.push({PTK_OpenUSBPort: 255}); // 鎵撳紑鎵撳嵃鏈篣SB绔彛 - // printparamsJsonArray.push({PTK_ClearBuffer: ''}); // 娓呯┖缂撳瓨 - // printparamsJsonArray.push({PTK_SetDarkness: 10}); // 璁剧疆鎵撳嵃榛戝害 鍙栧�艰寖鍥� 0-20 - // printparamsJsonArray.push({PTK_SetPrintSpeed: 4}); // 璁剧疆鎵撳嵃閫熷害 - // printparamsJsonArray.push({PTK_SetDirection: 'B'}); // 璁剧疆鎵撳嵃鏂瑰悜 - // printparamsJsonArray.push({PTK_SetLabelHeight: 25*mm + ","+ 10*mm +","+ 0 +","+ false}); // 璁剧疆鏍囩楂樺害銆侀棿闅欏強鍋忕Щ - // printparamsJsonArray.push({PTK_SetLabelWidth: 60*mm}); // 璁剧疆鏍囩瀹藉害 - // printparamsJsonArray.push({PTK_SetRFID: 0+","+0+","+0+","+0+","+0}); // UHF RFID鎵撳嵃璁剧疆 - // printparamsJsonArray.push({PTK_RWRFIDLabel: 1+","+0+","+0+","+4+","+1+',EEBA99192945C746'}); - // printparamsJsonArray.push({PTK_DrawText_TrueType: "50,10,36,0,寰蒋闆呴粦,1,700,0,0,0,鍖椾含鏄庣鏈夐檺鍏徃"}); - // // printparamsJsonArray.push({PTK_DrawText_TrueType: x+","+y+","+FHeight+","+FWidth+","+FType+","+Fspin+","+FWeight+","+FItalic+","+FUnline+","+FStrikeOut+","+data}); - // // printparamsJsonArray.push({PTK_EncodeRFIDPC:'mkA040'}); - // printparamsJsonArray.push({PTK_PrintLabel:1+","+1}); - // printparamsJsonArray.push({PTK_CloseUSBPort: ""}); // 鍏抽棴USB閫氳绔彛 - // } + list = list.filter(item => !!item[btn.verify.valueField]) - // let data = { - // reqParam: '1', - // printparams: JSON.stringify(printparamsJsonArray) - // // printparams: JSON.stringify([{PTK_OpenUSBPort: 255},{PTK_ErrorReport_USBInterrupt: 'status:'},{PTK_GetPrinterDPI: 'DPI:'},{PTK_CloseUSBPort: ''}]) - // // printparams: JSON.stringify([{PTK_OpenUSBPort: 255},{PTK_RFIDCalibrate: ''},{PTK_CloseUSBPort: ''}]) - // } + if (list.length === 0) { + notification.warning({ + top: 92, + message: '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', + duration: 5 + }) + this.setState({ loading: false }) + return + } - // Api.postekPrint(data).then(result => { + let width = template.width + let height = template.height + let gap = template.gap || 0 + let mm = 12 - // }) - // } + if (btn.verify.DPI === '203') { + mm = 8 + } else if (btn.verify.DPI === '600') { + mm = 24 + } + + let items = [] + template.elements.forEach(element => { + if (!['text', 'barcode', 'qrcode'].includes(element.type)) return + + let _field = element.field + + if (_field === 'other_field') { + _field = element.cusfield || '' + } + + let item = { + type: element.type, + value: element.value || '', + field: _field + } + + if (item.type === 'text') { + let size = Math.floor(4 * mm * (element.fontSize || 12) / 12) + let fontWeight = 400 + if (element.fontWeight === 'bold') { + fontWeight = 600 + } else if (element.fontWeight === 'bolder') { + fontWeight = 800 + } else if (element.fontWeight === 'lighter') { + fontWeight = 300 + } + item.draw = `${element.left * mm},${element.top * mm},${size},0,${element.fontFamily || '寰蒋闆呴粦'},${element.align === 'center' ? 5 : 1},${fontWeight},0,0,0,` + } else if (item.type === 'barcode') { + let codeType = 1 + if (element.barcodeType === 'EAN13') { + codeType = 'E30' + } + let narrowWidth = element.narrowWidth || 2 + let horizontal = element.narrowWidth || 2 + let vertical = Math.ceil(element.barcodeHeight * mm) + + item.draw = `${element.left * mm},${element.top * mm},0,${codeType},${narrowWidth},${horizontal},${vertical},${element.barcodeLabel === 'true' ? 'B' : 'N'},` + } else if (item.type === 'qrcode') { + let r = Math.ceil(element.qrcodeWidth / 2) + + item.draw = `${element.left * mm},${element.top * mm},0,0,0,${r},0,0,8,` + } + + items.push(item) + }) + + let ip = '192.168.1.2' + let params = list.map(cell => { + let array = [] + let value = cell[btn.verify.valueField] + + if (btn.verify.linkType !== 'USB') { + array.push({PTK_Connect_Timer: `${ip},${btn.verify.port},5`}); // 鎵撳紑鎵撳嵃鏈虹綉缁滅鍙� + } else { + array.push({PTK_OpenUSBPort: btn.verify.port}); // 鎵撳紑鎵撳嵃鏈篣SB绔彛 + } + + array.push({PTK_ClearBuffer: ''}); // 娓呯┖缂撳瓨 + array.push({PTK_SetDirection: 'B'}); // 璁剧疆鎵撳嵃鏂瑰悜 + array.push({PTK_SetLabelHeight: height * mm + ',' + gap * mm + ',' + 0 + ',' + false}); // 璁剧疆鏍囩楂樺害銆侀棿闅欏強鍋忕Щ + array.push({PTK_SetLabelWidth: width * mm}); // 璁剧疆鏍囩瀹藉害 + array.push({PTK_SetRFID: '0,0,0,0,0'}); // UHF RFID鎵撳嵃璁剧疆 + array.push({PTK_RWRFIDLabel: '1,0,0,4,1,' + value}); + + items.forEach(m => { + let val = '' + if (m.field) { + val = cell[m.field] + } else { + val = m.value + } + + if (!val && val !== 0) return + + if (m.type === 'text') { + array.push({PTK_DrawText_TrueType: m.draw + val}); + } else if (m.type === 'barcode') { + array.push({PTK_DrawBarcode: m.draw + val}); + } else if (m.type === 'qrcode') { + array.push({PTK_DrawBar2D_QR: m.draw + val}); + } + }) + + array.push({PTK_PrintLabel: '1,1'}); + array.push({PTK_CloseUSBPort: ''}); // 鍏抽棴USB閫氳绔彛 + + return { + reqParam: '1', + printparams: JSON.stringify(array) + } + }) + + this.loopRFIDPrint(params) + } + + loopRFIDPrint = (params) => { + let param = params.shift() + + Api.postekPrint(param).then(res => { + if (res.retval === '0') { + if (params.length === 0) { + this.execSuccess({ ErrCode: 'S', message: '', ErrMesg: '鎵撳嵃璇锋眰宸插彂鍑恒��', status: true }) + } else { + setTimeout(() => { + this.loopRFIDPrint(params) + }, 200) + } + } else { + if (res.retval === '30021') { + res.msg = res.msg.replace(/PTK_ClearBuffer[\s\S]*/, '') + } + + this.execError({ErrCode: 'N', message: res.msg}) + } + }) + } execPrint = (list, template, formdata) => { const { btn } = this.props let _errors = [] - - // if (btn) { - // this.execRfidPrint() - // return - // } let defaultPrinter = btn.verify.defaultPrinter || 'lackprinter' let printers = {} diff --git a/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx index 1c8b257..324f63b 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx @@ -213,6 +213,20 @@ changePrintMode = (e) => { let value = e.target.value + if (value === 'RFID') { + this.setState({linkType: 'USB', port: 255}, () => { + this.props.form.setFieldsValue({ + linkType: 'USB' + }) + }) + } else if (this.state.printMode === 'RFID') { + this.setState({linkType: 'system'}, () => { + this.props.form.setFieldsValue({ + linkType: 'system' + }) + }) + } + this.setState({ printMode: value }) @@ -227,6 +241,14 @@ if (value === 'system') { this.props.form.setFieldsValue({ linkUrl: '127.0.0.1:13529' + }) + } else if (value === 'USB') { + this.props.form.setFieldsValue({ + port: '255' + }) + } else if (value === 'network') { + this.props.form.setFieldsValue({ + port: '9100' }) } }) @@ -262,11 +284,12 @@ <Radio.Group onChange={this.changePrintMode}> <Radio value="normal">鏍囧噯</Radio> <Radio value="custom">鑷畾涔�</Radio> + <Radio value="RFID">RFID</Radio> </Radio.Group> )} </Form.Item> </Col> - <Col span={8}> + {printMode !== 'RFID' ? <Col span={8}> <Form.Item label="閾炬帴绫诲瀷"> {getFieldDecorator('linkType', { initialValue: linkType || 'system' @@ -277,9 +300,21 @@ </Radio.Group> )} </Form.Item> - </Col> + </Col> : <Col span={8}> - <Form.Item label={'閾炬帴鍦板潃'}> + <Form.Item label="閾炬帴绫诲瀷"> + {getFieldDecorator('linkType', { + initialValue: linkType || 'USB' + })( + <Radio.Group onChange={this.changeLinkType}> + <Radio value="USB">USB</Radio> + <Radio value="network">缃戠粶绔彛</Radio> + </Radio.Group> + )} + </Form.Item> + </Col>} + {printMode !== 'RFID' ? <Col span={8}> + <Form.Item label="閾炬帴鍦板潃"> {getFieldDecorator('linkUrl', { initialValue: verify.linkUrl || '127.0.0.1:13529', rules: [ @@ -290,7 +325,20 @@ ] })(<Input placeholder="" autoComplete="off" disabled={linkType === 'system'} />)} </Form.Item> - </Col> + </Col> : + <Col span={8}> + <Form.Item label={'绔彛'}> + {getFieldDecorator('port', { + initialValue: verify.port || '255', + rules: [ + { + required: true, + message: '璇疯緭鍏ョ鍙�!' + } + ] + })(<Input placeholder="" autoComplete="off" />)} + </Form.Item> + </Col>} {printMode === 'custom' ? <Col span={24}> <Form.Item label={'澶勭悊鍑芥暟'} className="printFunc"> {getFieldDecorator('printFunc', { @@ -306,7 +354,60 @@ )} </Form.Item> </Col> : null} + {printMode === 'RFID' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鐢ㄤ簬鍗曚綅鎹㈢畻銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鍒嗚鲸鐜� + </Tooltip> + }> + {getFieldDecorator('DPI', { + initialValue: verify.DPI || '300' + })( + <Radio.Group> + <Radio value="203">203</Radio> + <Radio value="300">300</Radio> + <Radio value="600">600</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} + {printMode === 'RFID' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="闇�瑕佸瓨璐嚦鑺墖涓殑鍊硷紝璇峰~鍐欏搴旂殑瀛楁鍚嶏紝娉ㄦ剰澶у皬鍐欍��"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鎵撳嵃鍊� + </Tooltip> + }> + {getFieldDecorator('valueField', { + initialValue: verify.valueField || '', + rules: [ + { + required: true, + message: '璇疯緭鍏ュ瓧娈靛悕!' + } + ] + })(<Input placeholder="" autoComplete="off" disabled={linkType === 'system'} />)} + </Form.Item> + </Col> : null} {printMode === 'normal' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鎵撳嵃鍒楄〃涓虹┖鏃讹紝鏄惁鎻愮ず鐢ㄦ埛銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 绌哄�兼彁绀� + </Tooltip> + }> + {getFieldDecorator('emptyTip', { + initialValue: verify.emptyTip || 'true' + })( + <Radio.Group> + <Radio value="true">鏄�</Radio> + <Radio value="false">鍚�</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} + {printMode !== 'custom' ? <Col span={8}> <Form.Item label="鎵撳嵃妯℃澘"> {getFieldDecorator('Template', { initialValue: verify.Template || '', @@ -331,25 +432,8 @@ </Select> )} </Form.Item> - </Col> : null } - {printMode === 'normal' ? <Col span={8}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鎵撳嵃鍒楄〃涓虹┖鏃讹紝鏄惁鎻愮ず鐢ㄦ埛銆�"> - <QuestionCircleOutlined className="mk-form-tip" /> - 绌哄�兼彁绀� - </Tooltip> - }> - {getFieldDecorator('emptyTip', { - initialValue: verify.emptyTip || 'true' - })( - <Radio.Group> - <Radio value="true">鏄�</Radio> - <Radio value="false">鍚�</Radio> - </Radio.Group> - )} - </Form.Item> </Col> : null} - {printMode === 'normal' ? <Col span={8}> + {printMode !== 'custom' ? <Col span={8} offset={printMode === 'RFID' ? 16 : 0}> <img className="legend" src={this.state.selectimg} alt=""/> </Col> : null } </Row> @@ -360,7 +444,7 @@ 鎵撳嵃绫诲瀷 {verify.printerTypeList.length ? <span className="count-tip">{verify.printerTypeList.length}</span> : null} </span> - } key="2"> + } disabled={printMode === 'RFID'} key="2"> <Form {...formItemLayout}> <Row gutter={24}> <Col span={24} className="print-tip"> diff --git a/src/utils/utils.js b/src/utils/utils.js index 434200c..e92cda2 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -2185,7 +2185,7 @@ style.color = mark.color innerStyle = {color: mark.color} } else if (type === 'background') { - style.background = mark.color + style.backgroundColor = mark.color if (mark.fontColor) { style.color = mark.fontColor innerStyle = {color: mark.fontColor} diff --git a/src/views/design/header/index.jsx b/src/views/design/header/index.jsx index 01a85fd..eb9e26a 100644 --- a/src/views/design/header/index.jsx +++ b/src/views/design/header/index.jsx @@ -2,7 +2,7 @@ import { withRouter } from 'react-router-dom' import {connect} from 'react-redux' import { Dropdown, Menu, Modal, notification, Switch, Button, Popover } from 'antd' -import { MenuFoldOutlined, SettingOutlined, AppstoreOutlined, DownOutlined, HomeOutlined, ApiOutlined, PlusOutlined, EditOutlined, MenuOutlined } from '@ant-design/icons' +import { MenuFoldOutlined, SettingOutlined, AppstoreOutlined, DownOutlined, HomeOutlined, ApiOutlined, PlusOutlined, EditOutlined, MenuOutlined, DatabaseOutlined } from '@ant-design/icons' import moment from 'moment' import asyncComponent from '@/utils/asyncComponent' @@ -452,45 +452,55 @@ <SettingOutlined className="edit-check"/> </Popover> : null} {/* window.btoa(window.encodeURIComponent(JSON.stringify({ MenuType: 'home', MenuId: 'home_page_id', MenuName: '棣栭〉' }))) */} - {window.GLOB.systemType !== 'production' ? - <div className="home-entrance entrance"> - <div className="icon"><HomeOutlined /></div> - <div className="title">棣栭〉</div> - <div className="detail">鍩轰簬鑷畾涔夐〉闈㈢殑棣栭〉璁捐锛屽彲瀹炵幇鐏垫椿鐨勫厓绱犻厤缃強鏍峰紡璋冩暣锛屽睍鐜板綋鍓嶇郴缁熺殑椋庢牸銆�</div> - <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}> - 缂栬緫 - </Button> - </div> : null - } - <div className="api-entrance entrance"> - <div className="icon"><ApiOutlined /></div> - <div className="title">鎺ュ彛璋冭瘯</div> - <div className="detail">鍙嚜鍔ㄥ鐞嗙櫥褰曟帴鍙g殑鍙傛暟鍔犲瘑锛屼互鍙婁笟鍔℃帴鍙g殑绛惧悕璁$畻锛屾柟渚垮紑鍙戜汉鍛樼殑鎺ュ彛娴嬭瘯宸ヤ綔銆�</div> - <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/interface')}}> - 缂栬緫 - </Button> - </div> - <div className="app-entrance entrance"> - <div className="icon"><AppstoreOutlined /></div> - <div className="title">搴旂敤绠$悊</div> - <div className="detail">鍙垱寤哄強绠$悊PC銆乸ad鍙婄Щ鍔ㄧ绛変笉鍚岃澶囩殑搴旂敤锛屽疄鐜版槑绉戜簯APP銆佸井淇″叕浼楀彿銆佸皬绋嬪簭绛夊骞冲彴鐨勫簲鐢ㄥ叡浜��</div> - {window.GLOB.systemType !== 'production' ? - <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/appmanage')}}> - 缂栬緫 - </Button> : - <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/appcheck')}}> - 鏌ョ湅 - </Button> + <div className="entrance-wrap"> + {window.GLOB.systemType !== 'production' ? + <div className="entrance"> + <div className="icon"><HomeOutlined /></div> + <div className="title">棣栭〉</div> + <div className="detail">鍩轰簬鑷畾涔夐〉闈㈢殑棣栭〉璁捐锛屽彲瀹炵幇鐏垫椿鐨勫厓绱犻厤缃強鏍峰紡璋冩暣锛屽睍鐜板綋鍓嶇郴缁熺殑椋庢牸銆�</div> + <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}> + 缂栬緫 + </Button> + </div> : null } + <div className="entrance"> + <div className="icon"><ApiOutlined /></div> + <div className="title">鎺ュ彛璋冭瘯</div> + <div className="detail">鍙嚜鍔ㄥ鐞嗙櫥褰曟帴鍙g殑鍙傛暟鍔犲瘑锛屼互鍙婁笟鍔℃帴鍙g殑绛惧悕璁$畻锛屾柟渚垮紑鍙戜汉鍛樼殑鎺ュ彛娴嬭瘯宸ヤ綔銆�</div> + <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/interface')}}> + 缂栬緫 + </Button> + </div> + <div className="entrance"> + <div className="icon"><AppstoreOutlined /></div> + <div className="title">搴旂敤绠$悊</div> + <div className="detail">鍙垱寤哄強绠$悊PC銆乸ad鍙婄Щ鍔ㄧ绛変笉鍚岃澶囩殑搴旂敤锛屽疄鐜版槑绉戜簯APP銆佸井淇″叕浼楀彿銆佸皬绋嬪簭绛夊骞冲彴鐨勫簲鐢ㄥ叡浜��</div> + {window.GLOB.systemType !== 'production' ? + <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/appmanage')}}> + 缂栬緫 + </Button> : + <Button type="primary" disabled={!(memberLevel >= 20)} title={memberLevel >= 20 ? '' : '浼氬憳绛夌骇涓嶅锛屾棤寮�鍙戞潈闄愩��'} onClick={() => {window.open('#/appcheck')}}> + 鏌ョ湅 + </Button> + } + </div> + {window.GLOB.systemType !== 'production' ? <div className="entrance"> + <div className="icon"><MenuOutlined /></div> + <div className="title">鑿滃崟鎿嶄綔璇存槑</div> + <div className="detail">榧犳爣鎮仠 <SettingOutlined style={{color: '#1890ff'}}/> 鍙樉绀鸿彍鍗曠殑娣诲姞銆佹帓搴忥紙鍖呮嫭缂栬緫銆佸垹闄わ級涓庤В鍐诲姛鑳斤紝鍙屽嚮涓夌骇鑿滃崟鍙繘鍏ョ紪杈戠獥鍙c��</div> + <Button type="primary" onClick={() => {window.open('#/main')}}> + 鏂扮獥鍙� + </Button> + </div> : null} + {window.GLOB.systemType !== 'production' ? <div className="entrance"> + <div className="icon"><DatabaseOutlined /></div> + <div className="title">瀛樺偍杩囩▼</div> + <div className="detail">鍙湪椤甸潰涓煡鐪嬫垨缂栬緫鏈湴瀛樺偍杩囩▼銆�</div> + <Button type="primary" onClick={() => {window.open('#/proc')}}> + 缂栬緫 + </Button> + </div> : null} </div> - {window.GLOB.systemType !== 'production' ? <div className="menu-entrance entrance"> - <div className="icon"><MenuOutlined /></div> - <div className="title">鑿滃崟鎿嶄綔璇存槑</div> - <div className="detail">榧犳爣鎮仠 <SettingOutlined style={{color: '#1890ff'}}/> 鍙樉绀鸿彍鍗曠殑娣诲姞銆佹帓搴忥紙鍖呮嫭缂栬緫銆佸垹闄わ級涓庤В鍐诲姛鑳斤紝鍙屽嚮涓夌骇鑿滃崟鍙繘鍏ョ紪杈戠獥鍙c��</div> - <Button type="primary" onClick={() => {window.open('#/main')}}> - 鏂扮獥鍙� - </Button> - </div> : null} {/* 缂栬緫鑿滃崟 */} {editLevel === 'level1' ? <EditMenu menulist={this.state.menulist} reload={this.reload} exitEdit={this.exitEdit}/> : null} {/* 澶村儚銆佺敤鎴峰悕 */} diff --git a/src/views/design/header/index.scss b/src/views/design/header/index.scss index 587ca14..aef0f9b 100644 --- a/src/views/design/header/index.scss +++ b/src/views/design/header/index.scss @@ -113,43 +113,16 @@ margin-left: 10px; cursor: pointer; } - .level4-close { - position: relative; - top: 13px; - left: 20px; - height: 26px; - padding: 0 10px; - z-index: 2; - } - .mobile { - position: absolute; - top: 135px; - right: 50px; - color: #1890ff; - cursor: pointer; - } - .interface { - position: absolute; - top: 170px; - right: 50px; - color: #1890ff; - cursor: pointer; - } - .home-entrance { - left: 260px; - } - .api-entrance { - left: 540px; - } - .app-entrance { - left: 820px; - } - .menu-entrance { - left: 1100px; - } - .entrance { + + .entrance-wrap { position: absolute; top: 100px; + left: 240px; + width: calc(100vw - 270px); + } + .entrance { + margin-left: 30px; + margin-bottom: 30px; background: #ffffff; box-shadow: 0 0 5px #d9d9d9; border-radius: 5px; @@ -157,6 +130,8 @@ height: 250px; color: rgba(0, 0, 0, 0.85); text-align: center; + display: inline-block; + vertical-align: top; .icon { text-align: center; padding: 15px 0px; @@ -180,6 +155,7 @@ color: rgba(0, 0, 0, 0.65); text-align: center; padding: 0 10px; + min-height: 60px; } .ant-btn { margin-top: 15px; diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx index 45f558f..381ae5d 100644 --- a/src/views/login/index.jsx +++ b/src/views/login/index.jsx @@ -75,6 +75,21 @@ // 鐧诲綍鎻愪氦 let res = await Api.getusermsg(param.username, param.password, false, ipAddress, city) if (res.status) { + if (res.check_mob) { + let loginWays = this.state.loginWays.filter(item => item.type === 'sms_vcode') + + if (loginWays.length > 0) { + this.setState({loginWays: null, isDisabled: false}, () => { + this.setState({loginWays: loginWays}) + }) + Modal.warning({ + title: '涓虹‘璁ゆ槸鎮ㄦ湰浜烘搷浣滐紝璇蜂娇鐢ㄦ墜鏈虹煭淇¢獙璇佺爜杩涜韬唤璁よ瘉', + okText: '鐭ラ亾浜�' + }) + return + } + } + sessionStorage.setItem('UserID', res.UserID) sessionStorage.setItem('LoginUID', res.LoginUID) sessionStorage.setItem('User_Name', res.UserName) diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index 1eed346..b2df487 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/index.jsx @@ -631,11 +631,11 @@ let appIndeList = sessionStorage.getItem('appViewList') appIndeList = JSON.parse(appIndeList) - appIndeList = appIndeList.map(item => (item.keys_type !== 'index' ? item.keys_id : '')).join(',') + appIndeList = appIndeList.map(item => (item.keys_type === 'navbar' ? item.keys_id : '')).join(',') - if (sessionStorage.getItem('userbind')) { - appIndeList = appIndeList + ',' + sessionStorage.getItem('userbind') - } + // if (sessionStorage.getItem('userbind')) { + // appIndeList = appIndeList + ',' + sessionStorage.getItem('userbind') + // } if (sessionStorage.getItem('instantMessage')) { appIndeList = appIndeList + ',' + sessionStorage.getItem('instantMessage') } @@ -643,7 +643,11 @@ let menus = res.menus.filter(item => appIndeList.indexOf(item.MenuID) === -1) menus = menus.map(item => { item.value = item.MenuID - item.label = item.MenuName + if (item.MenuNo) { + item.label = item.MenuName + '锛�' + item.MenuNo + '锛�' + } else { + item.label = item.MenuName + } return item }) sessionStorage.setItem('appMenus', JSON.stringify(menus)) diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx index fa764b8..400aee2 100644 --- a/src/views/pcdesign/index.jsx +++ b/src/views/pcdesign/index.jsx @@ -711,12 +711,16 @@ let appIndeList = sessionStorage.getItem('appViewList') appIndeList = JSON.parse(appIndeList) - appIndeList = appIndeList.map(item => (item.keys_type !== 'index' ? item.keys_id : '')).join(',') + appIndeList = appIndeList.map(item => (item.keys_type === 'navbar' ? item.keys_id : '')).join(',') let menus = res.menus.filter(item => appIndeList.indexOf(item.MenuID) === -1) menus = menus.map(item => { item.value = item.MenuID - item.label = item.MenuName + if (item.MenuNo) { + item.label = item.MenuName + '锛�' + item.MenuNo + '锛�' + } else { + item.label = item.MenuName + } return item }) sessionStorage.setItem('appMenus', JSON.stringify(menus)) diff --git a/src/views/printTemplate/mutilform/index.jsx b/src/views/printTemplate/mutilform/index.jsx index d9d7a0e..ba52c7b 100644 --- a/src/views/printTemplate/mutilform/index.jsx +++ b/src/views/printTemplate/mutilform/index.jsx @@ -196,7 +196,7 @@ initialValue: item.initval, rules: [ { - required: true, + required: item.required, message: '璇疯緭鍏�' + item.label + '!' } ] diff --git a/src/views/printTemplate/option.js b/src/views/printTemplate/option.js index 24e4b88..f634781 100644 --- a/src/views/printTemplate/option.js +++ b/src/views/printTemplate/option.js @@ -268,6 +268,15 @@ initval: config.rotate || 0, required: false, options: Rotate + }, + { + type: 'number', + key: 'gap', + label: '闂撮殭', + initval: config.gap || '', + tooltip: 'RFID鏍囩闂撮殭銆�', + min: 0, + required: false } ] } @@ -637,6 +646,15 @@ required: true }, { + type: 'number', + key: 'narrowWidth', + label: '鍗曞厓瀹藉害', + initval: item.narrowWidth, + tooltip: '娉細RFID鏉$爜鍗曞厓瀹藉害锛岄粯璁ゅ�间负2銆�', + precision: 0, + required: false + }, + { type: 'select', key: 'background', label: '鑳屾櫙鑹�', diff --git a/src/views/rolemanage/index.jsx b/src/views/rolemanage/index.jsx index f51b6dc..5c5a369 100644 --- a/src/views/rolemanage/index.jsx +++ b/src/views/rolemanage/index.jsx @@ -27,12 +27,17 @@ loading: false, menulist: [], columns: [ - { title: '鑿滃崟鍚嶇О', dataIndex: 'MenuName', key: 'MenuName', align: 'center', render: (text, record) => { - if (record.extra) { - return <span style={{color: '#1890ff'}}>{text}</span> + { + title: '鑿滃崟鍚嶇О', dataIndex: 'MenuName', key: 'MenuName', align: 'center', render: (text, record) => { + if (record.extra) { + return <span style={{color: '#1890ff'}}>{text}</span> + } + return text } - return text - } }, + }, + { + title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo', align: 'center' + }, { title: '鎿嶄綔', key: 'action', diff --git a/src/views/systemfunc/index.jsx b/src/views/systemfunc/index.jsx index 6fd02fb..26ae9c0 100644 --- a/src/views/systemfunc/index.jsx +++ b/src/views/systemfunc/index.jsx @@ -1,6 +1,5 @@ import React, {Component} from 'react' import { ConfigProvider } from 'antd' -import enUS from 'antd/es/locale/en_US' import zhCN from 'antd/es/locale/zh_CN' import asyncComponent from '@/utils/asyncComponent' @@ -10,7 +9,6 @@ import './index.scss' const Tabview = asyncComponent(() => import('@/components/tabview')) -const _locale = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS class Design extends Component { UNSAFE_componentWillMount() { @@ -30,7 +28,7 @@ render () { return ( <div className="mk-hs-view"> - <ConfigProvider locale={_locale}> + <ConfigProvider locale={zhCN}> <Sidemenu key="sidemenu"/> <Tabview key="tabview"/> <Header key="header"/> diff --git a/src/views/systemfunc/sidemenu/config.jsx b/src/views/systemfunc/sidemenu/config.jsx index 6726114..1e5c708 100644 --- a/src/views/systemfunc/sidemenu/config.jsx +++ b/src/views/systemfunc/sidemenu/config.jsx @@ -41,8 +41,8 @@ MenuName: '鏍囩椤电鐞�', }, { src: '', - PageParam: {OpenType: 'newtab', Template: 'CommonTable'}, - type: 'CommonTable', + PageParam: {OpenType: 'newtab', Template: 'BaseTable'}, + type: 'BaseTable', MenuID: '1578900109100np8aqd0a77q3na46oas', MenuNo: 'sPrintTemplateM', MenuName: '鏍囩鎵撳嵃妯℃澘', diff --git a/src/views/systemproc/index.jsx b/src/views/systemproc/index.jsx new file mode 100644 index 0000000..7aab3b5 --- /dev/null +++ b/src/views/systemproc/index.jsx @@ -0,0 +1,24 @@ +import React, {Component} from 'react' +import { ConfigProvider } from 'antd' +import zhCN from 'antd/es/locale/zh_CN' + +// import Api from '@/api' +// import Utils from '@/utils/utils.js' +import Header from '../systemfunc/header' +import Proc from './proc' +import './index.scss' + +class SysProc extends Component { + render () { + return ( + <div className="mk-proc-view"> + <ConfigProvider locale={zhCN}> + <Header key="header"/> + <Proc /> + </ConfigProvider> + </div> + ) + } +} + +export default SysProc \ No newline at end of file diff --git a/src/views/systemproc/index.scss b/src/views/systemproc/index.scss new file mode 100644 index 0000000..567e4ef --- /dev/null +++ b/src/views/systemproc/index.scss @@ -0,0 +1,9 @@ +.mk-proc-view { + .sys-header-container { + color: rgba(255, 255, 255, 0.65); + background: #001529; + .title { + display: none; + } + } +} \ No newline at end of file diff --git a/src/views/systemproc/proc/index.jsx b/src/views/systemproc/proc/index.jsx new file mode 100644 index 0000000..56bc51f --- /dev/null +++ b/src/views/systemproc/proc/index.jsx @@ -0,0 +1,77 @@ +import React, {Component} from 'react' +import { Input, notification } from 'antd' +import moment from 'moment' + +import Utils from '@/utils/utils.js' +import Api from '@/api' +import CodeMirror from '@/templates/zshare/codemirror' +import './index.scss' + +const { Search } = Input + +class ProcControl extends Component { + state = { + procName: '', + content: null, + loading: false + } + + componentDidMount () { + + } + + search = (value) => { + let proc = value.replace(/^(\s*)|(\s*)$/ig, '') + + if (!proc) { + this.setState({content: '', procName: ''}) + return + } + + let _param = { + func: 's_get_userproc', + LText: proc + } + + _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp) + + this.setState({loading: true}) + + Api.genericInterface(_param).then(res => { + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + this.setState({content: '', procName: '', loading: false}) + return + } + + this.setState({content: res.Ltext.replace(/mchr13k/ig, '\n'), procName: proc, loading: false}) + }) + } + + render () { + const { loading, content } = this.state + + return ( + <div className="mk-proc-wrap"> + <div className="control-wrap"> + <div className="search-wrap"> + <Search placeholder="璇疯緭鍏ュ瓨鍌ㄨ繃绋嬪悕绉�" disabled={loading} enterButton="纭畾" onSearch={this.search}/> + </div> + <div className="action-wrap"> + + </div> + </div> + <div className="edit-wrap"> + <CodeMirror value={content} onChange={(val) => this.setState({content: val})}/> + </div> + </div> + ) + } +} + +export default ProcControl \ No newline at end of file diff --git a/src/views/systemproc/proc/index.scss b/src/views/systemproc/proc/index.scss new file mode 100644 index 0000000..d8d5749 --- /dev/null +++ b/src/views/systemproc/proc/index.scss @@ -0,0 +1,35 @@ +.mk-proc-wrap { + position: relative; + padding: 65px 20px 0px; + + .control-wrap { + display: flex; + + .search-wrap { + width: 300px; + + .ant-btn[disabled] { + background-color: #1890ff!important; + border-color: #1890ff!important; + color: #ffffff!important; + opacity: 0.5; + } + } + } + + .edit-wrap { + margin-top: 10px; + .CodeMirror { + height: calc(100vh - 130px); + } + .anticon-fullscreen { + display: none; + } + .anticon-format-painter { + top: 10px; + } + .CodeMirror-gutters { + background-color: #ffffff; + } + } +} -- Gitblit v1.8.0