Преглед на файлове

Merge branch 'refactor-rebase' into master

xzh преди 4 години
родител
ревизия
ec681fb6fd
променени са 100 файла, в които са добавени 586 реда и са изтрити 182 реда
  1. BIN
      common/data/images/1-en.png
  2. BIN
      common/data/images/2-en.png
  3. BIN
      common/data/images/3-en.jpg
  4. BIN
      common/data/images/4-en.png
  5. BIN
      common/data/images/5-en.jpg
  6. BIN
      common/data/images/6-en.jpg
  7. BIN
      common/data/images/7-en.jpg
  8. 59 0
      common/data/newsData.js
  9. 3 2
      mobile/build/webpack.base.conf.js
  10. 2 2
      mobile/config/index.js
  11. BIN
      mobile/src/assets/images/refactor/conduct/house/item-3_1-en.png
  12. BIN
      mobile/src/assets/images/refactor/conduct/house/item-3_1.png
  13. BIN
      mobile/src/assets/images/refactor/conduct/house/item-3_2-en.png
  14. BIN
      mobile/src/assets/images/refactor/conduct/house/item-3_2.png
  15. BIN
      mobile/src/assets/images/refactor/conduct/house/item3-en.png
  16. BIN
      mobile/src/assets/images/refactor/conduct/house/item4-en.png
  17. BIN
      mobile/src/assets/images/refactor/conduct/shop/item2-en.png
  18. BIN
      mobile/src/assets/images/refactor/home/4case_03@2x.jpg
  19. BIN
      mobile/src/assets/images/refactor/home/4case_04@2x.jpg
  20. 1 0
      mobile/src/components/browse/index.vue
  21. 5 2
      mobile/src/components/cinvoices/index.vue
  22. 3 4
      mobile/src/components/citySelect/newModule.vue
  23. 3 0
      mobile/src/components/invoices/index.vue
  24. 12 4
      mobile/src/components/payType/index.vue
  25. 2 2
      mobile/src/lang/en/modules/agent.js
  26. 10 7
      mobile/src/lang/en/modules/conduct.js
  27. 1 1
      mobile/src/lang/en/modules/home.js
  28. 1 1
      mobile/src/lang/en/modules/service.js
  29. 11 11
      mobile/src/lang/index.js
  30. 12 9
      mobile/src/lang/zh/modules/conduct.js
  31. 2 2
      mobile/src/lang/zh/modules/home.js
  32. 1 1
      mobile/src/lang/zh/modules/service.js
  33. 56 2
      mobile/src/pages/about/index.vue
  34. 2 0
      mobile/src/pages/account/forget/components/style.scss
  35. 2 0
      mobile/src/pages/account/mailRegister/style.scss
  36. 2 0
      mobile/src/pages/account/register/style.scss
  37. 1 1
      mobile/src/pages/cases/index.vue
  38. 25 1
      mobile/src/pages/conduct/house/index.vue
  39. 1 0
      mobile/src/pages/conduct/secury/index.vue
  40. 13 0
      mobile/src/pages/conduct/shop/index.vue
  41. 22 4
      mobile/src/pages/coreProduct/index.vue
  42. 3 3
      mobile/src/pages/home/components/plate3.vue
  43. 10 1
      mobile/src/pages/home/components/plate5.vue
  44. 5 1
      mobile/src/pages/home/index.vue
  45. 1 1
      mobile/src/pages/layout/footer.vue
  46. 1 0
      mobile/src/pages/layout/style.scss
  47. 21 8
      mobile/src/pages/location/index.vue
  48. 19 6
      mobile/src/pages/news/index.vue
  49. 18 7
      mobile/src/pages/purchase/index.vue
  50. 2 0
      mobile/src/pages/purchase/style.scss
  51. 4 4
      mobile/src/pages/purchasetwo/style.scss
  52. 9 2
      mobile/src/pages/purchasezhijia/index.vue
  53. 13 13
      mobile/src/pages/purchasezhijia/style.scss
  54. 2 1
      mobile/src/pages/service/useimg.vue
  55. 79 3
      mobile/src/pages/userCenter/confirm/index.vue
  56. 2 2
      mobile/src/pages/userCenter/submit/index.vue
  57. 2 2
      mobile/src/store/language/en/agent.js
  58. 2 2
      mobile/src/store/language/home_en.js
  59. 10 1
      mobile/src/store/language/index.js
  60. 0 1
      pc/build/utils.js
  61. 2 2
      pc/build/webpack.base.conf.js
  62. 1 1
      pc/config/index.js
  63. BIN
      pc/src/assets/images/home/1.jpg
  64. BIN
      pc/src/assets/images/home/4case_03.png
  65. BIN
      pc/src/assets/images/home/4case_03@2x.jpg
  66. BIN
      pc/src/assets/images/home/4case_03@2x.png
  67. BIN
      pc/src/assets/images/home/4case_04@2x.jpg
  68. BIN
      pc/src/assets/images/home/solutions-sec.jpg
  69. BIN
      pc/src/assets/images/home/solutions-sec.png
  70. BIN
      pc/src/assets/images/online/house/item-3_1-en.png
  71. BIN
      pc/src/assets/images/online/house/item-3_1.png
  72. BIN
      pc/src/assets/images/online/house/item-3_2-en.png
  73. BIN
      pc/src/assets/images/online/house/item-3_2.png
  74. BIN
      pc/src/assets/images/refactor/conductShop/banner-en.png
  75. BIN
      pc/src/assets/images/refactor/mall/scan-tip-en.png
  76. BIN
      pc/src/assets/images/refactor/news/4-en.png
  77. BIN
      pc/src/assets/images/refactor/news/banner3.jpg
  78. 1 0
      pc/src/assets/style/public.scss
  79. 2 1
      pc/src/components/lselect/index.vue
  80. 11 9
      pc/src/lang/en/modules/conduct.js
  81. 1 1
      pc/src/lang/en/modules/home.js
  82. 1 1
      pc/src/lang/en/modules/service.js
  83. 10 10
      pc/src/lang/index.js
  84. 12 10
      pc/src/lang/zh/modules/conduct.js
  85. 2 2
      pc/src/lang/zh/modules/home.js
  86. 1 1
      pc/src/lang/zh/modules/service.js
  87. 12 3
      pc/src/page/conduct/conductHouse/index.vue
  88. 4 1
      pc/src/page/conduct/conductShop/index.vue
  89. 17 2
      pc/src/page/coreProducts/index.vue
  90. 10 9
      pc/src/page/home2/index.vue
  91. 2 1
      pc/src/page/home2/style.scss
  92. 1 1
      pc/src/page/layout/aside/index.vue
  93. 5 6
      pc/src/page/layout/footer.vue
  94. 29 3
      pc/src/page/location/index.vue
  95. 1 0
      pc/src/page/login/components/login.vue
  96. 1 0
      pc/src/page/mall/cart/index.vue
  97. 2 2
      pc/src/page/mall/confirm/index.vue
  98. 1 0
      pc/src/page/mall/kankanPro/index.vue
  99. 2 2
      pc/src/page/mall/kankanPro/style.scss
  100. 0 0
      pc/src/page/mall/pay/index.vue

BIN
common/data/images/1-en.png


BIN
common/data/images/2-en.png


BIN
common/data/images/3-en.jpg


BIN
common/data/images/4-en.png


BIN
common/data/images/5-en.jpg


BIN
common/data/images/6-en.jpg


BIN
common/data/images/7-en.jpg


Файловите разлики са ограничени, защото са твърде много
+ 59 - 0
common/data/newsData.js


+ 3 - 2
mobile/build/webpack.base.conf.js

@@ -3,7 +3,7 @@ const path = require('path')
 const utils = require('./utils')
 const config = require('../config')
 const vueLoaderConfig = require('./vue-loader.conf')
-
+const isProd = process.env.NODE_ENV === 'production'
 function resolve (dir) {
   return path.join(__dirname, '..', dir)
 }
@@ -56,7 +56,8 @@ module.exports = {
         loader: 'url-loader',
         options: {
           limit: 10000,
-          name: utils.assetsPath('img/[name].[hash:7].[ext]')
+          name: utils.assetsPath('v2/mobile/img/[path][name].[ext]'),
+          publicPath: isProd ? 'https://4dscene.4dage.com/new4dkk/' : ''
         }
       },
       {

+ 2 - 2
mobile/config/index.js

@@ -8,7 +8,7 @@ module.exports = {
   dev: {
 
     // Paths
-    assetsSubDirectory: 'static',
+    assetsSubDirectory: '',
     assetsPublicPath: '/',
     proxyTable: {},
 
@@ -49,7 +49,7 @@ module.exports = {
 
     // Paths
     assetsRoot: path.resolve(__dirname, '../../dist/www/mobile'),
-    assetsSubDirectory: 'static',
+    assetsSubDirectory: '',
     assetsPublicPath: './www/mobile/',
 
     /**

BIN
mobile/src/assets/images/refactor/conduct/house/item-3_1-en.png


BIN
mobile/src/assets/images/refactor/conduct/house/item-3_1.png


BIN
mobile/src/assets/images/refactor/conduct/house/item-3_2-en.png


BIN
mobile/src/assets/images/refactor/conduct/house/item-3_2.png


BIN
mobile/src/assets/images/refactor/conduct/house/item3-en.png


BIN
mobile/src/assets/images/refactor/conduct/house/item4-en.png


BIN
mobile/src/assets/images/refactor/conduct/shop/item2-en.png


BIN
mobile/src/assets/images/refactor/home/4case_03@2x.jpg


BIN
mobile/src/assets/images/refactor/home/4case_04@2x.jpg


+ 1 - 0
mobile/src/components/browse/index.vue

@@ -110,6 +110,7 @@ export default {
 }
 .swiper-pagination-bullet {
   background: #ebebeb;
+  opacity: 1;
 }
 .video-bg {
   width: 100%;

+ 5 - 2
mobile/src/components/cinvoices/index.vue

@@ -145,7 +145,7 @@
         </div>
         <div class="address-input-item" v-if="selectedTxt === '企业'">
           <div class="address-sub">
-            <div class="top-title no-require">纳税人识别号</div>
+            <div class="top-title">纳税人识别号</div>
             <div class="ant-input">
               <input @blur="blurHandle" oninput="value=value.replace(/[^\d]/g,'')" maxlength='18' v-model="tempInvoice2.code" type="text" placeholder="请输入18位纳税人识别号" />
             </div>
@@ -236,9 +236,12 @@ export default {
         let title = isObject(this.tempInvoice2.title)
         let code = isObject(this.tempInvoice2.code)
         let emailAddress = isObject(this.tempInvoice2.emailAddress)
-        if (code && code.length !== 18) {
+        if (this.selectedTxt !== '个人' && (!code || code.length !== 18)) {
           return this.$toast.show('warn', this.langToast['21'])
         }
+        if (this.selectedTxt === '个人') {
+          code = ''
+        }
         if (!reg.email.test(emailAddress)) {
           return this.$toast.show('warn', this.langToast['8'])
         }

+ 3 - 4
mobile/src/components/citySelect/newModule.vue

@@ -159,8 +159,7 @@ export default {
         province,
         city,
         shipMobile,
-        shipName,
-        id
+        shipName
       } = this.tempAddress
 
       let isObject = function (obj) {
@@ -173,10 +172,10 @@ export default {
         province,
         city,
         shipMobile,
-        shipName,
-        id
+        shipName
       }
       let test = Object.keys(params)
+      console.log(test, params)
       for (let i = 0; i < test.length; i++) {
         if (!isObject(params[test[i]])) {
           return this.$toast.show('warn', this.langAccount.fill)

+ 3 - 0
mobile/src/components/invoices/index.vue

@@ -157,6 +157,9 @@ export default {
           return this.$toast.show('warn', '信息填写不完整')
         }
       }
+      if (params.code.length !== 18) {
+        return this.$toast.show('warn', '请输入18位的税务登记号')
+      }
 
       this.$http
         .post('user/invoice/save', params, {

+ 12 - 4
mobile/src/components/payType/index.vue

@@ -5,7 +5,7 @@
         <div class="common-sub-header no-border">
           支付方式
         </div>
-        <div class="pay-item" v-for="(item,i) in data" :key="i" @click="goPay(item)">
+        <div class="pay-item" v-for="(item,i) in data" :key="i" @click="goPay(item)" :class="{'is-active': activeType === item.name}">
           <img :src="item.img" alt="">
           <span>{{item.name}}</span>
         </div>
@@ -48,15 +48,19 @@ export default {
       img: require('@/assets/images/refactor/userCenter/wx_pay.png')
     }]
     return {
-      data: browser.weixin ? weichatdata : data
+      data: browser.weixin ? weichatdata : data,
+      activeType: ''
     }
   },
+  mounted () {
+    this.goPay(this.data[0])
+  },
   methods: {
     goPay (item) {
       let temp = this.payinfo
       temp['payType'] = item.id
       temp['payTypeName'] = item.name
-
+      this.activeType = item.name
       this.$store.commit('PAYINFO', temp)
       this.$emit('change', temp)
       // this.$router.push({path: '/submit'})
@@ -97,8 +101,8 @@ export default {
   font-size: 12px;
   font-weight: bold;
   line-height: 18px;
-  padding: 17px 0 11px;
   border-bottom: 1px solid #EBEBEB;
+  margin-bottom: 8px;
   &.no-border {
     border-bottom: none;
   }
@@ -116,6 +120,10 @@ export default {
   img {
     height: 28px;
   }
+  &.is-active {
+    background: rgba(31, 228, 220, 0.05);
+    border-color: #1FE4DC;
+  }
 }
 .order-money {
   margin-top: 17px;

+ 2 - 2
mobile/src/lang/en/modules/agent.js

@@ -34,8 +34,8 @@ module.exports = {
         "applytitle": "Applicant Information",
         "applyNameXing": "Last Name",
         "applyNameMing": "First Name",
-        "applyNamePlaceholder": "Please Input the Last Name",
-        "applyNamePlaceholder1": "Please Input the First Name",
+        "applyNamePlaceholder": "Please Input",
+        "applyNamePlaceholder1": "Please Input",
         "positionLabel": "Title",
         "positionPlaceholder": "Please Input the Title",
         "phoneLabel": "Phone",

+ 10 - 7
mobile/src/lang/en/modules/conduct.js

@@ -1,7 +1,8 @@
 module.exports = {
     "__name": "核心产品",
     "coreProduct": {
-        "bannerTitle": "Product",
+        "bannerTitle": "4DKanKan Pro",
+        bannerSubTitle: 'The first consumer 3D<br/>camera in the world',
         "itemTitle1": "Autonomous & Accurate Modeling,Automatic Distance Measurement",
         "itemTitle2": "720° Immersive Roaming with 8K Picture Quality",
         "itemTitle3": "HDR Mode Balances Light and Dark Area Exposure",
@@ -12,10 +13,11 @@ module.exports = {
     },
     "coreTech": {
         "bannerTitle": "Technology",
-        "itemTitle1": "Space Digitization",
-        "itemText1": "Record and calculate the spatial position of the camera when shooting, and extract the corresponding 3D point cloud, so as to obtain the real situation of 3D space.",
+        bannerSubTitle: "Bringing Digital Technologies to the<br/>Everyday Life of Common People",
+        "itemTitle1": "Space Reconstruction",
+        "itemText1": "[Automatically] & [Precisely] record and calculate camera locations, [Effectively] extract the 3D point cloud data of the real scene to obtain corresponding 3D point clouds and acquire information of the real-life environment.",
         "itemTitle2": "Space Interaction",
-        "itemText2": "Automatic tour with preset route, panoramic and box videos enhance the interaction, different forms of dynamic hot-spot, let the space tell the story.",
+        "itemText2": "[Smart] tracking guide tour, [effective] preset route, can realize real-time interaction of multiple people on the same screen, enhance immersive experience with stunning panoramic videos, capture real wold by abundant dynamic hot spots, create humanized digital space art.",
         "item2Name1": "Dynamic Hot-spot",
         "item2Name2": "Interactive Video",
         "item2Name3": "Automatic Tour",
@@ -42,8 +44,8 @@ module.exports = {
         "itemTitle4": "Statistic Data Flow, Analyze User Persona"
     },
     "conductSubject": {
-        "bannerTitle": "4DKanKan",
-        bannerSubTitle: 'Culture & Relics, Help to Create<br/>Never-ending Museums',
+        "bannerTitle": "Museum",
+        bannerSubTitle: 'Culture & Relics, Create<br/>Never-ending Museums',
         "itemTitle1": "Digital Twin of Treasure Relics,Break the Time Limitation",
         "itemTitle2": "Various Forms of Spatial Interaction, Carrying Rich Historical Heritage",
         "itemTitle3": "Simultaneous Operation by Multi-user, Listening to Historical Stories",
@@ -62,7 +64,8 @@ module.exports = {
         "itemTitle4": "Personal Customer Service,Real-time Communications"
     },
     "conductSecury": {
-        "bannerTitle": "Security Survey",
+        "bannerTitle": "Investigation",
+        bannerSubTitle: "Efficiently Reconstruct<br/>All Kinds of Scenes",
         "itemTitle1": "Reconstruct Disaster Scenes Efficiently,Create Comprehensive 3D Files",
         "itemTitle2": "Multifunctional Editing Tool,Improve the Communication Quality",
         "itemTitle3": "Pre-collection is Available,Reduce the Claims Disputes"

+ 1 - 1
mobile/src/lang/en/modules/home.js

@@ -35,7 +35,7 @@ module.exports = {
     "plate1Item4Desc3": "High Quality Stores Live Broadcast, Real-time Online Share Quality Products.",
     "plate1Item4Desc4": "Personal AI Assistant, Real-time Online Reply.",
     "plate1Item4Desc5": "Gather Customers Together Online, Boost Offline Economy Effectively.",
-    "plate1Item5SubTitle": "Efficient Reconstruct Disaster Scenes,Create Comprehensive 3D Files",
+    "plate1Item5SubTitle": `100% Reconstruct Post-disaster Site, Make "Paperless Evidence" Come True`,
     "plate1Item5Desc1": "Efficient Reconstruct Disaster Scenes,Create Comprehensive 3D Files",
     "plate1Item5Desc2": "Pre-collection is Available,Reduce the Claims Disputes",
     "plate2Item1": "Yongzheng Palace",

+ 1 - 1
mobile/src/lang/en/modules/service.js

@@ -5,6 +5,6 @@ module.exports = {
     "app": "APP Download",
     "clause": "Warranty Information",
     "appDownload": {
-        "downloadTip": "Please Scan The QR Code to Install The App."
+        "downloadTip": "To use the 4DKanKan Pro Camera you need to download the 4DKanKan Pro App. Please press “Download”."
     }
 }

+ 11 - 11
mobile/src/lang/index.js

@@ -5,18 +5,18 @@ import en from './en'
 
 Vue.use(VueI18n)
 
-let current = (localStorage && localStorage.getItem('language')) || '中'
-// if (!lang) {
-//     lang = window.navigator.language || window.navigator.userLanguage || null
-//     if (lang && !/^zh/.test(lang)) {
-//         console.log('自动获取浏览器语言:' + lang)
-//         lang = 'en'
-//     }else{
-//         lang = 'zh'
-//     }
-// }
+let lang = (localStorage && localStorage.getItem('language'))
+if (!lang) {
+    lang = window.navigator.language || window.navigator.userLanguage || null
+    if (lang && !/^zh/.test(lang)) {
+        console.log('自动获取浏览器语言:' + lang)
+        lang = 'en'
+    }else{
+        lang = 'zh'
+    }
+}
 const i18n = new VueI18n({
-  locale: current,
+  locale: lang,
   messages: {
     zh,
     en

+ 12 - 9
mobile/src/lang/zh/modules/conduct.js

@@ -1,7 +1,8 @@
 module.exports = {
     "__name": "核心产品",
     "coreProduct": {
-        "bannerTitle": "核心产品",
+        "bannerTitle": "四维看看 Pro",
+        bannerSubTitle: '世界上首款消费级3D相机',
         "itemTitle1": "AI全自动精准建模,智能测距",
         "itemTitle2": "720度8K画质,身临其境",
         "itemTitle3": "HDR模式平衡明暗区域曝光",
@@ -12,17 +13,18 @@ module.exports = {
     },
     "coreTech": {
         "bannerTitle": "核心技术",
-        "itemTitle1": "空间数字化",
-        "itemText1": "记录与计算相机在拍摄时的空间位置,并提取对应的3D点云,从而获取三维空间的真实情况。",
+        bannerSubTitle: "让数字化飞入寻常百姓家",
+        "itemTitle1": "空间重建",
+        "itemText1": "「自动记录」并「精准计算」出相机在拍摄时的空间位置,「有效提取」实景对应的3D点云,从而获取三维空间的真实情况",
         "itemTitle2": "空间互动",
-        "itemText2": "自动导览 预先设定路线,球幕视频 BOX视频 增强体验的互动效果,多形式动态热点 赋以空间说话的艺术。",
+        "itemText2": "「智能追踪」导览,「高效预设」路线,可实现多人实时同屏互动,震撼球幕视频增强体验感,多形式动态热点捕捉,打造极具人性化的数字空间艺术",
         "item2Name1": "动态热点",
         "item2Name2": "互动视频",
         "item2Name3": "自动导览",
         "itemTitle3": "空间展示",
-        "itemText3": "无需插件,可在手机、 平板、PC端、VR眼镜,实现720°沉浸式漫游体验。",
-        "item3Name1": "VR",
-        "item3Name2": "网页端",
+        "itemText3": "「无需插件」即可在手机、平板、PC端、VR眼镜中实现「720°沉浸式」漫游体验",
+        "item3Name1": "VR设备",
+        "item3Name2": "PC端",
         "item3Name3": "移动端"
     },
     "conductHouse": {
@@ -54,7 +56,7 @@ module.exports = {
         item5SubItem3Title: '南昌汉代海昏侯国考古成果展'
     },
     "conductShop": {
-        "bannerTitle": "四维看店",
+        "bannerTitle": "看店",
         bannerSubTitle: '宅家中 云逛街 轻松买',
         "itemTitle1": "3D数字化商圈沉浸式购物新体验",
         "itemTitle2": "真实复刻空间手机一点就逛",
@@ -62,7 +64,8 @@ module.exports = {
         "itemTitle4": "私人专属客服 同屏带看实时沟通"
     },
     "conductSecury": {
-        "bannerTitle": "安防勘查",
+        "bannerTitle": "勘察",
+        bannerSubTitle: "高效复刻各类现场",
         "itemTitle1": "高效复刻灾害现场<br/>记录全面三维档案",
         "itemTitle2": "可将现场说明直接添加至三维空间中,提高沟通质量与工作效率",
         "itemTitle3": "支持预先采集存档<br/>减少理赔纠纷"

+ 2 - 2
mobile/src/lang/zh/modules/home.js

@@ -35,14 +35,14 @@ module.exports = {
     "plate1Item4Desc3": "好店带货直播,在线分享优质商品",
     "plate1Item4Desc4": "私人智能客服,实时在线答复",
     "plate1Item4Desc5": "汇聚线上客流,有效拉动线下经济",
-    "plate1Item5SubTitle": "高效复刻灾害现场,记录全面三维档案",
+    "plate1Item5SubTitle": "100%还原灾后现场,实现“物证无纸化”",
     "plate1Item5Desc1": "高效复刻灾害现场,记录全面三维档案",
     "plate1Item5Desc2": "支持预先采集存档,减少理赔纠纷",
     "plate2Item1": "雍正故宫",
     "plate2Item2": "小米有品",
     "plate2Item3": "华发依山郡",
     "plate2Item4": "万豪酒店",
-    "plate3Item1Title": "空间数字化",
+    "plate3Item1Title": "空间重建",
     "plate3Item1Text": "自动化三维数字重建<br/>还原空间布局与结构",
     "plate3Item2Title": "空间互动",
     "plate3Item2Text": "自动导览<br/>互动视频多形态动态热点",

+ 1 - 1
mobile/src/lang/zh/modules/service.js

@@ -5,6 +5,6 @@ module.exports = {
     "app": "APP下载",
     "clause": "保修条款",
     appDownload: {
-      downloadTip: '使用四维看看Pro的过程中,需要下载APP控制相机。请在手机软件商店搜索“四维看看Pro”或使用手机扫描二维码安装。'
+      downloadTip: '使用四维看看Pro的过程中,需要下载APP控制相机。请点击上方“点击下载”。'
     }
 }

+ 56 - 2
mobile/src/pages/about/index.vue

@@ -16,7 +16,16 @@
     <div class="plate03">
       <div class="e-node">
         <h2 class="common-title">{{langAbout.events.title}}</h2>
-        <img src="@/assets/images/refactor/about/img2.png" />
+        <div>
+          <swiper class="swiper-wrapper swiper-wrapper-n" :options="swiperOption">
+            <swiper-slide class="swiper-slide" v-for="(item,index) in imgs" :key="index">
+              <div class="s-item" >
+                <img class="main-img" :src="item.img">
+              </div>
+            </swiper-slide>
+            <!-- <div class="swiper-pagination" slot="pagination"></div> -->
+          </swiper>
+        </div>
         <ul>
           <li v-for="(item,idx) in langAbout.events.nodes" :key="idx">
             <h3>{{item.year}}</h3>
@@ -31,6 +40,7 @@
 <script>
 import {mapState} from 'vuex'
 
+let _cdn = 'https://4dscene.4dage.com/new4dkk/'
 export default {
   computed: {
     ...mapState({
@@ -38,8 +48,39 @@ export default {
     })
   },
   data () {
+    const imgs = [
+      {
+        img: _cdn + 'images/event.png'
+      },
+      {
+        img: _cdn + 'images/about1.jpg'
+      },
+      {
+        img: _cdn + 'images/about2.jpg'
+      },
+      {
+        img: _cdn + 'images/about3.jpg'
+      },
+      {
+        img: _cdn + 'images/about4.jpg'
+      },
+      {
+        img: _cdn + 'images/about5.jpg'
+      }
+    ]
     return {
-
+      imgs,
+      swiperOption: {
+        slidesPerView: 'auto',
+        autoplay: true,
+        centeredSlides: true,
+        watchSlidesProgress: true,
+        // pagination: {
+        //   el: '.swiper-pagination'
+        // },
+        loop: true,
+        paginationClickable: true
+      }
     }
   }
 }
@@ -59,4 +100,17 @@ export default {
   margin: 0 auto;
   display: block;
 }
+.swiper-pagination-bullet-active{
+  background: #1fe4dc!important;
+}
+.swiper-pagination-bullet {
+  background: #ebebeb;
+}
+.video-bg {
+  width: 100%;
+  height: 100%;
+  background: #202020;
+  display: flex;
+  align-items: center;
+}
 </style>

+ 2 - 0
mobile/src/pages/account/forget/components/style.scss

@@ -49,6 +49,8 @@ input[type='password']{
       border-bottom: none;
       position: absolute;
       right: 10px;
+      top: 50%;
+      transform: translateY(-50%);
     }
   }
   img{

+ 2 - 0
mobile/src/pages/account/mailRegister/style.scss

@@ -49,6 +49,8 @@ input[type='password']{
       border-bottom: none;
       position: absolute;
       right: 10px;
+      top: 50%;
+      transform: translateY(-50%);
     }
   }
   img{

+ 2 - 0
mobile/src/pages/account/register/style.scss

@@ -49,6 +49,8 @@ input[type='password']{
       border-bottom: none;
       position: absolute;
       right: 10px;
+      top: 50%;
+      transform: translateY(-50%);
     }
   }
   img{

+ 1 - 1
mobile/src/pages/cases/index.vue

@@ -186,7 +186,6 @@ export default {
       deep: true,
       immediate: true,
       handler (newVal) {
-        console.log(newVal)
         this.currentPage = 1
         this.typesActive = typeArr[newVal]
         this.getData()
@@ -199,6 +198,7 @@ export default {
   methods: {
     changeType (type) {
       this.typesActive = type.value
+      this.currentPage = 1
       this.getData()
       this.showSelectType = false
     },

+ 25 - 1
mobile/src/pages/conduct/house/index.vue

@@ -7,7 +7,12 @@
     <ul class="desc-video">
       <li v-for="item in list" :key="item.name">
         <h1 class="common-title" v-html="item.name"></h1>
-        <img :src="item.img">
+        <img v-if="!Array.isArray(item.img)" :src="item.img" />
+          <h-row v-else :gutter="0">
+            <h-col :span="24 / item.img.length" v-for="(img, index) in item.img" :key="index" :offset="53">
+              <img style="width: 100%" :src="img" alt="">
+            </h-col>
+          </h-row>
       </li>
     </ul>
   </div>
@@ -15,6 +20,7 @@
 
 <script>
 import { i18n } from '@/lang'
+import { mapState } from 'vuex'
 export default {
   data () {
     return {
@@ -37,6 +43,24 @@ export default {
         }
       ]
     }
+  },
+  computed: {
+    ...mapState({
+      language: state => state.language.current
+    })
+  },
+  mounted () {
+    const ISZH = this.language === 'zh'
+    this.$set(this.list, 2, {
+      name: this.$t('conduct.conductHouse.itemTitle3'),
+      img: ISZH ? require('@/assets/images/refactor/conduct/house/item3.png') : require('@/assets/images/refactor/conduct/house/item3-en.png'),
+      runAnimation: true
+    })
+    this.$set(this.list, 3, {
+      name: this.$t('conduct.conductHouse.itemTitle4'),
+      img: ISZH ? require('@/assets/images/refactor/conduct/house/item4.png') : require('@/assets/images/refactor/conduct/house/item4-en.png'),
+      runAnimation: true
+    })
   }
 }
 </script>

+ 1 - 0
mobile/src/pages/conduct/secury/index.vue

@@ -2,6 +2,7 @@
   <div class="conduct-secury">
     <div class="banner">
       <h1>{{ $t('conduct.conductSecury.bannerTitle') }}</h1>
+      <h4 v-html="$t('conduct.conductSecury.bannerSubTitle')"></h4>
     </div>
     <ul class="desc-video">
       <li v-for="item in list" :key="item.name">

+ 13 - 0
mobile/src/pages/conduct/shop/index.vue

@@ -15,6 +15,8 @@
 
 <script>
 import { i18n } from '@/lang'
+import { mapState } from 'vuex'
+
 export default {
   data () {
     return {
@@ -37,6 +39,17 @@ export default {
         }
       ]
     }
+  },
+  computed: {
+    ...mapState({
+      language: state => state.language.current
+    })
+  },
+  mounted () {
+    this.$set(this.list, 1, {
+      name: i18n.t('conduct.conductShop.itemTitle2'),
+      img: this.language === 'zh' ? require('@/assets/images/refactor/conduct/shop/item2.png') : require('@/assets/images/refactor/conduct/shop/item2-en.png')
+    })
   }
 }
 </script>

+ 22 - 4
mobile/src/pages/coreProduct/index.vue

@@ -1,14 +1,15 @@
 <template>
   <div class="coreProduct">
     <div class="banner">
-      {{ $t('conduct.coreProduct.bannerTitle') }}
+      <h1 v-html="$t('conduct.coreProduct.bannerTitle')"></h1>
+      <h4 v-html="$t('conduct.coreProduct.bannerSubTitle')"></h4>
     </div>
     <ul class="desc-video">
       <li v-for="item in videoArr" :key="item.name">
         <h1 class="common-title" v-html="item.name"></h1>
         <div class="player">
           <video class="video" controls="controls" playsinline="playsinline" muted="muted" :poster="isNaN(item.post) ? `${$cdn}video/homevideo/v${item.img}.mp4${item.post}` : `${$cdn}images/postv${item.post}.png`">
-            <source :src="`${$cdn}video/homevideo/v${item.img}.mp4`" type="video/mp4">
+            <source :src="`${$cdn}video/homevideo/v${language === 'zh' ? item.img:item.enImg}.mp4`" type="video/mp4">
           </video>
         </div>
       </li>
@@ -18,6 +19,7 @@
 
 <script>
 import { i18n } from '@/lang'
+import { mapState } from 'vuex'
 
 export default {
   data () {
@@ -27,17 +29,20 @@ export default {
           name: i18n.t('conduct.coreProduct.itemTitle1'),
           img: 1,
           post: 1,
+          enImg: '1en',
           runAnimation: true
         },
         {
           name: i18n.t('conduct.coreProduct.itemTitle2'),
           img: 2,
           post: 2,
+          enImg: '2',
           runAnimation: true
         },
         {
           name: i18n.t('conduct.coreProduct.itemTitle4'),
           img: 6,
+          enImg: '6',
           post: '?x-oss-process=video/snapshot,t_100,f_jpg,m_fast',
           runAnimation: true
         },
@@ -45,22 +50,30 @@ export default {
           name: i18n.t('conduct.coreProduct.itemTitle5'),
           img: 3,
           post: 3,
+          enImg: '3en',
           runAnimation: true
         },
         {
           name: i18n.t('conduct.coreProduct.itemTitle6'),
           img: 4,
           post: 4,
+          enImg: '4',
           runAnimation: true
         },
         {
           name: i18n.t('conduct.coreProduct.itemTitle7'),
           img: 5,
           post: 5,
+          enImg: '5en',
           runAnimation: true
         }
       ]
     }
+  },
+  computed: {
+    ...mapState({
+      language: state => state.language.current
+    })
   }
 }
 </script>
@@ -71,14 +84,19 @@ export default {
     width: 100%;
     height: 140px;
     display: flex;
-    align-items: center;
-    padding-left: 42px;
+    padding-left: 25px;
     font-size: 22px;
     color: #202020;
     font-weight: bold;
     background: #D4D4D4;
+    flex-direction: column;
+    justify-content: center;
     background: url(~@/assets/images/refactor/coreProduct/banner.jpg);
     background-size: cover;
+    h4 {
+      font-size: 16px;
+      margin-top: 20px;
+    }
   }
   .desc-video {
     padding: 27px 20px;

+ 3 - 3
mobile/src/pages/home/components/plate3.vue

@@ -33,12 +33,12 @@ export default {
         },
         {
           text: '华发依山郡',
-          bgImg: require('@/assets/images/refactor/home/4case_03@2x.png'),
-          link: 'https://www.4dkankan.com/spc.html?m=JBx2hetpp'
+          bgImg: require('@/assets/images/refactor/home/4case_03@2x.jpg'),
+          link: 'https://www.4dkankan.com/spc.html?m=t-VJjZMUl'
         },
         {
           text: '万豪酒店',
-          bgImg: require('@/assets/images/refactor/home/4case_04@2x.png'),
+          bgImg: require('@/assets/images/refactor/home/4case_04@2x.jpg'),
           link: 'https://www.4dkankan.com/showPC.html?m=PoCGXVFP'
         }
       ],

+ 10 - 1
mobile/src/pages/home/components/plate5.vue

@@ -28,7 +28,8 @@
 </template>
 
 <script>
-import { News } from '@/../../common/data/newsData'
+import { News, EnNews } from '@/../../common/data/newsData'
+import { mapState } from 'vuex'
 export default {
   data () {
     return {
@@ -40,6 +41,14 @@ export default {
       }
     }
   },
+  computed: {
+    ...mapState({
+      language: state => state.language.current
+    })
+  },
+  mounted () {
+    this.newsData = this.language === 'zh' ? News.slice(0, 4) : EnNews.slice(0, 4)
+  },
   methods: {
     toLink ({link}) {
       window.open(link)

+ 5 - 1
mobile/src/pages/home/index.vue

@@ -8,7 +8,7 @@
       <p class="plate01-title" v-html="$t('home.bannerText')"></p>
       <img class="p1_bg" src="@/assets/images/refactor/home/plate01-img@2x.png" alt="">
       <div class="bottom">
-        <div @click="broadcast('https://4d-tjw.oss-cn-shenzhen.aliyuncs.com/4dHouse/%E5%9B%9B%E7%BB%B4%E7%9C%8B%E7%9C%8BPro-%202020-7-22%E7%89%88%E6%9C%AC%288K%29.mp4')" class="btn-player">
+        <div @click="showDetailVideo" class="btn-player">
           <img src="@/assets/images/refactor/home/playBtn.png" alt="">
           <span >{{$t('home.bannerIntroVideo')}}</span>
           <div class="play-btn"></div>
@@ -104,6 +104,10 @@ export default {
     },
     gobuy () {
       this.language === 'en' ? window.location.href = 'https://www.alibaba.com/product-detail/4DKanKan-Pro-3D-camera-3D-space_62183626283.html?spm=a2700.icbuShop.74.1.66b35b10I4miJd' : this.$router.push({name: 'purchase'})
+    },
+    showDetailVideo () {
+      const videoUrl = this.language === 'zh' ? `https://4d-tjw.oss-cn-shenzhen.aliyuncs.com/4dHouse/%E5%9B%9B%E7%BB%B4%E7%9C%8B%E7%9C%8BPro-%202020-7-22%E7%89%88%E6%9C%AC%288K%29.mp4` : `https://4dscene.4dage.com/new4dkk/v2/video/4DKanKanPro-en.mp4`
+      this.broadcast(videoUrl)
     }
   }
 }

+ 1 - 1
mobile/src/pages/layout/footer.vue

@@ -37,7 +37,7 @@
         <div class="copyright">
           <p>{{langFooter.copyright[0]}}</p>
           <p>{{langFooter.copyright[1]}}</p>
-          <p>珠海市四维时代网络科技有限公司</p>
+          <!-- <p>珠海市四维时代网络科技有限公司</p> -->
         </div>
       </div>
       <!-- <div class="layout">

+ 1 - 0
mobile/src/pages/layout/style.scss

@@ -138,6 +138,7 @@ $bannerHeight:50px;
         background-size: cover;
         border-radius: 50%;
         background-position: center center;
+        margin-left: 4px;
       }
        ul{
           position: absolute;

+ 21 - 8
mobile/src/pages/location/index.vue

@@ -1,13 +1,14 @@
 <template>
   <div class="home-layout">
     <div class="banner">
-      {{ $t('conduct.coreTech.bannerTitle') }}
+      <h1 v-html="$t('conduct.coreTech.bannerTitle')"></h1>
+      <h4 v-html="$t('conduct.coreTech.bannerSubTitle')"></h4>
     </div>
     <div class="plate1" id="plate1">
       <h1 class="common-title">{{ $t('conduct.coreTech.itemTitle1') }}</h1>
       <p class="desc">{{ $t('conduct.coreTech.itemText1') }}</p>
       <div class="video">
-        <video autoplay controls :src="`${$cdn}video/location-video.mp4?t=1`" :poster="`${$cdn}video/location-video.mp4?x-oss-process=video/snapshot,t_21000,f_jpg,m_fast`"></video>
+        <video autoplay controls :src="`${$cdn}video/location-video.mp4?t=2`" :poster="`${$cdn}video/location-video.mp4?x-oss-process=video/snapshot,t_21000,f_jpg,m_fast`"></video>
       </div>
     </div>
     <div class="plate2" id="plate2">
@@ -56,7 +57,7 @@ export default {
         },
         {
           name: this.$t('conduct.coreTech.item2Name2'),
-          iframeLink: 'https://www.4dkankan.com/spc.html?m=B4T8r0kk6'
+          iframeLink: 'https://www.4dkankan.com/spc.html?m=1TFy0kSQZ'
         },
         {
           name: this.$t('conduct.coreTech.item2Name3'),
@@ -85,6 +86,12 @@ export default {
     }
   },
   mounted () {
+    if (this.language !== 'zh') {
+      this.plate2List = this.plate2List.map(item => {
+        item.iframeLink = item.iframeLink + '&lang=en'
+        return item
+      })
+    }
   },
   beforeDestroy () {
   }
@@ -93,15 +100,21 @@ export default {
 
 <style lang="scss" scoped>
 .banner {
-  width: 100%;
-  height: 140px;
   background: url(~@/assets/images/refactor/location/banner.png) no-repeat center center;
   background-size: cover;
+  width: 100%;
+  height: 140px;
+  display: flex;
+  padding-left: 25px;
   font-size: 22px;
   color: #202020;
-  line-height: 33px;
-  padding: 55px 0 0 42px;
   font-weight: bold;
+  flex-direction: column;
+  justify-content: center;
+  h4 {
+    font-size: 16px;
+    margin-top: 20px;
+  }
 }
 .desc {
   color: #909090;
@@ -109,7 +122,7 @@ export default {
   line-height: 18px;
 }
 .plate1 {
-  padding: 26px 20px 60px;
+  padding: 26px 18px 60px;
   .desc {
     margin: 27px 0 18px;
   }

+ 19 - 6
mobile/src/pages/news/index.vue

@@ -9,7 +9,7 @@
         >
         <template>
           <div class="swiper-item" :class="`swiper-item${i+1}`" :style="{'background-image': `url(${item.img}`}" @click="handleClickSlide(item)">
-            <p v-html="item.text"></p>
+            <p v-html="language === 'zh' ? item.text : item.enHtml"></p>
           </div>
         </template>
         </swiper-slide>
@@ -29,11 +29,12 @@
 </template>
 
 <script>
-import { News } from '@/../../common/data/newsData'
+import { News, EnNews } from '@/../../common/data/newsData'
+import { mapState } from 'vuex'
 export default {
   data () {
     return {
-      newsList: News,
+      newsList: [],
       activeIndex: 0,
       swiperOption: {
         autoplay: {
@@ -49,16 +50,19 @@ export default {
       banners: [
         {
           text: '四维时代发布新一代3D空间相机',
+          enHtml: 'New 3D Camera Officially<br/>Released by 4Dage',
           img: require('@/assets/images/refactor/news/banner1.jpg'),
           link: 'https://36kr.com/p/782262201344647?from=groupmessage&isappinstalled=0'
         },
         {
           text: '火爆美国CES<br/>四维看看Pro获谷歌AI、LG集团<br/>等国际性企业青睐',
+          enHtml: 'Prevailing in CES: <br/>4DKanKan Pro Gained the Popularity among AI Gaints',
           img: require('@/assets/images/refactor/news/banner2.jpg'),
           link: 'https://mp.weixin.qq.com/s/EHxLGCGvznqijxOLPLTXkQ'
         },
         {
           text: '四维看展与德国<br/>黑提恩斯-陶瓷博物馆合作<br/>可3D鉴赏珍宝',
+          enHtml: '4DMuseum x Hetjens German<br/>Ceramics Museum<br/>Explore the Digtial Twins of the Treasures',
           img: require('@/assets/images/refactor/news/banner3.jpg'),
           link: 'https://mp.weixin.qq.com/s/eQ2IuHdlIVg7n0IsXJs5iA'
         }
@@ -66,10 +70,16 @@ export default {
     }
   },
   computed: {
+    ...mapState({
+      language: state => state.language.current
+    }),
     mySwiper () {
       return this.$refs.mySwiper.swiper
     }
   },
+  mounted () {
+    this.newsList = this.language === 'zh' ? News : EnNews
+  },
   methods: {
     toNewsDetail (item) {
       location.href = item.link
@@ -98,7 +108,8 @@ export default {
   display: flex;
   align-items: center;
   justify-content: center;
-  text-align: right;
+  text-align: center;
+  padding: 0 20px;
   &.swiper-item2 {
     color: #fff;
     text-align: center;
@@ -106,8 +117,10 @@ export default {
   }
   &.swiper-item3 {
     color: #fff;
-    justify-content: flex-end;
-      padding-right: 20px;
+    padding-right: 20px;
+    text-shadow: 0px 3px 6px rgba(0, 0, 0, 0.78);
+    font-size: 16px;
+    text-align: center;
   }
 }
 

+ 18 - 7
mobile/src/pages/purchase/index.vue

@@ -9,7 +9,8 @@
          />
         <div class="txt-con">
           <img class="p-logo" :src="language==='en'?`${$cdn}images/pro-logo-m-en.png`:`${$cdn}images/pro-logo-m.png`" alt="">
-          <div class="p-price">{{langPurchase.price}}<span class="zdj">{{langPurchase.yushou}}</span></div>
+          <p class="sub b-label" v-html="langPurchase.dec"></p>
+          <div class="p-price">{{langPurchase.price}}</div>
         </div>
         <div class="attr-con">
           <div class="attr">{{langPurchase.color.key}}</div>
@@ -108,7 +109,7 @@
     </div> -->
     <div class="hover-btns">
       <div class="h-price">
-       {{language!=='en'? `RMB ${totalPrice}`:'USD 1799'}}
+       {{language!=='en'? `RMB ${totalPrice}`:''}}
       </div>
       <div class="h-btns">
         <span v-if="language!=='en'" @click="addcart">加入购物车</span>
@@ -326,7 +327,7 @@ export default {
         font-size: 14px;
         color: rgba(0, 0, 0, 0.7);
         line-height: 18px;
-        font-weight: 600;
+        font-weight: bold;
       }
     }
     .main-layout{
@@ -384,7 +385,7 @@ export default {
           font-size: 12px;
           color: #202020;
           line-height: 18px;
-          font-weight: 600;
+          font-weight: bold;
           margin: 12px 0 8px;
         }
         .box{
@@ -409,7 +410,7 @@ export default {
           padding: 0;
           font-size: 14px;
           color: #202020;
-          font-weight: 600;
+          font-weight: bold;
         }
         .service{
           width: 100%;
@@ -418,15 +419,18 @@ export default {
           .icon-yuandian{
             font-size: 14px;
             color: rgba(0, 0, 0, 0.7);
-            font-weight: 600;
+            font-weight: bold;
             display: flex;
+            align-items: center;
             a {
               color: #486ACE !important;
               line-height: 18px;
               margin-top: 0;
+              display: flex;
+              align-items: center;
               img {
                 vertical-align: middle;
-                margin-top: -2px;
+                margin-right: 2px;
               }
             }
           }
@@ -434,6 +438,7 @@ export default {
             display: flex;
             justify-content: space-between;
             min-width: 271px;
+            align-items: center;
           }
           ul{
             padding: 6px 10px 0 15px;
@@ -535,4 +540,10 @@ export default {
       }
     }
   }
+.goods-name {
+  font-size: 22px;
+  font-weight: bold;
+  color: #202020;
+  margin-top: 15px;
+}
 </style>

+ 2 - 0
mobile/src/pages/purchase/style.scss

@@ -145,7 +145,9 @@
       text-align: left;
       margin-top: 10px;
       >div{
+        border-bottom: 1px solid #ebebeb;
         &:last-of-type{
+          border-bottom: none;
           .detail{
             margin-bottom: 0;
           }

+ 4 - 4
mobile/src/pages/purchasetwo/style.scss

@@ -12,7 +12,7 @@
         font-size: 14px;
         color: rgba(0, 0, 0, 0.7);
         line-height: 18px;
-        font-weight: 600;
+        font-weight: bold;
       }
     }
     .main-layout{
@@ -64,7 +64,7 @@
           font-size: 14px;
           color: #202020;
           line-height: 18px;
-          font-weight: 600;
+          font-weight: bold;
           margin: 12px 0 10px;
         }
         .box{
@@ -89,7 +89,7 @@
           padding: 0;
           font-size: 14px;
           color: #202020;
-          font-weight: 600;
+          font-weight: bold;
         }
         .service{
           width: 100%;
@@ -98,7 +98,7 @@
           .icon-yuandian{
             font-size: 14px;
             color: rgba(0, 0, 0, 0.7);
-            font-weight: 600;
+            font-weight: bold;
           }
           ul{
             padding: 13px 10px 0 15px;

+ 9 - 2
mobile/src/pages/purchasezhijia/index.vue

@@ -7,7 +7,8 @@
           :floder="'zhijiabrowse'"
          />
         <div class="txt-con">
-          <img class="p-logo" :src="this.language==='en'?`${$cdn}images/zhijia-logo-en.png`:`${$cdn}images/zhijia-logo-black.png`" alt="">
+          <h1 class="goods-name">{{$t('mall.jiaojia')}}</h1>
+          <!-- <img class="p-logo" :src="this.language==='en'?`${$cdn}images/zhijia-logo-en.png`:`${$cdn}images/zhijia-logo-black.png`" alt=""> -->
           <div class="p-label" v-html="langzhijia.dec"></div>
           <div class="p-price">{{langzhijia.price}}</div>
         </div>
@@ -83,7 +84,7 @@
 
     <div class="hover-btns">
       <div class="h-price">
-       {{language!=='en'? `RMB ${count*899}`:'USD 209'}}
+       {{language!=='en'? `RMB ${count*899}`:''}}
       </div>
       <div class="h-btns">
         <span v-if="language!=='en'" @click="addcart">加入购物车</span>
@@ -196,4 +197,10 @@ export default {
   line-height: 20px;
   margin-top: 20px;
 }
+.goods-name {
+  font-size: 22px;
+  font-weight: bold;
+  color: #202020;
+  margin-top: 15px;
+}
 </style>

+ 13 - 13
mobile/src/pages/purchasezhijia/style.scss

@@ -9,9 +9,9 @@
       span{
         padding-right: 5%;
         font-size: 14px;
-        color: rgba(0, 0, 0, 0.7);
+        color: #202020;
         line-height: 18px;
-        font-weight: 600;
+        font-weight: bold;
       }
     }
     .main-layout{
@@ -31,7 +31,7 @@
         // border-bottom: 1px solid rgba(0, 0, 0, 0.1);
         .p-title{
           font-size: 20px;
-          color: rgba(0,0,0,.7);
+          color:#202020;
           line-height: 24px;
           font-weight: 700;
         }
@@ -41,14 +41,14 @@
         }
         .p-label{
           font-size: 12px;
-          color: rgba(0,0,0,.7);
+          color:#202020;
           line-height: 16px;
         }
         .p-price{
           margin-top: 10px;
           font-size: 20px;
           line-height: 1;
-          color: rgba(0,0,0,.7);
+          color:#202020;
           font-weight: 700;
         }
       }
@@ -61,9 +61,9 @@
         }
         .attr{
           font-size: 14px;
-          color: rgba(0,0,0,.7);
+          color:#202020;
           line-height: 18px;
-          font-weight: 600;
+          font-weight: bold;
           margin: 12px 0 10px;
         }
         .box{
@@ -87,8 +87,8 @@
           width: 100%;
           padding: 0;
           font-size: 14px;
-          color: rgba(0,0,0,.7);
-          font-weight: 600;
+          color:#202020;
+          font-weight: bold;
           span{
             color: #1fe4dc;
             font-weight: bold;
@@ -102,8 +102,8 @@
           padding: 0;
           .icon-yuandian{
             font-size: 14px;
-            color: rgba(0, 0, 0, 0.7);
-            font-weight: 600;
+            color: #202020;
+            font-weight: bold;
           }
           ul{
             padding: 0 10px 0 15px;
@@ -114,7 +114,7 @@
               font-size: 12px;
               line-height: 1.5;
               position: relative;
-              color: rgba(0,0,0,.7);
+              color:#202020;
               &::before{
                 content: '';
                 width: 3px;
@@ -156,7 +156,7 @@
             font-size: 12px;
             line-height: 1.2;
             text-align: left;
-            color: rgba(0,0,0,.7);
+            color:#202020;
           }
         }
         .peijian{

+ 2 - 1
mobile/src/pages/service/useimg.vue

@@ -30,8 +30,9 @@ export default {
       for (let i = 0; i < use.length; i++) {
         let item = use[i]
         if (!item.sub) {
+          console.log(item.img)
           if (parseInt(item.img) === parseInt(this.$route.params.id)) {
-            img = this.$cdn + `images/${name}/${current[this.$route.params.type]}/${this.language === 'en' ? 'en' : 'zh'}/${item.img}.jpg`
+            img = this.$cdn + `images/${name}/${current[this.$route.params.type]}/${this.language === 'en' ? 'en' : 'zh'}/${this.$route.params.id}.jpg`
             return img
           }
         }

+ 79 - 3
mobile/src/pages/userCenter/confirm/index.vue

@@ -81,6 +81,15 @@
            <span class="total-price">¥{{getSum()[1]}}</span>
           </div>
         </div>
+         <div class="agree">
+            <label class="check-con" @click="isAgree=!isAgree">
+              <span class="check-box">
+                <span class="checkbox-inner" :class="{'checkbox-inner-checked':isAgree}"></span>
+              </span>
+              同意<span style="" @click.stop="$router.push({name:'useimg',params:{id:'1v2',type:0,name: 'agreement'}})">四维看看销售协议</span>
+            </label>
+            <!-- <input type="checkbox" v-model="isAgree"> -->
+          </div>
         <!-- <div class="xieyi"><input type="checkbox" />我已阅读并同意四维看看用户协议</div> -->
       </div>
       <div class="btn-confirm" @click="next()">付款</div>
@@ -92,14 +101,22 @@
 import { mapState } from 'vuex'
 import cinvoices from '@/components/cinvoices'
 import payTypeModule from '@/components/payType'
+import browser from '@/util/browser'
 
+let paytypes = {
+  0: 'wechatMobilePay',
+  1: 'aliMobilePay'
+}
 var cloneObj = function (obj) {
   var newObj = {}
   if (obj instanceof Array) {
     newObj = []
   }
   for (var key in obj) {
-    var val = obj[key] || ''
+    var val = obj[key]
+    if (!obj[key] && obj[key] !== 0) {
+      val = ''
+    }
     newObj[key] = typeof val === 'object' ? cloneObj(val) : val
   }
   return newObj
@@ -182,7 +199,9 @@ export default {
       selectedTxt: '不需要发票',
       selectedId: 1,
       isShowAddress: true,
-      showinvoice: true
+      showinvoice: true,
+      isAgree: true,
+      isWeixin: browser.weixin
     }
   },
   methods: {
@@ -210,7 +229,8 @@ export default {
       temp['selectedTxt'] = this.selectedTxt
 
       this.$store.commit('PAYINFO', temp)
-      this.$router.push({path: '/paytype'})
+      this.pay()
+      // this.$router.push({path: '/submit'})
     },
     getSum () {
       let sum = 0
@@ -220,6 +240,62 @@ export default {
         count += item.goodsCount
       })
       return [count, sum]
+    },
+    async pay () {
+      if (!this.isAgree) {
+        this.$toast.show('warn', '请阅读并同意四维看看销售协议')
+        return
+      }
+      let {invoice, goods, payType, receiver} = this.payinfo
+      if (invoice) {
+        invoice.invoiceType = this.selectedId
+      }
+      let params = {
+        goods,
+        receiver,
+        invoice,
+        payType,
+        abroad: this.language === 'en' ? 1 : 0
+
+      }
+      let res = await this.$http
+        .post('user/order/placeOrder', params, {
+          headers: {
+            token: this.token
+          }
+        })
+
+      this.$store.commit('ORDERINFO', {
+        orderSn: res.data.data.orderSn,
+        price: res.data.data.goodsAmount,
+        orderType: 0
+      })
+      this.$store.dispatch('getCart')
+      let data = {
+        orderId: res.data.data.id,
+        orderType: 0
+      }
+
+      this.orderId = res.data.data.id
+      this.orderType = 0
+
+      if (Number(payType) !== 2) {
+        if (this.isWeixin) {
+          let hostName = window.location.hostname
+          return location.replace(`https://open.weixin.qq.com/connect/oauth2/authorize?redirect_uri=https%3a%2f%2f${hostName}%2fapi%2forder%2fpay%2fwechatPreJsPay%3forderId=${this.orderId}%26orderType=${Number(this.orderType)}&appid=wx779dbafb46bab697&response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect`)
+        }
+        let response = await this.$http
+          .post(`order/pay/${paytypes[payType]}`, data, {
+            headers: {
+              token: this.token
+            }
+          })
+        let url = payType === 1 ? response.data.data.form : response.data.data.mweb_url
+        location.replace(url)
+      } else {
+        document.getElementById('formid').submit()
+        this.$toast.show('warn', this.langToast['3'])
+      }
     }
   },
   async mounted () {

+ 2 - 2
mobile/src/pages/userCenter/submit/index.vue

@@ -23,7 +23,7 @@
     <div class="box-con">
       <div class="bc-title">
         <span>支付信息</span>
-        <span @click="$router.back()">修改</span>
+        <span @click="$router.push('/paytype')">修改</span>
       </div>
       <div class="bc-item pay-item">
         <div class="item-method">
@@ -85,7 +85,7 @@
           <span class="check-box">
             <span class="checkbox-inner" :class="{'checkbox-inner-checked':isAgree}"></span>
           </span>
-          同意<span style="" @click.stop="$router.push({name:'useimg',params:{id:1,type:0,name: 'agreement'}})">四维看看销售协议</span>
+          同意<span style="" @click.stop="$router.push({name:'useimg',params:{id:'1v2',type:0,name: 'agreement'}})">四维看看销售协议</span>
         </label>
         <!-- <input type="checkbox" v-model="isAgree"> -->
       </div>

+ 2 - 2
mobile/src/store/language/en/agent.js

@@ -61,8 +61,8 @@ export default {
       name: {
         xing: 'Last Name',
         ming: 'First Name',
-        placeholder: 'Please input the last name',
-        placeholder1: 'Please input the first name'
+        placeholder: 'Please input',
+        placeholder1: 'Please input'
       },
       position: {
         title: 'Title',

+ 2 - 2
mobile/src/store/language/home_en.js

@@ -209,11 +209,11 @@ export default {
           },
           {
             code: 'img_02editmb@2x',
-            name: 'Edit Model- Mobile APP Model Editing'
+            name: 'Mobile APP Model Editing'
           },
           {
             code: 'img_04editpc@2x',
-            name: 'Edit Model- PC Model Editing'
+            name: 'PC Model Editing'
           },
           {
             code: 'img_07share@2x',

+ 10 - 1
mobile/src/store/language/index.js

@@ -9,10 +9,19 @@ const en = {
   home: enLang
 }
 
-let current = (localStorage && localStorage.getItem('language')) || 'zh'
+let current = (localStorage && localStorage.getItem('language'))
 if (current === '中') {
   current = 'zh'
 }
+if (!current) {
+  current = window.navigator.language || window.navigator.userLanguage || null
+  if (current && !/^zh/.test(current)) {
+    console.log('自动获取浏览器语言:' + current)
+    current = 'en'
+  } else {
+    current = 'zh'
+  }
+}
 document.title = current === 'en' ? '4DKanKan' : '四维看看'
 let languageMap = {
   zh: cn,

+ 0 - 1
pc/build/utils.js

@@ -8,7 +8,6 @@ exports.assetsPath = function (_path) {
   const assetsSubDirectory = process.env.NODE_ENV === 'production'
     ? config.build.assetsSubDirectory
     : config.dev.assetsSubDirectory
-
   return path.posix.join(assetsSubDirectory, _path)
 }
 

+ 2 - 2
pc/build/webpack.base.conf.js

@@ -57,8 +57,8 @@ module.exports = {
         loader: 'url-loader',
         options: {
           limit: 10000,
-          name: utils.assetsPath('img/[name].[hash:7].[ext]'),
-          publicPath: isProd ? '/new4Dkankan/www/static/' : ''
+          name: utils.assetsPath('v2/images/[path][name].[ext]'),
+          publicPath: isProd ? 'https://4dscene.4dage.com/new4dkk/' : ''
         }
       },
       {

+ 1 - 1
pc/config/index.js

@@ -8,7 +8,7 @@ module.exports = {
   dev: {
 
     // Paths
-    assetsSubDirectory: 'static',
+    assetsSubDirectory: '',
     assetsPublicPath: '/',
     proxyTable: {},
 

BIN
pc/src/assets/images/home/1.jpg


BIN
pc/src/assets/images/home/4case_03.png


BIN
pc/src/assets/images/home/4case_03@2x.jpg


BIN
pc/src/assets/images/home/4case_03@2x.png


BIN
pc/src/assets/images/home/4case_04@2x.jpg


BIN
pc/src/assets/images/home/solutions-sec.jpg


BIN
pc/src/assets/images/home/solutions-sec.png


BIN
pc/src/assets/images/online/house/item-3_1-en.png


BIN
pc/src/assets/images/online/house/item-3_1.png


BIN
pc/src/assets/images/online/house/item-3_2-en.png


BIN
pc/src/assets/images/online/house/item-3_2.png


BIN
pc/src/assets/images/refactor/conductShop/banner-en.png


BIN
pc/src/assets/images/refactor/mall/scan-tip-en.png


BIN
pc/src/assets/images/refactor/news/4-en.png


BIN
pc/src/assets/images/refactor/news/banner3.jpg


+ 1 - 0
pc/src/assets/style/public.scss

@@ -75,6 +75,7 @@ body{
     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.2);
     background-color: #d4d4d4;
   }
+  
 }
 
 .check-con {

+ 2 - 1
pc/src/components/lselect/index.vue

@@ -75,7 +75,8 @@ export default {
     color: #2d2d2d;
     font-size: 14px;
     cursor: pointer;
-
+    white-space: nowrap;
+    padding-right: 20px;
     &.active {
       background-color: #202020;
       color: #fff;

+ 11 - 9
pc/src/lang/en/modules/conduct.js

@@ -1,7 +1,8 @@
 module.exports = {
     "__name": "核心产品",
     "coreProduct": {
-        "bannerTitle": "Product",
+        "bannerTitle": "4DKanKan Pro",
+        bannerSubTitle: 'The first consumer 3D camera in the world',
         "itemTitle1": "Autonomous & Accurate Modeling,Automatic Distance Measurement",
         "itemTitle2": "720° Immersive Roaming with 8K Picture Quality",
         "itemTitle3": "HDR Mode Balances Light and Dark Area Exposure",
@@ -12,10 +13,11 @@ module.exports = {
     },
     "coreTech": {
         "bannerTitle": "Technology",
-        "itemTitle1": "Space Digitization",
-        "itemText1": "Record and calculate the spatial position of the camera when shooting, and extract the corresponding 3D point cloud, so as to obtain the real situation of 3D space",
+        bannerSubTitle: "Bringing Digital Technologies to the Everyday Life of Common People",
+        "itemTitle1": "Space Reconstruction",
+        "itemText1": "[Automatically] & [Precisely] record and calculate camera locations, [Effectively] extract the 3D point cloud data of the real scene to obtain corresponding 3D point clouds and acquire information of the real-life environment.",
         "itemTitle2": "Space Interaction",
-        "itemText2": "Automatic tour with preset route, panoramic and box videos enhance the interaction, different forms of dynamic hot-spot, let the space tell the story",
+        "itemText2": "[Smart] tracking guide tour, [effective] preset route, can realize real-time interaction of multiple people on the same screen, enhance immersive experience with stunning panoramic videos, capture real wold by abundant dynamic hot spots, create humanized digital space art.",
         "item2Name1": "Dynamic Hot-spot",
         "item2Name2": "Interactive Video",
         "item2Name3": "Automatic Tour",
@@ -26,21 +28,21 @@ module.exports = {
         "item3Name3": "Mobile"
     },
     "conductHouse": {
-        "bannerTitle": "4DKanKan<br/>Realestate, Mass Reconstruction<br/>of the Real Houses",
+        "bannerTitle": "Realestate<br/>Mass Reconstruction<br/>of the Real Houses",
         "itemTitle1": "AI Automatic Modeling, Efficient Reconstruct the Real Houses",
         "itemTitle2": "Display All the Details, More Efficient for Sales and Rental Decisions",
         "itemTitle3": "Multidimensional Display the Information of Real-estate with Higher Efficiency",
         "itemTitle4": "Multifunctional Editing Tool, Let Houses Display Better"
     },
     "conductExhibition": {
-        "bannerTitle": "4DKanKan<br/>Exhibition, Participate in Exhibitions<br/>without Any Limitations",
+        "bannerTitle": "Exhibition<br/>Participate in Exhibitions<br/>without Any Limitations",
         "itemTitle1": "Online Visiting and Negotiation, Exchange Business Cards Freely",
         "itemTitle2": "No Barries to Communication, Easy to Get All the Information",
         "itemTitle3": "Reduce the Cost of Exhibitions, Promote Transactions Effectively",
         "itemTitle4": "Statistic Data Flow, Analyze User Persona"
     },
     "conductSubject": {
-        "bannerTitle": "4DKanKan<br/>Culture & Relics, Help to Create<br/>Never-ending Museums",
+        "bannerTitle": "Museum<br/>Culture & Relics,Create <br/>Never-ending Museums",
         "itemTitle1": "Digital Twin of Treasure Relics,Break the Time Limitation",
         "itemTitle2": "Various Forms of Spatial Interaction, Carrying Rich Historical Heritage",
         "itemTitle3": "Simultaneous Operation by Multi-user, Listening to Historical Stories",
@@ -51,14 +53,14 @@ module.exports = {
         item5SubItem3Title: 'The Archaeological Excavations at the Royal Cemetery of Haihunhou Kingdom in Han Dynasty'
     },
     "conductShop": {
-        "bannerTitle": "4DKanKan<br/>E-commerce,Free Shopping<br/>without Any Limitations",
+        "bannerTitle": "E-commerce<br/>Free Shopping<br/>without Any Limitations",
         "itemTitle1": "New Immersive Shopping Experience in 3D Digital Business District",
         "itemTitle2": "Shopping in the Real 3D Models through Mobile Phones",
         "itemTitle3": "Gather Online Passenger Flow and Boost Offline Economy",
         "itemTitle4": "Personal Customer Service,Real-time Communications"
     },
     "conductSecury": {
-        "bannerTitle": "4DKanKan<br/>Security Survey",
+        "bannerTitle": "Investigation<br/>Efficiently Reconstruct<br/>All Kinds of Scenes",
         "itemTitle1": "Reconstruct Disaster Scenes Efficiently,Create Comprehensive 3D Files",
         "itemTitle2": "Multifunctional Editing Tool,Improve the Communication Quality",
         "itemTitle3": "Pre-collection is Available,Reduce the Claims Disputes"

+ 1 - 1
pc/src/lang/en/modules/home.js

@@ -35,7 +35,7 @@ module.exports = {
     "plate1Item4Desc3": "High Quality Stores Live Broadcast, Real-time Online Share Quality Products.",
     "plate1Item4Desc4": "Personal AI Assistant, Real-time Online Reply.",
     "plate1Item4Desc5": "Gather Customers Together Online, Boost Offline Economy Effectively.",
-    "plate1Item5SubTitle": "Efficient Reconstruct Disaster Scenes,Create Comprehensive 3D Files",
+    "plate1Item5SubTitle": `100% Reconstruct Post-disaster Site, Make "Paperless Evidence" Come True`,
     "plate1Item5Desc1": "Efficient Reconstruct Disaster Scenes,Create Comprehensive 3D Files",
     "plate1Item5Desc2": "Pre-collection is Available,Reduce the Claims Disputes",
     "plate2Item1": "Yongzheng Palace",

+ 1 - 1
pc/src/lang/en/modules/service.js

@@ -5,6 +5,6 @@ module.exports = {
     "app": "APP Download",
     "clause": "Warranty Information",
     "appDownload": {
-        "downloadTip": "Please Scan The QR Code to Install The App."
+        "downloadTip": "In the process of using 4DKanKan Pro, you are required to control the camera by 4DKanKan Pro APP. Please search [4DKanKan Pro] in mobile APP Store or scan the QR code to install the App."
     }
 }

+ 10 - 10
pc/src/lang/index.js

@@ -5,16 +5,16 @@ import en from './en'
 
 Vue.use(VueI18n)
 
-let current = (localStorage && localStorage.getItem('language')) || '中'
-// if (!lang) {
-//     lang = window.navigator.language || window.navigator.userLanguage || null
-//     if (lang && !/^zh/.test(lang)) {
-//         console.log('自动获取浏览器语言:' + lang)
-//         lang = 'en'
-//     }else{
-//         lang = 'zh'
-//     }
-// }
+let current = (localStorage && localStorage.getItem('language'))
+if (!current) {
+  current = window.navigator.language || window.navigator.userLanguage || null
+    if (current && !/^zh/.test(current)) {
+        console.log('自动获取浏览器语言:' + current)
+        current = 'en'
+    }else{
+      current = 'zh'
+    }
+}
 const i18n = new VueI18n({
   locale: current,
   messages: {

+ 12 - 10
pc/src/lang/zh/modules/conduct.js

@@ -1,7 +1,8 @@
 module.exports = {
     "__name": "核心产品",
     "coreProduct": {
-        "bannerTitle": "核心产品",
+        "bannerTitle": "四维看看 Pro",
+        bannerSubTitle: '世界上首款消费级3D相机',
         "itemTitle1": "AI全自动精准建模,智能测距",
         "itemTitle2": "720度8K画质,身临其境",
         "itemTitle3": "HDR模式平衡明暗区域曝光",
@@ -12,21 +13,22 @@ module.exports = {
     },
     "coreTech": {
         "bannerTitle": "核心技术",
-        "itemTitle1": "空间数字化",
-        "itemText1": "记录与计算相机在拍摄时的空间位置,并提取对应的3D点云,从而获取三维空间的真实情况。",
+        bannerSubTitle: "让数字化飞入寻常百姓家",
+        "itemTitle1": "空间重建",
+        "itemText1": "「自动记录」并「精准计算」出相机在拍摄时的空间位置,「有效提取」实景对应的3D点云,从而获取三维空间的真实情况",
         "itemTitle2": "空间互动",
-        "itemText2": "自动导览 预先设定路线,球幕视频 BOX视频 增强体验的互动效果,多形式动态热点 赋以空间说话的艺术。",
+        "itemText2": "「智能追踪」导览,「高效预设」路线,可实现多人实时同屏互动,震撼球幕视频增强体验感,多形式动态热点捕捉,打造极具人性化的数字空间艺术",
         "item2Name1": "动态热点",
         "item2Name2": "互动视频",
         "item2Name3": "自动导览",
         "itemTitle3": "空间展示",
-        "itemText3": "无需插件,可在手机、 平板、PC端、VR眼镜,实现720°沉浸式漫游体验。",
-        "item3Name1": "VR",
-        "item3Name2": "网页端",
+        "itemText3": "「无需插件」即可在手机、平板、PC端、VR眼镜中实现「720°沉浸式」漫游体验",
+        "item3Name1": "VR设备",
+        "item3Name2": "PC端",
         "item3Name3": "移动端"
     },
     "conductHouse": {
-        "bannerTitle": "看房  海量复刻真房源",
+        "bannerTitle": "看房  海量复刻真房源",
         "itemTitle1": "AI自动建模,高效复刻真实房源",
         "itemTitle2": "房源资讯全方位展示,有效提高客户粘性",
         "itemTitle3": "地产资讯多维展示,提高租售决策效率",
@@ -40,7 +42,7 @@ module.exports = {
         "itemTitle4": "数据流量统计,用户画像分析"
     },
     "conductSubject": {
-        "bannerTitle": "文博·助力打造永不落幕的博物馆",
+        "bannerTitle": "文博助力打造永不落幕的博物馆",
         "itemTitle1": "珍贵陈展线上复刻,打破线下时空限制",
         "itemTitle2": "空间交互形式多样,承载丰富历史底蕴",
         "itemTitle3": "多人实时同屏互动,听专家讲述文化故事",
@@ -58,7 +60,7 @@ module.exports = {
         "itemTitle4": "私人专属客服 同屏带看实时沟通"
     },
     "conductSecury": {
-        "bannerTitle": "安防勘察",
+        "bannerTitle": "勘察 • 高效复刻各类现场",
         "itemTitle1": "高效复刻灾害现场,记录全面三维档案",
         "itemTitle2": "可将现场说明直接添加至三维空间中,提高沟通质量与工作效率",
         "itemTitle3": "支持预先采集存档,减少理赔纠纷"

+ 2 - 2
pc/src/lang/zh/modules/home.js

@@ -35,14 +35,14 @@ module.exports = {
     "plate1Item4Desc3": "好店带货直播,在线分享优质商品",
     "plate1Item4Desc4": "私人智能客服,实时在线答复",
     "plate1Item4Desc5": "汇聚线上客流,有效拉动线下经济",
-    "plate1Item5SubTitle": "高效复刻灾害现场,记录全面三维档案",
+    "plate1Item5SubTitle": "100%还原灾后现场,实现“物证无纸化”",
     "plate1Item5Desc1": "高效复刻灾害现场,记录全面三维档案",
     "plate1Item5Desc2": "支持预先采集存档,减少理赔纠纷",
     "plate2Item1": "雍正故宫",
     "plate2Item2": "小米有品",
     "plate2Item3": "华发依山郡",
     "plate2Item4": "万豪酒店",
-    "plate3Item1Title": "空间数字化",
+    "plate3Item1Title": "空间重建",
     "plate3Item1Text": "自动化三维数字重建 还原空间布局与结构",
     "plate3Item2Title": "空间互动",
     "plate3Item2Text": "自动导览 互动视频多形态动态热点",

+ 1 - 1
pc/src/lang/zh/modules/service.js

@@ -5,6 +5,6 @@ module.exports = {
     "app": "APP下载",
     "clause": "保修条款",
     appDownload: {
-      downloadTip: '使用四维看看Pro的过程中,需要下载APP控制相机。请在手机软件商店搜索“四维看看Pro”或使用手机扫描二维码安装。'
+      downloadTip: '使用四维看看Pro的过程中,需要下载APP控制相机。请在手机软件商店搜索【四维看看Pro】,或扫描下方二维码完成安装。'
     }
 }

+ 12 - 3
pc/src/page/conduct/conductHouse/index.vue

@@ -41,8 +41,8 @@ export default {
         {
           name: this.$t('conduct.conductHouse.itemTitle3'),
           img: [
-            require('@/assets/images/online/house/item-3_1.jpg'),
-            require('@/assets/images/online/house/item-3_2.jpg')
+            require('@/assets/images/online/house/item-3_1.png'),
+            require('@/assets/images/online/house/item-3_2.png')
           ],
           runAnimation: true
         },
@@ -68,9 +68,18 @@ export default {
     sequence
   },
   mounted () {
+    const ISZH = this.language === 'zh'
+    this.$set(this.sequenceArr, 2, {
+      name: this.$t('conduct.conductHouse.itemTitle3'),
+      img: [
+        ISZH ? require('@/assets/images/online/house/item-3_1.png') : require('@/assets/images/online/house/item-3_1-en.png'),
+        ISZH ? require('@/assets/images/online/house/item-3_2.png') : require('@/assets/images/online/house/item-3_2-en.png')
+      ],
+      runAnimation: true
+    })
     this.$set(this.sequenceArr, 3, {
       name: this.$t('conduct.conductHouse.itemTitle4'),
-      img: this.language === 'zh' ? require('@/assets/images/online/house/item-3.jpg') : require('@/assets/images/online/house/item-3-en.png'),
+      img: ISZH ? require('@/assets/images/online/house/item-3.jpg') : require('@/assets/images/online/house/item-3-en.png'),
       runAnimation: true
     })
   },

+ 4 - 1
pc/src/page/conduct/conductShop/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="conduct-shop">
-    <div class="banner">
+    <div class="banner" :class="{isEn: language !== 'zh'}">
       <div class="container" v-html="$t('conduct.conductShop.bannerTitle')"></div>
     </div>
     <div class="plate-w" ref="homeLayout">
@@ -74,6 +74,9 @@ export default {
     font-size: 40px;
     margin-bottom: 0;
     line-height: 56px;
+    &.isEn {
+      background-image: url(~@/assets/images/refactor/conductShop/banner-en.png);
+    }
     .container {
       display: flex;
       align-items: center;

+ 17 - 2
pc/src/page/coreProducts/index.vue

@@ -1,7 +1,10 @@
 <template>
   <div class="core-products">
     <div class="banner">
-      <div class="container">{{ $t('conduct.coreProduct.bannerTitle') }}</div>
+      <div class="container">
+        <h1>{{ $t('conduct.coreProduct.bannerTitle') }}</h1>
+        <h4 class="sub-title">{{ $t('conduct.coreProduct.bannerSubTitle') }}</h4>
+      </div>
     </div>
     <div class="" ref="homeLayout">
       <div class="plate item" v-for="(item,i) in sequenceArr" :key="i">
@@ -100,9 +103,21 @@ export default {
   height: 420px;
   background: url(~@/assets/images/core-products/banner.png) no-repeat center center;
   margin-bottom: 110px;
-  line-height: 420px;
   font-size: 40px;
   background-size: cover;
+  padding: 160px 0;
+  font-weight: 400;
+  h1 {
+    font-weight: 400;
+  }
+  .sub-title {
+    font-size: 20px;
+    margin-top: 20px;
+    font-weight: 400;
+  }
+  .container {
+    height: auto;
+  }
 }
 .item {
   padding: 50px 0;

+ 10 - 9
pc/src/page/home2/index.vue

@@ -9,7 +9,7 @@
           <p>{{ $t('home.bannerText') }}</p>
           <div class="actions-w">
             <router-link class="buy-btn" to="/mall/kankanPro">{{ $t('home.bannerBuyBtnText') }}</router-link>
-            <router-link class="action-link" to="/mall/kankanPro">{{ $t('home.bannerMoreBtn') }}</router-link>
+            <router-link class="action-link" to="/coreProducts">{{ $t('home.bannerMoreBtn') }}</router-link>
             <span class="watch-btn action-link" @click="detailVideo">{{ $t('home.bannerIntroVideo') }}</span>
           </div>
           <div class="distributor">
@@ -46,7 +46,7 @@
     </div>
     <div class="plate03 container clear">
       <h1 class="common-title">{{ $t('home.plate2Title') }}
-        <router-link to="/cases/全部" class="more">{{ $t('common.more') }}</router-link>
+        <router-link to="/cases/全部" class="more">{{ $t('common.more') }} ></router-link>
       </h1>
       <h-row class="space-list" :gutter="20">
         <h-col :span="6" class="space-item" v-for="(item,index) in space" :key="index">
@@ -71,7 +71,7 @@
     <div class="plate05 " ref="numcount">
       <div class="container">
         <h1 class="common-title">{{ $t('home.plate4Title') }}
-          <router-link to="/news" class="more">{{ $t('common.more') }}</router-link>
+          <router-link to="/news" class="more">{{ $t('common.more') }} ></router-link>
         </h1>
         <ul class="news-list">
           <li class="news-item" v-for="(item, index) in plate05List" :key="index" @click="toNewsLink(item.link)">
@@ -102,7 +102,7 @@ import vcenter from '@/components/vcenter'
 import number from '@/components/number'
 import sequence from '@/components/sequence'
 import {mapState} from 'vuex'
-import { News } from '@/../../common/data/newsData'
+import { News, EnNews } from '@/../../common/data/newsData'
 export default {
   data () {
     return {
@@ -146,7 +146,7 @@ export default {
         title: this.$t('home.plate1Item5'),
         title_sub: this.$t('home.plate1Item5'),
         desc: this.$t('home.plate1Item5SubTitle'),
-        img: require('@/assets/images/home/solutions-sec.png'),
+        img: require('@/assets/images/home/solutions-sec.jpg'),
         list: [this.$t('home.plate1Item5Desc1'), this.$t('home.plate1Item5Desc2')],
         link: '/conductSecury'
       }],
@@ -163,12 +163,12 @@ export default {
         },
         {
           text: '华发依山郡',
-          bgImg: require('@/assets/images/home/4case_03@2x.png'),
-          link: 'https://www.4dkankan.com/spc.html?m=JBx2hetpp'
+          bgImg: require('@/assets/images/home/4case_03@2x.jpg'),
+          link: 'https://www.4dkankan.com/spc.html?m=t-VJjZMUl'
         },
         {
           text: '万豪酒店',
-          bgImg: require('@/assets/images/home/4case_04@2x.png'),
+          bgImg: require('@/assets/images/home/4case_04@2x.jpg'),
           link: 'https://www.4dkankan.com/showPC.html?m=PoCGXVFP'
         }
       ],
@@ -192,7 +192,7 @@ export default {
           value: 'type3'
         }
       ],
-      plate05List: News.slice(0, 4)
+      plate05List: []
     }
   },
   methods: {
@@ -242,6 +242,7 @@ export default {
     }
   },
   mounted () {
+    this.plate05List = this.language === 'zh' ? News.slice(0,4) : EnNews.slice(0,4)
     let open = this.$route.query.open
     setTimeout(() => {
       if (open && !this.token) {

+ 2 - 1
pc/src/page/home2/style.scss

@@ -174,7 +174,8 @@
     .solution-bg {
       float: left;
       background-position: center center;
-      background-size: cover;
+      background-size: 736px auto;
+      background-repeat: no-repeat;
       width: 736px;
       height: 455px;
     }

+ 1 - 1
pc/src/page/layout/aside/index.vue

@@ -5,7 +5,7 @@
       <div>
         <div class="clause-img" ref="clause">
           <div ref="clauseImg">
-            <img :src="cluseType==='cart'?`${$cdn}images/cluse-long1.jpg`:`${$cdn}images/${language==='en'?'cluse-long-en':'cluse-long'}.jpg`" alt>
+            <img :src="cluseType==='cart'?`${$cdn}images/cluse-long1v2.jpg`:`${$cdn}images/${language==='en'?'cluse-long-en':'cluse-long'}.jpg`" alt>
             <img v-if="cluseType!=='cart'&&language==='en'" :src="`${$cdn}images/cluse-long-en1.jpg`" alt>
             <img v-if="cluseType!=='cart'&&language==='en'" :src="`${$cdn}images/cluse-long-en2.jpg`" alt>
           </div>

+ 5 - 6
pc/src/page/layout/footer.vue

@@ -48,9 +48,6 @@
           <p class="relevant-1">Copyright © 2020 4DAGE Co., Ltd. All rights reserved. </p>
           <p class="relevant-2"><a class="a_class">粤ICP备14078495号-3</a></p>
         </div>
-        <p>Copyright © 2020 4DAGE Co., Ltd. All rights reserved. </p>
-        <p><a class="a_class" href="https://beian.miit.gov.cn" target="_blank">粤ICP备14078495号-3</a></p>
-        <p>珠海市四维时代网络科技有限公司</p>
       </div>
     </div>
   </div>
@@ -190,16 +187,18 @@ export default {
             text-decoration: underline;
             display: inline-block;
             line-height: 25px;
-
+            
             &:nth-child(2) {
               margin: 0 42px;
             }
           }
         }
-
+        a {
+          color: #909090;
+        }
         p {
           font-size: 14px;
-          color: #ffffff;
+          color: #909090;
           margin-bottom: 8px;
         }
       }

+ 29 - 3
pc/src/page/location/index.vue

@@ -1,7 +1,10 @@
 <template>
   <div class="conduct-tech" ref="container">
     <div class="banner">
-      <div class="container">{{ $t('conduct.coreTech.bannerTitle') }}</div>
+      <div class="container">
+        <h1>{{ $t('conduct.coreTech.bannerTitle') }}</h1>
+        <h5 class="sub-title">{{ $t('conduct.coreTech.bannerSubTitle') }}</h5>
+      </div>
     </div>
     <div class="plate-w" ref="homeLayout">
       <div class="plate item" v-for="(item,i) in sequenceArr" :key="i" id="type1">
@@ -80,7 +83,7 @@ export default {
         },
         {
           name: this.$t('conduct.coreTech.item2Name2'),
-          iframeLink: 'https://www.4dkankan.com/spc.html?m=B4T8r0kk6'
+          iframeLink: 'https://www.4dkankan.com/spc.html?m=1TFy0kSQZ'
         },
         {
           name: this.$t('conduct.coreTech.item2Name3'),
@@ -106,7 +109,18 @@ export default {
   components: {
     sequence
   },
+  computed: {
+    ...mapState({
+      language: state => state.language.current
+    })
+  },
   mounted () {
+    if (this.language !== 'zh') {
+      this.items_2 = this.items_2.map(item => {
+        item.iframeLink = item.iframeLink + '&lang=en'
+        return item
+      })
+    }
   },
   destroyed () {
   },
@@ -118,9 +132,21 @@ export default {
     width: 100%;
     height: 420px;
     background: url(~@/assets/images/refactor/coreTech/banner.png) no-repeat center center;
-    line-height: 420px;
     font-size: 40px;
     margin-bottom: 0;
+    padding: 160px 0;
+    font-weight: 400;
+    h1 {
+      font-weight: 400;
+    }
+    .sub-title {
+      font-size: 20px;
+      margin-top: 20px;
+      font-weight: 400;
+    }
+    .container {
+      height: auto;
+    }
   }
   .item {
     padding: 110px 0 110px;

+ 1 - 0
pc/src/page/login/components/login.vue

@@ -169,6 +169,7 @@ export default {
     font-size: 30px;
     line-height: 60px;
     cursor: pointer;
+    top: 0;
   }
 }
 .password {

+ 1 - 0
pc/src/page/mall/cart/index.vue

@@ -439,6 +439,7 @@ export default {
   .noGoods {
     width: 100%;
     height: 550px;
+    background: url(~@/assets/images/refactor/mall/cartNoGoods.jpg) no-repeat center 22px;
     background: image-set(url(~@/assets/images/refactor/mall/cartNoGoods.jpg) 1x, url(~@/assets/images/refactor/mall/cartNoGoods@2x.jpg) 2x) no-repeat center 22px;
     position: relative;
     border-top: 1px solid #E4E4E4;

+ 2 - 2
pc/src/page/mall/confirm/index.vue

@@ -73,7 +73,7 @@
       <div>
         <div class="clause-img" ref="clause">
           <div ref="clauseImg">
-            <img :src="`${$cdn}images/cluse-long1.jpg`" alt>
+            <img :src="`${$cdn}images/cluse-long1v2.jpg`" alt>
           </div>
         </div>
         <p> </p>
@@ -139,7 +139,7 @@ export default {
   methods: {
     async pay () {
       if (!this.checked) {
-        this.$alert(this.$t('login.agreeXieyi'))
+        this.$alert('请阅读并同意四维看看销售协议')
         return
       }
       if (!this.address) {

+ 1 - 0
pc/src/page/mall/kankanPro/index.vue

@@ -10,6 +10,7 @@
          />
         <div class="layout">
           <img class="pro-logo" :src="language==='en'?`${$cdn}images/pro-logo-en.png`:`${$cdn}images/pro-logo.png`" alt="">
+          <p class="sub b-label" v-html="langPurchase.dec"></p>
           <p class="price">
              {{langPurchase.price}}
           </p>

+ 2 - 2
pc/src/page/mall/kankanPro/style.scss

@@ -63,8 +63,8 @@
     }
     .price{
       margin: 20px 0 20px;
-      font-size: 40px;
-      line-height: 50px;
+      font-size: 28px;
+      line-height: 28px;
       color: rgba(0,0,0,.7);
       font-weight: 700;
       border-bottom: 1px solid #e2e2e2;

+ 0 - 0
pc/src/page/mall/pay/index.vue


Някои файлове не бяха показани, защото твърде много файлове са промени