From 5306aa30949e7a4cb7632da46ed7a786c5e61bde Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 30 八月 2021 18:30:28 +0800 Subject: [PATCH] 2021-08-30 --- src/views/design/index.jsx | 2 src/views/design/index.scss | 5 src/views/design/header/index.scss | 55 ++++ src/views/appmanage/index.scss | 2 src/views/design/header/index.jsx | 41 +++ src/views/appcheck/index.jsx | 260 +++++++++++++++++++++++ src/router/index.js | 2 src/views/appcheck/index.scss | 104 +++++++++ src/pc/components/login/normal-login/index.jsx | 2 src/views/appcheck/header/index.jsx | 31 ++ src/views/appcheck/header/index.scss | 57 +++++ src/views/appmanage/index.jsx | 42 +++ src/views/appmanage/submutilform/index.jsx | 23 ++ src/pc/components/login/normal-login/index.scss | 6 14 files changed, 605 insertions(+), 27 deletions(-) diff --git a/src/pc/components/login/normal-login/index.jsx b/src/pc/components/login/normal-login/index.jsx index 9f0d75e..74ec83e 100644 --- a/src/pc/components/login/normal-login/index.jsx +++ b/src/pc/components/login/normal-login/index.jsx @@ -46,7 +46,7 @@ wrap: { name: card.name, width: card.width || 24, loginWays: ['uname_pwd'] }, style: { background: '#ffffff', width: '330px', borderRadius: '4px', marginLeft: '55vw'}, loginWays: [ - {type: 'uname_pwd', label: '璐﹀彿瀵嗙爜', remember: 'true'}, + {type: 'uname_pwd', label: '璐﹀彿瀵嗙爜鐧诲綍', remember: 'true'}, {type: 'sms_vcode', label: '鐭俊楠岃瘉鐮�'}, {type: 'app_scan', label: '鎵爜鐧诲綍'}, ] diff --git a/src/pc/components/login/normal-login/index.scss b/src/pc/components/login/normal-login/index.scss index 3112f0b..6aa78f1 100644 --- a/src/pc/components/login/normal-login/index.scss +++ b/src/pc/components/login/normal-login/index.scss @@ -130,9 +130,9 @@ .mk-mob-view .login-edit-box { display: block; - .login-way-wrap.simple { - display: none; - } + // .login-way-wrap.simple { + // display: none; + // } .login-way-wrap { padding: 0 15px; border-radius: 0; diff --git a/src/router/index.js b/src/router/index.js index 9af2b9f..9220007 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -13,6 +13,7 @@ const Login = asyncLoadComponent(() => import('@/views/login')) const NotFound = asyncComponent(() => import('@/views/404')) const AppManage = asyncLoadComponent(() => import('@/views/appmanage')) +const AppCheck = asyncLoadComponent(() => import('@/views/appcheck')) const PCDesign = asyncLoadComponent(() => import('@/views/pcdesign')) const MobDesign = asyncLoadComponent(() => import('@/views/mobdesign')) const MenuDesign = asyncLoadComponent(() => import('@/views/menudesign')) @@ -29,6 +30,7 @@ {path: '/main', name: 'main', component: Main, auth: true}, {path: '/design', name: 'design', component: Design, auth: true}, {path: '/appmanage', name: 'appmanage', component: AppManage, auth: true}, + {path: '/appcheck', name: 'appcheck', component: AppCheck, auth: true}, {path: '/pcdesign/:param', name: 'pcdesign', component: PCDesign, auth: true}, {path: '/mobdesign/:param', name: 'mobdesign', component: MobDesign, auth: true}, {path: '/menudesign/:param', name: 'menudesign', component: MenuDesign, auth: true}, diff --git a/src/views/appcheck/header/index.jsx b/src/views/appcheck/header/index.jsx new file mode 100644 index 0000000..96bba6d --- /dev/null +++ b/src/views/appcheck/header/index.jsx @@ -0,0 +1,31 @@ +import React, {Component} from 'react' + +import avatar from '@/assets/img/avatar.jpg' +import MainLogo from '@/assets/img/main-logo.png' +import './index.scss' + +class AppManageHeader extends Component { + state = { + avatar: sessionStorage.getItem('CloudAvatar') || avatar, + userName: sessionStorage.getItem('CloudUserName') + } + + render () { + return ( + <header className="app-manage-header-container"> + <div className="header-logo"><img src={MainLogo} alt=""/></div> + <div className="title"> + 搴旂敤绠$悊 + </div> + <div className="header-user"> + <img src={this.state.avatar} alt=""/> + <span> + <span className="username">{this.state.userName}</span> + </span> + </div> + </header> + ) + } +} + +export default AppManageHeader \ No newline at end of file diff --git a/src/views/appcheck/header/index.scss b/src/views/appcheck/header/index.scss new file mode 100644 index 0000000..fd7bb98 --- /dev/null +++ b/src/views/appcheck/header/index.scss @@ -0,0 +1,57 @@ +.app-manage-header-container { + width: 100%; + height: 48px; + color: rgba(255, 255, 255, 0.65); + position: fixed; + top: 0px; + z-index: 10; + padding-right: 0px; + left: 0; + + background: #001529; + border-bottom: 1px solid #000; + + .header-logo { + float: left; + width: 180px; + line-height: 48px; + text-align: center; + padding-left: 5px; + box-sizing: border-box; + opacity: 1; + img { + max-width: 100%; + max-height: 40px; + } + } + .header-user { + float: right; + line-height: 48px; + margin-right: 10px; + img { + width: 29px; + height: 29px; + border-radius: 30px; + margin-right: 7px; + } + span { + color: #ffffff; + font-size: 0.95rem; + .username { + display: inline-block; + height: 30px; + max-width: 95px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + } + .title { + position: absolute; + left: calc(50% - 36px); + top: 10px; + color: #ffffff; + font-size: 18px; + } +} \ No newline at end of file diff --git a/src/views/appcheck/index.jsx b/src/views/appcheck/index.jsx new file mode 100644 index 0000000..4343b23 --- /dev/null +++ b/src/views/appcheck/index.jsx @@ -0,0 +1,260 @@ +import React, {Component} from 'react' +import { Spin, notification, Table, ConfigProvider, Typography, Row, Col, Tooltip, Icon } from 'antd' +import enUS from 'antd/es/locale/en_US' +import zhCN from 'antd/es/locale/zh_CN' + +import Api from '@/api' +import asyncComponent from '@/utils/asyncComponent' +import './index.scss' + +const { Paragraph } = Typography + +const _locale = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS +const Header = asyncComponent(() => import('./header')) + +let base_url = '' +if (process.env.NODE_ENV === 'production') { + base_url = document.location.origin + '/' + window.GLOB.service +} else { + base_url = window.GLOB.location + '/' + window.GLOB.service +} + +const skinStyle = { + bg_black_style_blue: {name: '钃濊壊', color: '#1890ff'}, + bg_black_style_red: {name: '绾㈣壊', color: '#f5222d'}, + bg_black_style_orange_red: {name: '姗欑孩鑹�', color: '#fa541c'}, + bg_black_style_orange: {name: '姗欒壊', color: '#fa8c16'}, + bg_black_style_orange_yellow: {name: '姗欓粍鑹�', color: '#faad14'}, + bg_black_style_yellow: {name: '榛勮壊', color: '#fadb14'}, + bg_black_style_yellow_green: {name: '榛勭豢鑹�', color: '#a0d911'}, + bg_black_style_green: {name: '缁胯壊', color: '#52c41a'}, + bg_black_style_cyan: {name: '闈掕壊', color: '#13c2c2'}, + bg_black_style_blue_purple: {name: '钃濈传鑹�', color: '#2f54eb'}, + bg_black_style_purple: {name: '绱壊', color: '#722ed1'}, + bg_black_style_magenta: {name: '娲嬬孩鑹�', color: '#eb2f96'}, + bg_black_style_grass_green: {name: '鑽夌豢鑹�', color: '#aeb303'}, + bg_black_style_deep_red: {name: '娣辩孩鑹�', color: '#c32539'} +} + +class AppCheck extends Component { + state = { + loading: false, + applist: [], + columns: [ + { title: '搴旂敤鍚嶇О', dataIndex: 'remark', key: 'remark', align: 'center', width: '45%' }, + { title: '搴旂敤缂栫爜', dataIndex: 'kei_no', key: 'kei_no', align: 'center', width: '45%' }, + ], + selectApp: null + } + + UNSAFE_componentWillMount() { + document.body.className = '' + this.getAppList() + } + + /** + * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 + */ + componentWillUnmount () { + this.setState = () => { + return + } + } + + getAppList = () => { + let param = { + func: 's_get_kei' + } + + param.rduri = window.GLOB.mainSystemApi + + this.setState({ + loading: true + }) + + Api.getLocalConfig(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 + + if (cell.customize_param) { + let _param = {} + try { + _param = JSON.parse(window.decodeURIComponent(window.atob(cell.customize_param))) + } catch (e) { + _param = {} + } + cell.copyright = _param.copyright || '' + cell.logo = _param.logo || '' + } + + return cell + }) + + if (this.state.selectApp && this.state.selectApp.ID === item.ID) { + selectApp = item + } + + return item + }) + + if (!selectApp && applist[0]) { + selectApp = applist[0] + } + + this.setState({ + loading: false, + applist: applist, + selectApp + }) + } else { + this.setState({ + loading: false + }) + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } + }) + } + + onSelectChange = selectedRowKeys => { + const { applist } = this.state + let selectApp = applist.filter(item => item.ID === selectedRowKeys[0])[0] + + this.setState({ selectApp }) + } + + /** + * @description 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝 鍒ゆ柇鏄惁鍙�夛紝鍗曢�夋垨澶氶�夛紝杩涜瀵瑰簲鎿嶄綔 + */ + changeRow = (record) => { + this.setState({ selectApp: record }) + } + + render () { + const { loading, columns, applist, selectApp } = this.state + + return ( + <div className="mk-app-check"> + <ConfigProvider locale={_locale}> + <Header view="manage" /> + {loading ? + <div className="loading-mask"> + <Spin size="large" /> + </div> : null + } + <div className="view-wrap"> + <div className="left-view"> + <div className="app-table"> + <Table + rowKey="ID" + columns={columns} + dataSource={applist} + pagination={false} + rowSelection={{ type: 'radio', selectedRowKeys: selectApp ? [selectApp.ID] : [], onChange: this.onSelectChange }} + onRow={(record) => ({ onClick: () => this.setState({ selectApp: record })})} + /> + </div> + </div> + <div className="right-view"> + {selectApp ? <div className="app-title">{selectApp.remark}</div> : null} + {selectApp && selectApp.sublist.map((item, index) => { + let css = skinStyle[item.css] ? skinStyle[item.css].name : '' + let color = skinStyle[item.css] ? skinStyle[item.css].color : '#e8e8e8' + let binding = '' + if (item.user_binding) { + if (item.user_binding.indexOf('uname_pwd') > -1) { + binding = '鐢ㄦ埛鍚�' + } + if (item.user_binding.indexOf('sms_vcode') > -1) { + binding = binding ? binding + '锛屾墜鏈哄彿' : '鎵嬫満鍙�' + } + } + return ( + <div className="sub-app" key={index} style={{borderColor: color}}> + <Row> + <Col span={12}> + <div className="app-item"> + <div className="label">搴旂敤绫诲瀷:</div> + <div className="content" style={{fontSize: '18px', fontWeight: 600}}>{item.typename}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">璇█:</div> + <div className="content" style={{textDecoration: 'underline'}}>{item.lang === 'en-US' ? '鑻辨枃' : '涓枃'}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">鏉冮檺绠$悊:</div> + <div className="content">{item.role_type === 'false' ? '涓嶅惎鐢�' : '鍚敤'}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">鐨偆:</div> + <div className="content" style={{color: color}}>{css}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + {binding ? <div className="label"> + <Tooltip placement="topLeft" title="寰俊鍏紬鍙风櫥褰曟椂锛岀郴缁熺敤鎴蜂笌寰俊鐢ㄦ埛鐨勭粦瀹氭柟寮忋��"> + <Icon type="question-circle" /> + 鐢ㄦ埛缁戝畾: + </Tooltip> + </div> : null} + <div className="content">{binding}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">鏍囬:</div> + <div className="content">{item.title || '鏃�'}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">缃戠珯澶村儚:</div> + <div className="content">{item.favicon ? <img style={{width: '18px', height: '18px'}} src={item.favicon} alt="" /> : '鏃�'}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">鐗堟潈:</div> + <div className="content">{item.copyright || '鏃�'}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">LOGO:</div> + <div className="content">{item.logo ? <img style={{height: '18px'}} src={item.logo} alt="" /> : '鏃�'}</div> + </div> + </Col> + </Row> + <div className="action"> + <Paragraph style={{display: 'inline-block', margin: 0}} copyable={{ text: `${base_url}${item.typename === 'pad' ? 'mob' : item.typename}/index.html#/index/${this.state.selectApp.kei_no}/${item.typename !== 'pc' ? item.typename + '/' : ''}${item.lang}` }}></Paragraph> + </div> + </div> + ) + })} + </div> + </div> + </ConfigProvider> + </div> + ) + } +} + +export default AppCheck \ No newline at end of file diff --git a/src/views/appcheck/index.scss b/src/views/appcheck/index.scss new file mode 100644 index 0000000..d6372c4 --- /dev/null +++ b/src/views/appcheck/index.scss @@ -0,0 +1,104 @@ +.mk-app-check { + background: #fff; + min-height: 100vh; + padding: 70px 30px; + + .loading-mask { + position: fixed; + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + z-index: 2; + background: rgba(255, 255, 255, 0.35); + + .ant-spin { + position: absolute; + left: 50%; + top: 50%; + } + } + .view-wrap { + width: 100%; + position: relative; + display: flex; + + .left-view { + flex: 1; + width: 60%; + padding-right: 5px; + .app-table { + padding-top: 30px; + } + } + .right-view { + width: 40%; + padding-left: 20px; + + .app-title { + font-size: 16px; + font-weight: 500; + height: 30px; + line-height: 30px; + border-bottom: 1px solid #d8d8d8; + margin-bottom: 17px; + } + .sub-app { + margin: 10px 10px 25px; + border: 1px solid #e8e8e8; + height: 210px; + border-radius: 4px; + padding-top: 10px; + + .app-item { + height: 30px; + line-height: 30px; + div { + display: inline-block; + white-space: nowrap; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + line-height: 30px; + } + .label { + width: 40%; + text-align: right; + color: rgba(0, 0, 0, 0.65); + .anticon-question-circle { + color: #c49f47; + margin-right: 3px; + } + } + .content { + width: 60%; + padding-left: 10px; + color: rgba(0, 0, 0, 0.85); + } + } + .action { + text-align: right; + padding: 5px 20px; + margin-top: 5px; + border-top: 1px solid #e8e8e8; + + .ant-typography-copy { + color: #26C281; + } + } + } + } + } + .ant-table-wrapper { + .ant-table-body { + border: 1px solid #e8e8e8; + border-bottom: 0; + border-radius: 4px; + } + .ant-table-tbody { + > tr.ant-table-row-selected td { + background: #bae7ff; + } + } + } +} diff --git a/src/views/appmanage/index.jsx b/src/views/appmanage/index.jsx index 983e632..0c1e89a 100644 --- a/src/views/appmanage/index.jsx +++ b/src/views/appmanage/index.jsx @@ -458,6 +458,18 @@ item.sublist = item.data_detail || [] item.sublist = item.sublist.map(cell => { cell.ID = cell.d_id + + if (cell.customize_param) { + let _param = {} + try { + _param = JSON.parse(window.decodeURIComponent(window.atob(cell.customize_param))) + } catch (e) { + _param = {} + } + cell.copyright = _param.copyright || '' + cell.logo = _param.logo || '' + } + return cell }) @@ -471,13 +483,12 @@ if (!selectApp && applist[0]) { selectApp = applist[0] } - + this.setState({ loading: false, applist: applist, selectApp }) - } else { this.setState({ loading: false @@ -578,6 +589,7 @@ exec_type: 'y', remark: selectApp.remark, kei_no: selectApp.kei_no, + cus_param_type: 'A', LText: '' } @@ -588,7 +600,7 @@ 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 = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}'`) + param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || ''})))}'`) param.LText = param.LText.join(' union all ') param.LText = Utils.formatOptions(param.LText) @@ -803,6 +815,7 @@ exec_type: 'y', remark: res.remark, kei_no: res.kei_no, + cus_param_type: 'A', LText: '' } @@ -811,7 +824,7 @@ 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'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}'`) - param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}'`) + param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || ''})))}'`) param.LText = param.LText.join(' union all ') param.LText = Utils.formatOptions(param.LText) } @@ -872,6 +885,7 @@ exec_type: 'y', remark: selectApp.remark, kei_no: selectApp.kei_no, + cus_param_type: 'A', LText: '' } @@ -896,7 +910,7 @@ } // 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'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}'`) - param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}'`) + param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || ''})))}'`) param.LText = param.LText.join(' union all ') param.LText = Utils.formatOptions(param.LText) @@ -1045,8 +1059,8 @@ </Col> <Col span={12}> <div className="app-item"> - {/* <div className="label">鐧诲綍:</div> - <div className="content">{item.login_types === 'false' ? '涓嶉渶瑕�' : '闇�瑕�'}</div> */} + {/* <div className="label">鐨偆:</div> + <div className="content" style={{color: color}}>{css}</div> */} </div> </Col> <Col span={12}> @@ -1074,10 +1088,22 @@ </Col> <Col span={12}> <div className="app-item"> - <div className="label">缃戠珯鍥炬爣:</div> + <div className="label">缃戠珯澶村儚:</div> <div className="content">{item.favicon ? <img style={{width: '18px', height: '18px'}} src={item.favicon} alt="" /> : '鏃�'}</div> </div> </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">鐗堟潈:</div> + <div className="content">{item.copyright || '鏃�'}</div> + </div> + </Col> + <Col span={12}> + <div className="app-item"> + <div className="label">LOGO:</div> + <div className="content">{item.logo ? <img style={{height: '18px'}} src={item.logo} alt="" /> : '鏃�'}</div> + </div> + </Col> </Row> <div className="action"> <Button type="link" onClick={() => this.jumpMenu(item)} style={{color: 'rgba(30, 228, 224, 1)'}}>鑿滃崟&鏉冮檺</Button> diff --git a/src/views/appmanage/index.scss b/src/views/appmanage/index.scss index 5f9cb3b..e9858f7 100644 --- a/src/views/appmanage/index.scss +++ b/src/views/appmanage/index.scss @@ -58,7 +58,7 @@ .sub-app { margin: 10px 10px 25px; border: 1px solid #e8e8e8; - height: 180px; + height: 210px; border-radius: 4px; padding-top: 10px; diff --git a/src/views/appmanage/submutilform/index.jsx b/src/views/appmanage/submutilform/index.jsx index 3d1a936..dd46068 100644 --- a/src/views/appmanage/submutilform/index.jsx +++ b/src/views/appmanage/submutilform/index.jsx @@ -194,7 +194,7 @@ </Form.Item> </Col> <Col span={12}> - <Form.Item label="鍥炬爣"> + <Form.Item label="缃戠珯澶村儚"> {getFieldDecorator('favicon', { initialValue: card ? card.favicon : '' })( @@ -202,6 +202,27 @@ )} </Form.Item> </Col> + <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="浣跨敤寰俊鎺堟潈鐧诲綍鏃讹紝缁戝畾鐢ㄦ埛椤甸潰鐨勭増鏉冨0鏄庯紝娉細鍙坊鍔爃tml鏍囩銆�"> + <Icon type="question-circle" /> + 鐗堟潈 + </Tooltip> + }> + {getFieldDecorator('copyright', { + initialValue: card ? card.copyright || '' : '' + })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)} + </Form.Item> + </Col> + <Col span={12}> + <Form.Item label="LOGO"> + {getFieldDecorator('logo', { + initialValue: card ? card.logo : '' + })( + <SourceComponent type="picture" placement="right"/> + )} + </Form.Item> + </Col> </Row> </Form> ) diff --git a/src/views/design/header/index.jsx b/src/views/design/header/index.jsx index 5b14744..becaedf 100644 --- a/src/views/design/header/index.jsx +++ b/src/views/design/header/index.jsx @@ -295,7 +295,7 @@ } render () { - const { mainMenu, editLevel } = this.props + const { mainMenu, editLevel, tabviews } = this.props const { menulist } = this.state return ( @@ -325,16 +325,45 @@ {/* 杩涘叆缂栬緫鎸夐挳 */} {!editLevel ? <Icon onClick={this.enterEdit} className="edit-check" type="edit" /> : null} {!editLevel && options.sysType === 'local' && window.GLOB.systemType !== 'production' && this.props.memberLevel >= 20 ? - <span onClick={() => {window.open('#/appmanage')}} className="mobile" type="edit"> 搴旂敤绠$悊 <Icon type="arrow-right" /></span> : null + <div className="app-entrance entrance"> + <div className="icon"><Icon type="appstore" /></div> + <div className="title">搴旂敤绠$悊</div> + <div className="detail">鍙垱寤哄強绠$悊PC銆乸ad鍙婄Щ鍔ㄧ绛変笉鍚岃澶囩殑搴旂敤锛屽疄鐜版槑绉戜簯APP銆佸井淇″叕浼楀彿銆佸皬绋嬪簭绛夊骞冲彴鐨勫簲鐢ㄥ叡浜��</div> + <Button type="primary" onClick={() => {window.open('#/appmanage')}}> + 缂栬緫 + </Button> + </div> : null + } + {editLevel === 'HS' && tabviews.length === 0 && options.sysType === 'local' && window.GLOB.systemType === 'production' && this.props.memberLevel >= 20 ? + <div className="app-prod-entrance entrance"> + <div className="icon"><Icon type="appstore" /></div> + <div className="title">搴旂敤绠$悊</div> + <div className="detail">鍙垱寤哄強绠$悊PC銆乸ad鍙婄Щ鍔ㄧ绛変笉鍚岃澶囩殑搴旂敤锛屽疄鐜版槑绉戜簯APP銆佸井淇″叕浼楀彿銆佸皬绋嬪簭绛夊骞冲彴鐨勫簲鐢ㄥ叡浜��</div> + <Button type="primary" onClick={() => {window.open('#/appcheck')}}> + 鏌ョ湅 + </Button> + </div> : null } {!editLevel && options.sysType === 'local' && this.props.memberLevel >= 20 ? - <span onClick={() => {window.open('#/interface')}} className="interface" type="edit"> 鎺ュ彛璋冭瘯 <Icon type="arrow-right" /></span> : null + <div className="api-entrance entrance"> + <div className="icon"><Icon type="api" /></div> + <div className="title">鎺ュ彛璋冭瘯</div> + <div className="detail">鍙嚜鍔ㄥ鐞嗙櫥褰曟帴鍙g殑鍙傛暟鍔犲瘑锛屼互鍙婁笟鍔℃帴鍙g殑绛惧悕璁$畻锛屾柟渚垮紑鍙戜汉鍛樼殑鎺ュ彛娴嬭瘯宸ヤ綔銆�</div> + <Button type="primary" onClick={() => {window.open('#/interface')}}> + 缂栬緫 + </Button> + </div> : null } {/* window.btoa(window.encodeURIComponent(JSON.stringify({ MenuType: 'home', MenuId: 'home_page_id', MenuName: '棣栭〉' }))) */} {!editLevel && window.GLOB.systemType !== 'production' && this.props.memberLevel >= 20 ? - <span className="home-edit" onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}> - 棣栭〉 <Icon type="arrow-right" /> - </span> : null + <div className="home-entrance entrance"> + <div className="icon"><Icon type="home" /></div> + <div className="title">棣栭〉</div> + <div className="detail">鍩轰簬鑷畾涔夐〉闈㈢殑棣栭〉璁捐锛屽彲瀹炵幇鐏垫椿鐨勫厓绱犻厤缃強鏍峰紡璋冩暣锛屽睍鐜板綋鍓嶇郴缁熺殑椋庢牸銆�</div> + <Button type="primary" onClick={() => {window.open('#/menudesign/JTdCJTIyTWVudVR5cGUlMjIlM0ElMjJob21lJTIyJTJDJTIyTWVudUlkJTIyJTNBJTIyaG9tZV9wYWdlX2lkJTIyJTJDJTIyTWVudU5hbWUlMjIlM0ElMjIlRTklQTYlOTYlRTklQTElQjUlMjIlN0Q=')}}> + 缂栬緫 + </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 4f796e4..717384c 100644 --- a/src/views/design/header/index.scss +++ b/src/views/design/header/index.scss @@ -137,12 +137,57 @@ color: #1890ff; cursor: pointer; } - .home-edit { + .home-entrance { + left: 300px; + } + .api-entrance { + left: 600px; + } + .app-entrance { + left: 900px; + } + .app-prod-entrance { + left: 300px; + } + .entrance { position: absolute; - top: 100px; - right: 50px; - cursor: pointer; - color: #1890ff; + top: 200px; + background: #ffffff; + box-shadow: 0 0 5px #d9d9d9; + border-radius: 5px; + width: 250px; + height: 250px; + color: rgba(0, 0, 0, 0.85); + text-align: center; + .icon { + text-align: center; + padding: 15px 0px; + .anticon { + background-color: #1890ff; + color: #ffffff; + font-size: 24px; + width: 35px; + height: 35px; + line-height: 38px; + border-radius: 35px; + } + } + .title { + font-size: 16px; + text-align: center; + padding-bottom: 10px; + } + .detail { + font-size: 13px; + color: rgba(0, 0, 0, 0.65); + text-align: center; + padding: 0 10px; + } + .ant-btn { + margin-top: 15px; + height: 28px; + padding: 0 25px; + } } } .sys-header-container.mask::after { diff --git a/src/views/design/index.jsx b/src/views/design/index.jsx index 51fe335..61cabd1 100644 --- a/src/views/design/index.jsx +++ b/src/views/design/index.jsx @@ -20,7 +20,7 @@ render () { return ( - <div className="mk-main-view"> + <div className="mk-main-view mk-design-view"> <ConfigProvider locale={_locale}> <Header key="header"/> <Sidemenu key="sidemenu"/> diff --git a/src/views/design/index.scss b/src/views/design/index.scss index c14dc8e..7e50489 100644 --- a/src/views/design/index.scss +++ b/src/views/design/index.scss @@ -2,4 +2,7 @@ display: flex; flex: auto; min-height: 100%; -} \ No newline at end of file +} +// .mk-design-view { +// background-color: rgb(238, 241, 246); +// } \ No newline at end of file -- Gitblit v1.8.0