kongdeqiang
2022-12-29 ef2b0be11f0472976f7363c0ede346b111b67a21
修改前端页面
8个文件已修改
1个文件已添加
192 ■■■■ 已修改文件
package-lock.json 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/ByUtils.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/common/Sidebar.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/page/Index2.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/page/orderRecord/index.vue 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/page/user/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -1684,11 +1684,20 @@
        "@types/node": "*"
      }
    },
    "@vant/icons": {
      "version": "1.8.0",
      "resolved": "https://mirrors.cloud.tencent.com/npm/@vant%2ficons/-/icons-1.8.0.tgz",
      "integrity": "sha512-sKfEUo2/CkQFuERxvkuF6mGQZDKu3IQdj5rV9Fm0weJXtchDSSQ+zt8qPCNUEhh9Y8shy5PzxbvAfOOkCwlCXg=="
    },
    "@vant/popperjs": {
      "version": "1.3.0",
      "resolved": "https://mirrors.cloud.tencent.com/npm/@vant%2fpopperjs/-/popperjs-1.3.0.tgz",
      "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
    },
    "@vue/babel-helper-vue-jsx-merge-props": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
      "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==",
      "dev": true
      "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw=="
    },
    "@vue/babel-plugin-transform-vue-jsx": {
      "version": "1.1.2",
@@ -3312,6 +3321,15 @@
      "dev": true,
      "requires": {
        "object.assign": "^4.1.0"
      }
    },
    "babel-plugin-import": {
      "version": "1.13.5",
      "resolved": "https://mirrors.cloud.tencent.com/npm/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz",
      "integrity": "sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==",
      "dev": true,
      "requires": {
        "@babel/helper-module-imports": "^7.0.0"
      }
    },
    "babel-plugin-module-resolver": {
@@ -8467,9 +8485,9 @@
      "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
    },
    "moment": {
      "version": "2.26.0",
      "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz",
      "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw=="
      "version": "2.29.4",
      "resolved": "https://mirrors.cloud.tencent.com/npm/moment/-/moment-2.29.4.tgz",
      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
    },
    "morgan": {
      "version": "1.10.0",
@@ -12791,6 +12809,18 @@
      "resolved": "https://registry.npmjs.org/validate.js/-/validate.js-0.13.1.tgz",
      "integrity": "sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g=="
    },
    "vant": {
      "version": "2.12.53",
      "resolved": "https://mirrors.cloud.tencent.com/npm/vant/-/vant-2.12.53.tgz",
      "integrity": "sha512-f/wSWMCm/fd8bvm2QfPkpPqYUn8gwmBGw3DxAUPSTd/5prc1cRn23HEak8LDMJ5FmfW9mp7G5vdGlnEYCtww8Q==",
      "requires": {
        "@babel/runtime": "7.x",
        "@vant/icons": "^1.7.1",
        "@vant/popperjs": "^1.1.0",
        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
        "vue-lazyload": "1.2.3"
      }
    },
    "vary": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -12864,6 +12894,11 @@
      "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
      "dev": true
    },
    "vue-lazyload": {
      "version": "1.2.3",
      "resolved": "https://mirrors.cloud.tencent.com/npm/vue-lazyload/-/vue-lazyload-1.2.3.tgz",
      "integrity": "sha512-DC0ZwxanbRhx79tlA3zY5OYJkH8FYp3WBAnAJbrcuoS8eye1P73rcgAZhyxFSPUluJUTelMB+i/+VkNU/qVm7g=="
    },
    "vue-loader": {
      "version": "15.9.2",
      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.2.tgz",
package.json
@@ -12,13 +12,15 @@
    "axios": "^0.18.0",
    "babel-polyfill": "^6.26.0",
    "element-ui": "^2.13.1",
    "jquery": "^3.5.1",
    "mavon-editor": "^2.6.17",
    "moment": "^2.29.4",
    "node-sass": "^4.14.1",
    "qs": "^6.9.4",
    "sass-loader": "^10.0.4",
    "v-distpicker": "^1.2.1",
    "vant": "^2.12.53",
    "view-design": "^4.2.0",
    "jquery": "^3.5.1",
    "qs": "^6.9.4",
    "vue": "^2.5.21",
    "vue-cropperjs": "^3.0.0",
    "vue-quill-editor": "^3.0.6",
@@ -30,6 +32,7 @@
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.9.0",
    "@vue/cli-service": "^3.9.0",
    "babel-plugin-import": "^1.13.5",
    "lib-flexible": "^0.3.2",
    "vue-template-compiler": "^2.6.10"
  }
src/assets/js/ByUtils.js
@@ -272,7 +272,7 @@
                    vm.$router.push({'path': '/login'});
                    vm.$alert('会话结束,请重新登录', {'title': '提示', 'type': 'warning', 'center': true, 'showClose': false});
                }else{
                    vm.$alert('操作失败' , {'title': '提示', 'type': 'warning', 'center': true, 'showClose': false});
                    vm.$alert('操作错误' , {'title': '提示', 'type': 'warning', 'center': true, 'showClose': false});
                }
            }
        }).catch((e) => {
src/components/common/Sidebar.vue
@@ -94,6 +94,12 @@
                    name: '收费规则管理',
                    indexUrl: 'costRule'
                  },
                  {
                    id:9,
                    icon: 'el-icon-document',
                    name: '订单统计',
                    indexUrl: 'orderRecord'
                  },
                    // {
                    //     id:3,
                    //     icon: 'el-icon-folder-opened',
src/components/page/Index2.vue
@@ -34,7 +34,7 @@
                            <!--<el-input v-model="statisticData.code" readonly></el-input>-->
                        </el-form-item>
                        <el-form-item style="display: flex;justify-content: center;margin-top: 4.498vh" label-width="0" v-show="showFlag">
                            <el-button class="jiaofei-btn" type="primary" @click="pay()">去缴费</el-button>
                            <el-button class="jiaofei-btn" type="primary" @click="pay()" :loading="payFlag">去缴费</el-button>
                        </el-form-item>
                    </el-form>
                    <el-form label-width="100px" label-position="left">
@@ -59,6 +59,7 @@
        name: 'dashboard',
        data() {
            return {
                payFlag:false,
                outParkId:"",
                statisticData:{
@@ -82,10 +83,9 @@
            this.code2 = cs.code;
            this.$byutil.postData(this, this.$systemconfig.basePath + '/outPark/findByBarrierCode', {code:cs.code}, res => {
                this.statisticData = res.data;
                this.statisticData.enterTime = this.dateFormat('yyyy-MM-dd HH:mm:ss',this.statisticData.enterTime)
                this.statisticData.createTime = this.dateFormat('yyyy-MM-dd HH:mm:ss',this.statisticData.createTime)
                this.outParkId = this.statisticData.id;
                this.status3 = this.statisticData.status3;
                this.payFlag = false
                if(this.status3==1){
                    this.$message({
                        message: '您有违章未处理,请先处理或联系停车场管理人员',
@@ -97,21 +97,22 @@
        },
        methods: {
            pay(){
                this.payFlag = true;
                if(this.status3==1){
                    this.$message({
                        message: '您有违章未处理,请先处理或联系停车场管理人员',
                        type: 'error',
                        duration:5000,
                        duration:3000,
                    });
                    return;
                }
                this.$byutil.postData(this, this.$systemconfig.basePath + '/ffPay/park', {id:this.outParkId}, res => {
                    this.$message({
                        message: '10秒后自动跳转到支付页面,防止内外网数据同步延迟,请稍等',
                        message: '2秒后自动跳转到支付页面,防止内外网数据同步延迟,请稍等',
                        type: 'success',
                        duration:10000,
                        duration:2000,
                    });
                    setTimeout(function(){window.location.href = res.data.obj;},10000);
                  setTimeout(function(){window.location.href = res.msg;},2000);
                    this.showFlag = false;
                })
            },
@@ -137,28 +138,6 @@
                    });
                }
            },
          dateFormat(fmt, date) {
            let ret
            const opt = {
              'y+': date.getFullYear().toString(), // 年
              'M+': (date.getMonth() + 1).toString(), // 月
              'd+': date.getDate().toString(), // 日
              'H+': date.getHours().toString(), // 时
              'm+': date.getMinutes().toString(), // 分
              's+': date.getSeconds().toString(), // 秒
              // 有其他格式化字符需求可以继续添加,必须转化成字符串
            }
            for (let k in opt) {
              ret = new RegExp('(' + k + ')').exec(fmt)
              if (ret) {
                fmt = fmt.replace(
                    ret[1],
                    ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
                )
              }
            }
            return fmt
          },
        }
    }
src/components/page/orderRecord/index.vue
New file
@@ -0,0 +1,83 @@
<template>
    <div>
        <div style="padding: 10px 10px 0px 10px;">
            <el-form :inline="true" :model="searchForm">
              <el-form-item label="停车场">
              <el-select v-model="searchForm.parkId">
                <el-option v-for="item in table1" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
              </el-form-item>
              <el-form-item label="选择时间">
                <div class="date-box">
                  <el-date-picker type="daterange" value-format="yyyy-MM-dd" format="yyyy-MM-dd"
                                  v-model="searchForm.date" placeholder="">
                  </el-date-picker>
                </div>
              </el-form-item>
                <el-form-item>
                    <el-button type="primary" size="small" @click="onSearch" icon="el-icon-search">查询</el-button>
                </el-form-item>
            </el-form>
        </div>
        <el-table :data="table2" border style="width:100%;border:1px solid #bcbec2;">
            <el-table-column type="index" width="50" label="序号" align="center"> </el-table-column>
            <el-table-column prop="parkName" label="停车场" align="center" width="150"></el-table-column>
          <el-table-column prop="orderNum" label="有效订单数" align="center" width="150"></el-table-column>
            <el-table-column prop="orderMoney" label="订单总金额" align="center"></el-table-column>
        </el-table>
    </div>
</template>
<script>
    export default {
        name: "index",
        data: function () {
            return {
                flag:false,
                flag2:false,
                searchForm: {
                    parkId: '',
                    startTime:'',
                    endTime:'',
                    date:[],
                },
                formData: {
                  parkName:'',
                  orderNum:'',
                  orderMoney:''
                },
                urlPath:this.$systemconfig.basePath + '/orderrecord/',
                table1:[],
                table2:[],
            }
        },
        mounted() {
            this.loadData();
            this.$byutil.postData(this, this.$systemconfig.basePath+'/park/findAll', this.formData, res => {
                this.table1 = res.data;
            })
        },
        methods: {
            loadData() {
              if (this.searchForm.date) {
                this.searchForm.startTime = this.searchForm.date[0];
                this.searchForm.endTime = this.searchForm.date[1];
              } else {
                this.searchForm.startTime = null;
                this.searchForm.endTime = null;
              }
                this.$byutil.postData(this, this.urlPath+'findCountPage', this.searchForm,res => {
                  this.table2 = res.data;
                });
            },
            onSearch() {
                this.loadData();
            },
        }
    }
</script>
<style scoped>
</style>
src/components/page/user/index.vue
@@ -38,6 +38,9 @@
                <el-form-item label="登录名"  prop="loginName" :rules="[{required: true, message: '请输入登录名', trigger: 'blur'}]">
                    <el-input v-model="formData.loginName" auto-complete="off"></el-input>
                </el-form-item>
              <el-form-item label="密码"  prop="password" :rules="[{required: true, message: '请输入密码', trigger: 'blur'}]">
                <el-input v-model="formData.password" auto-complete="off"></el-input>
              </el-form-item>
                <el-form-item label="姓名" prop="name" :rules="[{required: true, message: '请输入姓名', trigger: 'blur'}]">
                    <el-input v-model="formData.name" auto-complete="off"></el-input>
                </el-form-item>
@@ -115,7 +118,7 @@
            },
            getParkList(){
              this.$byutil.postData(this, this.$systemconfig.basePath + '/park/findAll',null,res => {
                this.parkList = res.data.data
                this.parkList = res.data
              });
            },
            onSearch() {
src/main.js
@@ -14,6 +14,8 @@
import StringUtil from './assets/js/StringUtil'
import TscPrintUtil from './assets/js/TscPrintUtil'
import Print from './assets/js/print'
import moment from 'moment'
Vue.prototype.$moment = moment;
Vue.use(Print) // 注册
import ViewUI from 'view-design';
src/router/index.js
@@ -53,6 +53,11 @@
                    component: resolve => require(['../components/page/costRule/index.vue'], resolve),
                    meta: { title: '收费规则管理' }
                },
                {
                    path: '/orderRecord',
                    component: resolve => require(['../components/page/orderRecord/index.vue'], resolve),
                    meta: { title: '订单统计' }
                },
            ]
        },
        {