Browse Source

新增预订商城后台管理

master
myTest383 5 months ago
parent
commit
95a0724fb9
  1. 14
      .editorconfig
  2. 15
      .env.development
  3. 9
      .env.production
  4. 8
      .env.staging
  5. 4
      .eslintignore
  6. 199
      .eslintrc.js
  7. 32
      .gitignore
  8. 5
      .travis.yml
  9. 21
      LICENSE
  10. 15
      babel.config.js
  11. 24
      jest.config.js
  12. 9
      jsconfig.json
  13. 57
      mock/index.js
  14. 81
      mock/mock-server.js
  15. 29
      mock/table.js
  16. 84
      mock/user.js
  17. 25
      mock/utils.js
  18. 76
      package.json
  19. 8
      postcss.config.js
  20. 0
      public/.gitkeep
  21. 1
      public/R8m3lfJ6O1.txt
  22. BIN
      public/avatar.png
  23. BIN
      public/favicon.ico
  24. BIN
      public/image/abnormal.png
  25. BIN
      public/image/action.png
  26. BIN
      public/image/bind2.png
  27. BIN
      public/image/bindBtn-bj2.png
  28. BIN
      public/image/bindBtn_bj1.png
  29. BIN
      public/image/bindBtn_bj2.png
  30. BIN
      public/image/bindBtn_bj3.png
  31. BIN
      public/image/bind_bj.png
  32. BIN
      public/image/bind_bj1.png
  33. BIN
      public/image/bind_bj2.png
  34. BIN
      public/image/bind_bj3.png
  35. BIN
      public/image/binding.png
  36. BIN
      public/image/binding2.png
  37. BIN
      public/image/carPerson.png
  38. BIN
      public/image/caradLose.png
  39. BIN
      public/image/cardEnterprise.png
  40. BIN
      public/image/cardGift.png
  41. BIN
      public/image/card_example.png
  42. BIN
      public/image/card_item.png
  43. BIN
      public/image/card_item2.png
  44. BIN
      public/image/chengse.png
  45. BIN
      public/image/clound_bj1.png
  46. BIN
      public/image/date.png
  47. BIN
      public/image/detail_affeection.png
  48. BIN
      public/image/detail_bj1.png
  49. BIN
      public/image/detail_bj2.png
  50. BIN
      public/image/detail_bj3.png
  51. BIN
      public/image/detail_bj4.png
  52. BIN
      public/image/detail_bj5.png
  53. BIN
      public/image/detail_bj6.png
  54. BIN
      public/image/detail_enterprise.png
  55. BIN
      public/image/detail_family.png
  56. BIN
      public/image/detail_notAffeection.png
  57. BIN
      public/image/detail_notEnterprise.png
  58. BIN
      public/image/detail_notFamily.png
  59. BIN
      public/image/enterpriseLose.png
  60. BIN
      public/image/enterpriseNormal.png
  61. BIN
      public/image/giftLose.png
  62. BIN
      public/image/giftNormal.png
  63. BIN
      public/image/gift_date.png
  64. BIN
      public/image/gift_loction.png
  65. BIN
      public/image/gift_phone.png
  66. BIN
      public/image/gift_user.png
  67. BIN
      public/image/giftpack.png
  68. BIN
      public/image/hmoe_bj.jpg
  69. BIN
      public/image/hmoe_bj.png
  70. BIN
      public/image/home_affection.png
  71. BIN
      public/image/home_bj1.png
  72. BIN
      public/image/home_bj2.png
  73. BIN
      public/image/home_bj3.png
  74. BIN
      public/image/home_enterprise.png
  75. BIN
      public/image/home_family.png
  76. BIN
      public/image/home_itemBj_affection.png
  77. BIN
      public/image/home_itemBj_enterprise.png
  78. BIN
      public/image/home_itemBj_family.png
  79. BIN
      public/image/home_itemBj_lose.png
  80. BIN
      public/image/home_notAffection.png
  81. BIN
      public/image/home_notEnterprise.png
  82. BIN
      public/image/home_notFamily.png
  83. BIN
      public/image/huise.png
  84. BIN
      public/image/liuchengtu.jpg
  85. BIN
      public/image/location.png
  86. BIN
      public/image/navigation.png
  87. BIN
      public/image/normal.png
  88. BIN
      public/image/pack.png
  89. BIN
      public/image/pack2.png
  90. BIN
      public/image/peronLose.png
  91. BIN
      public/image/personNormal.png
  92. BIN
      public/image/phone.png
  93. BIN
      public/image/phone2.png
  94. BIN
      public/image/record_affection_item1.png
  95. BIN
      public/image/record_affection_item2.png
  96. BIN
      public/image/record_enterprise_item1.png
  97. BIN
      public/image/record_enterprise_item2.png
  98. BIN
      public/image/record_enterprise_item5.png
  99. BIN
      public/image/record_enterprise_item6.png
  100. BIN
      public/image/record_family_item1.png

14
.editorconfig

@ -0,0 +1,14 @@
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

15
.env.development

@ -0,0 +1,15 @@
# just a flag
ENV = 'development'
# base api
VUE_APP_BASE_API = '/api'
## 配置测试和本地开发时的 接口地址
# VUE_APP_URL = "http://jianguan.yyundong.com/shgfapi"
VUE_APP_URL = "http://192.168.0.105:7211"
VUE_APP_REPORT_URL = "http://192.168.2.106:7202"
##VUE_APP_REPORT_URL = "https://lpk.yyundong.com"
##VUE_APP_REPORT_URL = "https://supervise.yxtsoft.com/lpk"
##VUE_APP_URL = "http://8.130.39.13:8112"

9
.env.production

@ -0,0 +1,9 @@
# just a flag
ENV = 'production'
# base api
VUE_APP_BASE_API = '/lpkapi'
## 配置 正式接口地址
VUE_APP_URL = ""
VUE_APP_REPORT_URL = ""

8
.env.staging

@ -0,0 +1,8 @@
NODE_ENV = production
# just a flag
ENV = 'staging'
# base api
VUE_APP_BASE_API = '/stage-api'

4
.eslintignore

@ -0,0 +1,4 @@
build/*.js
src/assets
public
dist

199
.eslintrc.js

@ -0,0 +1,199 @@
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module'
},
env: {
browser: true,
node: true,
es6: true,
},
extends: ['plugin:vue/recommended', 'eslint:recommended'],
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
rules: {
"vue/max-attributes-per-line": [2, {
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off",
"vue/name-property-casing": ["error", "PascalCase"],
"vue/no-v-html": "off",
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
'after': true
}],
'block-spacing': [2, 'always'],
'brace-style': [2, '1tbs', {
'allowSingleLine': true
}],
'camelcase': [0, {
'properties': 'always'
}],
'comma-dangle': [2, 'never'],
'comma-spacing': [2, {
'before': false,
'after': true
}],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': ["error", "always", {"null": "ignore"}],
'generator-star-spacing': [2, {
'before': true,
'after': true
}],
'handle-callback-err': [2, '^(err|error)$'],
// 'indent': [2, 2, {
// 'SwitchCase': 1
// }],
'indent': 'off',
'jsx-quotes': [2, 'prefer-single'],
'key-spacing': [2, {
'beforeColon': false,
'afterColon': true
}],
'keyword-spacing': [2, {
'before': true,
'after': true
}],
'new-cap': [2, {
'newIsCap': true,
'capIsNew': false
}],
'new-parens': 2,
'no-array-constructor': 2,
'no-caller': 2,
'no-console': 'off',
'no-class-assign': 2,
'no-cond-assign': 2,
'no-const-assign': 2,
'no-control-regex': 0,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, {
'allowLoop': false,
'allowSwitch': false
}],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, {
'max': 1
}],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef': 2,
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, {
'defaultAssignment': false
}],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-vars': [2, {
'vars': 'all',
'args': 'none'
}],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 0,
'no-whitespace-before-property': 2,
'no-with': 2,
'one-var': [2, {
'initialized': 'never'
}],
'operator-linebreak': [2, 'after', {
'overrides': {
'?': 'before',
':': 'before'
}
}],
'padded-blocks': [2, 'never'],
'quotes': [2, 'single', {
'avoidEscape': true,
'allowTemplateLiterals': true
}],
'semi': [2, 'never'],
'semi-spacing': [2, {
'before': false,
'after': true
}],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'never'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, {
'words': true,
'nonwords': false
}],
'spaced-comment': [2, 'always', {
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
}],
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
'prefer-const': 2,
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'object-curly-spacing': [2, 'always', {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never']
}
}

32
.gitignore

@ -0,0 +1,32 @@
**/.DS_Store
**/*.log
node_modules/
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.local
package-lock.json
yarn.lock
yyth-ui/
yythmall-ui/

5
.travis.yml

@ -0,0 +1,5 @@
language: node_js
node_js: 10
script: npm run test
notifications:
email: false

21
LICENSE

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017-present PanJiaChen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

15
babel.config.js

@ -0,0 +1,15 @@
module.exports = {
presets: [
// https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
// '@vue/cli-plugin-babel/preset',
['@vue/app', { useBuiltIns: 'entry' }]
],
'env': {
'development': {
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
// https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html
'plugins': ['dynamic-import-node']
}
}
}

24
jest.config.js

@ -0,0 +1,24 @@
module.exports = {
moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
snapshotSerializers: ['jest-serializer-vue'],
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
],
collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'],
coverageDirectory: '<rootDir>/tests/unit/coverage',
// 'collectCoverage': true,
'coverageReporters': [
'lcov',
'text-summary'
],
testURL: 'http://localhost/'
}

9
jsconfig.json

@ -0,0 +1,9 @@
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
}
},
"exclude": ["node_modules", "dist"]
}

57
mock/index.js

@ -0,0 +1,57 @@
const Mock = require('mockjs')
const { param2Obj } = require('./utils')
const user = require('./user')
const table = require('./table')
const mocks = [
...user,
...table
]
// for front mock
// please use it cautiously, it will redefine XMLHttpRequest,
// which will cause many of your third-party libraries to be invalidated(like progress event).
function mockXHR() {
// mock patch
// https://github.com/nuysoft/Mock/issues/300
Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send
Mock.XHR.prototype.send = function() {
if (this.custom.xhr) {
this.custom.xhr.withCredentials = this.withCredentials || false
if (this.responseType) {
this.custom.xhr.responseType = this.responseType
}
}
this.proxy_send(...arguments)
}
function XHR2ExpressReqWrap(respond) {
return function(options) {
let result = null
if (respond instanceof Function) {
const { body, type, url } = options
// https://expressjs.com/en/4x/api.html#req
result = respond({
method: type,
body: JSON.parse(body),
query: param2Obj(url)
})
} else {
result = respond
}
return Mock.mock(result)
}
}
for (const i of mocks) {
Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response))
}
}
module.exports = {
mocks,
mockXHR
}

81
mock/mock-server.js

@ -0,0 +1,81 @@
const chokidar = require('chokidar')
const bodyParser = require('body-parser')
const chalk = require('chalk')
const path = require('path')
const Mock = require('mockjs')
const mockDir = path.join(process.cwd(), 'mock')
function registerRoutes(app) {
let mockLastIndex
const { mocks } = require('./index.js')
const mocksForServer = mocks.map(route => {
return responseFake(route.url, route.type, route.response)
})
for (const mock of mocksForServer) {
app[mock.type](mock.url, mock.response)
mockLastIndex = app._router.stack.length
}
const mockRoutesLength = Object.keys(mocksForServer).length
return {
mockRoutesLength: mockRoutesLength,
mockStartIndex: mockLastIndex - mockRoutesLength
}
}
function unregisterRoutes() {
Object.keys(require.cache).forEach(i => {
if (i.includes(mockDir)) {
delete require.cache[require.resolve(i)]
}
})
}
// for mock server
const responseFake = (url, type, respond) => {
return {
url: new RegExp(`${process.env.VUE_APP_BASE_API}${url}`),
type: type || 'get',
response(req, res) {
console.log('request invoke:' + req.path)
res.json(Mock.mock(respond instanceof Function ? respond(req, res) : respond))
}
}
}
module.exports = app => {
// parse app.body
// https://expressjs.com/en/4x/api.html#req.body
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}))
const mockRoutes = registerRoutes(app)
var mockRoutesLength = mockRoutes.mockRoutesLength
var mockStartIndex = mockRoutes.mockStartIndex
// watch files, hot reload mock server
chokidar.watch(mockDir, {
ignored: /mock-server/,
ignoreInitial: true
}).on('all', (event, path) => {
if (event === 'change' || event === 'add') {
try {
// remove mock routes stack
app._router.stack.splice(mockStartIndex, mockRoutesLength)
// clear routes cache
unregisterRoutes()
const mockRoutes = registerRoutes(app)
mockRoutesLength = mockRoutes.mockRoutesLength
mockStartIndex = mockRoutes.mockStartIndex
console.log(chalk.magentaBright(`\n > Mock Server hot reload success! changed ${path}`))
} catch (error) {
console.log(chalk.redBright(error))
}
}
})
}

29
mock/table.js

@ -0,0 +1,29 @@
const Mock = require('mockjs')
const data = Mock.mock({
'items|30': [{
id: '@id',
title: '@sentence(10, 20)',
'status|1': ['published', 'draft', 'deleted'],
author: 'name',
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
}]
})
module.exports = [
{
url: '/vue-admin-template/table/list',
type: 'get',
response: config => {
const items = data.items
return {
code: 20000,
data: {
total: items.length,
items: items
}
}
}
}
]

84
mock/user.js

@ -0,0 +1,84 @@
const tokens = {
admin: {
token: 'admin-token'
},
editor: {
token: 'editor-token'
}
}
const users = {
'admin-token': {
roles: ['admin'],
introduction: 'I am a super administrator',
avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
name: 'Super Admin'
},
'editor-token': {
roles: ['editor'],
introduction: 'I am an editor',
avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
name: 'Normal Editor'
}
}
module.exports = [
// user login
{
url: '/vue-admin-template/user/login',
type: 'post',
response: config => {
const { username } = config.body
const token = tokens[username]
// mock error
if (!token) {
return {
code: 60204,
message: 'Account and password are incorrect.'
}
}
return {
code: 20000,
data: token
}
}
},
// get user info
{
url: '/vue-admin-template/user/info\.*',
type: 'get',
response: config => {
const { token } = config.query
const info = users[token]
// mock error
if (!info) {
return {
code: 50008,
message: 'Login failed, unable to get user details.'
}
}
return {
code: 20000,
data: info
}
}
},
// user logout
{
url: '/vue-admin-template/user/logout',
type: 'post',
response: _ => {
return {
code: 20000,
data: 'success'
}
}
}
]

25
mock/utils.js

@ -0,0 +1,25 @@
/**
* @param {string} url
* @returns {Object}
*/
function param2Obj(url) {
const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
if (!search) {
return {}
}
const obj = {}
const searchArr = search.split('&')
searchArr.forEach(v => {
const index = v.indexOf('=')
if (index !== -1) {
const name = v.substring(0, index)
const val = v.substring(index + 1, v.length)
obj[name] = val
}
})
return obj
}
module.exports = {
param2Obj
}

76
package.json

@ -0,0 +1,76 @@
{
"name": "yxt-yyth-ui-admin",
"version": "1.1.0",
"description": "",
"author": "",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
"lint": "eslint --ext .js,.vue src",
"test:unit": "jest --clearCache && vue-cli-service test:unit",
"test:ci": "npm run lint && npm run test:unit"
},
"dependencies": {
"axios": "^0.24.0",
"bpmn-js": "^9.2.2",
"core-js": "^3.8.3",
"echarts": "^5.4.3",
"ejs": "^2.7.4",
"element-ui": "^2.15.14",
"js-cookie": "2.2.0",
"moment": "^2.29.1",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
"portfinder": "^1.0.21",
"print-template": "^1.2.8",
"qs": "^6.9.4",
"quill": "^1.3.7",
"sass-resources-loader": "^2.1.1",
"viewerjs": "^1.9.0",
"vue": "^2.6.14",
"vue-amap": "^0.5.10",
"vue-router": "^3.5.1",
"vuex": "3.6.0",
"vuex-persistedstate": "^4.0.0",
"xcrud": "^0.4.19"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.4",
"@vue/cli-plugin-eslint": "4.4.4",
"@vue/cli-plugin-unit-jest": "4.4.4",
"@vue/cli-service": "4.4.4",
"@vue/test-utils": "1.0.0-beta.29",
"autoprefixer": "9.5.1",
"babel-eslint": "10.1.0",
"babel-jest": "23.6.0",
"babel-plugin-dynamic-import-node": "2.3.3",
"babel-polyfill": "^6.26.0",
"chalk": "2.4.2",
"connect": "3.6.6",
"eslint": "6.7.2",
"eslint-plugin-vue": "6.2.2",
"html-webpack-plugin": "3.2.0",
"mockjs": "1.0.1-beta3",
"runjs": "4.3.2",
"sass": "1.26.8",
"sass-loader": "8.0.2",
"script-ext-html-webpack-plugin": "2.1.3",
"serve-static": "1.13.2",
"svg-sprite-loader": "4.1.3",
"svgo": "1.2.2",
"vue-template-compiler": "2.6.10"
},
"browserslist": [
"> 1%",
"last 2 versions"
],
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
"license": "MIT"
}

8
postcss.config.js

@ -0,0 +1,8 @@
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
'plugins': {
// to edit target browsers: use "browserslist" field in package.json
'autoprefixer': {}
}
}

0
public/.gitkeep

1
public/R8m3lfJ6O1.txt

@ -0,0 +1 @@
cfaeb490877c2297b1485d957c8b99d3

BIN
public/avatar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

BIN
public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/image/abnormal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

BIN
public/image/action.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
public/image/bind2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

BIN
public/image/bindBtn-bj2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
public/image/bindBtn_bj1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/image/bindBtn_bj2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
public/image/bindBtn_bj3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
public/image/bind_bj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
public/image/bind_bj1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
public/image/bind_bj2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
public/image/bind_bj3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
public/image/binding.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
public/image/binding2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

BIN
public/image/carPerson.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
public/image/caradLose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
public/image/cardEnterprise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
public/image/cardGift.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/image/card_example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
public/image/card_item.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/image/card_item2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/image/chengse.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/image/clound_bj1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
public/image/date.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
public/image/detail_affeection.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
public/image/detail_bj1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
public/image/detail_bj2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
public/image/detail_bj3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

BIN
public/image/detail_bj4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
public/image/detail_bj5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
public/image/detail_bj6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
public/image/detail_enterprise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
public/image/detail_family.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
public/image/detail_notAffeection.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
public/image/detail_notEnterprise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/image/detail_notFamily.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
public/image/enterpriseLose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
public/image/enterpriseNormal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
public/image/giftLose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
public/image/giftNormal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
public/image/gift_date.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

BIN
public/image/gift_loction.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

BIN
public/image/gift_phone.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

BIN
public/image/gift_user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

BIN
public/image/giftpack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
public/image/hmoe_bj.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

BIN
public/image/hmoe_bj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

BIN
public/image/home_affection.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
public/image/home_bj1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

BIN
public/image/home_bj2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 KiB

BIN
public/image/home_bj3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

BIN
public/image/home_enterprise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/image/home_family.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
public/image/home_itemBj_affection.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
public/image/home_itemBj_enterprise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
public/image/home_itemBj_family.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
public/image/home_itemBj_lose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
public/image/home_notAffection.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
public/image/home_notEnterprise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
public/image/home_notFamily.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
public/image/huise.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
public/image/liuchengtu.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
public/image/location.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
public/image/navigation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
public/image/normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

BIN
public/image/pack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
public/image/pack2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
public/image/peronLose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/image/personNormal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
public/image/phone.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/image/phone2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
public/image/record_affection_item1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/image/record_affection_item2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/image/record_enterprise_item1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/image/record_enterprise_item2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/image/record_enterprise_item5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
public/image/record_enterprise_item6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
public/image/record_family_item1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save