From 717775a33f61d867b8bdd6cac9b33211dcb5a34e Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 19 二月 2021 16:35:22 +0800 Subject: [PATCH] 2021-02-19 --- src/views/mobmanage/index.jsx | 332 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 245 insertions(+), 87 deletions(-) diff --git a/src/views/mobmanage/index.jsx b/src/views/mobmanage/index.jsx index f4c551e..64056b2 100644 --- a/src/views/mobmanage/index.jsx +++ b/src/views/mobmanage/index.jsx @@ -1,21 +1,26 @@ import React, {Component} from 'react' -// import { fromJS } from 'immutable' -import { Spin, notification, Button, Table, Modal } from 'antd' +import { fromJS } from 'immutable' +import { Spin, notification, Button, Table, Modal, ConfigProvider } from 'antd' import moment from 'moment' +import enUS from 'antd/es/locale/en_US' +import zhCN from 'antd/es/locale/zh_CN' import Api from '@/api' import Utils from '@/utils/utils.js' import asyncComponent from '@/utils/asyncComponent' import './index.scss' +const { confirm } = Modal + +const _locale = localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS const Header = asyncComponent(() => import('@/mob/header')) const MutilForm = asyncComponent(() => import('./mutilform')) +const SubMutilForm = asyncComponent(() => import('./submutilform')) class AppManage extends Component { state = { loading: false, applist: [], - appsublist: [], columns: [ { title: '搴旂敤鍚嶇О', dataIndex: 'remark', key: 'remark', align: 'center' }, { title: '搴旂敤缂栫爜', dataIndex: 'kei_no', key: 'kei_no', align: 'center' }, @@ -40,7 +45,7 @@ }, { title: '鏉冮檺绠$悊', dataIndex: 'role_type', key: 'role_type', align: 'center', - render: (text, record) => text === 'false' ? '涓嶉渶瑕�' : '闇�瑕�' + render: (text, record) => text === 'false' ? '涓嶅惎鐢�' : '鍚敤' }, { title: '鐭繛鎺�', dataIndex: 'link_type', key: 'link_type', align: 'center', @@ -87,17 +92,25 @@ Api.getCloudConfig(param).then(result => { if (result.status) { + let selectApp = null + let applist = result.data.map(item => { + item.sublist = item.data_detail || [] + item.sublist = item.sublist.map(cell => { + cell.ID = cell.d_id + return cell + }) + + if (this.state.selectApp && this.state.selectApp.ID === item.ID) { + selectApp = item + } + + return item + }) + this.setState({ loading: false, - applist: result.data.map(item => { - item.sublist = item.data_detail || [] - item.sublist = item.sublist.map(cell => { - cell.ID = cell.d_id - return cell - }) - - return item - }) + applist: applist, + selectApp }) } else { @@ -114,11 +127,107 @@ } deleteApp = (record) => { - console.log(record) + const _this = this + + confirm({ + content: '纭畾鍒犻櫎銆�' + record.remark + '銆嬪悧锛�', + onOk() { + return new Promise(resolve => { + let param = { + func: 's_kei_del', + ID: record.ID, + kei_no: record.kei_no + } + + Api.getCloudConfig(param).then(result => { + if (result.status) { + notification.success({ + top: 92, + message: '鍒犻櫎鎴愬姛锛�', + duration: 5 + }) + + _this.setState({ + selectedRowKeys: [], + selectedSubRowKeys: [], + selectApp: null, + selectSubApp: null, + loading: true + }) + _this.getAppList() + } else { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } + resolve() + }, () => { + resolve() + }) + }) + }, + onCancel() {} + }) } deleteSubApp = (record) => { - console.log(record) + const { selectApp } = this.state + const _this = this + + let param = { + func: 's_kei_addupt', + ID: selectApp.ID, + exec_type: 'y', + remark: selectApp.remark, + kei_no: selectApp.kei_no, + LText: '' + } + + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + param.secretkey = Utils.encrypt('', param.timestamp) + + let sublist = fromJS(selectApp.sublist).toJS() + sublist = sublist.filter(item => item.ID !== record.ID) + + param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','${item.login_types || 'true'}','${item.link_type || 'true'}','${item.role_type || 'true'}','${item.lang || 'zh-CN'}'`) + param.LText = param.LText.join(' union all ') + param.LText = Utils.formatOptions(param.LText) + + confirm({ + content: '纭畾鍒犻櫎璇ュ瓙搴旂敤鍚楋紵', + onOk() { + return new Promise(resolve => { + Api.getCloudConfig(param).then(result => { + if (result.status) { + notification.success({ + top: 92, + message: '鎿嶄綔鎴愬姛锛�', + duration: 5 + }) + + _this.setState({ + selectedSubRowKeys: [], + selectSubApp: null, + loading: true + }) + _this.getAppList() + } else { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } + resolve() + }, () => { + resolve() + }) + }) + }, + onCancel() {} + }) } jumpApp = (item) => { @@ -146,13 +255,14 @@ * @description 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝 鍒ゆ柇鏄惁鍙�夛紝鍗曢�夋垨澶氶�夛紝杩涜瀵瑰簲鎿嶄綔 */ changeRow = (record) => { - this.setState({ selectedRowKeys: [record.ID], selectApp: record, appsublist: record.sublist || [] }) + this.setState({ selectedRowKeys: [record.ID], selectApp: record }) } /** * @description 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝 鍒ゆ柇鏄惁鍙�夛紝鍗曢�夋垨澶氶�夛紝杩涜瀵瑰簲鎿嶄綔 */ changeSubRow = (record) => { + console.log(record) this.setState({ selectedSubRowKeys: [record.ID], selectSubApp: record }) } @@ -176,6 +286,13 @@ notification.warning({ top: 92, message: '璇烽�夋嫨闇�瑕佺紪杈戠殑瀛愬簲鐢紒', + duration: 5 + }) + return + } else if (!this.state.selectApp) { + notification.warning({ + top: 92, + message: '璇烽�夋嫨搴旂敤锛�', duration: 5 }) return @@ -207,7 +324,7 @@ param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt('', param.timestamp) - if (visible === 'edit' && selectApp.sublist && selectApp.sublist.length > 0) { + if (visible === 'edit') { param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','${item.login_types || 'true'}','${item.link_type || 'true'}','${item.role_type || 'true'}','${item.lang || 'zh-CN'}'`) param.LText = param.LText.join(' union all ') param.LText = Utils.formatOptions(param.LText) @@ -222,6 +339,10 @@ }) this.setState({ + selectedRowKeys: [], + selectedSubRowKeys: [], + selectApp: null, + selectSubApp: null, confirmloading: false, visible: false, loading: true @@ -246,32 +367,67 @@ } submitSubCard = () => { - const { card } = this.state + const { selectApp, subVisible, selectSubApp } = this.state this.submobcardRef.handleConfirm().then(res => { + if (subVisible === 'plus' && selectApp.sublist.filter(item => item.typename === res.typename).length > 0) { + notification.warning({ + top: 92, + message: '搴旂敤绫诲瀷宸插瓨鍦紒', + duration: 5 + }) + return + } this.setState({ confirmloading: true }) let param = { func: 's_kei_addupt', - ID: card ? card.uuid : Utils.getuuid(), - TypeName: res.type, - remark: res.name, - kei_no: res.keiNo + ID: selectApp.ID, + exec_type: 'y', + remark: selectApp.remark, + kei_no: selectApp.kei_no, + LText: '' } + + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + param.secretkey = Utils.encrypt('', param.timestamp) + + let sublist = fromJS(selectApp.sublist).toJS() + if (subVisible === 'plus') { + sublist.unshift({ + ID: Utils.getuuid(), + ...res + }) + } else { + res.ID = selectSubApp.ID + sublist = sublist.map(item => { + if (item.ID !== res.ID) { + return item + } else { + return res + } + }) + } + + param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','${item.login_types || 'true'}','${item.link_type || 'true'}','${item.role_type || 'true'}','${item.lang || 'zh-CN'}'`) + param.LText = param.LText.join(' union all ') + param.LText = Utils.formatOptions(param.LText) Api.getCloudConfig(param).then(result => { if (result.status) { notification.success({ top: 92, - message: card ? '淇敼鎴愬姛锛�' : '娣诲姞鎴愬姛锛�', + message: '鎿嶄綔鎴愬姛锛�', duration: 5 }) this.setState({ + selectedSubRowKeys: [], + selectSubApp: null, confirmloading: false, - visible: false, + subVisible: false, loading: true }) this.getAppList() @@ -294,74 +450,76 @@ } render () { - const { loading, visible, subVisible, columns, applist, appsublist, selectedRowKeys, selectedSubRowKeys, subcolumns, selectApp, selectSubApp } = this.state + const { loading, visible, subVisible, columns, applist, selectedRowKeys, selectedSubRowKeys, subcolumns, selectApp, selectSubApp } = this.state return ( <div className="mk-app-manage"> - <Header view="manage" /> - {loading ? - <div className="loading-mask"> - <div className="ant-spin-blur"></div> - <Spin /> - </div> : null - } - <div className="app-table"> - <div className="app-action"> - <Button className="mk-green" onClick={() => this.trigerApp('plus')}>娣诲姞</Button> - <Button className="mk-purple" onClick={() => this.trigerApp('edit')}>淇敼</Button> + <ConfigProvider locale={_locale}> + <Header view="manage" /> + {loading ? + <div className="loading-mask"> + <div className="ant-spin-blur"></div> + <Spin /> + </div> : null + } + <div className="app-table"> + <div className="app-action"> + <Button className="mk-green" onClick={() => this.trigerApp('plus')}>娣诲姞</Button> + <Button className="mk-purple" onClick={() => this.trigerApp('edit')}>淇敼</Button> + </div> + <Table + rowKey="ID" + columns={columns} + dataSource={applist} + pagination={false} + rowSelection={{ type: 'radio', selectedRowKeys, onChange: this.onSelectChange }} + onRow={(record) => ({ onClick: () => {this.changeRow(record)} })} + /> </div> - <Table - rowKey="ID" - columns={columns} - dataSource={applist} - pagination={false} - rowSelection={{ type: 'radio', selectedRowKeys, onChange: this.onSelectChange }} - onRow={(record) => ({ onClick: () => {this.changeRow(record)} })} - /> - </div> - <div className="app-table"> - <div className="sub-app-title"><span>瀛愬簲鐢�</span></div> - <div className="app-action"> - <Button className="mk-green" onClick={() => this.trigerSubApp('plus')}>娣诲姞</Button> - <Button className="mk-purple" onClick={() => this.trigerSubApp('edit')}>淇敼</Button> + <div className="app-table"> + <div className="sub-app-title"><span>瀛愬簲鐢�</span></div> + <div className="app-action"> + <Button className="mk-green" onClick={() => this.trigerSubApp('plus')}>娣诲姞</Button> + <Button className="mk-purple" onClick={() => this.trigerSubApp('edit')}>淇敼</Button> + </div> + <Table + rowKey="ID" + columns={subcolumns} + dataSource={selectApp ? selectApp.sublist : []} + pagination={false} + rowSelection={{ type: 'radio', selectedRowKeys: selectedSubRowKeys, onChange: this.onSubChange }} + onRow={(record) => ({ onClick: () => {this.changeSubRow(record)} })} + /> </div> - <Table - rowKey="ID" - columns={subcolumns} - dataSource={appsublist} - pagination={false} - rowSelection={{ type: 'radio', selectedRowKeys: selectedSubRowKeys, onChange: this.onSubChange }} - onRow={(record) => ({ onClick: () => {this.changeSubRow(record)} })} - /> - </div> - <Modal - title={'缂栬緫搴旂敤'} - width={'600px'} - maskClosable={false} - visible={!!visible} - onCancel={() => this.setState({visible: false})} - confirmLoading={this.state.confirmloading} - onOk={this.submitCard} - cancelText="鍙栨秷" - okText="纭畾" - destroyOnClose - > - <MutilForm type={visible} card={visible === 'edit' ? selectApp : ''} wrappedComponentRef={(inst) => this.mobcardRef = inst} inputSubmit={this.submitCard} /> - </Modal> - <Modal - title={'缂栬緫瀛愬簲鐢�'} - width={'600px'} - maskClosable={false} - visible={!!subVisible} - onCancel={() => this.setState({subVisible: false})} - confirmLoading={this.state.confirmloading} - onOk={this.submitSubCard} - cancelText="鍙栨秷" - okText="纭畾" - destroyOnClose - > - <MutilForm type={subVisible} card={subVisible === 'edit' ? selectSubApp : ''} wrappedComponentRef={(inst) => this.submobcardRef = inst} inputSubmit={this.submitSubCard} /> - </Modal> + <Modal + title={'缂栬緫搴旂敤'} + width={'600px'} + maskClosable={false} + visible={!!visible} + onCancel={() => this.setState({visible: false})} + confirmLoading={this.state.confirmloading} + onOk={this.submitCard} + cancelText="鍙栨秷" + okText="纭畾" + destroyOnClose + > + <MutilForm type={visible} card={visible === 'edit' ? selectApp : ''} wrappedComponentRef={(inst) => this.mobcardRef = inst} inputSubmit={this.submitCard} /> + </Modal> + <Modal + title={'缂栬緫瀛愬簲鐢�'} + width={'600px'} + maskClosable={false} + visible={!!subVisible} + onCancel={() => this.setState({subVisible: false})} + confirmLoading={this.state.confirmloading} + onOk={this.submitSubCard} + cancelText="鍙栨秷" + okText="纭畾" + destroyOnClose + > + <SubMutilForm type={subVisible} card={subVisible === 'edit' ? selectSubApp : ''} wrappedComponentRef={(inst) => this.submobcardRef = inst} inputSubmit={this.submitSubCard} /> + </Modal> + </ConfigProvider> </div> ) } -- Gitblit v1.8.0