Browse Source

首次提交

master
corala 2 years ago
commit
daf9e64e60
96 changed files with 18621 additions and 0 deletions
  1. +6
    -0
      .env.development
  2. +7
    -0
      .env.production
  3. +2
    -0
      .env.test
  4. +23
    -0
      .gitignore
  5. +16
    -0
      .hbuilderx/launch.json
  6. +19
    -0
      README.md
  7. +63
    -0
      babel.config.js
  8. +16429
    -0
      package-lock.json
  9. +97
    -0
      package.json
  10. +22
    -0
      postcss.config.js
  11. +28
    -0
      public/index.html
  12. +22
    -0
      src/App.vue
  13. +38
    -0
      src/common/aes.js
  14. +55
    -0
      src/common/canvas.js
  15. +352
    -0
      src/common/common.scss
  16. +114
    -0
      src/common/http.api.js
  17. +57
    -0
      src/common/http.interceptor.js
  18. +4
    -0
      src/common/scss.scss
  19. +35
    -0
      src/common/utils.js
  20. +29
    -0
      src/main.js
  21. +75
    -0
      src/manifest.json
  22. +107
    -0
      src/pages.json
  23. +25
    -0
      src/pages/otherPage/jjrent.vue
  24. +81
    -0
      src/pages/otherPage/myapply.vue
  25. +93
    -0
      src/pages/otherPage/mytodo.vue
  26. +25
    -0
      src/pages/otherPage/rent.vue
  27. +52
    -0
      src/pages/tabs/customer.vue
  28. +146
    -0
      src/pages/tabs/gonggao.vue
  29. +331
    -0
      src/pages/tabs/index.vue
  30. +169
    -0
      src/pages/tabs/me.vue
  31. BIN
      src/static/answer.png
  32. BIN
      src/static/avatar.png
  33. BIN
      src/static/connetPerson.png
  34. BIN
      src/static/cup.png
  35. BIN
      src/static/czDetail/book.png
  36. BIN
      src/static/czDetail/call.png
  37. BIN
      src/static/czDetail/lock.png
  38. BIN
      src/static/czDetail/man.png
  39. BIN
      src/static/czDetail/map.png
  40. BIN
      src/static/czDetail/money.png
  41. BIN
      src/static/czDetail/money1.png
  42. BIN
      src/static/czDetail/path.png
  43. BIN
      src/static/czDetail/pics.png
  44. BIN
      src/static/czDetail/woman.png
  45. BIN
      src/static/index/czzq.png
  46. BIN
      src/static/index/jjcz.png
  47. BIN
      src/static/index/right-arrow.png
  48. BIN
      src/static/index/top1.png
  49. BIN
      src/static/index/top2.png
  50. BIN
      src/static/index/top3.png
  51. BIN
      src/static/index/wddb.png
  52. BIN
      src/static/index/wdsq.png
  53. BIN
      src/static/kehu/call.png
  54. BIN
      src/static/kehu/edit.png
  55. BIN
      src/static/kehu/giveup.png
  56. BIN
      src/static/kehu/love.png
  57. BIN
      src/static/kehu/news.png
  58. BIN
      src/static/kehu/record.png
  59. BIN
      src/static/kehu/search.png
  60. BIN
      src/static/list.png
  61. BIN
      src/static/my/arrow.png
  62. BIN
      src/static/my/call.png
  63. BIN
      src/static/my/goonhetong.png
  64. BIN
      src/static/my/house.png
  65. BIN
      src/static/my/lock.png
  66. BIN
      src/static/my/my_bg.png
  67. BIN
      src/static/my/net.png
  68. BIN
      src/static/my/news.png
  69. BIN
      src/static/my/phone.png
  70. BIN
      src/static/my/system.png
  71. BIN
      src/static/myTodo/check.png
  72. BIN
      src/static/myTodo/clear.png
  73. BIN
      src/static/myTodo/djCheck.png
  74. BIN
      src/static/myTodo/fitment.png
  75. BIN
      src/static/myTodo/repair.png
  76. BIN
      src/static/myTodo/repairMan.png
  77. BIN
      src/static/myTodo/shenpi.png
  78. BIN
      src/static/myTodo/tool.png
  79. BIN
      src/static/myapply/apply.png
  80. BIN
      src/static/myapply/clear.png
  81. BIN
      src/static/myapply/history.png
  82. BIN
      src/static/myapply/record.png
  83. BIN
      src/static/myapply/repair.png
  84. BIN
      src/static/tab_icons/customer.png
  85. BIN
      src/static/tab_icons/customer_active.png
  86. BIN
      src/static/tab_icons/gonggao.png
  87. BIN
      src/static/tab_icons/gonggao_active.png
  88. BIN
      src/static/tab_icons/index.png
  89. BIN
      src/static/tab_icons/index_active.png
  90. BIN
      src/static/tab_icons/me.png
  91. BIN
      src/static/tab_icons/me_active.png
  92. BIN
      src/static/zhanbao.png
  93. +26
    -0
      src/store/$u.mixin.js
  94. +61
    -0
      src/store/index.js
  95. +3
    -0
      src/uni.scss
  96. +9
    -0
      tsconfig.json

+ 6
- 0
.env.development View File

@@ -0,0 +1,6 @@
VUE_APP_MODE=development
VUE_APP_SERVER=http://49.232.159.78:9999
URL1=https://xingao.quhouse.com-----星奥正式
url2=https://mtest.quhouse.com
url3=https://bj.chinawang.com
url5=http://49.232.159.78:9999---测试

+ 7
- 0
.env.production View File

@@ -0,0 +1,7 @@
VUE_APP_MODE=production
VUE_APP_SERVER=https://xingao.quhouse.com
URL1=https://xiao.chinawang.com
URL2=https://xingao.quhouse.com
url3=https://bj.chinawang.com
url4=http://49.232.159.78:9999
url5=https://chh.quhouse.com

+ 2
- 0
.env.test View File

@@ -0,0 +1,2 @@
VUE_APP_MODE=test
VUE_APP_SERVER=https://mtest.quhouse.com

+ 23
- 0
.gitignore View File

@@ -0,0 +1,23 @@
.DS_Store
node_modules/
unpackage/
dist/

# local env files
.env.local
.env.*.local
*.map
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.project
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*

+ 16
- 0
.hbuilderx/launch.json View File

@@ -0,0 +1,16 @@
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"default" :
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

+ 19
- 0
README.md View File

@@ -0,0 +1,19 @@
# mini-app

## 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 View File

@@ -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
}

+ 16429
- 0
package-lock.json
File diff suppressed because it is too large
View File


+ 97
- 0
package.json View File

@@ -0,0 +1,97 @@
{
"name": "mini-app-B",
"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-kuaishou": "cross-env NODE_ENV=production UNI_PLATFORM=mp-kuaishou 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-kuaishou": "cross-env NODE_ENV=development UNI_PLATFORM=mp-kuaishou 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.0-28920200927001",
"@dcloudio/uni-h5": "^2.0.0-28920200927001",
"@dcloudio/uni-helper-json": "*",
"@dcloudio/uni-mp-360": "^2.0.0-28920200927001",
"@dcloudio/uni-mp-alipay": "^2.0.0-28920200927001",
"@dcloudio/uni-mp-baidu": "^2.0.0-28920200927001",
"@dcloudio/uni-mp-qq": "^2.0.0-28920200927001",
"@dcloudio/uni-mp-toutiao": "^2.0.0-28920200927001",
"@dcloudio/uni-mp-vue": "^2.0.0-28920200927001",
"@dcloudio/uni-mp-weixin": "^2.0.0-28920200927001",
"@dcloudio/uni-quickapp-native": "^2.0.0-28920200927001",
"@dcloudio/uni-quickapp-webview": "^2.0.0-28920200927001",
"@dcloudio/uni-stat": "^2.0.0-28920200927001",
"@vue/shared": "^3.0.0-rc.4",
"core-js": "^3.6.5",
"crypto-js": "^4.0.0",
"flyio": "^0.6.2",
"regenerator-runtime": "^0.12.1",
"uview-ui": "^1.7.3",
"vue": "^2.6.11",
"vuex": "^3.2.0"
},
"devDependencies": {
"@dcloudio/types": "*",
"@dcloudio/uni-automator": "^2.0.0-28920200927001",
"@dcloudio/uni-cli-shared": "^2.0.0-28920200927001",
"@dcloudio/uni-migration": "^2.0.0-28920200927001",
"@dcloudio/uni-template-compiler": "^2.0.0-28920200927001",
"@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.0-28920200927001",
"@dcloudio/vue-cli-plugin-uni": "^2.0.0-28920200927001",
"@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.0-28920200927001",
"@dcloudio/webpack-uni-mp-loader": "^2.0.0-28920200927001",
"@dcloudio/webpack-uni-pages-loader": "^2.0.0-28920200927001",
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"babel-plugin-import": "^1.11.0",
"cross-env": "^7.0.2",
"jest": "^25.4.0",
"mini-types": "*",
"miniprogram-api-typings": "*",
"node-sass": "^4.14.1",
"postcss-comment": "^2.0.0",
"sass-loader": "^10.0.3",
"vue-template-compiler": "^2.6.11"
},
"browserslist": [
"Android >= 4",
"ios >= 8"
],
"uni-app": {
"scripts": {}
}
}

+ 22
- 0
postcss.config.js View File

@@ -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 View File

@@ -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>

+ 22
- 0
src/App.vue View File

@@ -0,0 +1,22 @@
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
methods: {
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style lang="scss">
@import "uview-ui/index.scss";
@import "common/common.scss";
/*每个页面公共css */
</style>

+ 38
- 0
src/common/aes.js View File

@@ -0,0 +1,38 @@
// const CryptoJS = require('crypto-js'); //引用AES源码js

// // const key = 'pigxpigxpigxpigx'; //十六位十六进制数作为密钥
// const key = CryptoJS.enc.Utf8.parse("pigxpigxpigxpigx"); //十六位十六进制数作为密钥
// const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量

// //解密方法
// function decrypt(word) {
// let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
// let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
// let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
// let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
// return decryptedStr.toString();
// }

// //加密方法
// function encrypt(word) {
// let srcs = CryptoJS.enc.Utf8.parse(word);
// let encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
// return encrypted.ciphertext.toString().toUpperCase();
// }
// export default {
// decrypt,
// encrypt
// }


import CryptoJS from 'crypto-js'
/**
* @word 要加密的内容
* @keyWord String 服务器随机返回的关键字
* */
export function aesEncrypt(word, keyWord = "XwKsGlMcdPMEhR1B") {
var key = CryptoJS.enc.Utf8.parse(keyWord);
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return encrypted.toString();
}

+ 55
- 0
src/common/canvas.js View File

@@ -0,0 +1,55 @@
export default class Drawer {
constructor(options) {
this.ctx = options.ctx
this.canvas = options.canvas
this.beforeDraw = []
this.finishDraw = []
this.tempList = []
this.drawList = []
}
before (cb) {
this.beforeDraw.push(cb)
return this
}
draw (cb) {
if (cb && typeof cb === 'function') {
this.tempList.push((data) => {
return new Promise((resolve) => {
cb(resolve, data)
})
})
this.drawList.push((data) => {
return new Promise((resolve) => {
cb(resolve, data)
})
})
}
return this
}
finished (cb) {
this.finishDraw.push(cb)
return this
}

async exec () {
const draw = async (drawList) => {
let tempResult = {}
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
while (drawList.length) {
const curCb = drawList.shift()
tempResult = await curCb(tempResult)
}
}
await draw(this.tempList)
this.beforeDraw.forEach(item => {
item()
})
await draw(this.drawList)
setTimeout(() => {
this.finishDraw.forEach(item => {
item()
})
}, 0)
}
}

+ 352
- 0
src/common/common.scss View File

@@ -0,0 +1,352 @@
/* #ifndef APP-NVUE */

view,
text {
box-sizing: border-box;
}


/* #endif */

@import "@/common/scss.scss";
body {
background: $bg-color;
width: 100%;
overflow-x: hidden;
}

// 省略号
.linclamp {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
letter-spacing: 1rpx;
}

.linclamp2 {
overflow: hidden;
text-overflow: -o-ellipsis-lastline;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
letter-spacing: 1rpx;
}

.linclamp3 {
overflow: hidden;
text-overflow: -o-ellipsis-lastline;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
line-clamp: 3;
-webkit-box-orient: vertical;
letter-spacing: 1rpx;
}

// 右箭头
.arrorRight {
display: inline-block;
width: 30rpx;
height: 30rpx;
}

// tab选项卡样式
.tabBox {
height: 70rpx;
align-items: center;
margin-bottom: 20rpx;
&_li {
padding: 0 50rpx;
font-size: 36rpx;
font-weight: 400;
color: #999999;
}
&_li_active {
font-size: 36rpx;
font-weight: 500;
color: #333333;
position: relative;
}
&_li_active::after {
content: '';
display: block;
position: absolute;
width: 48rpx;
height: 18rpx;
left: 50%;
transform: translateX(-50%);
bottom: -40%;
background: url('https://static.quhouse.com/upload/pic/20210421102103429117.png') no-repeat;
background-size: 40rpx 14rpx;
}
}

// 提交按钮
.btnBox {
position: fixed;
bottom: 10rpx;
left: 0;
width: 100%;
// background: #FFFFFF;
padding: 20rpx;
z-index: 9;
.pushTranBtn {
width: 690rpx;
height: 86rpx;
background: #DA2222;
margin: 0 auto;
border-radius: 44rpx;
text-align: center;
line-height: 86rpx;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
}
}

// tab 列表内容公共样式
.relist {
border-bottom: 10rpx solid #E7E7E7;
.reli {
padding: 20rpx 30rpx;
align-items: flex-start;
&_img {
display: inline-block;
width: 178rpx;
height: 178rpx;
margin-right: 20rpx;
border-radius: 10rpx;
}
&_main {
&_name {
margin-bottom: 20rpx;
height: 42rpx;
font-size: 30rpx;
font-weight: 500;
color: #333333;
line-height: 42rpx;
}
&_subname {
margin-bottom: 10rpx;
height: 30rpx;
font-size: 22rpx;
font-weight: 400;
color: #999999;
line-height: 30rpx;
}
}
}
.relicom {
padding: 20rpx 30rpx;
align-items: flex-start;
position: relative;
.rightArr {
display: block;
right: 20rpx;
top: 50%;
transform: translateY(-50%);
width: 30rpx;
height: 30rpx;
position: absolute;
}
&_img {
display: inline-block;
width: 128rpx;
height: 128rpx;
margin-right: 20rpx;
border-radius: 50%;
}
.reli_main {
&_name {
margin-bottom: 20rpx;
height: 42rpx;
font-size: 30rpx;
font-weight: 500;
color: #333333;
line-height: 42rpx;
}
&_subname {
margin-bottom: 10rpx;
height: 30rpx;
font-size: 22rpx;
font-weight: 400;
color: #999999;
line-height: 30rpx;
}
}
}
}

.relist:last-of-type {
border-bottom: 0;
}

.acBoxhead {
padding-left: 10rpx;
position: relative;
height: 50rpx;
font-size: 32rpx;
font-weight: 500;
color: #333333;
line-height: 50rpx;
}

.acBoxhead::after {
content: '';
display: block;
position: absolute;
width: 6rpx;
height: 32rpx;
background: #FF8C13;
border-radius: 4rpx;
left: -3rpx;
top: 50%;
transform: translateY(-50%);
}

// 新增弹框
.addBox {
position: fixed;
// width: 100%;
// height: 100%;
background: rgba(0,0,0,0.4);
left: 0;
top: 0;
bottom: 0;
right: 0;
z-index: 999;
}

.addmainBoxTi {
padding: 40rpx 0 0 0;
}

.addmain {
padding: 40rpx 0 0 0;
width: 688rpx;
border-radius: 20rpx;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background: #FFFFFF;
z-index: 9999;
.addmainMain {
padding: 0 40rpx 40rpx;
.addtitle {
width: 100%;
text-align: center;
margin-bottom: 30rpx;
font-size: 36rpx;
font-weight: 400;
color: #333333;
}
.stliComCont {
font-size: 30rpx;
font-weight: 400;
color: #333333;
line-height: 42rpx;
}
}
.stliCom {
height: 36rpx;
align-items: center;
margin-bottom: 30rpx;
font-size: 26rpx;
font-weight: 400;
color: #333333;
.stliComImg {
display: inline-block;
width: 30rpx;
height: 30rpx;
margin: 0 14rpx 0 30rpx;
}
}
.stmain {
align-items: center;
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
color: #333333;
padding: 0 30rpx;
margin-bottom: 20rpx;
}
.stlili {
flex-wrap: wrap;
margin-bottom: 10rpx;
.stlimain {
padding: 0 16rpx;
height: 70rpx;
line-height: 70rpx;
font-size: 24rpx;
font-weight: 400;
color: #292929;
border-radius: 6rpx;
border: 1rpx solid #FF8C13;
margin: 0 10rpx 10rpx 0;
}
.stlimain_Active {
background: #FF8C13;
color: #FFFFFF;
border: 1px solid #FF8C13;
}
}
.addBtnBox {
height: 92rpx;
align-items: center;
border-top: 1rpx solid #E0E0E0;
.addBtnBoxLeft {
height: 92rpx;
line-height: 92rpx;
border-right: 1rpx solid #E0E0E0;
font-size: 30rpx;
font-weight: 400;
color: #333333;
text-align: center;
width: 50%;
}
.addBtnBoxright {
font-size: 30rpx;
font-weight: 400;
color: #FF8C13;
text-align: center;
width: 50%;
}
}
.addBtnBoxbrn {
height: 124rpx;
align-items: center;
border-top: 1rpx solid #E0E0E0;
font-size: 36rpx;
font-weight: 400;
color: #FF8C13;
justify-content: center;
width: 100%;
}
}

// 选择按钮
.followList {
flex-wrap: wrap;
margin-bottom: 30rpx;
&_li {
padding: 0 10rpx;
height: 70rpx;
text-align: center;
line-height: 70rpx;
background: #FFFFFF;
border-radius: 6rpx;
margin: 0 20rpx 20rpx 0;
border: 1px solid #333333;
font-size: 24rpx;
font-weight: 400;
color: #333;
}
&_li_Active {
background: #FF8C13;
color: #FFFFFF;
border: 1px solid #FF8C13;
}
}

+ 114
- 0
src/common/http.api.js View File

@@ -0,0 +1,114 @@
let pageCoupon = 'b/cncoupon/page'
let mobile = 'admin/mobile'
let findByCodeurl = 'coupon/b/cncouponlog/findByCode' // 优惠券核销
let cncouponlogurl = 'coupon/b/cncouponlog/page' // 优惠券列表 核销
let writeOffurl = 'coupon/b/cncouponlog/writeOff' // 优惠券 核销
let checkParameterurl = 'activity/b/cnactivity/checkParameter' // 会员卡校验--wuyong
let verificationOrderurl = 'activity/b/cnactivityconsumerecord/verificationOrder' // 会员卡核销码校验
let getBConsumeRecordPageurl = 'activity/b/vconsumerecord/getBConsumeRecordPage' // 会员卡列表 核销管理
let getByIdConsumeRecordurl = 'activity/b/vconsumerecord/getByIdConsumeRecord' // 会员卡 核销详情---回显
let getByVerificationCodeurl = 'activity/b/vconsumerecord/getByUseCodeConsumeRecord' // 会员卡 核销详情
let addCnActivityConsumeRecordurl = 'activity/b/vconsumerecord/addVConsumeRecord' // 会员卡 核销
let getFanYouTeamListPageurl = 'coupon/b/fxbrandperson/getFanYouTeamListPage' // 获取B端 饭友团队
let getCommissionRevenuesFanYouDetailedListurl = 'coupon/b/fxreward/getCommissionRevenuesFanYouDetailedList' // 获取服务员 收益明细 的列表
let getCommissionRevenuesFanYouDetailedCounturl = 'coupon/b/fxreward/getCommissionRevenuesFanYouDetailedCount' // 获取服务员 收益明细 的类型 统计
let getCommissionRevenuesDetailedurl = 'coupon/b/fxreward/getCommissionRevenuesDetailed' // 获取服务员 收益明细 统计信息
let getCommissionRevenuesurl = 'coupon/b/fxreward/getCommissionRevenues' // 获取服务员 佣金收益 统计
let getCommissionRevenuesFanYouCounturl = 'coupon/b/fxreward/getCommissionRevenuesFanYouCount' // 获取服务员 佣金收益统计下边的饭友列表
let addReadCounturl = 'coupon/c/fxcmsinfo/addReadCount' // 文章详情-添加阅读量
let wonderfulRecommendurl = 'coupon/c/fxcmsinfo/wonderfulRecommend' // 文章详情-精彩推荐
let fxcmsinfourl = 'coupon/b/fxCmsInfo' // 文章详情
let getUserExturl = 'coupon/user/getUserExt' // 账户概览预请求
let Anoverviewoftheaccounturl = 'coupon/b/fxreward/zhgl' // 账户概览
let getByCompanyurl = 'coupon/cnbrand/getByCompany' // 公司查品牌
let getShopListByCompanyIdurl = 'coupon/cnshop/getShopListByCompanyId' // 公司查门店
let getByBrandurl='coupon/cnshop/getByBrand' // 品牌查门店
let waiterRewardTopurl = '/coupon/b/fxreward/waiterRewardTop' // 服务员排行
let shopRewardTopurl = '/coupon/b/fxreward/shopRewardTop' // 店铺排行
let couponUseurl = '/coupon/b/fxreward/couponUse' // 优惠券核销情况
let couponUseTopurl = '/coupon/b/fxreward/couponUseTop' // 核销金额排行top10
let fxrwurl = '/coupon/b/fxreward/fxrw' // 分销任务
let changeSjurl = '/admin/user/changeSj/' // 切换商家
let getSoundRemindurl = '/coupon/fxreward/getSoundRemind' // 获取音效提醒
let getBindSjListurl = '/admin/b/user/getBindSjList' // 绑定商家列表信息
let exchangepageurl = '/box/b/exchange/page' // b端盲盒核销记录


const install = (Vue, vm) => {
let exchangepage = (params) => vm.$u.get(exchangepageurl, params);
let pageCouponList = (params) => vm.$u.get(pageCoupon, params);
let mobileList = (params) => vm.$u.get(mobile, params);
let findByCode = (params) => vm.$u.get(cncouponlogurl, params);
let cncouponlog = (params) => vm.$u.get(findByCodeurl, params);
let writeOff = (params) => vm.$u.post(writeOffurl, params);
let getBConsumeRecordPage = (params) => vm.$u.get(getBConsumeRecordPageurl, params);
let getByIdConsumeRecord = (params) => vm.$u.get(getByIdConsumeRecordurl, params);
let checkParameter = (params) => vm.$u.post(checkParameterurl, params);
let verificationOrder = (params) => vm.$u.post(verificationOrderurl, params);
let getByVerificationCode = (params) => vm.$u.get(getByVerificationCodeurl, params);
let addCnActivityConsumeRecord = (params) => vm.$u.post(addCnActivityConsumeRecordurl, params);
let getFanYouTeamListPage = (params) => vm.$u.get(getFanYouTeamListPageurl, params);
let getCommissionRevenuesFanYouDetailedList = (params) => vm.$u.get(getCommissionRevenuesFanYouDetailedListurl, params);
let getCommissionRevenuesFanYouDetailedCount = (params) => vm.$u.get(getCommissionRevenuesFanYouDetailedCounturl, params);
let getCommissionRevenuesDetailed = (params) => vm.$u.get(getCommissionRevenuesDetailedurl, params);
let getCommissionRevenues = (params) => vm.$u.get(getCommissionRevenuesurl, params);
let getCommissionRevenuesFanYouCount = (params) => vm.$u.get(getCommissionRevenuesFanYouCounturl, params);
let addReadCount = (params) => vm.$u.put(addReadCounturl, params);
let wonderfulRecommend = (params) => vm.$u.get(wonderfulRecommendurl, params);
let fxcmsinfo = (id) => vm.$u.get(fxcmsinfourl + '/' + id);
let getUserExt = (params) => vm.$u.get(getUserExturl, params);
let Anoverviewoftheaccount = (params) => vm.$u.get(Anoverviewoftheaccounturl, params);
let getByCompany = (params) => vm.$u.post(getByCompanyurl, params);
let getShopListByCompanyId = (params) => vm.$u.get(getShopListByCompanyIdurl, params);
let getByBrand = (params) => vm.$u.post(getByBrandurl, params);
let waiterRewardTop = (params) => vm.$u.get(waiterRewardTopurl, params);
let shopRewardTop = (params) => vm.$u.get(shopRewardTopurl, params);
let couponUse = (params) => vm.$u.get(couponUseurl, params);
let couponUseTop = (params) => vm.$u.get(couponUseTopurl, params);
let fxrw = (params) => vm.$u.get(fxrwurl, params);
let changeSj = (id) => vm.$u.get(changeSjurl+id);
let getSoundRemind = () => vm.$u.get(getSoundRemindurl);
let getBindSjList = () => vm.$u.post(getBindSjListurl);

vm.$u.api = {
exchangepage,
getBindSjList,
getSoundRemind,
changeSj,
fxrw,
couponUse,
couponUseTop,
getUserExt,
Anoverviewoftheaccount,
getByCompany,
getShopListByCompanyId,
fxcmsinfo,
waiterRewardTop,
shopRewardTop,
addReadCount,
getByBrand,
wonderfulRecommend,
getCommissionRevenuesFanYouCount,
getCommissionRevenues,
getCommissionRevenuesDetailed,
getCommissionRevenuesFanYouDetailedCount,
getCommissionRevenuesFanYouDetailedList,
getFanYouTeamListPage,
pageCouponList,
mobileList,
findByCode,
writeOff,
cncouponlog,
checkParameter,
verificationOrder,
getByVerificationCode,
addCnActivityConsumeRecord,
getBConsumeRecordPage,
getByIdConsumeRecord
}
}

export default {
install
}

+ 57
- 0
src/common/http.interceptor.js View File

@@ -0,0 +1,57 @@
const install = (Vue, vm) => {
Vue.prototype.$u.http.setConfig({
baseUrl: process.env.VUE_APP_SERVER,
originalData: true,
showLoading: false,
timeout: 10000,
// loadingText: '努力加载中~',
header: {
// 'Authorization': 'Bearer '+vm.vuex_token,
}
});
// 请求拦截
Vue.prototype.$u.http.interceptor.request = (config) => {
// console.log(vm.vuex_token)
if (vm.vuex_token) {
config.header.Authorization = 'Bearer ' + vm.vuex_token
}
return config;
}
// 响应拦截
Vue.prototype.$u.http.interceptor.response = (res) => {
// console.log(res)
if (res.statusCode == 200) {
return res.data.data;
} else if (res.statusCode == 401) {
uni.showToast({
title: res.data.msg || '未登录',
icon: "none",
duration: 3000
})
uni.navigateTo({
url: '/pages/login/type'
});
return;
} else if (res.statusCode == 500) {
uni.showToast({
title: res.data.msg || '加载失败',
icon: "none",
duration: 3000
})
return;
} else if (res.statusCode == 503) {
uni.showToast({
title: '网络服务有问题',
icon: "none",
duration: 3000
})
return;
} else {
return;
}
}
}

export default {
install
}

+ 4
- 0
src/common/scss.scss View File

@@ -0,0 +1,4 @@

// 主题色
$theme-color: #FF9953;
$bg-color:#ffffff;

+ 35
- 0
src/common/utils.js View File

@@ -0,0 +1,35 @@
import * as CryptoJS from 'crypto-js'

/**
*加密处理
*/
export const encryption = (params) => {
let {
data,
type,
param,
key
} = params
const result = JSON.parse(JSON.stringify(data))
if (type === 'Base64') {
param.forEach(ele => {
result[ele] = btoa(result[ele])
})
} else {
param.forEach(ele => {
var data = result[ele]
key = CryptoJS.enc.Latin1.parse(key)
var iv = key
// 加密
var encrypted = CryptoJS.AES.encrypt(
data,
key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
})
result[ele] = encrypted.toString()
})
}
return result
}

+ 29
- 0
src/main.js View File

@@ -0,0 +1,29 @@
import Vue from 'vue'
import App from './App'
import store from '@/store';
import uView from "uview-ui";
import vuexStore from '@/store/$u.mixin.js';
import install from '@/common/http.interceptor.js'
import httpApi from '@/common/http.api.js'
import AES from '@/common/aes.js' // 密码加密
let mpShare = require('uview-ui/libs/mixin/mpShare.js');
Vue.config.productionTip = false
App.mpType = 'app'
Vue.use(uView);
// 引入uView提供的对vuex的简写法文件
Vue.mixin(vuexStore);
// 引入uView对小程序分享的mixin封装
Vue.mixin(mpShare)
Vue.prototype.$AES = AES;
const app = new Vue({
store,
...App
})
Vue.use(install, app)
Vue.use(httpApi, app)
app.$mount()

+ 75
- 0
src/manifest.json View File

@@ -0,0 +1,75 @@
{
"name" : "8090公寓",
"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" : "wxc72f5a997c67b668",
"setting" : {
"urlCheck" : true
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"mp-qq" : {
"usingComponents" : true
}
}

+ 107
- 0
src/pages.json View File

@@ -0,0 +1,107 @@
{
"easycom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
"condition": {
"current": 0,
"list": [{
"name": "test",
"path": "pages/tabs/gonggao",
"query": ""
}]
},
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
},
"pages": [{
"path": "pages/tabs/index",
"style": {
"navigationBarTitleText": "8090公寓",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/tabs/customer",
"style": {
"navigationBarTitleText": "客户",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/tabs/gonggao",
"style": {
"navigationBarTitleText": "公告",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/tabs/me",
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/otherPage/mytodo",
"style": {
"navigationBarTitleText": "我的待办",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/otherPage/myapply",
"style": {
"navigationBarTitleText": "我的申请",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/otherPage/rent",
"style": {
"navigationBarTitleText": "出租专区",
"navigationBarTextStyle": "black"
}
},{
"path": "pages/otherPage/jjrent",
"style": {
"navigationBarTitleText": "居间出租",
"navigationBarTextStyle": "black"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "#fff",
"navigationBarTitleText": "8090公寓",
"navigationBarBackgroundColor": "#fff",
"backgroundColor": "#fff"
},
"subPackages": [],
"tabBar": {
"color": "#999999",
"selectedColor": "#FF6D25",
"backgroundColor": "#FFFFFF",
"borderStyle": "black",
"list": [{
"pagePath": "pages/tabs/index",
"text": "首页",
"iconPath": "static/tab_icons/index.png",
"selectedIconPath": "static/tab_icons/index_active.png"
},
{
"pagePath": "pages/tabs/customer",
"text": "客户",
"iconPath": "static/tab_icons/customer.png",
"selectedIconPath": "static/tab_icons/customer_active.png"
},
{
"pagePath": "pages/tabs/gonggao",
"text": "公告",
"iconPath": "static/tab_icons/gonggao.png",
"selectedIconPath": "static/tab_icons/gonggao_active.png"
},
{
"pagePath": "pages/tabs/me",
"text": "我的",
"iconPath": "static/tab_icons/me.png",
"selectedIconPath": "static/tab_icons/me_active.png"
}
]
}
}

+ 25
- 0
src/pages/otherPage/jjrent.vue View File

@@ -0,0 +1,25 @@
<template>
<view class="container">
居间出租
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
</style>

+ 81
- 0
src/pages/otherPage/myapply.vue View File

@@ -0,0 +1,81 @@
<template>
<view class="container">
<view class="top-tabs">
<view class="tab">
<image class="img" src="/static/myapply/apply.png" mode="" />
待房申请
</view>
<view class="tab">
<image class="img" src="/static/myapply/clear.png" mode="" />
首次保洁
</view>
<view class="tab">
<image class="img" src="/static/myapply/repair.png" mode="" />
首次维修
</view>
<view class="tab">
<image class="img" src="/static/myapply/history.png" mode="" />
申请历史
</view>
<view class="tab">
<image class="img" src="/static/myapply/record.png" mode="" />
装修清单
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
onShow() {
},
methods: {
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 100%;
height: 100vh;
background: #F8F8F8;
overflow: auto;
padding-top: 20rpx;
.top-tabs{
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
background: #fff;
padding: 32rpx 45rpx;
margin-bottom: 20rpx;
.tab{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-bottom: 9rpx;
.img{
width: 134rpx;
height: 134rpx;
}

}
}

}
</style>

+ 93
- 0
src/pages/otherPage/mytodo.vue View File

@@ -0,0 +1,93 @@
<template>
<view class="container">
<view class="top-tabs">
<view class="tab">
<image class="img" src="/static/myTodo/shenpi.png" mode="" />
带房审批
</view>
<view class="tab">
<image class="img" src="/static/myTodo/tool.png" mode="" />
开荒维修
</view>
<view class="tab">
<image class="img" src="/static/myTodo/repair.png" mode="" />
日常维修
</view>
<view class="tab">
<image class="img" src="/static/myTodo/clear.png" mode="" />
开荒保洁
</view>
<view class="tab">
<image class="img" src="/static/myTodo/check.png" mode="" />
改价审核
</view>
<view class="tab">
<image class="img" src="/static/myTodo/repairMan.png" mode="" />
维修员
</view>
<view class="tab">
<image class="img" src="/static/myTodo/fitment.png" mode="" />
合同审核
</view>
<view class="tab">
<image class="img" src="/static/myTodo/djCheck.png" mode="" />
定金审核
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
onShow() {
},
methods: {
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 100%;
height: 100vh;
background: #F8F8F8;
overflow: auto;
padding-top: 20rpx;
.top-tabs{
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
background: #fff;
padding: 32rpx 45rpx;
margin-bottom: 20rpx;
.tab{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
margin-bottom: 9rpx;
.img{
width: 134rpx;
height: 134rpx;
}

}
}

}
</style>

+ 25
- 0
src/pages/otherPage/rent.vue View File

@@ -0,0 +1,25 @@
<template>
<view class="container">
出租专区
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
</style>

+ 52
- 0
src/pages/tabs/customer.vue View File

@@ -0,0 +1,52 @@
<template>
<view class="container">
<view class="top-box">
<view class="search-box">
<u-search v-model="keyword" :show-action="false" :clearabled="true" bg-color="#F8F8F8" shape="round" height="78"></u-search>
</view>
<view class="addCustomer">增加客户</view>

</view>
</view>
</template>
<script>
export default {
data() {
return {
keyword: ''
};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.top-box{
display: flex;
align-items: center;

}
.search-box{
width: 532rpx;
height: 78rpx;
}
.addCustomer{
width: 128px;
height: 44px;
font-size: 32px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FF6D25;
line-height: 44px;
}
</style>

+ 146
- 0
src/pages/tabs/gonggao.vue View File

@@ -0,0 +1,146 @@
<template>
<view class="container">
<view class="list" v-for="(item,index) in list" :key="index">
<view class="item-top">
<view class="title" :class="{'boldtitle':item.dot}">
<view class="dot" v-if="item.dot"></view>
<view class="u-line-1" style="max-width: 580rpx;">{{item.name}}</view>
</view>
<image class="arrow" src="/static/index/right-arrow.png" mode="" />
</view>
<view class="item-mid">
<view class="time">{{item.time}}</view>
<view class="from">{{item.from}}</view>
</view>
<view class="item-bot">
<view class="btn"><image class="img" src="/static/answer.png" mode="" />回复列表</view>
<view class="btn"><image class="img" src="/static/list.png" mode="" />查看记录</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [{
name: '办公区管理制度',
dot: true,
time: '2022-05-20 18:00:00',
from:'来自人力资源部'
},{
name: '关于人才招聘及新员工试用期管理实施办法',
dot: true,
time: '2022-05-20 18:00:00',
from:'来自人力资源部'
},{
name: '关于李秀峰等人的岗位调整与任命通知',
dot: false,
time: '2022-05-20 18:00:00',
from:'来自人力资源部'
}]
};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 100%;
min-height: 100vh;
background: #f8f8f8;
padding: 20rpx 30rpx;
.list{
width: 690rpx;
height: 253rpx;
background: #FFFFFF;
box-shadow: 0px 0px 12rpx 0px rgba(224,224,224,0.3);
border-radius: 12rpx;
margin-bottom: 20rpx;
padding: 30rpx 30rpx 0;
box-sizing: border-box;
.item-top{
display: flex;
justify-content: space-between;
margin-bottom: 20rpx;
.title{
display: flex;
align-items: center;
height: 42rpx;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303030;
line-height: 42rpx;
.boldtitle{
font-weight: 500;
font-family: PingFangSC-Medium, PingFang SC;
}
.dot{
width: 12rpx;
height: 12rpx;
background: #E7483C;
border-radius: 50%;
margin-right: 10rpx;
}
}
.arrow{
width: 12rpx;
height: 28rpx;
}
}
.item-mid{
display: flex;
align-items: center;
justify-content: space-between;
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 40rpx;
margin-bottom: 30rpx;
.time{
}
.from{
}
}
.item-bot{
display: flex;
height: 90rpx;
align-items: center;
justify-content: center;
border-top:1px solid #E0E0E0;
.btn{
flex:1;
display: flex;
align-items: center;
justify-content: center;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303030;
&:first-child{
border-right: 1px solid #f8f8f8;
}
.img{
width: 30rpx;
height: 30rpx;
margin-right: 12rpx;
}
}
}
}
}
</style>

+ 331
- 0
src/pages/tabs/index.vue View File

@@ -0,0 +1,331 @@
<template>
<view class="container">
<view class="top-tabs">
<view class="tab" @click="topage('rent')">
<image class="img" src="/static/index/czzq.png" mode="" />
出租专区
</view>
<view class="tab" @click="topage('jjrent')">
<image class="img" src="/static/index/jjcz.png" mode="" />
居间出租
</view>
<view class="tab" @click="topage('myapply')">
<image class="img" src="/static/index/wdsq.png" mode="" />
我的申请
</view>
<view class="tab" @click="topage('mytodo')">
<image class="img" src="/static/index/wddb.png" mode="" />
我的待办
</view>
</view>
<view class="gonggao">
<view class="left">
<view class="title">公告</view>
<view class="dot"></view>
</view>
<view class="right">
<!-- 关于人才招聘及新员工试用期管理实施... -->
<u-notice-bar type="none" padding="18rpx 0" font-size="28" color="#303030" mode="vertical" :volume-icon="false" :more-icon="false" :list="list"></u-notice-bar>
</view>
<image class="more-icon" src="/static/index/right-arrow.png" mode="" />
</view>
<view class="report-tab">
<u-tabs :list="tabList" bar-width="60" bar-height="6" active-color="#FF6D25" inactive-color="#666666" font-size="30" :is-scroll="false" :current="current" @change="change"></u-tabs>
</view>
<view class="tongji">
<view class="tongji-item" v-for="(item,index) in tongjiList" :key="index">
<view class="num">{{item.num}}</view>
<view class="text">{{item.text}}</view>
</view>
<view class="lookall" @click="topage(1)">查看全部
<image class="more-icon" src="/static/index/right-arrow.png" mode="" />
</view>
</view>
<view class="report-tab">
<u-tabs :list="tabList1" bar-width="60" bar-height="6" active-color="#FF6D25" inactive-color="#666666" font-size="30" :is-scroll="false" :current="current1" @change="change1"></u-tabs>
</view>
<view class="rank-box">
<view class="rank-item" v-for="(item,index) in rankList" :key="index">
<view class="left">
<image class="top-img" :src="'/static/index/top'+(index+1)+'.png'" mode="" />
<image class="avatar" src="/static/avatar.png" mode="" />
<view class="name u-line-1">王柏翘</view>
</view>
<view class="right">
<view class="top"><view class="number">7</view>套</view>
<view class="desc">累计成交</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: ['关于人才招聘及新员工试用期管理实施',
'平明送客楚山孤平明送客楚山孤',
'关于人才招聘及新员工试用期管理实施123',
'一片冰心在玉壶一片冰心在玉壶一片冰心在玉壶'],
tabList: [{
name: '今日战报'
}, {
name: '本周战报'
}, {
name: '本月战报'
}],
tabList1: [{
name: '经纪人排名'
}, {
name: '组排名'
}],
tongjiList: [
{
num: 29,
text: '新增成交'
},
{
num: 5,
text: '新增代理合同'
},
{
num: 0,
text: '新增带看'
},
{
num: 9,
text: '新增客户'
},
{
num: 0,
text: '新增带看'
},
{
num: 9,
text: '新增客户'
},
],
rankList: [{},{},{}],
current: 0,
current1: 0,
};
},
onLoad(options) {
},
onShow() {
},
methods: {
change(index){
this.current = index
},
change1(index){
this.current1 = index
},
topage(type){
uni.navigateTo({
url: '/pages/otherPage/' + type
})
},
},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 100%;
height: 100%;
background: #F8F8F8;
overflow: auto;
.top-tabs{
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
padding: 32rpx 45rpx;
margin-bottom: 20rpx;
.tab{
display: flex;
flex-direction: column;
justify-content: center;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
.img{
width: 98rpx;
height: 98rpx;
margin-bottom: 4rpx;
}

}
}
.gonggao{
width: 750rpx;
height: 80rpx;
background: #FFFFFF;
display: flex;
align-items: center;
padding: 0 30rpx;
margin-bottom: 20rpx;
.left{
display: flex;
align-items: center;
.title{
text-align: center;
width: 96rpx;
height: 48rpx;
line-height: 48rpx;
background: rgba(255, 109, 37, 0.1);
border-radius: 8rpx;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #FF6D25;
}
.dot{
width: 12rpx;
height: 12rpx;
background: #E7483C;
border-radius: 50%;
margin: 0 10rpx 0 20rpx;
}
}
.right{
flex: 1;
width: 490rpx;
}
.more-icon{
width: 12rpx;
height: 28rpx;
}
}
.report-tab{
border-bottom: 1px solid rgba(224,224,224,0.5);
}
.tongji{
display: flex;
flex-wrap: wrap;
background: #fff;
padding: 20rpx 0;
margin-bottom: 20rpx;
.tongji-item{
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
.num{
height: 56rpx;
font-size: 40rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 56rpx;
margin-bottom: 6rpx;
}
.text{
height: 36rpx;
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 36rpx;
margin-bottom: 28rpx;
}
}
.lookall{
width: 750rpx;
display: flex;
align-items: center;
justify-content: center;
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 40rpx;
border-top: 1px solid #e0e0e0;
padding-top: 20rpx;
.more-icon{
width: 12rpx;
height: 20rpx;
margin-left: 8rpx;
}
}
}
.rank-box{
padding: 40rpx 30rpx;
background: #fff;
.rank-item{
margin-bottom: 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
&:last-child{
margin-bottom: 0;
}
.left{
display: flex;
align-items: center;
.top-img{
width: 44rpx;
height: 58rpx;
margin-right: 32rpx;
}
.avatar{
width: 96rpx;
height: 96rpx;
border-radius: 50%;
overflow: hidden;
margin-right: 20rpx;
}
.name{
max-width: 200rpx;
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
line-height: 40rpx;
}
}
.right{
.top{
font-size: 24rpx;
line-height: 50rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
display: flex;
margin-bottom: 9rpx;
justify-content: flex-end;
.number{
font-size: 36rpx;
font-weight: 500;
color: #FF6D25;
margin-right: 4rpx;
}
}
.desc{
text-align: right;
width: 96rpx;
height: 32rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 32rpx;
}
}

}
}

}
</style>

+ 169
- 0
src/pages/tabs/me.vue View File

@@ -0,0 +1,169 @@
<template>
<view class="container" style="background:url('/static/my/my_bg.png')no-repeat;background-size: contain;">
<u-navbar :is-back="false" :border-bottom="false" title="我的" background="none"></u-navbar>
<view class="info">
<image class="avatar" src="/static/avatar.png" mode="" />
<view class="name u-line-1">章三章三章三章三章三</view>
</view>
<view class="menu">
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/news.png" mode="" />
消息通知
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/call.png" mode="" />
通讯录
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/house.png" mode="" />
应收房租
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/goonhetong.png" mode="" />
续期合同
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/phone.png" mode="" />
客服电话
</view>
<view>
400-8113936<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
</view>
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/net.png" mode="" />
网络查询
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item">
<view style="display:flex;">
<image class="icon" src="/static/my/lock.png" mode="" />
修改密码
</view>
<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
<view class="menu-item" style="border:0">
<view style="display:flex;">
<image class="icon" src="/static/my/system.png" mode="" />
系统版本
</view>
<view>V2.1.11<image class="arrow" src="/static/my/arrow.png" mode="" />
</view>
</view>
</view>
<view class="logout">退出登录</view>
<view class="agreement">
<view>隐私政策</view>
<view>服务协议</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
onLoad(options) {
},
onShow() {
},
methods: {},

onLoad: function(options) {
},
onHide: function() {},
};
</script>

<style lang="scss" scoped>
.container{
width: 100%;
min-height: 100vh;
padding: 0 40rpx 30rpx;
.info{
display: flex;
align-items: center;
margin: 40rpx 0 30rpx;
.avatar{
width: 100rpx;
height: 100rpx;
border-radius: 50%;
margin-right: 24rpx;
flex: 0 0 100rpx;
}
.name{
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 44rpx;
max-width: 590rpx;
}
}
.menu{
width: 670rpx;
.menu-item{
width: 100%;
height: 104rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #e0e0e0;
.icon{
width: 36rpx;
height: 36rpx;
margin-right: 20rpx;
}
.arrow{
width: 12rpx;
height: 28rpx;
margin-left: 20rpx;
}
}
}
.logout{
width: 670rpx;
height: 92rpx;
line-height: 92rpx;
text-align: center;
background: #F8F8F8;
border-radius: 12rpx;
margin: 50rpx auto 30rpx;
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
.agreement{
width: 670rpx;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
height: 33rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FF6D25;
line-height: 33rpx;
}

}
</style>

BIN
src/static/answer.png View File

Before After
Width: 30  |  Height: 30  |  Size: 547 B

BIN
src/static/avatar.png View File

Before After
Width: 100  |  Height: 100  |  Size: 18 KiB

BIN
src/static/connetPerson.png View File

Before After
Width: 32  |  Height: 32  |  Size: 577 B

BIN
src/static/cup.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.8 KiB

BIN
src/static/czDetail/book.png View File

Before After
Width: 40  |  Height: 40  |  Size: 794 B

BIN
src/static/czDetail/call.png View File

Before After
Width: 38  |  Height: 38  |  Size: 826 B

BIN
src/static/czDetail/lock.png View File

Before After
Width: 40  |  Height: 40  |  Size: 620 B

BIN
src/static/czDetail/man.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.0 KiB

BIN
src/static/czDetail/map.png View File

Before After
Width: 32  |  Height: 32  |  Size: 1.3 KiB

BIN
src/static/czDetail/money.png View File

Before After
Width: 40  |  Height: 40  |  Size: 983 B

BIN
src/static/czDetail/money1.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.5 KiB

BIN
src/static/czDetail/path.png View File

Before After
Width: 20  |  Height: 32  |  Size: 500 B

BIN
src/static/czDetail/pics.png View File

Before After
Width: 28  |  Height: 28  |  Size: 656 B

BIN
src/static/czDetail/woman.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.0 KiB

BIN
src/static/index/czzq.png View File

Before After
Width: 98  |  Height: 98  |  Size: 11 KiB

BIN
src/static/index/jjcz.png View File

Before After
Width: 98  |  Height: 98  |  Size: 12 KiB

BIN
src/static/index/right-arrow.png View File

Before After
Width: 12  |  Height: 28  |  Size: 471 B

BIN
src/static/index/top1.png View File

Before After
Width: 44  |  Height: 58  |  Size: 4.2 KiB

BIN
src/static/index/top2.png View File

Before After
Width: 44  |  Height: 58  |  Size: 4.2 KiB

BIN
src/static/index/top3.png View File

Before After
Width: 44  |  Height: 58  |  Size: 4.6 KiB

BIN
src/static/index/wddb.png View File

Before After
Width: 98  |  Height: 98  |  Size: 11 KiB

BIN
src/static/index/wdsq.png View File

Before After
Width: 98  |  Height: 98  |  Size: 10 KiB

BIN
src/static/kehu/call.png View File

Before After
Width: 88  |  Height: 88  |  Size: 1.7 KiB

BIN
src/static/kehu/edit.png View File

Before After
Width: 36  |  Height: 36  |  Size: 919 B

BIN
src/static/kehu/giveup.png View File

Before After
Width: 36  |  Height: 36  |  Size: 632 B

BIN
src/static/kehu/love.png View File

Before After
Width: 34  |  Height: 30  |  Size: 559 B

BIN
src/static/kehu/news.png View File

Before After
Width: 88  |  Height: 88  |  Size: 1.4 KiB

BIN
src/static/kehu/record.png View File

Before After
Width: 36  |  Height: 36  |  Size: 650 B

BIN
src/static/kehu/search.png View File

Before After
Width: 26  |  Height: 30  |  Size: 950 B

BIN
src/static/list.png View File

Before After
Width: 30  |  Height: 30  |  Size: 514 B

BIN
src/static/my/arrow.png View File

Before After
Width: 12  |  Height: 28  |  Size: 366 B

BIN
src/static/my/call.png View File

Before After
Width: 36  |  Height: 36  |  Size: 997 B

BIN
src/static/my/goonhetong.png View File

Before After
Width: 36  |  Height: 36  |  Size: 1006 B

BIN
src/static/my/house.png View File

Before After
Width: 36  |  Height: 36  |  Size: 1.0 KiB

BIN
src/static/my/lock.png View File

Before After
Width: 36  |  Height: 36  |  Size: 638 B

BIN
src/static/my/my_bg.png View File

Before After
Width: 750  |  Height: 712  |  Size: 95 KiB

BIN
src/static/my/net.png View File

Before After
Width: 36  |  Height: 36  |  Size: 816 B

BIN
src/static/my/news.png View File

Before After
Width: 36  |  Height: 36  |  Size: 747 B

BIN
src/static/my/phone.png View File

Before After
Width: 36  |  Height: 35  |  Size: 1.7 KiB

BIN
src/static/my/system.png View File

Before After
Width: 36  |  Height: 36  |  Size: 1.3 KiB

BIN
src/static/myTodo/check.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.0 KiB

BIN
src/static/myTodo/clear.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.4 KiB

BIN
src/static/myTodo/djCheck.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.3 KiB

BIN
src/static/myTodo/fitment.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.3 KiB

BIN
src/static/myTodo/repair.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.0 KiB

BIN
src/static/myTodo/repairMan.png View File

Before After
Width: 134  |  Height: 134  |  Size: 5.7 KiB

BIN
src/static/myTodo/shenpi.png View File

Before After
Width: 134  |  Height: 134  |  Size: 5.6 KiB

BIN
src/static/myTodo/tool.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.8 KiB

BIN
src/static/myapply/apply.png View File

Before After
Width: 134  |  Height: 134  |  Size: 5.5 KiB

BIN
src/static/myapply/clear.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.4 KiB

BIN
src/static/myapply/history.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.4 KiB

BIN
src/static/myapply/record.png View File

Before After
Width: 134  |  Height: 134  |  Size: 4.4 KiB

BIN
src/static/myapply/repair.png View File

Before After
Width: 134  |  Height: 134  |  Size: 6.0 KiB

BIN
src/static/tab_icons/customer.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.6 KiB

BIN
src/static/tab_icons/customer_active.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.5 KiB

BIN
src/static/tab_icons/gonggao.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.3 KiB

BIN
src/static/tab_icons/gonggao_active.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.2 KiB

BIN
src/static/tab_icons/index.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1013 B

BIN
src/static/tab_icons/index_active.png View File

Before After
Width: 40  |  Height: 40  |  Size: 980 B

BIN
src/static/tab_icons/me.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1.0 KiB

BIN
src/static/tab_icons/me_active.png View File

Before After
Width: 40  |  Height: 40  |  Size: 1000 B

BIN
src/static/zhanbao.png View File

Before After
Width: 750  |  Height: 334  |  Size: 67 KiB

+ 26
- 0
src/store/$u.mixin.js View File

@@ -0,0 +1,26 @@
import { mapState } from 'vuex'
import store from "@/store"

// 尝试将用户在根目录中的store/index.js的vuex的state变量,全部加载到全局变量中
let $uStoreKey = [];
try{
$uStoreKey = store.state ? Object.keys(store.state) : [];
}catch(e){
}

export default {
created() {
// 将vuex方法挂在到$u中
this.$u.vuex = (name, value) => {
this.$store.commit('$uStore', {
name,value
})
}
},
computed: {
// 将vuex的state中的所有变量,解构到全局混入的mixin中
...mapState($uStoreKey)
},
methods: {}
}

+ 61
- 0
src/store/index.js View File

@@ -0,0 +1,61 @@
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
let lifeData = {};

try{
// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
lifeData = uni.getStorageSync('lifeData');
}catch(e){
}
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
let saveStateKeys = ['vuex_user', 'vuex_token'];

// 保存变量到本地存储中
const saveLifeData = function(key, value){
// 判断变量名是否在需要存储的数组中
if(saveStateKeys.indexOf(key) != -1) {
// 获取本地存储的lifeData对象,将变量添加到对象中
let tmp = uni.getStorageSync('lifeData');
// 第一次打开APP,不存在lifeData变量,故放一个{}空对象
tmp = tmp ? tmp : {};
tmp[key] = value;
// 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
uni.setStorageSync('lifeData', tmp);
}
}
const store = new Vuex.Store({
state: {
vuex_token: '',
vuex_user: {},//用户信息
hx_code: {}, // 优惠券核销参数
hx_vip_code: {},// 会员卡核销参数
vuex_loadingImg: 'https://static.quhouse.com/aa8490daa5ae4f50b3b572127163ba14.png', // 默认图显示
detailId: ''
},
mutations: {
$uStore(state, payload) {
// 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
let nameArr = payload.name.split('.');
let saveKey = '';
let len = nameArr.length;
if(len >= 2) {
let obj = state[nameArr[0]];
for(let i = 1; i < len - 1; i ++) {
obj = obj[nameArr[i]];
}
obj[nameArr[len - 1]] = payload.value;
saveKey = nameArr[0];
} else {
// 单层级变量,在state就是一个普通变量的情况
state[payload.name] = payload.value;
saveKey = payload.name;
}
// 保存变量到本地
saveLifeData(saveKey, state[saveKey])
}
}
})

export default store

+ 3
- 0
src/uni.scss View File

@@ -0,0 +1,3 @@

/* 颜色变量 */
@import 'uview-ui/theme.scss';

+ 9
- 0
tsconfig.json View File

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

Loading…
Cancel
Save