Переглянути джерело

feat:修改新闻资讯的修改方式

xzh 4 роки тому
батько
коміт
bd3c092823

Різницю між файлами не показано, бо вона завелика
+ 65 - 0
common/data/news-en.json


+ 9 - 9
common/data/news.js

@@ -1,20 +1,20 @@
 [
     {
-        "img": "/v2/images/_/common/data/images/3-1.png",
-        "time": "2017-06-02",
-        "title": "两国总理见证中德智能新合作,欧时专访四维时代董事长崔岩",
-        "text": "【欧洲时报记者张乔楠柏林报道】6月1日上午,在中德两国总理的见证下,双方签署多项合作备忘录。签约现场,一家年轻的企业引起了记者注意,其所涉及的人工智能合作也是两国创新合作最火热的议题之一。签约仪式后,本报记者对这家企业进行了专访。",
-        "sub": "欧洲时报",
-        "link": "http://www.oushinet.com/ouzhong/ouzhongnews/20170602/263859.html",
-        "sort": "1"
-    },
-    {
         "img": "/v2/images/_/common/data/images/3-2.png",
         "time": "2020-07-08",
         "title": "「四维时代」发布新品3D相机四维看看Pro,售价不到一万元的VR信息采集设备",
         "text": "2020年上半年的疫情防疫措施,使国内房地产企业纷纷通过VR看房形式进行带看。四维时代近期发布了3D空间相机四维看看Pro,为相关领域提供稳定、精确且低成本的数字化解决方案,并在行业内首次实现低成本、快速复制和规模化。该产品售价9800元,可以帮助使用者通过简单操作录入大量VR信息。",
         "sub": "36Kr",
         "link": "https://36kr.com/p/782262201344647?from=groupmessage&isappinstalled=0",
+        "sort": "1"
+    },
+    {
+        "img": "/v2/images/_/common/data/images/3-1.png",
+        "time": "2017-06-02",
+        "title": "两国总理见证中德智能新合作,欧时专访四维时代董事长崔岩",
+        "text": "【欧洲时报记者张乔楠柏林报道】6月1日上午,在中德两国总理的见证下,双方签署多项合作备忘录。签约现场,一家年轻的企业引起了记者注意,其所涉及的人工智能合作也是两国创新合作最火热的议题之一。签约仪式后,本报记者对这家企业进行了专访。",
+        "sub": "欧洲时报",
+        "link": "http://www.oushinet.com/ouzhong/ouzhongnews/20170602/263859.html",
         "sort": "2"
     },
     {

Різницю між файлами не показано, бо вона завелика
+ 173 - 0
common/data/news.json


+ 2 - 2
mobile/src/pages/account/forget/components/emailForget.vue

@@ -154,8 +154,8 @@ export default {
       }
       let checkStr = [
         {
-          name: '手机号码',
-          En: 'Phone number',
+          name: '邮箱',
+          En: 'E-Mail',
           val: this.phone
         },
         {

+ 1 - 1
mobile/src/pages/account/mailRegister/index.vue

@@ -87,7 +87,7 @@ export default {
     },
     async getAuthCode () {
       if (!reg.email.test(this.phone)) {
-        this.$alert(this.$t('login.currentEmailTip'))
+        this.$toast.show('warn', this.$t('login.currentEmailTip'))
         return
       }
 

+ 13 - 3
mobile/src/pages/home/components/plate5.vue

@@ -28,12 +28,13 @@
 </template>
 
 <script>
-import { News, EnNews } from '@/../../common/data/newsData'
+// import { News, EnNews } from '@/../../common/data/newsData'
 import { mapState } from 'vuex'
+import http from '@/util/http'
 export default {
   data () {
     return {
-      newsData: News.slice(0, 4),
+      newsData: [],
       swiperOption: {
         slidesPerView: 'auto',
         autoplay: false,
@@ -47,11 +48,20 @@ export default {
     })
   },
   mounted () {
-    this.newsData = this.language === 'zh' ? News.slice(0, 4) : EnNews.slice(0, 4)
+    this.loadNews()
   },
   methods: {
     toLink ({link}) {
       window.open(link)
+    },
+    loadNews () {
+      let urlMap = {
+        zh: 'https://4dscene.4dage.com/new4dkk/news/news.json',
+        en: 'https://4dscene.4dage.com/new4dkk/news/news-en.json'
+      }
+      http.get(`${urlMap[this.language]}?t=${new Date()}`).then(res => {
+        this.newsData = res.data.slice(0, 4)
+      })
     }
   }
 }

+ 10 - 0
mobile/src/pages/news/index.vue

@@ -31,6 +31,7 @@
 <script>
 import { News, EnNews } from '@/../../common/data/newsData'
 import { mapState } from 'vuex'
+import http from '@/util/http'
 export default {
   data () {
     return {
@@ -86,6 +87,15 @@ export default {
     },
     handleClickSlide (item) {
       window.open(item.link)
+    },
+    loadNews () {
+      let urlMap = {
+        zh: 'https://4dscene.4dage.com/new4dkk/news/news.json',
+        en: 'https://4dscene.4dage.com/new4dkk/news/news-en.json'
+      }
+      http.get(`${urlMap[this.language]}?t=${new Date()}`).then(res => {
+        this.plate05List = res.data.slice(0, 4)
+      })
     }
   }
 }

+ 6 - 1
pc/build/webpack.dev.conf.js

@@ -50,10 +50,15 @@ const devWebpackConfig = merge(baseWebpackConfig, {
         target: 'https://test.4dkankan.com',
         changeOrigin: true,
       },
+      '/www': {
+        target: 'https://test.4dkankan.com',
+        changeOrigin: true,
+      },
       '/node-upload': {
         target: 'http://vrhouse2.4dkankan.com',
         changeOrigin: true,
-      }
+      },
+      
     },
     setup: wepackDevServer
   },

+ 51 - 2
pc/build/wepack.dev.server.js

@@ -2,6 +2,32 @@ const fs = require('fs')
 const path = require('path')
 const bodyParser = require('body-parser');
 const langDir = path.join(__dirname, '../src/lang')
+const oss = require('ali-oss');
+const OSSCONFIG =  {
+  region: 'oss-cn-shenzhen',
+  //云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,部署在服务端使用RAM子账号或STS,部署在客户端使用STS。
+  accessKeyId: 'LTAI4G6f1efh9idnE8DfA71X',
+  accessKeySecret: 'UQBHqXh4saRBXZeOYAIhJhnuzIcyhR',
+  bucket: '4dscene'
+}
+const store = oss(OSSCONFIG)
+var FtpDeploy = require("ftp-deploy");
+var ftpDeploy = new FtpDeploy();
+var config = {
+    user: "xuzhihao",
+    // Password optional, prompted if none given
+    password: "xuzhihao123",
+    host: "192.168.0.115",
+    port: 2222,
+    localRoot: './../common/data/',
+    remoteRoot: "/测试服务器-120.25.146.52/root/user/java/apache-tomcat-8.0.47/webapps/4dkankan_v2/WEB-INF/classes/web/www/newsList",
+    include: ["news.json", 'news-en.json'],
+    exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"],
+    deleteRemote: false,
+    forcePasv: true,
+    sftp: true
+};
+
 module.exports = function(app, server) {
     app.use('/dev', bodyParser.json());
     app.use('/dev', bodyParser.urlencoded({ extended: false }));
@@ -27,8 +53,31 @@ module.exports = function(app, server) {
 
     app.post('/dev/news/update', async function(req, res) {
       const data = req.body.data
-      await fs.writeFile('./../common/data/news.js', `${JSON.stringify(data, null, 4)}`, err => {
-        res.json({ ok: true });
+      const localUrl = {
+        zh: './../common/data/news.json',
+        en: './../common/data/news-en.json'
+      }
+      const ossPathMap = {
+        zh: 'new4dkk/news/news.json',
+        en: 'new4dkk/news/news-en.json'
+      }
+      
+      await fs.writeFile(localUrl[req.body.lang], `${JSON.stringify(data, null, 4)}`, async err => {
+        const oss_path = ossPathMap[req.body.lang]
+        const OUTPUT = localUrl[req.body.lang]
+        ftpDeploy
+        .deploy(config)
+        .then(() => {
+          res.json({ ok: true });
+        })
+        .catch(err => console.log(err));
+        // try {
+        //   await store.put(oss_path, OUTPUT)
+        //   console.log('success')
+        // } catch (err) {
+        //   console.log(err)
+        // }
+        
       })
     })
 }

+ 1 - 0
pc/package.json

@@ -32,6 +32,7 @@
     "swiper": "5.3.6"
   },
   "devDependencies": {
+    "ali-oss": "^6.12.0",
     "autoprefixer": "^7.1.2",
     "babel-core": "^6.22.1",
     "babel-eslint": "^8.2.1",

+ 24 - 8
pc/src/components/dev/components/News.vue

@@ -9,23 +9,24 @@
     <layout>
         <template slot="header">
             <span>
-                <!-- 语言选择:
-                <select v-model="curr" @change="load()">
+                语言选择:
+                <select v-model="curr" @change="loadNews()">
                     <option
                         v-for="(item,key) in langs"
                         :key="key"
                         :value="item.name"
                     >{{item.text}}</option>
-                </select> -->
+                </select>
             </span>
+            <button @click="onCreate">添加新闻</button>
             <button @click="onSave">保存</button>
         </template>
         <template slot="content">
             <ul class="menus">
                 <li v-for="(item,key) in News" :key="key">
-                  <h1>第{{key + 1}}篇</h1>
+                  <h1>新闻</h1>
                     <input type="file" @change="handleImgChange(key, $event)" />
-                    <img :src="item.img" />
+                    <img :src="item.img" width="304" height="200" />
                     <div>
                       <p>排序</p>
                       <input v-model="item.sort" type="number" />
@@ -59,7 +60,7 @@
 import http from "@/util/http";
 import Layout from "./Layout";
 import { deepExtend } from '@/util/tools'
-import { News } from '@/../../common/data/newsData'
+// import { EnNews } from '@/../../common/data/newsData'
 export default {
     components: {
         Layout
@@ -68,7 +69,7 @@ export default {
         return {
             lang: null,
             curr: "zh",
-            News
+            News: []
         };
     },
     computed: {
@@ -80,6 +81,7 @@ export default {
         }
     },
     created() {
+        this.loadNews()
     },
     methods: {
         isChildren(key, value) {
@@ -97,8 +99,19 @@ export default {
                 }
             }
         },
+        loadNews () {
+            let urlMap = {
+                zh: 'https://4dscene.4dage.com/new4dkk/news/news.json',
+                en: 'https://4dscene.4dage.com/new4dkk/news/news-en.json'
+            }
+            http.get(urlMap[this.curr]).then(res => {
+                this.News = res.data || []
+            })
+        },
         onSave() {
-            http.post(`../dev/news/update`, { data: this.News, lang: 'zh'})
+            this.News.sort((a, b) => a.sort - b.sort)
+            
+            http.post(`../dev/news/update`, { data: this.News.filter(item => item.title), lang: this.curr})
             .then(response => {
                 if (response.data.ok) {
                     this.$alert('保存成功', {
@@ -125,6 +138,9 @@ export default {
                 console.error(err)
                 this.$alert('图片上传失败')
             });
+        },
+        onCreate () {
+            this.News.unshift({})
         }
     }
 };

+ 11 - 1
pc/src/page/home2/index.vue

@@ -102,6 +102,7 @@ import number from '@/components/number'
 import sequence from '@/components/sequence'
 import {mapState} from 'vuex'
 import { News, EnNews } from '@/../../common/data/newsData'
+import http from "@/util/http"
 export default {
   data () {
     return {
@@ -228,6 +229,15 @@ export default {
           id: item.value
         }
       })
+    },
+    loadNews () {
+      let urlMap = {
+        zh: '../www/newsList/news.json',
+        en: '../www/newsList/news-en.json'
+      }
+      http.get(`${urlMap[this.language]}`).then(res => {
+        this.plate05List = res.data.slice(0,4)
+      })
     }
   },
   computed: {
@@ -241,7 +251,7 @@ export default {
     }
   },
   mounted () {
-    this.plate05List = this.language === 'zh' ? News.slice(0, 4) : EnNews.slice(0, 4)
+    this.loadNews()
     let open = this.$route.query.open
     setTimeout(() => {
       if (open && !this.token) {

+ 1 - 1
pc/src/page/login/components/forget/emailForm.vue

@@ -139,7 +139,7 @@ export default {
       let checkStr = [
         {
           name: this.type === 'email' ? '邮箱' : '手机',
-          En: 'Phone number',
+          En: this.type === 'email' ? 'E-Mail' : 'Phone number',
           val: this.form.phone
         },
         {

+ 2 - 2
pc/src/page/login/components/login.vue

@@ -84,8 +84,8 @@ export default {
         }
         let checkStr = [
           {
-            name: '手机',
-            En: 'Phone number',
+            name: this.isInternational ? '邮箱' : '手机',
+            En: this.isInternational ? 'E-Mail' :'Phone number',
             val: this.form.phone
           },
           {

+ 11 - 2
pc/src/page/news/index.vue

@@ -40,8 +40,8 @@
 import 'swiper/css/swiper.css'
 
 import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
-import { News, EnNews } from '@/../../common/data/newsData'
 import { mapState } from 'vuex'
+import http from "@/util/http";
 export default {
   data () {
     return {
@@ -92,7 +92,7 @@ export default {
     SwiperSlide
   },
   mounted () {
-    this.newsData = this.language === 'zh' ? News : EnNews
+    this.loadNews()
   },
   methods: {
     slide(num) {
@@ -105,6 +105,15 @@ export default {
     },
     handleClickSlide (index) {
       window.open(this.banners[index].link)
+    },
+    loadNews () {
+      let urlMap = {
+        zh: '../www/newsList/news.json',
+        en: '../www/newsList/news-en.json'
+      }
+      http.get(`${urlMap[this.language]}`).then(res => {
+        this.newsData = res.data
+      })
     }
   }
 }