DESKTOP-O04BTUJ\muzen 3 éve
commit
799f183406
21 módosított fájl, 36920 hozzáadás és 0 törlés
  1. 11 0
      .env.development
  2. 8 0
      .env.production
  3. 10 0
      .env.staging
  4. 23 0
      .gitignore
  5. 19 0
      README.md
  6. 63 0
      babel.config.js
  7. 36198 0
      package-lock.json
  8. 106 0
      package.json
  9. 22 0
      postcss.config.js
  10. 28 0
      public/index.html
  11. 21 0
      src/App.vue
  12. 14 0
      src/main.js
  13. 95 0
      src/manifest.json
  14. 27 0
      src/pages.json
  15. 85 0
      src/pages/index/detail.vue
  16. 61 0
      src/pages/index/index.vue
  17. BIN
      src/static/logo.png
  18. 76 0
      src/uni.scss
  19. 41 0
      src/utils/request.js
  20. 9 0
      tsconfig.json
  21. 3 0
      vue.config.js

+ 11 - 0
.env.development

@@ -0,0 +1,11 @@
+# 页面标题
+VUE_APP_TITLE = 云动创想
+
+# 开发环境配置
+ENV = 'development'
+
+# Ohplay音乐管理系统/开发环境
+VUE_APP_BASE_API = '/dev-api'
+
+# 路由懒加载
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 8 - 0
.env.production

@@ -0,0 +1,8 @@
+# 页面标题
+VUE_APP_TITLE = Ohplay音乐管理系统
+
+# 生产环境配置
+ENV = 'production'
+
+# Ohplay音乐管理系统/生产环境
+VUE_APP_BASE_API = '/prod-api'

+ 10 - 0
.env.staging

@@ -0,0 +1,10 @@
+# 页面标题
+VUE_APP_TITLE = Ohplay音乐管理系统
+
+NODE_ENV = production
+
+# 测试环境配置
+ENV = 'staging'
+
+# Ohplay音乐管理系统/测试环境
+VUE_APP_BASE_API = '/stage-api'

+ 23 - 0
.gitignore

@@ -0,0 +1,23 @@
+.DS_Store
+node_modules/
+unpackage/
+dist/
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.project
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw*

+ 19 - 0
README.md

@@ -0,0 +1,19 @@
+# package_h5
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).

+ 63 - 0
babel.config.js

@@ -0,0 +1,63 @@
+const plugins = []
+
+if (process.env.UNI_OPT_TREESHAKINGNG) {
+  plugins.push(require('@dcloudio/vue-cli-plugin-uni-optimize/packages/babel-plugin-uni-api/index.js'))
+}
+
+if (
+  (
+    process.env.UNI_PLATFORM === 'app-plus' &&
+    process.env.UNI_USING_V8
+  ) ||
+  (
+    process.env.UNI_PLATFORM === 'h5' &&
+    process.env.UNI_H5_BROWSER === 'builtin'
+  )
+) {
+  const path = require('path')
+
+  const isWin = /^win/.test(process.platform)
+
+  const normalizePath = path => (isWin ? path.replace(/\\/g, '/') : path)
+
+  const input = normalizePath(process.env.UNI_INPUT_DIR)
+  try {
+    plugins.push([
+      require('@dcloudio/vue-cli-plugin-hbuilderx/packages/babel-plugin-console'),
+      {
+        file (file) {
+          file = normalizePath(file)
+          if (file.indexOf(input) === 0) {
+            return path.relative(input, file)
+          }
+          return false
+        }
+      }
+    ])
+  } catch (e) {}
+}
+
+process.UNI_LIBRARIES = process.UNI_LIBRARIES || ['@dcloudio/uni-ui']
+process.UNI_LIBRARIES.forEach(libraryName => {
+  plugins.push([
+    'import',
+    {
+      'libraryName': libraryName,
+      'customName': (name) => {
+        return `${libraryName}/lib/${name}/${name}`
+      }
+    }
+  ])
+})
+module.exports = {
+  presets: [
+    [
+      '@vue/app',
+      {
+        modules: 'commonjs',
+        useBuiltIns: process.env.UNI_PLATFORM === 'h5' ? 'usage' : 'entry'
+      }
+    ]
+  ],
+  plugins
+}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 36198 - 0
package-lock.json


+ 106 - 0
package.json

@@ -0,0 +1,106 @@
+{
+  "name": "package_h5",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "npm run dev:h5",
+    "build": "npm run build:h5",
+    "build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build",
+    "build:custom": "cross-env NODE_ENV=production uniapp-cli custom",
+    "build:h5": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build",
+    "build:mp-360": "cross-env NODE_ENV=production UNI_PLATFORM=mp-360 vue-cli-service uni-build",
+    "build:mp-alipay": "cross-env NODE_ENV=production UNI_PLATFORM=mp-alipay vue-cli-service uni-build",
+    "build:mp-baidu": "cross-env NODE_ENV=production UNI_PLATFORM=mp-baidu vue-cli-service uni-build",
+    "build:mp-jd": "cross-env NODE_ENV=production UNI_PLATFORM=mp-jd vue-cli-service uni-build",
+    "build:mp-kuaishou": "cross-env NODE_ENV=production UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build",
+    "build:mp-lark": "cross-env NODE_ENV=production UNI_PLATFORM=mp-lark vue-cli-service uni-build",
+    "build:mp-qq": "cross-env NODE_ENV=production UNI_PLATFORM=mp-qq vue-cli-service uni-build",
+    "build:mp-toutiao": "cross-env NODE_ENV=production UNI_PLATFORM=mp-toutiao vue-cli-service uni-build",
+    "build:mp-weixin": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
+    "build:quickapp-native": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-native vue-cli-service uni-build",
+    "build:quickapp-webview": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview vue-cli-service uni-build",
+    "build:quickapp-webview-huawei": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build",
+    "build:quickapp-webview-union": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build",
+    "dev:app-plus": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch",
+    "dev:custom": "cross-env NODE_ENV=development uniapp-cli custom",
+    "dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
+    "dev:mp-360": "cross-env NODE_ENV=development UNI_PLATFORM=mp-360 vue-cli-service uni-build --watch",
+    "dev:mp-alipay": "cross-env NODE_ENV=development UNI_PLATFORM=mp-alipay vue-cli-service uni-build --watch",
+    "dev:mp-baidu": "cross-env NODE_ENV=development UNI_PLATFORM=mp-baidu vue-cli-service uni-build --watch",
+    "dev:mp-jd": "cross-env NODE_ENV=development UNI_PLATFORM=mp-jd vue-cli-service uni-build --watch",
+    "dev:mp-kuaishou": "cross-env NODE_ENV=development UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build --watch",
+    "dev:mp-lark": "cross-env NODE_ENV=development UNI_PLATFORM=mp-lark vue-cli-service uni-build --watch",
+    "dev:mp-qq": "cross-env NODE_ENV=development UNI_PLATFORM=mp-qq vue-cli-service uni-build --watch",
+    "dev:mp-toutiao": "cross-env NODE_ENV=development UNI_PLATFORM=mp-toutiao vue-cli-service uni-build --watch",
+    "dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch",
+    "dev:quickapp-native": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-native vue-cli-service uni-build --watch",
+    "dev:quickapp-webview": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview vue-cli-service uni-build --watch",
+    "dev:quickapp-webview-huawei": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build --watch",
+    "dev:quickapp-webview-union": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build --watch",
+    "info": "node node_modules/@dcloudio/vue-cli-plugin-uni/commands/info.js",
+    "serve:quickapp-native": "node node_modules/@dcloudio/uni-quickapp-native/bin/serve.js",
+    "test:android": "cross-env UNI_PLATFORM=app-plus UNI_OS_NAME=android jest -i",
+    "test:h5": "cross-env UNI_PLATFORM=h5 jest -i",
+    "test:ios": "cross-env UNI_PLATFORM=app-plus UNI_OS_NAME=ios jest -i",
+    "test:mp-baidu": "cross-env UNI_PLATFORM=mp-baidu jest -i",
+    "test:mp-weixin": "cross-env UNI_PLATFORM=mp-weixin jest -i"
+  },
+  "dependencies": {
+    "@dcloudio/uni-app-plus": "^2.0.1-33920220314002",
+    "@dcloudio/uni-h5": "^2.0.1-33920220314002",
+    "@dcloudio/uni-helper-json": "*",
+    "@dcloudio/uni-i18n": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-360": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-alipay": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-baidu": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-jd": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-kuaishou": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-lark": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-qq": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-toutiao": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-vue": "^2.0.1-33920220314002",
+    "@dcloudio/uni-mp-weixin": "^2.0.1-33920220314002",
+    "@dcloudio/uni-quickapp-native": "^2.0.1-33920220314002",
+    "@dcloudio/uni-quickapp-webview": "^2.0.1-33920220314002",
+    "@dcloudio/uni-stat": "^2.0.1-33920220314002",
+    "@dcloudio/uni-ui": "^1.4.12",
+    "@vue/shared": "^3.0.0",
+    "core-js": "^3.6.5",
+    "flyio": "^0.6.2",
+    "regenerator-runtime": "^0.12.1",
+    "vue": "^2.6.11",
+    "vuex": "^3.2.0"
+  },
+  "devDependencies": {
+    "@babel/runtime": "~7.12.0",
+    "@dcloudio/types": "*",
+    "@dcloudio/uni-automator": "^2.0.1-33920220314002",
+    "@dcloudio/uni-cli-i18n": "^2.0.1-33920220314002",
+    "@dcloudio/uni-cli-shared": "^2.0.1-33920220314002",
+    "@dcloudio/uni-migration": "^2.0.1-33920220314002",
+    "@dcloudio/uni-template-compiler": "^2.0.1-33920220314002",
+    "@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.1-33920220314002",
+    "@dcloudio/vue-cli-plugin-uni": "^2.0.1-33920220314002",
+    "@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.1-33920220314002",
+    "@dcloudio/webpack-uni-mp-loader": "^2.0.1-33920220314002",
+    "@dcloudio/webpack-uni-pages-loader": "^2.0.1-33920220314002",
+    "@vue/cli-plugin-babel": "~4.5.15",
+    "@vue/cli-service": "~4.5.15",
+    "babel-plugin-import": "^1.11.0",
+    "cross-env": "^7.0.2",
+    "jest": "^25.4.0",
+    "mini-types": "*",
+    "miniprogram-api-typings": "*",
+    "postcss-comment": "^2.0.0",
+    "sass": "^1.49.9",
+    "sass-loader": "^10.1.1",
+    "vue-template-compiler": "^2.6.11"
+  },
+  "browserslist": [
+    "Android >= 4.4",
+    "ios >= 9"
+  ],
+  "uni-app": {
+    "scripts": {}
+  }
+}

+ 22 - 0
postcss.config.js

@@ -0,0 +1,22 @@
+const path = require('path')
+module.exports = {
+  parser: require('postcss-comment'),
+  plugins: [
+    require('postcss-import')({
+      resolve (id, basedir, importOptions) {
+        if (id.startsWith('~@/')) {
+          return path.resolve(process.env.UNI_INPUT_DIR, id.substr(3))
+        } else if (id.startsWith('@/')) {
+          return path.resolve(process.env.UNI_INPUT_DIR, id.substr(2))
+        } else if (id.startsWith('/') && !id.startsWith('//')) {
+          return path.resolve(process.env.UNI_INPUT_DIR, id.substr(1))
+        }
+        return id
+      }
+    }),
+    require('autoprefixer')({
+      remove: process.env.UNI_PLATFORM !== 'h5'
+    }),
+    require('@dcloudio/vue-cli-plugin-uni/packages/postcss')
+  ]
+}

+ 28 - 0
public/index.html

@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+    <head>
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <title>
+            <%= htmlWebpackPlugin.options.title %>
+        </title>
+        <script>
+            document.addEventListener('DOMContentLoaded', function() {
+                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
+            })
+            var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
+            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+        </script>
+        <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
+    </head>
+
+    <body>
+        <noscript>
+            <strong>Please enable JavaScript to continue.</strong>
+        </noscript>
+        <div id="app"></div>
+        <!-- built files will be auto injected -->
+    </body>
+
+</html>

+ 21 - 0
src/App.vue

@@ -0,0 +1,21 @@
+<script>
+	export default {
+		onLaunch: function() {
+		},
+		onShow: function() {
+		},
+		onHide: function() {
+		}
+	}
+</script>
+
+<style>
+	/*每个页面公共css */
+	body{
+		background: #eee;
+	}
+
+	view{
+		box-sizing: border-box;
+	}
+</style>

+ 14 - 0
src/main.js

@@ -0,0 +1,14 @@
+import Vue from 'vue'
+import App from './App'
+import { request } from './utils/request'
+
+Vue.config.productionTip = false
+
+Vue.prototype.$request = request
+
+App.mpType = 'app'
+
+const app = new Vue({
+  ...App
+})
+app.$mount()

+ 95 - 0
src/manifest.json

@@ -0,0 +1,95 @@
+{
+	"name": "",
+	"appid": "",
+	"description": "",
+	"versionName": "1.0.0",
+	"versionCode": "100",
+	"transformPx": false,
+	"app-plus": { /* 5+App特有相关 */
+		"usingComponents": true,
+		"splashscreen": {
+			"alwaysShowBeforeRender": true,
+			"waiting": true,
+			"autoclose": true,
+			"delay": 0
+		},
+		"modules": { /* 模块配置 */
+
+		},
+		"distribute": { /* 应用发布信息 */
+			"android": { /* android打包配置 */
+				"permissions": ["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+				]
+			},
+			"ios": { /* ios打包配置 */
+
+			},
+			"sdkConfigs": { /* SDK配置 */
+
+			}
+		}
+	},
+	"h5":{
+		"router":{
+			"mode": "hash",
+			"base": "./"
+		},
+		"devServer":{
+			"port": 8080,
+			"disableHostCheck": true,
+			"proxy":{
+				"/device": {
+					"target": "https://o3tapi.radio1964.com",
+					"changeOrigin": true,
+					"secure": false,
+					"pathRewrite": {
+						"^/device": ""
+					}
+				}
+			}
+		}
+	},
+	"quickapp": { /* 快应用特有相关 */
+
+	},
+	"mp-weixin": { /* 微信小程序特有相关 */
+		"appid": "",
+		"setting": {
+			"urlCheck": false
+		},
+		"usingComponents": true
+	},
+	"mp-alipay" : {
+	  "usingComponents" : true
+  },
+  "mp-baidu" : {
+    "usingComponents" : true
+  },
+  "mp-toutiao" : {
+    "usingComponents" : true
+  },
+  "mp-qq" : {
+    "usingComponents" : true
+  }
+}

+ 27 - 0
src/pages.json

@@ -0,0 +1,27 @@
+{
+	"pages": [
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "云动创想"
+			}
+		},
+		{
+			"path": "pages/index/detail",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		}
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"easycom":{
+		"autoscan": true,
+		"custom": {
+			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
+		}
+	}
+}

+ 85 - 0
src/pages/index/detail.vue

@@ -0,0 +1,85 @@
+<template>
+  <view>
+    <uni-nav-bar :title="form.projectName" leftIcon="left" @clickLeft="getBack" />
+    <view class="title">Android安装包</view>
+    <view class="list" v-for="item in form.android" :key="item.id">
+      <view class="main">
+        <text>{{ item.name }}</text>
+        <text>{{ item.updateTimeText }} 更新 | {{ item.version }}</text>
+      </view>
+      <a :href="item.downUrl">安装</a>
+    </view>
+    <view class="title">IOS安装包</view>
+    <view class="list" v-for="item in form.ios" :key="item.id">
+      <view class="main">
+        <text>{{ item.name }}</text>
+        <text>{{ item.updateTimeText }} 更新 | {{ item.version }}</text>
+      </view>
+      <a :href="item.downUrl">安装</a>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      form: {}
+    }
+  },
+  onLoad(e) {
+    this.form = JSON.parse(decodeURIComponent(e.item))
+  },
+  methods: {
+    getBack() {
+      uni.redirectTo({
+        url: `/pages/index/index`
+      })
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.uni-list-chat {
+  display: flex;
+}
+
+.title {
+  padding: 28rpx 20rpx;
+  font-size: 28rpx;
+}
+
+.list {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 28rpx 20rpx;
+  background: #fff;
+  border-bottom: 2rpx solid #eee;
+}
+
+.main {
+  display: flex;
+  flex-direction: column;
+
+  text:first-child {
+    font-size: 28rpx;
+  }
+
+  text:last-child {
+    font-size: 22rpx;
+  }
+}
+
+a {
+  margin: 0;
+  background: none;
+  border: 2rpx solid #f80;
+  padding: 10rpx 30rpx;
+  font-size: 24rpx;
+  color: #f80;
+  border-radius: 10rpx;
+  text-decoration: none;
+}
+</style>

+ 61 - 0
src/pages/index/index.vue

@@ -0,0 +1,61 @@
+<template>
+  <view class="content">
+    <uni-list :border="false">
+      <uni-list-item v-for="item in list" :key="item.id" :title="item.projectName" clickable
+        @click="getDetail(item)" />
+    </uni-list>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      list: []
+    }
+  },
+  onLoad() {
+    this.getList()
+  },
+  methods: {
+    getList() {
+      uni.request({
+        url: `https://o3tapi.radio1964.com/device/project/update/list`,
+        method: 'get',
+        success: (res) => {
+          console.log(res);
+          if (res.data.code === 0) {
+            this.list = res.data.data
+          }
+        }
+      })
+    },
+    getDetail(item) {
+      uni.navigateTo({
+        url: `/pages/index/detail?item=${encodeURIComponent(JSON.stringify(item))}`,
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scope>
+.content {
+  padding: 0 20rpx;
+}
+
+.uni-list {
+  width: 100%;
+  background: none;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: space-between;
+
+  .uni-list-item {
+    width: calc(50% - 10rpx);
+    margin-top: 20rpx;
+    text-align: center;
+  }
+}
+</style>

BIN
src/static/logo.png


+ 76 - 0
src/uni.scss

@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:24rpx;
+$uni-font-size-base:28rpx;
+$uni-font-size-lg:32rpx;
+
+/* 图片尺寸 */
+$uni-img-size-sm:40rpx;
+$uni-img-size-base:52rpx;
+$uni-img-size-lg:80rpx;
+
+/* Border Radius */
+$uni-border-radius-sm: 4rpx;
+$uni-border-radius-base: 6rpx;
+$uni-border-radius-lg: 12rpx;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20rpx;
+$uni-spacing-row-lg: 30rpx;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 8rpx;
+$uni-spacing-col-base: 16rpx;
+$uni-spacing-col-lg: 24rpx;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40rpx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36rpx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30rpx;

+ 41 - 0
src/utils/request.js

@@ -0,0 +1,41 @@
+const baseURL = 'https://o3tapi.radio1964.com'
+
+let times = 0
+
+export const request = (options) => {
+  let header = {
+    ...options.header
+  }
+
+  if (options.url != 'login') {
+    header["client-identity"] = uni.getStorageSync('session_id')
+  }
+
+  times++
+
+  uni.showLoading({
+    title: '加载中',
+    mask: true
+  })
+
+  return new Promise((resolve, reject) => {
+    uni.request({
+      url: baseURL + options.url,
+      method: options.method || 'get',
+      data: options.data || {},
+      header,
+      success: (res) => {
+        resolve(res)
+      },
+      fail: (err) => {
+        reject(err)
+      },
+      complete: () => {
+        times--
+        if (times === 0) {
+          uni.hideLoading()
+        }
+      }
+    })
+  })
+}

+ 9 - 0
tsconfig.json

@@ -0,0 +1,9 @@
+{
+  "compilerOptions": {
+    "types": [
+      "@dcloudio/types",
+      "miniprogram-api-typings",
+      "mini-types"
+    ]
+  }
+}

+ 3 - 0
vue.config.js

@@ -0,0 +1,3 @@
+module.exports = {
+  transpileDependencies: ['@dcloudio/uni-ui']
+}