From cd42d41344f0f780e0c0ac0a3625aeb78160f9dd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 19 六月 2020 19:58:52 +0800 Subject: [PATCH] 2020-06-19 --- src/views/mobdesign/index.jsx | 141 +++++++++++++++++++++++++++++++++++++--------- 1 files changed, 112 insertions(+), 29 deletions(-) diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index c90ada7..b98baf9 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/index.jsx @@ -1,27 +1,38 @@ -import React, {Component} from 'react' -import {connect} from 'react-redux' -import { Icon } from 'antd' +import React, { Component } from 'react' +import { connect } from 'react-redux' +import { DndProvider } from 'react-dnd' +import { fromJS } from 'immutable' +import HTML5Backend from 'react-dnd-html5-backend' +import { SketchPicker } from 'react-color' +import { Icon, Tabs, notification } from 'antd' -import zhCN from '@/locales/zh-CN/login.js' -import enUS from '@/locales/en-US/login.js' +import Api from '@/api' +import zhCN from '@/locales/zh-CN/mob.js' +import enUS from '@/locales/en-US/mob.js' import asyncComponent from '@/utils/asyncComponent' import './index.scss' +const { TabPane } = Tabs + const Header = asyncComponent(() => import('@/mob/header')) -const Home = asyncComponent(() => import('@/mob/home')) -const Login = asyncComponent(() => import('@/mob/login')) +const MobShell = asyncComponent(() => import('@/mob/mobshell')) +const SourceWrap = asyncComponent(() => import('@/mob/modelsource')) +const DataSource = asyncComponent(() => import('@/mob/datasource')) class Mobile extends Component { state = { dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, - view: null + appId: this.props.match.params.appId, + appType: this.props.match.params.appType, + appConfig: null, + saveIng: false, + config: null, + pageIndex: 0 } UNSAFE_componentWillMount() { - this.setState({ - view: {uuid: 'login', type: 'home', parentId: null, parentType: null} - }) + this.getAppParam(this.props.match.params.appId) } /** @@ -33,31 +44,103 @@ } } + jumpToManage = () => { + this.props.history.replace('/mobmanage') + // this.props.history.push('/mobdesign/sdafadjfidsf/dsfsdf') + } + + triggerSave = () => { + this.setState({ + saveIng: true + }) + } + + getAppParam = (id) => { + Api.getSystemConfig({ + func: 'sPC_Get_LongParam', + MenuID: id + }).then(result => { + if (result.status) { + let appConfig = null + + if (result.LongParam) { + try { + appConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) + } catch (e) { + console.warn('Parse Failure') + appConfig = null + } + } + + if (!appConfig) { + appConfig = { + version: 1.0, + label: '', + uuid: this.props.match.params.appId, + pageIndex: 0, + sourcelist: [], + components: [] + } + } + + this.setState({ + appConfig: appConfig, + config: fromJS(appConfig).toJS() + }) + } else { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } + }) + } + + + + updateConfig = (config) => { + this.setState({ + config: config + }) + } + render () { - const { view } = this.state + const { saveIng, appType, config } = this.state return ( <div className="mobile-view"> - <Header /> - <div className="mob-body"> - <div className="mob-tool"> - <div className="mob-tool-content"> - <div className="plus-content"> - <Icon type="plus-circle" />娣� 鍔� 鍐� 瀹� + <Header view="design" jumpToManage={this.jumpToManage} triggerSave={this.triggerSave} saveIng={saveIng} /> + <DndProvider backend={HTML5Backend}> + <div className="mob-body"> + <div className="mob-tool"> + <div className="mob-tool-content"> + <div className="plus-content"> + <Icon type="plus-circle" />娣� 鍔� 鍐� 瀹� + </div> + <div className="useable-component"> + <SourceWrap appType={appType} /> + </div> </div> - <div className="useable-component"></div> + <div className="mob-tool-other"></div> </div> - <div className="mob-tool-other"></div> + {appType === 'mob' && config ? + <div className="mob-shell"> + <MobShell config={config} handleList={this.updateConfig} /> + </div> : null + } + <div className="mob-setting"> + {config ? <Tabs defaultActiveKey="2" animated={false} size="small"> + <TabPane tab="閰嶇疆" key="1"> + <SketchPicker /> + </TabPane> + <TabPane tab="鏁版嵁婧�" key="2"> + <DataSource config={config} updateConfig={this.updateConfig} /> + </TabPane> + </Tabs> : null} + </div> </div> - <div className="mob-shell"> - {view ? <div className="mob-shell-inner"> - {view.type === 'login' ? <Login /> : null} - {view.type === 'home' ? <Home /> : null} - </div> : null} - </div> - <div className="mob-setting"> - </div> - </div> + </DndProvider> </div> ) } -- Gitblit v1.8.0