ayHaru il y a 4 ans
commit
e85e09e62a
100 fichiers modifiés avec 11691 ajouts et 0 suppressions
  1. 21 0
      README.md
  2. 14 0
      babel.config.js
  3. 11200 0
      package-lock.json
  4. 55 0
      package.json
  5. 5 0
      postcss.config.js
  6. BIN
      public/favicon.ico
  7. 39 0
      public/index.html
  8. 88 0
      scripts/component.js
  9. 166 0
      scripts/template.js
  10. 103 0
      src/App.vue
  11. BIN
      src/assets/image/alipay.jpg
  12. BIN
      src/assets/image/arrow_03.png
  13. BIN
      src/assets/image/banner/banner_1.jpg
  14. BIN
      src/assets/image/banner/banner_2.jpg
  15. BIN
      src/assets/image/banner/banner_3.jpg
  16. BIN
      src/assets/image/banner/banner_4.jpg
  17. BIN
      src/assets/image/banner/banner_5.jpg
  18. BIN
      src/assets/image/been-used_03.png
  19. BIN
      src/assets/image/been-used_06.png
  20. BIN
      src/assets/image/discount_07.png
  21. BIN
      src/assets/image/exit_03.png
  22. BIN
      src/assets/image/homeico_10.png
  23. BIN
      src/assets/image/ico-10.png
  24. BIN
      src/assets/image/ico-11.png
  25. BIN
      src/assets/image/ico-12.png
  26. BIN
      src/assets/image/ico-13.png
  27. BIN
      src/assets/image/ico-14.png
  28. BIN
      src/assets/image/ico_01.png
  29. BIN
      src/assets/image/ico_02.png
  30. BIN
      src/assets/image/ico_03.png
  31. BIN
      src/assets/image/ico_04.png
  32. BIN
      src/assets/image/ico_05.png
  33. BIN
      src/assets/image/ico_06.png
  34. BIN
      src/assets/image/ico_07.png
  35. BIN
      src/assets/image/ico_08.png
  36. BIN
      src/assets/image/ico_09.png
  37. BIN
      src/assets/image/invitation_02.png
  38. BIN
      src/assets/image/invitation_04.png
  39. BIN
      src/assets/image/invitation_06.png
  40. BIN
      src/assets/image/invitation_10.png
  41. BIN
      src/assets/image/invitation_14.png
  42. BIN
      src/assets/image/invitation_18.png
  43. BIN
      src/assets/image/invitation_22.png
  44. BIN
      src/assets/image/label-2_01.png
  45. BIN
      src/assets/image/label-2_02.png
  46. BIN
      src/assets/image/label-2_03.png
  47. BIN
      src/assets/image/label_01.png
  48. BIN
      src/assets/image/label_02.png
  49. BIN
      src/assets/image/label_03.png
  50. BIN
      src/assets/image/login_03.png
  51. BIN
      src/assets/image/login_07.png
  52. BIN
      src/assets/image/login_11.png
  53. BIN
      src/assets/image/login_15.png
  54. BIN
      src/assets/image/logo.png
  55. BIN
      src/assets/image/myarrow.png
  56. BIN
      src/assets/image/no-info_03.png
  57. BIN
      src/assets/image/one-page_03.png
  58. BIN
      src/assets/image/one-page_07.png
  59. BIN
      src/assets/image/options.png
  60. BIN
      src/assets/image/pay-cost_03.png
  61. BIN
      src/assets/image/pay-cost_10.png
  62. BIN
      src/assets/image/pay-cost_11.png
  63. BIN
      src/assets/image/pay-cost_15.png
  64. BIN
      src/assets/image/payroll.png
  65. BIN
      src/assets/image/payrollback.png
  66. BIN
      src/assets/image/reward.png
  67. BIN
      src/assets/image/reward_03.png
  68. BIN
      src/assets/image/rule.png
  69. BIN
      src/assets/image/seal_03.png
  70. BIN
      src/assets/image/service.all.png
  71. BIN
      src/assets/image/service.half.png
  72. BIN
      src/assets/image/share_05.png
  73. BIN
      src/assets/image/share_09.png
  74. BIN
      src/assets/image/two_03.png
  75. BIN
      src/assets/image/withdraw-deposit_07.png
  76. BIN
      src/assets/image/wxpay.png
  77. BIN
      src/assets/image/xuan/bounced-h5_03.png
  78. BIN
      src/assets/image/xuan/h5banner.jpg
  79. BIN
      src/assets/image/xuan/h5ico_03.png
  80. BIN
      src/assets/image/xuan/h5ico_06.png
  81. BIN
      src/assets/image/xuan/h5ico_11.png
  82. BIN
      src/assets/image/xuan/h5ico_13.png
  83. BIN
      src/assets/image/xuan/h5ico_18.png
  84. BIN
      src/assets/image/xuan/h5ico_20.png
  85. BIN
      src/assets/image/xuan/h5ico_25.png
  86. BIN
      src/assets/image/xuan/h5ico_28.png
  87. BIN
      src/assets/image/xuan/h5ico_31.png
  88. BIN
      src/assets/image/xuan/h5ico_35.png
  89. BIN
      src/assets/image/xuan/h5ico_39.png
  90. BIN
      src/assets/image/xuan/h5ico_41.png
  91. BIN
      src/assets/image/xuan/h5ico_45.png
  92. BIN
      src/assets/image/xuan/h5ico_46.png
  93. BIN
      src/assets/image/xuan/h5ico_49.png
  94. BIN
      src/assets/image/xuan/h5ico_50.png
  95. BIN
      src/assets/image/xuan/h5ico_53.png
  96. BIN
      src/assets/image/xuan/h5ico_54.png
  97. BIN
      src/assets/image/xuan/h5ico_58.png
  98. BIN
      src/assets/image/xuan/h5ico_62.png
  99. BIN
      src/assets/image/xuan/h5ico_65.png
  100. 0 0
      src/assets/image/xuan/h5ico_68.png

+ 21 - 0
README.md

@@ -0,0 +1,21 @@
+# hippo
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Lints and fixes files
+```
+npm run lint
+```

+ 14 - 0
babel.config.js

@@ -0,0 +1,14 @@
+module.exports = {
+    presets: [
+        '@vue/app'
+    ],
+    plugins: [
+        [
+            "component",
+            {
+                "libraryName": "element-ui",
+                "styleLibraryName": "theme-chalk"
+            }
+        ]
+    ]
+};

Fichier diff supprimé car celui-ci est trop grand
+ 11200 - 0
package-lock.json


+ 55 - 0
package.json

@@ -0,0 +1,55 @@
+{
+  "name": "hippo",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "lint": "vue-cli-service lint",
+    "component": "node scripts/component",
+    "page": "node scripts/template"
+  },
+  "dependencies": {
+    "axios": "^0.18.1",
+    "bootstrap": "^4.3.1",
+    "element-ui": "^2.4.5",
+    "jquery": "^3.4.1",
+    "soshm": "^1.1.3",
+    "swiper": "^4.5.0",
+    "vant": "^2.2.10",
+    "vant-weapp": "^0.5.22",
+    "vue": "^2.6.6",
+    "vue-awesome-swiper": "^3.1.3",
+    "vue-class-component": "^6.0.0",
+    "vue-infinite-scroll": "^2.0.2",
+    "vue-property-decorator": "^7.0.0",
+    "vue-router": "^3.0.1",
+    "vuex": "^3.0.1",
+    "vuex-class": "^0.3.1",
+    "weixin-js-sdk": "^1.4.0-test",
+    "weixin-jsapi": "^1.1.0"
+  },
+  "devDependencies": {
+    "@types/swiper": "^4.4.2",
+    "@vue/cli-plugin-babel": "^3.0.3",
+    "@vue/cli-plugin-typescript": "^3.0.3",
+    "@vue/cli-service": "^3.0.3",
+    "babel-plugin-component": "^1.1.1",
+    "babel-plugin-import": "^1.12.2",
+    "node-sass": "^4.9.0",
+    "sass-loader": "^7.1.0",
+    "typescript": "^3.0.0",
+    "vue-cli-plugin-element": "^1.0.1",
+    "vue-template-compiler": "^2.5.21"
+  },
+  "postcss": {
+    "plugins": {
+      "autoprefixer": {}
+    }
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not ie <= 8"
+  ]
+}

+ 5 - 0
postcss.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  plugins: {
+    autoprefixer: {}
+  }
+};

BIN
public/favicon.ico


+ 39 - 0
public/index.html

@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title>河马代缴</title>
+    <style>
+        body {
+            background: #dddddd;
+        }
+    </style>
+    <script>
+        window._agl  =  window._agl  ||  [];
+        (function  ()  {
+            _agl.push(
+                ['production',  '_f7L2XwGXjyszb4d1e2oxPybgD']
+            );
+            (function  ()  {
+                var  agl  =  document.createElement('script');
+                agl.type  ='text/javascript';
+                agl.async  =  true;
+                agl.src  =  'https://fxgate.baidu.com/angelia/fcagl.js?production=_f7L2XwGXjyszb4d1e2oxPybgD';
+                var  s  =  document.getElementsByTagName('script')[0];
+                s.parentNode.insertBefore(agl,  s);
+            })();
+        })();
+    </script>
+</head>
+<body>
+<noscript>
+    <strong>We're sorry but hippo doesn't work properly without JavaScript enabled. Please enable it to
+        continue.</strong>
+</noscript>
+<div id="app"></div>
+<!-- built files will be auto injected -->
+</body>
+</html>

+ 88 - 0
scripts/component.js

@@ -0,0 +1,88 @@
+/*
+ * @Description: 组件快速生成脚本
+ * @Date: 2018-12-06 10:26:23
+ * @LastEditTime: 2018-12-12 16:09:40
+ */
+
+const fs = require('fs');
+const path = require('path');
+const basePath = path.resolve(__dirname, '../src');
+
+const dirName = process.argv[2];
+const capPirName = dirName.substring(0, 1).toUpperCase() + dirName.substring(1);
+if (!dirName) {
+  console.log('文件夹名称不能为空!');
+  console.log('示例:npm run tep ${capPirName}');
+  process.exit(0)
+}
+
+/**
+ * @msg: vue页面模版
+ */
+const VueTep = `<template>
+  <div class="${dirName}-wrap">
+    {{data.componentName}}
+  </div>
+</template>
+
+<script lang="ts">
+  import { Component, Vue, Prop } from "vue-property-decorator"
+  import { Getter, Action } from 'vuex-class'
+  import { ${capPirName}Data } from '@/types/components/${dirName}.interface'
+  // import {  } from "@/components" // 组件
+
+  @Component({})
+  export default class About extends Vue {
+    // prop
+    @Prop({
+      required: false,
+      default: ''
+    }) name!: string
+
+    // data
+    data: ${capPirName}Data = {
+      componentName: '${dirName}'
+    }
+
+    created() {
+      //
+    }
+    
+    activated() {
+      //
+    }
+
+    mounted() {
+      //
+    }
+
+  }
+</script>
+
+<style lang="scss">
+  @import "@/assets/scss/variables.scss";
+
+  .${dirName}-wrap {
+    width: 100%;
+  }
+</style>
+
+`;
+
+// interface 模版
+const interfaceTep = `// ${dirName}.Data 参数类型
+export interface ${capPirName}Data {
+  componentName: string
+}
+
+`;
+
+fs.mkdirSync(`${basePath}/components/${dirName}`); // mkdir
+
+process.chdir(`${basePath}/components/${dirName}`); // cd views
+fs.writeFileSync(`${dirName}.vue`, VueTep); // vue
+
+process.chdir(`${basePath}/types/components`); // cd components
+fs.writeFileSync(`${dirName}.interface.ts`, interfaceTep); // interface
+
+process.exit(0);

+ 166 - 0
scripts/template.js

@@ -0,0 +1,166 @@
+/*
+ * @Description: 页面快速生成脚本
+ * @Date: 2018-12-06 10:28:08
+ * @LastEditTime: 2018-12-12 17:02:36
+ */
+const fs = require('fs');
+const path = require('path');
+const basePath = path.resolve(__dirname, '../src');
+
+const dirName = process.argv[2];
+const capPirName = dirName.substring(0, 1).toUpperCase() + dirName.substring(1);
+if (!dirName) {
+  console.log('文件夹名称不能为空!');
+  console.log('示例:npm run tep ${capPirName}');
+  process.exit(0)
+}
+
+/**
+ * @msg: vue页面模版
+ */
+const VueTep = `<template>
+  <div class="${dirName}-wrap">
+    {{data.pageName}}
+  </div>
+</template>
+
+<script lang="ts" src="./${dirName}.ts"></script>
+
+<style lang="scss">
+  @import './${dirName}.scss'
+</style>
+
+`;
+
+// ts 模版
+const tsTep = `import { Component, Vue } from "vue-property-decorator"
+import { Getter, Action } from "vuex-class"
+import { ${capPirName}Data } from '@/types/views/${dirName}.interface'
+// import {  } from "@/components" // 组件
+
+@Component({})
+export default class About extends Vue {
+  // Getter
+  // @Getter author
+  
+  // Action
+  // @Action GET_DATA_ASYN
+
+  // data
+  data: ${capPirName}Data = {
+    pageName: '${dirName}'
+  }
+
+  created() {
+    //
+  }
+  
+  activated() {
+    //
+  }
+
+  mounted() {
+    //
+  }
+
+  // 初始化函数
+  init() {
+    //
+  }
+    
+}
+`;
+
+// scss 模版
+const scssTep = `@import "@/assets/scss/variables.scss";
+
+.${dirName}-wrap {
+  width: 100%;
+}
+`;
+
+// interface 模版
+const interfaceTep = `// ${dirName}.Data 参数类型
+export interface ${capPirName}Data {
+  pageName: string
+}
+
+// VUEX ${dirName}.State 参数类型
+export interface ${capPirName}State {
+  author?: string
+}
+
+// GET_DATA_ASYN 接口参数类型
+// export interface DataOptions {}
+
+`;
+
+// vuex 模版
+const vuexTep = `
+import { ${capPirName}State } from '@/types/views/${dirName}.interface'
+import { GetterTree, MutationTree, ActionTree } from 'vuex'
+
+const state: ${capPirName}State = {
+  author: '三毛'
+}
+
+// 强制使用getter获取state
+const getters: GetterTree<${capPirName}State, any> = {
+  author: (state: ${capPirName}State) => state.author
+}
+
+// 更改state
+const mutations: MutationTree<${capPirName}State> = {
+  // 更新state都用该方法
+  UPDATE_STATE(state: ${capPirName}State, data: ${capPirName}State) {
+    for (const key in data) {
+      if (!data.hasOwnProperty(key)) { return }
+      state[key] = data[key]
+    }
+  }
+}
+
+const actions: ActionTree<${capPirName}State, any> = {
+  UPDATE_STATE_ASYN({ commit, state: ${capPirName}State }, data: ${capPirName}State) {
+    commit('UPDATE_STATE', data)
+  },
+  // GET_DATA_ASYN({ commit, state: LoginState }) {
+  //   ${capPirName}.getData()
+  // }
+}
+
+export default {
+  state,
+  getters,
+  mutations,
+  actions
+}
+
+`;
+
+// api 接口模版
+const apiTep = `import Api from '@/utils/request'
+
+export const getData = (data) => {
+  return Api.getData(data)
+}
+
+`;
+
+fs.mkdirSync(`${basePath}/views/${dirName}`); // mkdir
+
+process.chdir(`${basePath}/views/${dirName}`); // cd views
+fs.writeFileSync(`${dirName}.vue`, VueTep); // vue
+fs.writeFileSync(`${dirName}.ts`, tsTep); // ts
+fs.writeFileSync(`${dirName}.scss`, scssTep); // scss
+
+process.chdir(`${basePath}/types/views`); // cd types
+fs.writeFileSync(`${dirName}.interface.ts`, interfaceTep); // interface
+
+process.chdir(`${basePath}/store/module`); // cd store
+fs.writeFileSync(`${dirName}.ts`, vuexTep); // vuex
+
+process.chdir(`${basePath}/api`); // cd api
+fs.writeFileSync(`${dirName}.ts`, apiTep); // api
+
+process.exit(0);

+ 103 - 0
src/App.vue

@@ -0,0 +1,103 @@
+<template>
+    <div id="app">
+<!--        <header class="bar bar-nav d-flex justify-content-between align-items-center p-2">-->
+<!--            <el-button type="text" icon="el-icon-arrow-left" v-on:click="goBack"-->
+<!--                       v-if="$route.meta.showBackLeftBtn"></el-button>-->
+<!--&lt;!&ndash;            <h4 class="title">{{title}}</h4>&ndash;&gt;-->
+<!--            <el-button type="text"><span v-if="$route.meta.showBarRightBtn">编辑</span></el-button>-->
+<!--        </header>-->
+        <keep-alive>
+            <router-view class="app-body" v-if="$route.meta.keepAlive"/>
+        </keep-alive>
+        <router-view class="app-body" v-if="!$route.meta.keepAlive"/>
+        <div class="tab-nav nav-bar" v-if="$route.meta.showTab">
+                <a  href="javascript:;" v-for="(i,index) in data.tabs" :key="index" :class="{active:index == data.thatnum}" @click="addClassName(index)">
+                    <router-link :to="i.url">
+                        <img v-if="data.thatnum!=index"  :src="i.img"    class="first weui-tabbar__icon">
+                        <img v-if="data.thatnum==index"  :src="i.active" class="last first weui-tabbar__icon">
+                    </router-link>
+                </a>
+        </div>
+    </div>
+</template>
+
+<script lang="ts" >
+    import {Component,Vue} from "vue-property-decorator";
+    import router from "@/router";
+    import Utils from './extend/Utils';
+
+    @Component({})
+    export default class App extends Vue {
+         public data:any= {
+             thatnum: -1,
+             tabs:[
+                 {url:'/index',img:require('./assets/image/label_01.png'),active:require('./assets/image/label-2_01.png')},
+                 {url:'/other',img:require('./assets/image/label_02.png'),active:require('./assets/image/label-2_02.png')},
+                 {url:'/user',img:require('./assets/image/label_03.png'),active:require('./assets/image/label-2_03.png')}
+             ]
+         }
+        addClassName(index) {
+            this.data.thatnum = index;
+        }
+        public get title() {
+            return this.$route.meta.title;
+        }
+
+        public goBack() {
+            router.back();
+        }
+
+    }
+</script>
+
+<style lang="scss">
+    @import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
+    @import '@/assets/scss/common.scss';
+
+    #app {
+        position: relative;
+        min-height: 100%;
+        background: white;
+    }
+
+    #app > div:first-child {
+        font-size: 1.2rem;
+    }
+    .nav-ul{
+        display: flex;
+        width: 100%;
+    }
+
+    .tab-nav {
+        position: fixed;
+        display: flex;
+        justify-content: space-between;
+        bottom: 0;
+        left: 0;
+        right: 0;
+        border-bottom: 0;
+        border-top: 1px solid #f0f0f0;
+        background: #fff;
+        z-index: 999;
+        img{
+            width: 100%;
+        }
+    }
+
+    .app-body {
+        /*margin-top: 45px;*/
+        /*margin-bottom: 5rem;*/
+        overflow: hidden;
+    }
+
+    .bar-nav .title {
+        position: absolute;
+        left: 0;
+        right: 0;
+        text-align: center;
+    }
+    body .el-message-box {
+        width: 300px;
+    }
+
+</style>

BIN
src/assets/image/alipay.jpg


BIN
src/assets/image/arrow_03.png


BIN
src/assets/image/banner/banner_1.jpg


BIN
src/assets/image/banner/banner_2.jpg


BIN
src/assets/image/banner/banner_3.jpg


BIN
src/assets/image/banner/banner_4.jpg


BIN
src/assets/image/banner/banner_5.jpg


BIN
src/assets/image/been-used_03.png


BIN
src/assets/image/been-used_06.png


BIN
src/assets/image/discount_07.png


BIN
src/assets/image/exit_03.png


BIN
src/assets/image/homeico_10.png


BIN
src/assets/image/ico-10.png


BIN
src/assets/image/ico-11.png


BIN
src/assets/image/ico-12.png


BIN
src/assets/image/ico-13.png


BIN
src/assets/image/ico-14.png


BIN
src/assets/image/ico_01.png


BIN
src/assets/image/ico_02.png


BIN
src/assets/image/ico_03.png


BIN
src/assets/image/ico_04.png


BIN
src/assets/image/ico_05.png


BIN
src/assets/image/ico_06.png


BIN
src/assets/image/ico_07.png


BIN
src/assets/image/ico_08.png


BIN
src/assets/image/ico_09.png


BIN
src/assets/image/invitation_02.png


BIN
src/assets/image/invitation_04.png


BIN
src/assets/image/invitation_06.png


BIN
src/assets/image/invitation_10.png


BIN
src/assets/image/invitation_14.png


BIN
src/assets/image/invitation_18.png


BIN
src/assets/image/invitation_22.png


BIN
src/assets/image/label-2_01.png


BIN
src/assets/image/label-2_02.png


BIN
src/assets/image/label-2_03.png


BIN
src/assets/image/label_01.png


BIN
src/assets/image/label_02.png


BIN
src/assets/image/label_03.png


BIN
src/assets/image/login_03.png


BIN
src/assets/image/login_07.png


BIN
src/assets/image/login_11.png


BIN
src/assets/image/login_15.png


BIN
src/assets/image/logo.png


BIN
src/assets/image/myarrow.png


BIN
src/assets/image/no-info_03.png


BIN
src/assets/image/one-page_03.png


BIN
src/assets/image/one-page_07.png


BIN
src/assets/image/options.png


BIN
src/assets/image/pay-cost_03.png


BIN
src/assets/image/pay-cost_10.png


BIN
src/assets/image/pay-cost_11.png


BIN
src/assets/image/pay-cost_15.png


BIN
src/assets/image/payroll.png


BIN
src/assets/image/payrollback.png


BIN
src/assets/image/reward.png


BIN
src/assets/image/reward_03.png


BIN
src/assets/image/rule.png


BIN
src/assets/image/seal_03.png


BIN
src/assets/image/service.all.png


BIN
src/assets/image/service.half.png


BIN
src/assets/image/share_05.png


BIN
src/assets/image/share_09.png


BIN
src/assets/image/two_03.png


BIN
src/assets/image/withdraw-deposit_07.png


BIN
src/assets/image/wxpay.png


BIN
src/assets/image/xuan/bounced-h5_03.png


BIN
src/assets/image/xuan/h5banner.jpg


BIN
src/assets/image/xuan/h5ico_03.png


BIN
src/assets/image/xuan/h5ico_06.png


BIN
src/assets/image/xuan/h5ico_11.png


BIN
src/assets/image/xuan/h5ico_13.png


BIN
src/assets/image/xuan/h5ico_18.png


BIN
src/assets/image/xuan/h5ico_20.png


BIN
src/assets/image/xuan/h5ico_25.png


BIN
src/assets/image/xuan/h5ico_28.png


BIN
src/assets/image/xuan/h5ico_31.png


BIN
src/assets/image/xuan/h5ico_35.png


BIN
src/assets/image/xuan/h5ico_39.png


BIN
src/assets/image/xuan/h5ico_41.png


BIN
src/assets/image/xuan/h5ico_45.png


BIN
src/assets/image/xuan/h5ico_46.png


BIN
src/assets/image/xuan/h5ico_49.png


BIN
src/assets/image/xuan/h5ico_50.png


BIN
src/assets/image/xuan/h5ico_53.png


BIN
src/assets/image/xuan/h5ico_54.png


BIN
src/assets/image/xuan/h5ico_58.png


BIN
src/assets/image/xuan/h5ico_62.png


BIN
src/assets/image/xuan/h5ico_65.png


+ 0 - 0
src/assets/image/xuan/h5ico_68.png


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff