Commit a4087f18 authored by shilei's avatar shilei

Initial commit

parents
Pipeline #107 failed with stages
.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*
# 投资舒城
## Project setup
```
yarn install
```
### Compiles and hot-reloads for development
```
yarn run serve
```
### Compiles and minifies for production
```
yarn run build
```
### Run your tests
```
yarn run test
```
### Lints and fixes files
```
yarn run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
const webpack = require('webpack')
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}`
}
}
])
})
if (process.env.UNI_PLATFORM !== 'h5') {
plugins.push('@babel/plugin-transform-runtime')
}
const config = {
presets: [
[
'@vue/app',
{
modules: webpack.version[0] > 4 ? 'auto' : 'commonjs',
useBuiltIns: process.env.UNI_PLATFORM === 'h5' ? 'usage' : 'entry'
}
]
],
plugins
}
const UNI_H5_TEST = '**/@dcloudio/uni-h5/dist/index.umd.min.js'
if (process.env.NODE_ENV === 'production') {
config.overrides = [{
test: UNI_H5_TEST,
compact: true,
}]
} else {
config.ignore = [UNI_H5_TEST]
}
module.exports = config
const fs = require("fs");
// import cityCode from './src/components/t-index-address/airCode'
const cityCode = require('./src/components/t-index-address/airCode')
const pinyin = require('js-pinyin')
// A-Z
let json = [];
for (var i = 0; i < 26; i++) {
json.push({
initial: String.fromCharCode(65 + i),
list: [],
});
}
json.forEach((j) => {
cityCode.list.forEach((city) => {
if (pinyin.getFullChars(city.name).slice(0, 1) === j.initial) {
j.list.push(city);
}
});
});
// 过滤空数组
json = json.filter((j) => j.list.length);
console.log(json);
fs.writeFileSync("./cities.json", JSON.stringify(json));
\ No newline at end of file
{
"name": "park",
"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 VUE_APP_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
"build:mp-xhs": "cross-env NODE_ENV=production UNI_PLATFORM=mp-xhs 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 VUE_APP_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch",
"dev:mp-xhs": "cross-env NODE_ENV=development UNI_PLATFORM=mp-xhs 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": "^2.0.2-3081220230817001",
"@dcloudio/uni-app-plus": "^2.0.2-3081220230817001",
"@dcloudio/uni-h5": "^2.0.2-3081220230817001",
"@dcloudio/uni-i18n": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-360": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-alipay": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-baidu": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-jd": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-kuaishou": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-lark": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-qq": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-toutiao": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-vue": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-weixin": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-xhs": "^2.0.2-3081220230817001",
"@dcloudio/uni-quickapp-native": "^2.0.2-3081220230817001",
"@dcloudio/uni-quickapp-webview": "^2.0.2-3081220230817001",
"@dcloudio/uni-stacktracey": "^2.0.2-3081220230817001",
"@dcloudio/uni-stat": "^2.0.2-3081220230817001",
"@vue/shared": "^3.0.0",
"core-js": "^3.8.3",
"flyio": "^0.6.2",
"qs": "^6.11.2",
"uview-ui": "^2.0.36",
"vue": "^2.6.14",
"vuex": "^3.2.0"
},
"devDependencies": {
"@dcloudio/types": "^3.3.2",
"@dcloudio/uni-automator": "^2.0.2-3081220230817001",
"@dcloudio/uni-cli-i18n": "^2.0.2-3081220230817001",
"@dcloudio/uni-cli-shared": "^2.0.2-3081220230817001",
"@dcloudio/uni-helper-json": "*",
"@dcloudio/uni-migration": "^2.0.2-3081220230817001",
"@dcloudio/uni-template-compiler": "^2.0.2-3081220230817001",
"@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.2-3081220230817001",
"@dcloudio/vue-cli-plugin-uni": "^2.0.2-3081220230817001",
"@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.2-3081220230817001",
"@dcloudio/webpack-uni-mp-loader": "^2.0.2-3081220230817001",
"@dcloudio/webpack-uni-pages-loader": "^2.0.2-3081220230817001",
"@vue/cli-plugin-babel": "^5.0.0",
"@vue/cli-service": "^5.0.0",
"babel-plugin-import": "^1.11.0",
"cross-env": "^7.0.2",
"jest": "^25.4.0",
"js-pinyin": "^0.2.5",
"less": "^4.2.0",
"less-loader": "^11.1.3",
"postcss-comment": "^2.0.0",
"sass": "^1.67.0",
"sass-loader": "^10.4.1",
"vue-template-compiler": "^2.6.14"
},
"browserslist": [
"Android >= 4.4",
"ios >= 9"
],
"uni-app": {
"scripts": {}
}
}
const path = require('path')
const webpack = require('webpack')
const config = {
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')
]
}
if (webpack.version[0] > 4) {
delete config.parser
}
module.exports = config
<!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>
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>
\ No newline at end of file
/// <reference types='@dcloudio/types' />
import Vue from 'vue'
declare module "vue/types/options" {
type Hooks = App.AppInstance & Page.PageInstance;
interface ComponentOptions<V extends Vue> extends Hooks {
/**
* 组件类型
*/
mpType?: string;
}
}
declare module "*.vue" {
import Vue from 'vue'
export default Vue
}
<script>
import { mapMutations } from "vuex";
import store from "./store";
export default {
onLaunch: function () {
console.log("App Launch");
// 版本检测更新
const updateManager = wx.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
console.log(res.hasUpdate);
});
updateManager.onUpdateReady(function () {
wx.showModal({
title: "更新提示",
content: "新版本已经准备好,是否重启应用?",
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
},
});
});
// 路由拦截设置
const methodToPatch = [
"navigateTo",
"redirectTo",
"switchTab",
"navigateBack",
];
methodToPatch.map((item) => {
const original = uni[item]; //
uni[item] = function (opt = {}, needAuth) {
console.log("store ====", store.state);
if (needAuth && !store.state.hasLogin) {
// 需要登录且未登录
uni.navigateTo({
url: "/pages/login/index",
});
} else {
return original.call(this, opt);
}
};
});
},
onShow: function () {
console.log("App Show");
},
onHide: function () {
console.log("App Hide");
},
methods: {
...mapMutations(["setToken", "setUserInfo"]),
},
};
</script>
<style lang="scss">
/*每个页面公共css */
@import "uview-ui/theme.scss";
@import "uview-ui/index.scss";
page {
font-family: "PingFangSC";
background: #f7f7f7;
}
button::after {
border: none;
}
.f18 {
font-size: 18rpx;
}
.f20 {
font-size: 20rpx;
}
.f22 {
font-size: 22rpx;
}
.f24 {
font-size: 24rpx;
}
.f26 {
font-size: 26rpx;
}
.f28 {
font-size: 28rpx;
}
.f30 {
font-size: 30rpx;
}
.f32 {
font-size: 32rpx;
}
.f34 {
font-size: 34rpx;
}
.f36 {
font-size: 36rpx;
}
.f38 {
font-size: 38rpx;
}
.f40 {
font-size: 40rpx;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.text-left {
text-align: left;
}
.flex {
display: flex;
}
.flex-column {
flex-direction: column;
}
.flex-row {
flex-direction: row;
}
.flex1 {
flex: 1;
}
.align-center {
align-items: center;
}
.align-start {
align-items: flex-start;
}
.align-end {
align-items: flex-end;
}
.justify-center {
justify-content: center;
}
.justify-start {
justify-content: flex-start;
}
.justify-end {
justify-content: flex-end;
}
.justify-between {
justify-content: space-between;
}
/* 单行文字溢出虚点显示*/
.ell {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
/* 两行文字溢出虚点显示*/
.ell2 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.mb10 {
margin-bottom: 10rpx;
}
.mb20 {
margin-bottom: 20rpx;
}
// 字体颜色
.c33 {
color: #333333;
}
.c4d {
color: #4d4d4d;
}
.c99 {
color: #999999;
}
.c043 {
color: #004386;
}
// 字重
.b {
font-weight: 500;
}
// 布局
.default-box {
border-radius: 10rpx;
box-shadow: 0rpx 4rpx 4rpx 0rpx rgba(63, 63, 63, 0.15);
background: #ffffff;
border: 1rpx solid #dfdfdf;
width: 718rpx;
margin: 0 auto;
box-sizing: border-box;
}
.rel {
position: relative;
}
.abs {
position: absolute;
}
.hpct100 {
height: 100%;
}
</style>
export default {
// 首页
}
let baseUrl;
switch (process.env.VUE_APP_ENV) {
case 'production':
baseUrl = 'https://prod.techbook.com.cn:9445'
break;
case 'development':
baseUrl = 'https://test.techbook.com.cn:8445'
break;
}
export default baseUrl
\ No newline at end of file
import Vue from 'vue'
import App from './App'
import './uni.promisify.adaptor'
import fetch from './utils/request.js'
import store from './store'
import uView from 'uview-ui'
Vue.use(uView)
// 如此配置即可
// uni.$u.config.unit = 'rpx'
uni.$u.setConfig({
// 修改$u.config对象的属性
config: {
// 修改默认单位为rpx,相当于执行 uni.$u.config.unit = 'rpx'
unit: 'rpx'
},
})
Array.prototype.removeItem = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
}
Object.defineProperty(Array.prototype, 'removeItem', {
enumerable: false
})
Vue.prototype.$fetch = fetch
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
store,
...App
})
app.$mount()
{
"name": "shucheng",
"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配置 */
}
}
},
"quickapp": {
/* 快应用特有相关 */
},
"mp-weixin": {
/* 微信小程序特有相关 */
"appid": "wx6d541865055a52d7",
"setting": {
"urlCheck": false
},
"usingComponents": true
},
"mp-alipay": {
"usingComponents": true
},
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao": {
"usingComponents": true
},
"mp-qq": {
"usingComponents": true
}
}
{
"easycom": {
"autoscan": true,
"custom": {
// uni-ui 规则如下配置
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
}
},
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "合伙招商·深产发"
}
}
],
"tabBar": {
"color": "#909090",
"selectedColor": "#4374EF",
"list": [
{
"iconPath": "/static/img/icon-tab_1.png",
"selectedIconPath": "/static/img/icon-tab_1.png",
"pagePath": "pages/index/index",
"text": "认识舒城"
},
{
"iconPath": "/static/img/icon-tab_2.png",
"selectedIconPath": "/static/img/icon-tab_2.png",
"pagePath": "pages/entryPark/index",
"text": "走进园区"
},
{
"iconPath": "/static/img/icon-tab_3.png",
"selectedIconPath": "/static/img/icon-tab_3.png",
"pagePath": "pages/inviteInvestment/index",
"text": "招商引资"
},
{
"iconPath": "/static/img/icon-tab_4_active.png",
"selectedIconPath": "/static/img/icon-tab_4_active.png",
"pagePath": "pages/investment/index",
"text": "投资舒城"
}
]
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "园区字典",
"navigationBarBackgroundColor": "#ffffff",
"backgroundColor": "#F8F8F8"
}
}
<template>
<div class="container">
<div v-if="loadingOff">
<template v-if="hasLogin">
<view>
<swiper
class="swiper"
circular
:indicator-dots="true"
:autoplay="true"
:interval="5000"
:duration="500"
>
<swiper-item v-for="(swiper, index) in swiperList" :key="swiper.imageUrl">
<image
:src="swiper.imageUrl"
class="swiper-item"
mode="aspectFill"
@click="jump(index)"
></image>
</swiper-item>
</swiper>
</view>
<view class="flex navigation-section">
<div class="nav-box" @click="navTo('myProject')">
<img class="nav-icon" src="/static/img/icon-entry1.png" alt="" />
<text class="nav-text">我的项目</text>
</div>
<div class="nav-box" @click="navTo('toast')">
<img class="nav-icon" src="/static/img/icon-entry2.png" alt="" />
<text class="nav-text">提取佣金</text>
</div>
<div class="nav-box" @click="navTo('todo')">
<div class="nav-icon rel">
<img class="nav-icon" src="/static/img/icon-entry3.png" alt="" />
<u-badge
:absolute="true"
:offset="[0, 0]"
numberType="overflow"
bgColor="#BF0008"
max="9"
:value="todoCount"
:show="todoCount > 0"
></u-badge>
</div>
<text class="nav-text">确认事项</text>
</div>
<div class="nav-box" @click="navTo('official')">
<img class="nav-icon" src="/static/img/icon-entry4.png" alt="" />
<text class="nav-text">产业课堂</text>
</div>
</view>
<view class="default-box data-view mb20">
<div class="flex align-center">
<p
class="tab-title"
:class="{ active: activeTab === 'my' }"
@click="activeTab = 'my'"
v-if="hasLogin"
>
我的项目
</p>
<i class="line align-center" v-if="hasLogin"></i>
<p
class="tab-title"
:class="{ active: activeTab === 'all' }"
@click="activeTab = 'all'"
>
平台项目
</p>
</div>
<u-line color="#E6E6E6"></u-line>
<template v-if="activeTab === 'my'">
<div class="flex justify-center">
<div class="data-item">
<p class="data-name">总项目量</p>
<p class="data-num">
{{ myProjectInfo.projectAllCount || 0 }} <span></span>
</p>
</div>
<div class="data-item red">
<p class="data-name">总固定资产投资额</p>
<p class="data-num">
{{ myProjectInfo.projectInvestmentTotal || 0 }} <span>亿元</span>
</p>
</div>
</div>
<u-line color="#E6E6E6" margin="10rpx 10rpx"></u-line>
<div class="flex justify-center">
<div class="data-item">
<p class="data-name">审核中的项目</p>
<p class="data-num">
{{ myProjectInfo.projectExamineCount || 0 }} <span></span>
</p>
</div>
<div class="data-item">
<p class="data-name">推进中的项目</p>
<p class="data-num">
{{ myProjectInfo.projectPushCount || 0 }} <span></span>
</p>
</div>
</div>
</template>
<template v-if="activeTab === 'all'">
<div class="flex justify-center">
<div class="data-item">
<p class="data-name">总项目量</p>
<p class="data-num">
{{ platformProjectInfo.projectAllCount || 0 }} <span></span>
</p>
</div>
<div class="data-item red">
<p class="data-name">总投资额</p>
<p class="data-num">
{{ platformProjectInfo.projectInvestmentTotal || 0 }}
<span>亿元</span>
</p>
</div>
</div>
<u-line color="#E6E6E6" margin="10rpx 10rpx"></u-line>
<div class="flex justify-center">
<div class="data-item">
<p class="data-name">总固定资产投资额</p>
<p class="data-num">
{{ platformProjectInfo.projectInvestmentRegular || 0 }}
<span>亿元</span>
</p>
</div>
<div class="data-item">
<p class="data-name">平台合伙人</p>
<p class="data-num">
{{ platformProjectInfo.partnerCount || 0 }} <span></span>
</p>
</div>
</div>
</template>
</view>
<view class="default-box my-earnings mb20" v-if="hasLogin">
<view
class="flex justify-between align-center"
@click="showMyEarnings = !showMyEarnings"
>
<p class="tab-title">我的收益</p>
<img
class="icon-arrow"
:class="{ rotate: showMyEarnings }"
src="/static/img/icon-arrow.png"
alt=""
/>
</view>
<div class="my-earnings-content" :class="{ h83: showMyEarnings }">
<u-line color="#E6E6E6"></u-line>
<div class="flex justify-center align-center">
<div class="data-item red">
<p class="data-name">可提现佣金</p>
<p class="data-num">
{{ myIncomeInfo.withdrawnCommission || 0 }} <span>万元</span>
</p>
</div>
<u-line color="#E6E6E6" direction="col" length="116rpx"></u-line>
<div class="data-item">
<p class="data-name">已提现佣金</p>
<p class="data-num">
{{ myIncomeInfo.alrealyWithdrawnCommission || 0 }}
<span>万元</span>
</p>
</div>
</div>
</div>
</view>
<login-bar></login-bar>
</template>
<template v-else>
<div style="position: fixed;top: 0;bottom: 0;width: 100vw;overflow: hidden;">
<image src="https://cfld-obs-pro01.obs.cn-north-4.myhuaweicloud.com/img/system/bg-home.png" style="width: 100vw;" mode="widthFix"></image>
<image src="/static/img/home-btn.png" @click="toLogin" style="width: 365rpx;position: fixed;bottom: 100rpx;left: 50%;margin-left: -183rpx;" mode="widthFix"></image>
</div>
</template>
</div>
</div>
</template>
<script>
import API from "@/api/url/index";
import store from "@/store";
import loginBar from "@/components/login-bar";
import { mapMutations } from "vuex";
export default {
components: { loginBar },
data() {
return {
inputVal: "",
swiperList: [], //轮播图
activeTab: "my",
showMyEarnings: false,
todoCount: 0,
myProjectInfo: {}, // 我的项目
platformProjectInfo: {}, // 平台项目
myIncomeInfo: {}, // 我的收益
loadingOff: false
};
},
onShow() {
this.getInfo();
setTimeout(() => {
this.loadingOff = true
},100)
},
onShareAppMessage: function () {},
methods: {
...mapMutations(["setTabIndex"]),
getInfo() {
this.$fetch({
url: API.homePageInfo,
success: (res) => {
console.log(res);
this.todoCount = res.todoCount;
this.swiperList = res.partnerImageSourceList;
this.myIncomeInfo = res.personalIncomeInfoVO;
this.myProjectInfo = res.personalStatisticsVO;
this.platformProjectInfo = res.platformProjectStatisticsVO;
},
});
},
navTo(type) {
if (!this.hasLogin) {
uni.navigateTo({
url: "/pages/login/index",
});
return;
}
const _self = this;
if (type == "myProject") {
uni.switchTab(
{
url: "/pages/project/index",
success: () => {
_self.setTabIndex(0);
},
},
true
);
return;
}
if (type == "toast") {
uni.showToast({
title: "暂无可提取佣金",
duration: 2000,
icon: "none",
});
return;
}
if (type == "todo") {
uni.navigateTo({
url: "/pages/todoList/todoList",
});
}
if (type == "official") {
wx.openChannelsUserProfile({
finderUserName: "sphbqGlty4Efb3U",
success: (res) => {},
fail: (err) => {
console.log("fail", err);
uni.showToast({
title: "该功能暂未开放",
icon: "error",
duration: 2000,
});
},
});
}
},
jump (index) {
if (index === 0) {
uni.navigateTo({
url: "/pages/webview/index?url=https://mp.weixin.qq.com/s/KNOaeuRjksUSCr7W5dOJtw",
});
}
},
toLogin() {
uni.navigateTo({
url: "/pages/login/index",
});
},
},
computed: {
hasLogin() {
return store.state.hasLogin;
},
userInfo() {
return store.state.userInfo;
},
},
watch: {
userInfo: {
handler: function () {
this.getInfo();
},
},
hasLogin: {
handler: function (val) {
this.loadingOff = false
if (!val) {
this.activeTab = "all";
} else {
this.activeTab = "my";
}
},
immediate: true,
},
},
};
</script>
<style lang="less" scoped>
.container {
padding-bottom: 30rpx;
}
.swiper {
height: 436rpx;
}
.swiper-item {
display: block;
height: 436rpx;
width: 100%;
}
.data-view {
padding: 15rpx 29rpx 0;
}
.tab-title {
color: #b3b3b3;
font-size: 30rpx;
line-height: 56rpx;
font-weight: 600;
width: 180rpx;
text-align: center;
&.active {
color: #333333;
}
}
.line {
border-right: 2rpx solid #b3b3b3;
height: 30rpx;
}
.data-name {
color: #004386;
font-size: 20rpx;
line-height: 28rpx;
font-weight: 600;
background: #eaf0fc;
border-radius: 4rpx;
padding: 8rpx 15rpx;
display: inline-block;
margin-bottom: 8rpx;
}
.red {
.data-name {
background: #fcedea;
color: #bf0008;
}
.data-num {
color: #bf0008;
span {
color: #333;
}
}
}
.data-item {
width: 324rpx;
height: 164rpx;
margin-left: 0;
margin-right: 0;
text-align: center;
padding-top: 20rpx;
box-sizing: border-box;
}
.data-num {
font-size: 65rpx;
color: #333;
font-weight: 600;
display: flex;
align-items: flex-end;
line-height: 76rpx;
justify-content: center;
span {
font-weight: 500;
font-size: 20rpx;
margin-left: 20rpx;
line-height: 28rpx;
padding-bottom: 15rpx;
}
}
.navigation-section {
margin-top: 10rpx;
justify-content: center;
}
.nav-box {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 174rpx;
height: 179rpx;
}
.nav-icon {
width: 100rpx;
height: 100rpx;
}
.nav-text {
font-size: 24rpx;
color: #333;
font-weight: 800;
margin-top: 5rpx;
}
.mb20 {
margin-bottom: 20rpx;
}
.my-earnings {
padding: 20rpx 29rpx;
.tab-title {
line-height: 42rpx;
color: #333;
}
}
.icon-arrow {
width: 56rpx;
height: 56rpx;
transition: transform 0.3s;
}
.rotate {
transform: rotate(-180deg);
}
.my-earnings-content {
height: 0;
transition: height 0.3s;
overflow: hidden;
}
.h83 {
height: 166rpx;
}
.rel {
position: relative;
}
</style>
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
})
export default store
uni.addInterceptor({
returnValue (res) {
if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
return res;
}
return new Promise((resolve, reject) => {
res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
});
},
});
\ No newline at end of file
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
@import "uview-ui/theme.scss";
/* 颜色变量 */
/* 行为相关颜色 */
$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: #fff;
$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: 12px;
$uni-font-size-base: 14px;
$uni-font-size-lg: 16;
/* 图片尺寸 */
$uni-img-size-sm: 20px;
$uni-img-size-base: 26px;
$uni-img-size-lg: 40px;
/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;
/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;
/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;
/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title: #2c405a; // 文章标题颜色
$uni-font-size-title: 20px;
$uni-color-subtitle: #555; // 二级标题颜色
$uni-font-size-subtitle: 18px;
$uni-color-paragraph: #3f536e; // 文章段落颜色
$uni-font-size-paragraph: 15px;
import baseUrl from '../core/config'
import store from '@/store'
export default function fetch (option) {
return new Promise((resolve, reject) => {
var {
url,
data = {},
header,
methods = 'post',
success,
fail
} = option
wx.request({
url: baseUrl + url,
data,
method: methods,
header: {
"Content-Type": "application/x-www-form-urlencoded",
...header
},
success: res => {
res = res.data;
if (res.code == 200) {
success && success(res.data);
resolve(res.data);
} else if (res.code == 300) {
if (fail) {
fail(res.msg)
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
if (res.msg === '当前会话失效,请重新登录') {
store.commit('logout')
}
} else if (res.code == 500) {
if (fail) {
fail(res.msg)
} else {
uni.showToast({
title: '服务器繁忙,请稍候重试',
icon: 'none'
})
}
}
},
fail: err => {
console.log(err)
fail && fail(err)
uni.showToast({
title: '服务器繁忙,请稍候重试',
icon: 'none'
})
reject(err);
}
})
})
}
module.exports = {
transpileDependencies: ['uview-ui']
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment