Explorar o código

feat: 编译定制化、配置环境变量读取

zhangyuhan hai 1 ano
pai
achega
a6867d2d49

+ 0 - 1
.env.development

@@ -1,4 +1,3 @@
-TARO_APP_ID='wxd9e11d95ceecf941'
 TARO_APP_CODE='wy_zbxm'
 TARO_APP_BASE_API='https://jybx2-webtest.jydev.jianyu360.com'
 TARO_APP_WEB_BASE='https://jybx2-webtest.jydev.jianyu360.com'

+ 0 - 1
.env.production

@@ -1,4 +1,3 @@
-TARO_APP_ID='wxd9e11d95ceecf941'
 TARO_APP_CODE='wy_zbxm'
 TARO_APP_BASE_API='https://jybx2-webtest.jydev.jianyu360.com'
 TARO_APP_WEB_BASE='https://jybx2-webtest.jydev.jianyu360.com'

+ 6 - 4
package.json

@@ -10,7 +10,8 @@
     "framework": "Vue"
   },
   "scripts": {
-    "pre:env": "node script/replaceEnv.mjs",
+    "pre:env": "node script/index.mjs ",
+    "build": "NODE_ENV=production npm run build:weapp",
     "build:weapp": "npm run pre:env && taro build --type weapp",
     "build:h5": "taro build --type h5",
     "dev:pord-weapp": "NODE_ENV=production npm run build:weapp -- --watch",
@@ -36,15 +37,16 @@
     "@tarojs/shared": "3.6.30",
     "@tarojs/taro": "3.6.30",
     "axios": "^1.7.2",
+    "dayjs": "1.11.11",
     "lodash": "^4.17.21",
+    "qs": "^6.12.1",
     "vant": "2.13.2",
     "vue": "2.7.16",
     "vue-template-compiler": "2.7.16",
-    "vuex": "^3.0.0",
-    "dayjs": "1.11.11",
-    "qs": "^6.12.1"
+    "vuex": "^3.0.0"
   },
   "devDependencies": {
+    "dotenv": "^16.4.5",
     "@babel/core": "^7.8.0",
     "@tarojs/cli": "3.6.30",
     "@tarojs/test-utils-vue": "^0.1.1",

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 226
project-config/index.js


+ 330 - 0
script/config/id.config.mjs

@@ -0,0 +1,330 @@
+// // 最新采购
+// themeColor: '#0ec684',
+// // 采购意向
+// themeColor: '#ffa218',
+// // 临期项目
+// themeColor: '#fa6f33',
+// // 甲方库
+// themeColor: '#296cee',
+
+/**
+ * 全部配置项信息
+ */
+
+const searchTabbars = [
+  {
+    key: 'home',
+    text: '订阅',
+    path: '/pages/tabbar/home/index',
+    icon: 'icon-a-Property1subscribe',
+    activeIcon: 'icon-a-Property1subscribe',
+    badge: ''
+  },
+  {
+    key: 'search',
+    text: '搜索',
+    path: '/pages/tabbar/search/index',
+    icon: 'icon-a-Property1search',
+    activeIcon: 'icon-a-Property1search',
+    badge: ''
+  },
+  {
+    key: 'box',
+    text: '全部商机',
+    path: '/pages/tabbar/box/index',
+    icon: 'icon-a-Property1box',
+    activeIcon: 'icon-a-Property1box',
+    badge: 'HOT'
+  },
+  {
+    key: 'mine',
+    text: '我的',
+    path: '/pages/tabbar/mine/index',
+    icon: 'icon-a-Property1mine',
+    activeIcon: 'icon-a-Property1mine',
+    badge: ''
+  }
+]
+
+const unitTabbars = [
+  {
+    key: 'home',
+    text: '甲方库',
+    path: '/pages/tabbar/home/index',
+    icon: 'icon-a-Property1lib',
+    activeIcon: 'icon-a-Property1lib',
+    badge: ''
+  },
+  {
+    key: 'search',
+    text: '搜索',
+    path: '/pages/tabbar/search/index',
+    icon: 'icon-a-Property1search',
+    activeIcon: 'icon-a-Property1search',
+    badge: ''
+  },
+  {
+    key: 'monitor',
+    text: '监控',
+    path: '/pages/tabbar/monitor/index',
+    icon: 'icon-a-Property1monitor',
+    activeIcon: 'icon-a-Property1monitor',
+    badge: ''
+  },
+  {
+    key: 'box',
+    text: '全部商机',
+    path: '/pages/tabbar/box/index',
+    icon: 'icon-a-Property1box',
+    activeIcon: 'icon-a-Property1box',
+    badge: 'HOT'
+  },
+  {
+    key: 'mine',
+    text: '我的',
+    path: '/pages/tabbar/mine/index',
+    icon: 'icon-a-Property1mine',
+    activeIcon: 'icon-a-Property1mine',
+    badge: ''
+  }
+]
+
+const 商机_物业商机 = [
+  {
+    title: '物业商机',
+    desc: '专注物业领域全部商机,市场拓展、挖掘超前商机必备!',
+    tip: '河南省已更新 56492个 商机项目',
+    rightTip: '解锁全部',
+    icon: '/images/logo/wy.png',
+    class: 'light',
+    path: '/pages/order/create/index'
+  },
+  {
+    title: '采购意向',
+    desc: '了解甲方单位年度采购计划,提前1-3个月跟进项目',
+    tip: '您的会员权益是免费用户',
+    rightTip: '免费查看项目',
+    icon: '/images/logo/cgyx.png',
+    id: 'wx37f06c38292f7d82',
+    path: '/pages/tabbar/home/index'
+  },
+  {
+    title: '最新采购',
+    desc: '掌握当地最新发布的招标商机,实时更新',
+    tip: '您的会员权益是免费用户',
+    rightTip: '开通会员',
+    icon: '/images/logo/zxcg.png',
+    id: 'wxd9e11d95ceecf941',
+    path: '/pages/tabbar/home/index'
+  },
+  {
+    title: '临期项目',
+    desc: '发现未来3年即将到期更换供应商的招标项目',
+    tip: '您的会员权益是免费用户',
+    rightTip: '免费查看项目',
+    icon: '/images/logo/lqxm.png',
+    id: 'wx37f06c38292f7d82',
+    path: '/pages/tabbar/home/index'
+  },
+  {
+    title: '甲方库',
+    desc: '掌握近十年全部招标甲方信息,深入发掘潜在商机',
+    tip: '您的会员权益是免费用户',
+    rightTip: '免费查看项目',
+    icon: '/images/logo/jfk.png',
+    id: 'wx37f06c38292f7d82',
+    path: '/pages/tabbar/home/index'
+  },
+]
+
+const AppInfoMaps = {
+  'wy_zbxm': {
+    project: {
+      appId: 'wxd9e11d95ceecf941',
+      appName: '物业 | 最新采购',
+      appCode: 'wy_zbxm',
+      appType: '招标信息',
+      appDesc: '',
+      payAppId: 'wxd9e11d95ceecf941',
+      appIcon: '/images/logo/zxcg.png',
+      themeColor: '#0ec684',
+    },
+    power: {
+      canMonitor: false
+    },
+    products: [
+      {
+        key: 'now',
+        label: '正在招标+采购意向',
+        tip: '该会员适用于正在招标、采购意向小程序',
+        ad: 'mini-app-buy-order-desc'
+      },
+      {
+        key: 'all',
+        label: '综合服务',
+        tip: '该会员适用于正在招标、采购意向、临期项目、客户目录小程序',
+        ad: 'mini-app-buy-all-order-desc'
+      }
+    ],
+    shareInfo: {
+      home: {
+        title: '全国物业项目库,实时获取物业采购商机!',
+        img: ''
+      },
+      search: {
+        title: '快来轻松筛查最新招标采购商机!',
+      },
+      detail: {
+        title: '【采购商机】#采购单位#物业服务项目采购'
+      }
+    },
+    boxInfo: 商机_物业商机
+  },
+  'wy_cgyx': {
+    project: {
+      appId: 'wxd9e11d95ceecf941',
+      appName: '物业 | 采购意向',
+      appCode: 'wy_cgyx',
+      appType: '采购意向',
+      appDesc: '',
+      payAppId: 'wxd9e11d95ceecf941',
+      appIcon: '/images/logo/cgyx.png',
+      themeColor: '#ffa218',
+    },
+    power: {
+      canMonitor: false
+    },
+    products: [
+      {
+        key: 'now',
+        label: '正在招标+采购意向',
+        tip: '该会员适用于正在招标、采购意向小程序',
+        ad: 'mini-app-buy-order-desc'
+      },
+      {
+        key: 'all',
+        label: '综合服务',
+        tip: '该会员适用于正在招标、采购意向、临期项目、客户目录小程序',
+        ad: 'mini-app-buy-all-order-desc'
+      }
+    ],
+    shareInfo: {
+      home: {
+        title: '全国物业项目库,实时获取物业采购商机!',
+        img: ''
+      },
+      search: {
+        title: '快来轻松筛查最新招标采购商机!',
+      },
+      detail: {
+        title: '【采购商机】#采购单位#物业服务项目采购'
+      }
+    },
+    boxInfo: 商机_物业商机
+  },
+  'wy_hydqxm': {
+    project: {
+      appId: 'wxd9e11d95ceecf941',
+      appName: '物业 | 临期项目',
+      appCode: 'wy_hydqxm',
+      appType: '采购意向',
+      appDesc: '',
+      payAppId: 'wxd9e11d95ceecf941',
+      appIcon: '/images/logo/lqxm.png',
+      themeColor: '#fa6f33',
+    },
+    power: {
+      canMonitor: false
+    },
+    products: [
+      {
+        key: 'now',
+        label: '临期项目',
+        tip: '该会员适用于临期项目小程序',
+        ad: 'mini-app-buy-order-desc'
+      },
+      {
+        key: 'all',
+        label: '综合服务',
+        tip: '该会员适用于正在招标、采购意向、临期项目、客户目录小程序',
+        ad: 'mini-app-buy-all-order-desc'
+      }
+    ],
+    shareInfo: {
+      home: {
+        title: '全国物业临期项目库,找临期商机、找人脉!',
+        img: ''
+      },
+      search: {
+        title: '查看临期项目商机!',
+      },
+      detail: {
+        title: '【临期项目商机】#采购单位#物业服务即将到期'
+      }
+    },
+    boxInfo: 商机_物业商机
+  },
+  'wy_qzcgf': {
+    project: {
+      appId: 'wxd9e11d95ceecf941',
+      appName: '物业 | 甲方库',
+      appCode: 'wy_qzcgf',
+      appType: '甲方库',
+      appDesc: '',
+      payAppId: 'wxd9e11d95ceecf941',
+      appIcon: '/images/logo/jfk.png',
+      themeColor: '#296cee',
+    },
+    power: {
+      canMonitor: true
+    },
+    products: [
+      {
+        key: 'now',
+        label: '甲方库',
+        tip: '该会员适用于甲方库小程序',
+        ad: 'mini-app-buy-order-desc'
+      },
+      {
+        key: 'all',
+        label: '综合服务',
+        tip: '该会员适用于正在招标、采购意向、临期项目、客户目录小程序',
+        ad: 'mini-app-buy-all-order-desc'
+      }
+    ],
+    shareInfo: {
+      home: {
+        title: '全国最全物业业主库,市场拓客神器!',
+        img: ''
+      },
+      search: {
+        title: '最全物业业主信息查询!',
+      },
+      detail: {
+        title: '【业主分析】#采购单位#采购分析'
+      }
+    },
+    boxInfo: 商机_物业商机
+  }
+}
+
+function getAppInfo (appCode, config = {}) {
+  const ActiveAppConfig = AppInfoMaps[appCode]
+  const AppInfo = Object.assign({
+    project: {
+      appCode
+    },
+    tabbars: ActiveAppConfig.power.canMonitor ? unitTabbars : searchTabbars
+  }, ActiveAppConfig, config)
+
+  const appConfig = {
+    projectInfo: AppInfo.project,
+    shareInfo: AppInfo.shareInfo,
+    modulePower: AppInfo.power,
+    projectBuyInfo: AppInfo.products,
+    boxInfo: AppInfo.boxInfo,
+    tabbars: AppInfo.tabbars
+  }
+  return appConfig
+}
+export default getAppInfo

+ 8 - 0
script/index.mjs

@@ -0,0 +1,8 @@
+import { config } from 'dotenv';
+import { replaceEnvCode } from "./replaceEnv.mjs";
+
+config({ path: process.env.NODE_ENV === 'production' ? './.env.production' : './.env.development' });
+
+console.log('运行时:', process.env.NODE_ENV, process.env.TARO_APP_CODE)
+
+replaceEnvCode(process.env.TARO_APP_CODE)

+ 11 - 6
script/replaceEnv.mjs

@@ -1,5 +1,6 @@
 import * as fs from 'fs'
 import path from 'path'
+import getAppInfo from "./config/id.config.mjs";
 
 // 同步读取文件内容
 function readFileSync(filePath) {
@@ -34,13 +35,17 @@ function replaceStyle (color) {
   replaceTextInFileSync(path.resolve('./src/assets/env_style/less.less'), '#2ABED1', color, path.resolve('./script/template/env_style/less.less'))
 }
 
+function replaceAppConfig (data) {
+  replaceTextInFileSync(path.resolve('./project-config/index.js'), 'const appConfig = {}', `const appConfig = ${JSON.stringify(data)}`, path.resolve('./script/template/project-config.js'))
+}
+
 
-function replaceEnvCode () {
-  // 替换AppId
-  // 替换主题色、图标、全部商机列表配置
-  replaceStyle('#0ec684')
-  // 替换 Tabbar 配置
+export function replaceEnvCode (appCode) {
+  const appInfo = getAppInfo(appCode)
+  // 替换AppId、Tabbar、图标、全部商机列表配置
+  replaceAppConfig(appInfo)
+  // 替换主题色
+  replaceStyle(appInfo.projectInfo.themeColor)
   // 替换请求域名、资源域名
 }
 
-replaceEnvCode()

+ 3 - 0
script/template/project-config.js

@@ -0,0 +1,3 @@
+const appConfig = {}
+
+export default appConfig

+ 3 - 3
src/api/service.js

@@ -1,10 +1,10 @@
 import axios from "axios";
+import appConfig from "../../project-config";
 
 const request = axios.create({
   headers: {
-    AppId: process.env.TARO_APP_ID,
-    MiniprogramCode: process.env.TARO_APP_CODE,
-    Sign: ''
+    AppId: appConfig.projectInfo.appId,
+    MiniprogramCode: appConfig.projectInfo.appCode
   },
   baseURL: process.env.TARO_APP_BASE_API
 });

+ 1 - 1
src/pages/order/create/index.vue

@@ -219,7 +219,7 @@ export default {
       return this.activeTabIndex === 1
     },
     tabs () {
-      return this.appConfig.projectBuyInfo.products
+      return this.appConfig.projectBuyInfo
     },
     activeTabItem () {
       return this.tabs[this.activeTabIndex]

+ 1 - 0
src/pages/tabbar/box/index.vue

@@ -36,6 +36,7 @@ export default {
     formatBoxList () {
       const result = this.list.map(v => {
         v.self = v.id === this.miniEnv.appId
+        v.icon = process.env.TARO_APP_WEB_BASE + v.icon
         if (v.self) {
           v.afterTitle = '您当前所在'
           v.rightTip = ''

+ 1 - 1
yarn.lock

@@ -4780,7 +4780,7 @@ dotenv-expand@^9.0.0:
   resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-9.0.0.tgz#1fd37e2cd63ea0b5f7389fb87256efc38b035b26"
   integrity sha512-uW8Hrhp5ammm9x7kBLR6jDfujgaDarNA02tprvZdyrJ7MpdzD1KyrIHG4l+YoC2fJ2UcdFdNWNWIjt+sexBHJw==
 
-dotenv@^16.0.3:
+dotenv@^16.0.3, dotenv@^16.4.5:
   version "16.4.5"
   resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
   integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio