From 08929dbc66fb157307921026974c459f762209e2 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 25 二月 2021 15:31:24 +0800
Subject: [PATCH] 2021-02-25

---
 public/options.json                        |    4 +
 src/index.js                               |    9 +-
 public/admin.html                          |   38 ++++++++++++
 src/views/design/header/index.jsx          |    4 -
 src/api/index.js                           |   10 ++
 src/views/appmanage/index.jsx              |   14 +++-
 src/views/design/sidemenu/index.jsx        |    3 -
 src/components/header/index.jsx            |    3 -
 src/views/pcdesign/index.jsx               |    2 
 package.json                               |    2 
 src/views/appmanage/submutilform/index.jsx |   52 ++++++++++++++--
 src/views/menudesign/menuform/index.jsx    |    3 -
 12 files changed, 112 insertions(+), 32 deletions(-)

diff --git a/package.json b/package.json
index ad7bc05..dc3fd68 100644
--- a/package.json
+++ b/package.json
@@ -188,7 +188,7 @@
       ]
     ]
   },
-  "homepage": "./build",
+  "homepage": ".",
   "devDependencies": {
     "typescript": "^4.0.2"
   }
diff --git a/public/admin.html b/public/admin.html
new file mode 100644
index 0000000..1c43083
--- /dev/null
+++ b/public/admin.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <title></title>
+  </head>
+  <body>
+    <script>
+      if ('ActiveXObject' in window) {
+        window.onload = function() {
+          document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">鎮ㄧ殑娴忚鍣�<span style="color: #ff4d4f">涓嶅彈鏀寔</span></div>'
+        }
+      } else {
+        fetch(`./options.json`)
+          .then(function(response) {return response.json()})
+          .catch(function() {
+            document.body.innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">绯荤粺閰嶇疆淇℃伅鑾峰彇澶辫触锛岃鑱旂郴绠$悊鍛橈紒</div>'
+          })
+          .then(function(config) {
+            if (!config) {
+              document.body.innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">绯荤粺閰嶇疆淇℃伅鑾峰彇澶辫触锛岃鑱旂郴绠$悊鍛橈紒</div>'
+            } else {
+              var url = window.location.href.split(/(index.html)+/ig)[0]
+              var appPort = 'admin/index.html'
+              if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
+                appPort = 'mob/index.html'
+              } else {
+                if (config.defaultApp) {
+                  appPort = 'pc/'
+                }
+              }
+              window.location.replace(url + appPort)
+            }
+          })
+      }
+    </script>
+  </body>
+</html>
diff --git a/public/options.json b/public/options.json
index 5b90290..f46bf79 100644
--- a/public/options.json
+++ b/public/options.json
@@ -5,5 +5,7 @@
   "systemType": "",
   "externalDatabase": "false",
   "lineColor": "",
-  "filter": "false"
+  "filter": "false",
+  "defaultApp": "",
+  "defaultLang": "zh-CN"
 }
\ No newline at end of file
diff --git a/src/api/index.js b/src/api/index.js
index 105519c..f84456f 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -197,7 +197,10 @@
       if (options.cloudServiceApi) {
         param.rduri = options.cloudServiceApi.replace(/\/webapi(.*)/, '/webapi/dologon')
       }
-    } else if (!isCloud && window.GLOB.mainSystemApi) {
+    } else if (window.GLOB.mainSystemApi) {
+      if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
+        param.linkurl = window.GLOB.linkurl
+      }
       param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon')
     }
 
@@ -228,7 +231,10 @@
       if (options.cloudServiceApi) {
         param.rduri = options.cloudServiceApi.replace(/\/webapi(.*)/, '/webapi/dologon')
       }
-    } else if (!isCloud && window.GLOB.mainSystemApi) {
+    } else if (window.GLOB.mainSystemApi) {
+      if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
+        param.linkurl = window.GLOB.linkurl
+      }
       param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon')
     }
 
diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index b32e66b..3e80dad 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -168,9 +168,6 @@
     // 鑾峰彇涓昏彍鍗曞弬鏁�
     let menudefer = new Promise(resolve => {
       let _param = {func: 's_get_pc_menus', systemType: options.sysType}
-      if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
-        _param.linkurl = window.GLOB.linkurl
-      }
       _param.pro_sys = window.GLOB.systemType === 'production' ? 'Y' : ''
       
       Api.getSystemConfig(_param).then(result => {
diff --git a/src/index.js b/src/index.js
index 9ae583b..388d2c3 100644
--- a/src/index.js
+++ b/src/index.js
@@ -45,7 +45,6 @@
   )
 }
 
-
 if (sessionStorage.getItem('loginError')) {
   try {
     let res = JSON.parse(sessionStorage.getItem('loginError'))
@@ -58,10 +57,12 @@
 sessionStorage.setItem('role_id', sessionStorage.getItem('localRole_id') || '')
 sessionStorage.setItem('dataM', sessionStorage.getItem('localDataM') || '')
 
-fetch(`./options.json`)
+// 娴嬭瘯绯荤粺鏂囦欢缃簬admin涓�
+
+fetch(process.env.NODE_ENV === 'production' && options.sysType === 'local' ? '../options.json' : './options.json')
   .then(response => response.json())
   .catch(() => {
-    console.warn('绯荤粺閰嶇疆淇℃伅鑾峰彇澶辫触锛岃鑱旂郴绠$悊鍛橈紒')
+    document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">绯荤粺閰嶇疆淇℃伅鑾峰彇澶辫触锛岃鑱旂郴绠$悊鍛橈紒</div>'
   })
   .then(config => {
     if (!config) return
@@ -186,7 +187,7 @@
     }
 
     if (process.env.NODE_ENV === 'production') { // 鐢ㄤ簬鏍¢獙鏄惁瀛樺湪寮�鍙戞潈闄�
-      let _service = window.location.href.replace(/\/index.html(.*)|\/#(.*)/ig, '').replace(new RegExp(document.location.origin + '/?', 'ig'), '')
+      let _service = window.location.href.replace(/(\/admin)?\/index.html(.*)|(\/admin)?\/#(.*)/ig, '').replace(new RegExp(document.location.origin + '/?', 'ig'), '')
       GLOB.linkurl = _href
       if (!/index.html/ig.test(GLOB.linkurl)) {
         GLOB.linkurl = GLOB.linkurl + 'index.html'
diff --git a/src/views/appmanage/index.jsx b/src/views/appmanage/index.jsx
index 253a171..983caff 100644
--- a/src/views/appmanage/index.jsx
+++ b/src/views/appmanage/index.jsx
@@ -90,9 +90,17 @@
         }
       },
       {
+        title: '鏍囬', dataIndex: 'title', key: 'title', align: 'center', width: '150px'
+      },
+      {
+        title: '鍥炬爣', dataIndex: 'favicon', key: 'favicon', align: 'center', width: '150px',
+        render: (text, record) => (text ? <img style={{width: '32px', height: '32px'}} src={text} alt="" /> : null)
+      },
+      {
         title: 'Action',
         key: 'action',
         align: 'center',
+        width: '120px',
         render: (text, record) => (
           <div>
             <Button type="link" onClick={() => this.deleteSubApp(record)} style={{color: '#ff4d4f'}}>鍒犻櫎</Button>
@@ -376,7 +384,7 @@
       param.secretkey = Utils.encrypt('', param.timestamp)
 
       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}'`)
+        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 = param.LText.join(' union all ')
         param.LText = Utils.formatOptions(param.LText)
       }
@@ -462,7 +470,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}'`)
+      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 = param.LText.join(' union all ')
       param.LText = Utils.formatOptions(param.LText)
 
@@ -558,7 +566,7 @@
           </Modal>
           <Modal
             title={'缂栬緫瀛愬簲鐢�'}
-            width={'600px'}
+            width={'750px'}
             maskClosable={false}
             visible={!!subVisible}
             onCancel={() => this.setState({subVisible: false})}
diff --git a/src/views/appmanage/submutilform/index.jsx b/src/views/appmanage/submutilform/index.jsx
index 8a89cb3..712464f 100644
--- a/src/views/appmanage/submutilform/index.jsx
+++ b/src/views/appmanage/submutilform/index.jsx
@@ -1,7 +1,11 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Radio } from 'antd'
+import { Form, Row, Col, Select, Radio, Input } from 'antd'
+
+import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
+
+const FileUpload = asyncComponent(() => import('@/tabviews/zshare/fileupload'))
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -19,6 +23,11 @@
     return new Promise(resolve => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
+          if (values.favicon && values.favicon.length > 0 && values.favicon[0].status === 'done') {
+            values.favicon = values.favicon[0].response || values.favicon[0].url || ''
+          } else {
+            values.favicon = ''
+          }
           resolve(values)
         }
       })
@@ -43,13 +52,26 @@
       },
       wrapperCol: {
         xs: { span: 24 },
-        sm: { span: 12 }
+        sm: { span: 16 }
       }
     }
+
+    let filelist = []
+
+    if (type === 'edit' && card && card.favicon) {
+      filelist = [{
+        uid: `favicon`,
+        name: card.favicon.slice(card.favicon.lastIndexOf('/') + 1),
+        status: 'done',
+        url: card.favicon,
+        origin: true
+      }]
+    }
+
     return (
       <Form {...formItemLayout} className="mob-card-edit-form">
         <Row gutter={24}>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item label="搴旂敤绫诲瀷">
               {getFieldDecorator('typename', {
                 initialValue: card ? card.typename : 'mob'
@@ -61,7 +83,7 @@
               )}
             </Form.Item>
           </Col>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item label="璇█">
               {getFieldDecorator('lang', {
                 initialValue: card ? card.lang || 'zh-CN' : 'zh-CN'
@@ -73,7 +95,7 @@
               )}
             </Form.Item>
           </Col>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item label="鐧诲綍">
               {getFieldDecorator('login_types', {
                 initialValue: card ? card.login_types || 'true' : 'true'
@@ -85,7 +107,7 @@
               )}
             </Form.Item>
           </Col>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item label="鏉冮檺绠$悊">
               {getFieldDecorator('role_type', {
                 initialValue: card ? card.role_type || 'true' : 'true'
@@ -97,7 +119,7 @@
               )}
             </Form.Item>
           </Col>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item label="鐭繛鎺�">
               {getFieldDecorator('link_type', {
                 initialValue: card ? card.link_type || 'true' : 'true'
@@ -109,7 +131,7 @@
               )}
             </Form.Item>
           </Col>
-          <Col span={24}>
+          <Col span={12}>
             <Form.Item label="鐨偆">
               {getFieldDecorator('css', {
                 initialValue: card ? card.css : 'bg_black_style_blue'
@@ -147,6 +169,20 @@
               )}
             </Form.Item>
           </Col>
+          <Col span={12}>
+            <Form.Item label="鏍囬">
+              {getFieldDecorator('title', {
+                initialValue: card ? card.title || '' : ''
+              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
+            </Form.Item>
+          </Col>
+          <Col span={12}>
+            <Form.Item label="鍥炬爣">
+              {getFieldDecorator('favicon', {
+                initialValue: filelist
+              })(<FileUpload accept=".jpg,.png,.gif,.pjp,.pjpeg,.jpeg,.jfif,.webp,.ico" maxFile={1} fileType={'text'} />)}
+            </Form.Item>
+          </Col>
         </Row>
       </Form>
     )
diff --git a/src/views/design/header/index.jsx b/src/views/design/header/index.jsx
index b42ee09..9b78dc7 100644
--- a/src/views/design/header/index.jsx
+++ b/src/views/design/header/index.jsx
@@ -63,10 +63,6 @@
   async loadmenu () {
     // 鑾峰彇涓昏彍鍗�
     let _param = {func: 's_get_pc_menus', systemType: options.sysType, debug: 'Y'}
-
-    if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
-      _param.linkurl = window.GLOB.linkurl
-    }
     _param.pro_sys = window.GLOB.systemType === 'production' ? 'Y' : ''
 
     let result = await Api.getSystemConfig(_param)
diff --git a/src/views/design/sidemenu/index.jsx b/src/views/design/sidemenu/index.jsx
index 1d45f3f..98a3069 100644
--- a/src/views/design/sidemenu/index.jsx
+++ b/src/views/design/sidemenu/index.jsx
@@ -139,9 +139,6 @@
   reload = () => {
     const { mainMenu } = this.props
     let _param = {func: 's_get_pc_menus', systemType: options.sysType, debug: 'Y'}
-    if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
-      _param.linkurl = window.GLOB.linkurl
-    }
     _param.pro_sys = window.GLOB.systemType === 'production' ? 'Y' : ''
 
     Api.getSystemConfig(_param).then(result => {
diff --git a/src/views/menudesign/menuform/index.jsx b/src/views/menudesign/menuform/index.jsx
index 926ed80..3880794 100644
--- a/src/views/menudesign/menuform/index.jsx
+++ b/src/views/menudesign/menuform/index.jsx
@@ -26,9 +26,6 @@
   UNSAFE_componentWillMount () {
     const { MenuId, config } = this.props
     let _param = {func: 's_get_pc_menus', systemType: options.sysType, debug: 'Y'}
-    if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
-      _param.linkurl = window.GLOB.linkurl
-    }
     _param.pro_sys = window.GLOB.systemType === 'production' ? 'Y' : ''
 
     Api.getSystemConfig(_param).then(result => {
diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx
index 0f101ac..885bd8e 100644
--- a/src/views/pcdesign/index.jsx
+++ b/src/views/pcdesign/index.jsx
@@ -547,6 +547,8 @@
         MenuNo: _config.MenuNo || '',
         EasyCode: _config.easyCode || '',
         Template: 'webPage',
+        TypeCharOne: sessionStorage.getItem('kei_no'),
+        Typename: 'pc',
         MenuName: _config.MenuName || '',
         PageParam: JSON.stringify({Template: 'webPage'}),
         LongParam: window.btoa(window.encodeURIComponent(JSON.stringify(_config))),

--
Gitblit v1.8.0