wang-hao-jie
2022-06-06 818d4458d77505b25ea057b49b409b1868ea8cff
默认更改列表
16个文件已修改
11个文件已添加
1954 ■■■■ 已修改文件
public/index.html 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/open.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/open2.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/libs/axios.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/libs/util.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/router.js 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Main.vue 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/home.vue 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table1.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table2.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table3.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table4.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table5.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table6.vue 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/open/table7.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sys/dict-manage/dictManage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/area-manage/areaManage.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/car-manage/carManage.vue 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/carInfo-manage/carInfoManage.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/map/areaMap.vue 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/order-manage/orderEvaluateManage.less 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/order-manage/orderEvaluateManage.vue 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/orderEvaluate-manage/orderEvaluateManage.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/your/suggest-manage/suggestManage.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html
@@ -5,61 +5,63 @@
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
  <link rel="icon" href="<%= BASE_URL %>logo.png">
  <title>XBoot前后端分离一站式快速开发平台springboot 2.x iview 前后端分离 vue 集成activiti工作流 iview admin 动态数据权限 权限按钮显示 spring security
    elasticsearch 分布式限流_同步锁</title>
  <!--<link rel="icon" href="<%= BASE_URL %>logo.png">-->
  <title>唐山烟草配送管理后台</title>
  <meta name="keywords"
    content="前后端分离,xboot,iview,iview admin,前后端分离工作流,vue集成activiti工作流,elasticsearch,security,动态数据权限,springboot,分布式限流_同步锁">
    content="">
  <meta name="description"
    content="xboot前后端分离开发平台springboot 2.x iview 前后端分离 vue 集成activiti工作流 iview admin 动态数据权限 权限按钮显示 spring security elasticsearch 分布式限流_同步锁">
    content="">
  <script src="<%= BASE_URL %>config.js" type="text/javascript"></script>
  <!-- 部署CDN优化 -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vuex@3.6.2/dist/vuex.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vue-i18n@8.24.4/dist/vue-i18n.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/view-design@4.6.1/dist/styles/iview.css">
  <script src="https://cdn.jsdelivr.net/npm/view-design@4.6.1/dist/iview.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vue-lazyload@1.3.3/vue-lazyload.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/apexcharts@3.27.1/dist/apexcharts.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vue-apexcharts@1.6.1/dist/vue-apexcharts.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/xlsx@0.17.0/dist/xlsx.full.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/dplayer@1.26.0/dist/DPlayer.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/print-js@1.6.0/dist/print.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.7/dist/html2canvas.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vue-json-pretty@1.8.0/lib/vue-json-pretty.min.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vue-json-pretty@1.8.0/lib/styles.css">
  <script src="https://cdn.jsdelivr.net/npm/js-cookie@2.2.1/src/js.cookie.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/wangeditor@4.7.5/dist/wangEditor.min.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.snow.css">
  <script src="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1.5.1/dist/sockjs.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/stompjs@2.3.3/lib/stomp.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.8.4/Sortable.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vuedraggable@2.24.3/dist/vuedraggable.umd.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/viewerjs@1.9.2/dist/viewer.min.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/viewerjs@1.9.2/dist/viewer.min.css">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.css">
  <script src="https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/leancloud-storage@4.10.1/dist/av-min.js"></script>
  <!--<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vuex@3.6.2/dist/vuex.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vue-i18n@8.24.4/dist/vue-i18n.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script>-->
  <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/view-design@4.6.1/dist/styles/iview.css">-->
  <!--<script src="https://cdn.jsdelivr.net/npm/view-design@4.6.1/dist/iview.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vue-lazyload@1.3.3/vue-lazyload.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/apexcharts@3.27.1/dist/apexcharts.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vue-apexcharts@1.6.1/dist/vue-apexcharts.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/xlsx@0.17.0/dist/xlsx.full.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/dplayer@1.26.0/dist/DPlayer.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/print-js@1.6.0/dist/print.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.7/dist/html2canvas.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vue-json-pretty@1.8.0/lib/vue-json-pretty.min.js"></script>-->
  <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vue-json-pretty@1.8.0/lib/styles.css">-->
  <!--<script src="https://cdn.jsdelivr.net/npm/js-cookie@2.2.1/src/js.cookie.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/wangeditor@4.7.5/dist/wangEditor.min.js"></script>-->
  <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.snow.css">-->
  <!--<script src="https://cdn.jsdelivr.net/npm/quill@1.3.7/dist/quill.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1.5.1/dist/sockjs.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/stompjs@2.3.3/lib/stomp.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/sortablejs@1.8.4/Sortable.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/vuedraggable@2.24.3/dist/vuedraggable.umd.min.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/viewerjs@1.9.2/dist/viewer.min.js"></script>-->
  <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/viewerjs@1.9.2/dist/viewer.min.css">-->
  <script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=H1RLDFX3oib78k9N9ocaB1Ac"></script>
  <link href="//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.css" rel="stylesheet">
  <script type="text/javascript" src="//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.js"></script>
  <!---->
  <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.css">-->
  <!--<script src="https://cdn.jsdelivr.net/npm/gitalk@1.7.2/dist/gitalk.min.js"></script>-->
  <!--<script src="//cdn.jsdelivr.net/npm/leancloud-storage@4.10.1/dist/av-min.js"></script>-->
  <!-- vaptcha -->
  <script src="https://v.vaptcha.com/v3.js"></script>
  <!-- monaco编辑器 -->
  <link rel="stylesheet" data-name="vs/editor/editor.main"
    href="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/editor/editor.main.css">
  <script>self.require = { paths: { 'vs': 'https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs' }, 'vs/nls': { availableLanguages: { '*': 'zh-cn' } } };</script>
  <script src="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/loader.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/editor/editor.main.nls.zh-cn.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/editor/editor.main.js"></script>
  <!-- mapbox -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mapbox-gl@2.3.0/dist/mapbox-gl.css">
  <link rel="stylesheet"
    href="https://cdn.jsdelivr.net/npm/@mapbox/mapbox-gl-geocoder@4.7.1/dist/mapbox-gl-geocoder.css">
  <!--&lt;!&ndash; vaptcha &ndash;&gt;-->
  <!--<script src="https://v.vaptcha.com/v3.js"></script>-->
  <!--&lt;!&ndash; monaco编辑器 &ndash;&gt;-->
  <!--<link rel="stylesheet" data-name="vs/editor/editor.main"-->
    <!--href="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/editor/editor.main.css">-->
  <!--<script>self.require = { paths: { 'vs': 'https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs' }, 'vs/nls': { availableLanguages: { '*': 'zh-cn' } } };</script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/loader.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/editor/editor.main.nls.zh-cn.js"></script>-->
  <!--<script src="https://cdn.jsdelivr.net/npm/monaco-editor@0.24.0/min/vs/editor/editor.main.js"></script>-->
  <!--&lt;!&ndash; mapbox &ndash;&gt;-->
  <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mapbox-gl@2.3.0/dist/mapbox-gl.css">-->
  <!--<link rel="stylesheet"-->
    <!--href="https://cdn.jsdelivr.net/npm/@mapbox/mapbox-gl-geocoder@4.7.1/dist/mapbox-gl-geocoder.css">-->
  <script>
    (function () {
src/api/open.js
@@ -246,3 +246,27 @@
export const getDrivingRecord = (params) => {
    return getRequest('/drivingRecord/getByPage', params)
}
// 查询片区所有
export const getAllArea = (params) => {
    return getRequest('/area/getAll', params)
}
export const getAllByAreaId = (params) => {
    return getRequest('/areaMap/getAllById', params)
}
export const addAreaMap = (params) => {
    return postRequest('/areaMap/insertOrUpdate', params)
}
export const delAreaMap = (params) => {
    return postRequest('/areaMap/delById2', params)
}
//查询违章记录
export const findPageOrderTask2 = (params) => {
    return getRequest('/orderTask2/getByPage', params)
}
src/api/open2.js
New file
@@ -0,0 +1,21 @@
// 统一请求路径前缀在libs/axios.js中修改
import { getRequest, getNoAuthRequest, postNoAuthRequest, postRequest } from '@/libs/axios';
//table1
export const table1 = (params) => {
    return getRequest('/pcStatistic3/table1', params)
}
export const table2 = (params) => {
    return getRequest('/pcStatistic3/table2', params)
}
export const table3 = (params) => {
    return getRequest('/pcStatistic3/table3', params)
}
export const table4 = (params) => {
    return getRequest('/pcStatistic3/table4', params)
}
src/libs/axios.js
@@ -15,6 +15,7 @@
    return Promise.resolve(err);
});
// http response 拦截器
axios.interceptors.response.use(response => {
    const data = response.data;
@@ -68,7 +69,7 @@
        url: `${baseApi}${url}`,
        params: params,
        headers: {
            'accessToken': accessToken
            'accessToken': accessToken,
        }
    });
};
src/libs/util.js
@@ -9,7 +9,7 @@
};
util.title = function (title) {
    title = title || 'XBoot一站式前后端分离快速开发平台';
    title = title;
    window.document.title = title;
};
@@ -451,7 +451,7 @@
        let meta = {};
        // 给页面添加权限、标题、第三方网页链接
        meta.permTypes = menu.permTypes ? menu.permTypes : null;
        meta.title = menu.title ? menu.title + " - XBoot一站式前后端分离快速开发平台 By: Exrick" : null;
        meta.title = menu.title ? menu.title: null;
        meta.url = menu.url ? menu.url : null;
        menu.meta = meta;
src/main.js
@@ -2,7 +2,7 @@
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import ViewUI from 'view-design'
// import 'view-design/dist/styles/iview.css'
import 'view-design/dist/styles/iview.css'
import App from './App'
import { router } from './router/index'
import store from './store'
src/router/index.js
@@ -7,20 +7,22 @@
Vue.use(VueRouter);
// 路由配置
//路由配置
const RouterConfig = {
    mode: 'history',
    //mode: 'history',
    routes: routers
};
export const router = new VueRouter(RouterConfig);
//export const router = new VueRouter();
router.beforeEach((to, from, next) => {
    ViewUI.LoadingBar.start();
    util.title(to.meta.title);
    var name = to.name;
    // 白名单
    var whiteList = ['login', 'regist', 'regist-result', 'relate', 'reset', 'authorize'];
    //var whiteList = ['login', 'regist', 'regist-result', 'relate', 'reset', 'authorize', 'table1'];
    var whiteList = ['login','table1','table2','table3','table4','table5','table6','table7'];
    var isInWhiteList = util.oneOf(name, whiteList);
    if (!Cookies.get('userInfo') && !isInWhiteList) {
        // 判断是否已经登录且页面不在白名单
src/router/router.js
@@ -5,7 +5,7 @@
    path: '/login',
    name: 'login',
    meta: {
        title: '登录 - XBoot前后端分离开发平台 '
        title: '登录'
    },
    component: () => import('@/views/login.vue')
};
@@ -14,7 +14,7 @@
    path: '/regist',
    name: 'regist',
    meta: {
        title: '注册 - XBoot前后端分离开发平台'
        title: '注册'
    },
    component: () => import('@/views/regist.vue')
};
@@ -23,7 +23,7 @@
    path: '/regist-result',
    name: 'regist-result',
    meta: {
        title: '注册结果 - XBoot前后端分离开发平台'
        title: '注册结果'
    },
    component: () => import('@/views/regist-result.vue')
};
@@ -32,7 +32,7 @@
    path: '/reset',
    name: 'reset',
    meta: {
        title: '重置密码 - XBoot前后端分离开发平台'
        title: '重置密码'
    },
    component: () => import('@/views/reset.vue')
};
@@ -41,7 +41,7 @@
    path: '/relate',
    name: 'relate',
    meta: {
        title: '绑定账号 - XBoot前后端分离开发平台 '
        title: '绑定账号 '
    },
    component: () => import('@/views/relate.vue')
};
@@ -50,7 +50,7 @@
    path: '/authorize',
    name: 'authorize',
    meta: {
        title: 'XBoot统一认证平台 - XBoot前后端分离开发平台 '
        title: ' '
    },
    component: () => import('@/views/authorize.vue')
};
@@ -91,6 +91,14 @@
    component: () => import('@/views/sys/user-manage/userManage.vue')
};
export const table1 = {path: '/table1', meta: {title: 'table1'}, name: 'table1', component: () => import('@/views/open/table1.vue')};
export const table2 = {path: '/table2', meta: {title: 'table2'}, name: 'table2', component: () => import('@/views/open/table2.vue')};
export const table3 = {path: '/table3', meta: {title: 'table3'}, name: 'table3', component: () => import('@/views/open/table3.vue')};
export const table4 = {path: '/table4', meta: {title: 'table4'}, name: 'table4', component: () => import('@/views/open/table4.vue')};
export const table5 = {path: '/table5', meta: {title: 'table5'}, name: 'table5', component: () => import('@/views/open/table5.vue')};
export const table6 = {path: '/table6', meta: {title: 'table6'}, name: 'table6', component: () => import('@/views/open/table6.vue')};
export const table7 = {path: '/table7', meta: {title: 'table7'}, name: 'table7', component: () => import('@/views/open/table7.vue')};
// 作为Main组件的子页面展示但是不在左侧菜单显示的路由写在otherRouter里
export const otherRouter = {
    path: '/',
@@ -122,5 +130,12 @@
    ...appRouter,
    page500,
    page403,
    home2
    home2,
    table1,
    table2,
    table3,
    table4,
    table5,
    table6,
    table7,
];
src/views/Main.vue
@@ -20,17 +20,17 @@
        :menu-list="menuList"
      >
        <div slot="top" class="logo-content" v-if="showLogo || fixNav">
          <img
            v-show="
              !shrink && (menuTheme != 'light' || mainTheme == 'darkMode')
            "
            src="@/assets/logo-white.png"
          />
          <img
            v-show="!shrink && menuTheme == 'light' && mainTheme != 'darkMode'"
            src="@/assets/logo-black.png"
          />
          <img v-show="shrink" src="@/assets/logo-min.png" key="min-logo" />
          <!--<img-->
            <!--v-show="-->
              <!--!shrink && (menuTheme != 'light' || mainTheme == 'darkMode')-->
            <!--"-->
            <!--src="@/assets/yancao.png"-->
          <!--/>-->
          <!--<img-->
            <!--v-show="!shrink && menuTheme == 'light' && mainTheme != 'darkMode'"-->
            <!--src="@/assets/yancao.png"-->
          <!--/>-->
          <img src="@/assets/yancao.png"/>
        </div>
      </shrinkable-menu>
    </div>
@@ -52,22 +52,22 @@
            <img src="@/assets/logo-white.png" key="max-logo" v-else />
          </div>
          <!-- 收缩图标 -->
          <div
            class="header-navicon-content header-action"
            @click="toggleClick"
            v-if="showFold"
          >
            <Icon
              custom="iconfont icon-menu-unfold"
              size="20"
              v-show="this.shrink"
            />
            <Icon
              custom="iconfont icon-menu-fold"
              size="20"
              v-show="!this.shrink"
            />
          </div>
          <!--<div-->
            <!--class="header-navicon-content header-action"-->
            <!--@click="toggleClick"-->
            <!--v-if="showFold"-->
          <!--&gt;-->
            <!--<Icon-->
              <!--custom="iconfont icon-menu-unfold"-->
              <!--size="20"-->
              <!--v-show="this.shrink"-->
            <!--/>-->
            <!--<Icon-->
              <!--custom="iconfont icon-menu-fold"-->
              <!--size="20"-->
              <!--v-show="!this.shrink"-->
            <!--/>-->
          <!--</div>-->
          <div class="header-middle-content">
            <!-- 顶部菜单 -->
            <div v-if="navType == 1">
src/views/home/home.vue
@@ -5,6 +5,7 @@
<template>
  <div>
    <div v-show="currNav == 'xboot'" class="home">
      <a :href="this.token" target="_blank">唐山烟草大屏地址</a>
      <!--<Row :gutter="10">-->
        <!--&lt;!&ndash; 左上侧 用户信息及github链接 &ndash;&gt;-->
        <!--<Col :xs="24" :sm="24" :lg="24" :xl="8">-->
@@ -493,6 +494,7 @@
      userType: "无",
      time: "",
      price: "...",
      token:""
    };
  },
  computed: {
@@ -545,42 +547,45 @@
    },
  },
  mounted() {
    this.init();
    // 通知
    let noticeFlag = "noticeShowed";
    let notice = Cookies.get(noticeFlag);
    if (notice != noticeFlag) {
      this.showNotice();
      Cookies.set(noticeFlag, noticeFlag);
    }
    // 价格
    AV.init({
      appId: "6Bstbxl4NDU69I77D3nzf61h-gzGzoHsz",
      appKey: "gaFTnYlTul3M8qdiGlbfvoJK",
      serverURL: "https://6bstbxl4.lc-cn-n1-shared.com",
    });
    const query = new AV.Query("Price");
    query.equalTo("objectId", "6080216c2a5bb23590bcaedb");
    query.first().then((e) => {
      this.price = e.attributes.price;
    });
    // Gitalk
    var gitalk = new Gitalk({
      clientID: "a128de2dd7383614273a",
      clientSecret: "a77691ecb662a8303a6c686ae651ae035868da6e",
      repo: "xboot-comments",
      owner: "Exrick",
      admin: ["Exrick"],
      distractionFreeMode: false, // 遮罩效果
    });
    gitalk.render("comments");
    // 宣传视频
    let videoFlag = "videoShowed";
    let xbootVideo = Cookies.get(videoFlag);
    if (xbootVideo != videoFlag) {
      this.showVideo = true;
      Cookies.set(videoFlag, videoFlag);
    }
    //this.token = 'http://111.63.178.115:9093?token='+new Date().getTime();
    this.token = 'http://localhost:8080?token='+new Date().getTime();
    //this.token = 'http://localhost:8080'
    // this.init();
    // // 通知
    // let noticeFlag = "noticeShowed";
    // let notice = Cookies.get(noticeFlag);
    // if (notice != noticeFlag) {
    //   this.showNotice();
    //   Cookies.set(noticeFlag, noticeFlag);
    // }
    // // 价格
    // AV.init({
    //   appId: "6Bstbxl4NDU69I77D3nzf61h-gzGzoHsz",
    //   appKey: "gaFTnYlTul3M8qdiGlbfvoJK",
    //   serverURL: "https://6bstbxl4.lc-cn-n1-shared.com",
    // });
    // const query = new AV.Query("Price");
    // query.equalTo("objectId", "6080216c2a5bb23590bcaedb");
    // query.first().then((e) => {
    //   this.price = e.attributes.price;
    // });
    // // Gitalk
    // var gitalk = new Gitalk({
    //   clientID: "a128de2dd7383614273a",
    //   clientSecret: "a77691ecb662a8303a6c686ae651ae035868da6e",
    //   repo: "xboot-comments",
    //   owner: "Exrick",
    //   admin: ["Exrick"],
    //   distractionFreeMode: false, // 遮罩效果
    // });
    // gitalk.render("comments");
    // // 宣传视频
    // let videoFlag = "videoShowed";
    // let xbootVideo = Cookies.get(videoFlag);
    // if (xbootVideo != videoFlag) {
    //   this.showVideo = true;
    //   Cookies.set(videoFlag, videoFlag);
    // }
  },
};
</script>
src/views/login.vue
@@ -24,7 +24,7 @@
                                            prefix="ios-contact"
                                            size="large"
                                            clearable
                                            placeholder="账号/邮箱/手机号"
                                            placeholder="账号"
                                            autocomplete="off"
                                    />
                                </FormItem>
@@ -203,8 +203,8 @@
                sending: false,
                errorCode: "",
                form: {
                    username: "admin",
                    password: "123456",
                    username: "",
                    password: "",
                    code: "",
                },
            };
src/views/open/table1.vue
New file
@@ -0,0 +1,98 @@
<template>
  <div class="search">
    <Card>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
              sortable="custom"
              @on-sort-change="changeSort"
              @on-selection-change="changeSelect"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
  </div>
</template>
<script>
  import {table1,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          key: "",
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "车牌号",
            key: "carNo",
            width: 230,
          },
          {
            title: "出发时间",
            key: "createTime",
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      init() {
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table1(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/open/table2.vue
New file
@@ -0,0 +1,121 @@
<template>
  <div class="search">
    <Card>
      <Date-picker clearable @on-change="time1" format="yyyy-MM-dd" type="date" placement="bottom-end" placeholder="请选择配送日期" style="width: 240px;margin-bottom: 10px">
      </Date-picker>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
  </div>
</template>
<script>
  import {table2,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          sendDate: "",
          status:0//未配送的
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "商户",
            key: "customerName",
            tooltip:true,
          },
          {
            title: "条数",
            key: "num",
            width: 90,
          },
          {
            title: "配送日期",
            key: "sendDate",
            width: 150,
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      getNowDay(){
        let nowDate = new Date()
        let date = {
          year: nowDate.getFullYear(),
          month: nowDate.getMonth() + 1,
          date: nowDate.getDate()
        }
        if (parseInt(date.date) < 10) {
          date.date = '0' + date.date
        }
        this.searchForm.sendDate = date.year + '-' + date.month + '-' + date.date
      },
      init() {
        this.getNowDay();
        this.getDataList();
      },
      time1(e){
        this.searchForm.sendDate = e;
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table2(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/open/table3.vue
New file
@@ -0,0 +1,121 @@
<template>
  <div class="search">
    <Card>
      <Date-picker clearable @on-change="time1" format="yyyy-MM-dd" type="date" placement="bottom-end" placeholder="请选择配送日期" style="width: 240px;margin-bottom: 10px">
      </Date-picker>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
  </div>
</template>
<script>
  import {table2,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          sendDate: "",
          status:1//已送达
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "商户",
            key: "customerName",
            tooltip:true,
          },
          {
            title: "条数",
            key: "num",
            width: 90,
          },
          {
            title: "配送日期",
            key: "sendDate",
            width: 150,
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      getNowDay(){
        let nowDate = new Date()
        let date = {
          year: nowDate.getFullYear(),
          month: nowDate.getMonth() + 1,
          date: nowDate.getDate()
        }
        if (parseInt(date.date) < 10) {
          date.date = '0' + date.date
        }
        this.searchForm.sendDate = date.year + '-' + date.month + '-' + date.date
      },
      init() {
        this.getNowDay();
        this.getDataList();
      },
      time1(e){
        this.searchForm.sendDate = e;
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table2(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/open/table4.vue
New file
@@ -0,0 +1,127 @@
<template>
  <div class="search">
    <Card>
      <Date-picker clearable @on-change="time1" format="yyyy-MM-dd" type="date" placement="bottom-end" placeholder="请选择配送日期" style="width: 240px;margin-bottom: 10px">
      </Date-picker>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
  </div>
</template>
<script>
  import {table2,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          sendDate: "",
          status:2//异常配送
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "商户",
            key: "customerName",
            tooltip:true,
          },
          {
            title: "条数",
            key: "num",
            width: 90,
          },
          {
            title: "配送日期",
            key: "sendDate",
            width: 150,
          },
          {
            title: "异常原因",
            key: "remarks",
            width: 150,
            tooltip:true,
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      getNowDay(){
        let nowDate = new Date()
        let date = {
          year: nowDate.getFullYear(),
          month: nowDate.getMonth() + 1,
          date: nowDate.getDate()
        }
        if (parseInt(date.date) < 10) {
          date.date = '0' + date.date
        }
        this.searchForm.sendDate = date.year + '-' + date.month + '-' + date.date
      },
      init() {
        this.getNowDay();
        this.getDataList();
      },
      time1(e){
        this.searchForm.sendDate = e;
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table2(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/open/table5.vue
New file
@@ -0,0 +1,134 @@
<template>
  <div class="search">
    <Card>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
              sortable="custom"
              @on-sort-change="changeSort"
              @on-selection-change="changeSelect"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
    <!-- 编辑 -->
    <Modal v-model="visible" :mask-closable="false" :width="500">
      <img :src="imgUrl">
    </Modal>
  </div>
</template>
<script>
  import {table3,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        imgUrl:"",
        visible:false,
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          type: 5,
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "车牌号",
            key: "carNo",
            width: 150,
          },
          {
            title: "报警时间",
            key: "createTime",
          },
          {
            title: "操作",
            key: "action",
            align: "center",
            width: 150,
            render: (h, params) => {
              return h("div", [
                h(
                        "a",
                        {
                          on: {
                            click: () => {
                              this.showImg(params.row);
                            },
                          },
                        },
                        "查看图片"
                ),h("Divider", {
                  props: {
                    type: "vertical",
                  },
                }),
              ]);
            },
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      init() {
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table3(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
      showImg(row){
        this.visible = true;
        this.imgUrl = row.alarmImg;
      }
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/open/table6.vue
New file
@@ -0,0 +1,104 @@
<template>
  <div class="search">
    <Card>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
              sortable="custom"
              @on-sort-change="changeSort"
              @on-selection-change="changeSelect"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
  </div>
</template>
<script>
  import {table4,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          key: "",
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "商户名称",
            key: "name",
            tooltip:true,
          },
          {
            title: "法人",
            key: "linker",
            width: 100,
          },
          {
            title: "创建时间",
            key: "createTime",
            width: 180,
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      init() {
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table4(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/open/table7.vue
New file
@@ -0,0 +1,120 @@
<template>
  <div class="search">
    <Card>
      <Date-picker clearable @on-change="time1" format="yyyy-MM-dd" type="date" placement="bottom-end" placeholder="请选择配送日期" style="width: 240px;margin-bottom: 10px">
      </Date-picker>
      <Table
              :loading="loading"
              border
              :columns="columns"
              :data="data"
              ref="table"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
                :current="searchForm.pageNumber"
                :total="total"
                :page-size="searchForm.pageSize"
                @on-change="changePage"
                @on-page-size-change="changePageSize"
                :page-size-opts="[10, 20, 50]"
                size="small"
                show-total
                show-elevator
                show-sizer
        ></Page>
      </Row>
    </Card>
  </div>
</template>
<script>
  import {table2,} from "@/api/open2";
  export default {
    name: "table1",
    data() {
      return {
        maxHeight: 510,
        loading: true,
        searchForm: {
          // 搜索框初始化对象
          pageNumber: 1, // 当前页数
          pageSize: 10, // 页面大小
          sort: "createTime", // 默认排序字段
          order: "desc", // 默认排序方式
          sendDate: "",
        },
        columns: [
          {
            type: "index",
            width: 60,
            align: "center",
          },
          {
            title: "商户",
            key: "customerName",
            tooltip:true,
          },
          {
            title: "条数",
            key: "num",
            width: 90,
          },
          {
            title: "配送日期",
            key: "sendDate",
            width: 150,
          },
        ],
        data: [],
        total: 0,
      };
    },
    methods: {
      getNowDay(){
        let nowDate = new Date()
        let date = {
          year: nowDate.getFullYear(),
          month: nowDate.getMonth() + 1,
          date: nowDate.getDate()
        }
        if (parseInt(date.date) < 10) {
          date.date = '0' + date.date
        }
        this.searchForm.sendDate = date.year + '-' + date.month + '-' + date.date
      },
      init() {
        this.getNowDay();
        this.getDataList();
      },
      time1(e){
        this.searchForm.sendDate = e;
        this.getDataList();
      },
      changePage(v) {
        this.searchForm.pageNumber = v;
        this.getDataList();
        this.clearSelectAll();
      },
      changePageSize(v) {
        this.searchForm.pageSize = v;
        this.getDataList();
      },
      getDataList() {
        this.loading = true;
        table2(this.searchForm).then((res) => {
          this.loading = false;
          if (res.success) {
            this.data = res.result.records;
            this.total = res.result.total;
          }
        });
      },
    },
    mounted() {
      this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
      this.init();
    },
  };
</script>
src/views/sys/dict-manage/dictManage.vue
@@ -341,6 +341,7 @@
          key: "value",
          minWidth: 160,
          sortable: true,
          tooltip:true,
        },
        {
          title: "备注",
src/views/your/area-manage/areaManage.vue
@@ -66,10 +66,16 @@
        <FormItem label="片区描述" prop="description">
          <Input v-model="areaForm.description" />
        </FormItem>
        <FormItem label="配送员" prop="userId">
          <Select v-model="areaForm.userId" filterable>
            <Option :value="0" :key="0" selected>请选择</Option>
            <Option v-for="item in userList" :value="item.id">{{ item.nickname }}</Option>
        <!--<FormItem label="配送员" prop="userId">-->
          <!--<Select v-model="areaForm.userId" filterable>-->
            <!--<Option :value="0" :key="0" selected>请选择</Option>-->
            <!--<Option v-for="item in userList" :value="item.id">{{ item.nickname }}</Option>-->
          <!--</Select>-->
        <!--</FormItem>-->
        <FormItem label="配送车辆" prop="carId">
          <Select v-model="areaForm.carId" filterable>
            <Option value="" key="" selected>请选择</Option>
            <Option v-for="item in carList" :value="item.id">{{ item.carNo }}</Option>
          </Select>
        </FormItem>
      </Form>
@@ -130,9 +136,9 @@
        <FormItem label="商户名称" prop="name">
          <Input v-model="customerForm.name" />
        </FormItem>
        <FormItem label="商户编号" prop="code">
          <Input v-model="customerForm.code" />
        </FormItem>
        <!--<FormItem label="商户编号" prop="code">-->
          <!--<Input v-model="customerForm.code" />-->
        <!--</FormItem>-->
        <Row :gutter="0">
          <Col span="12">
@@ -147,15 +153,15 @@
          </Col>
        </Row>
        <Row :gutter="0">
          <Col span="12">
            <Form-item label="上次配送日期" prop="lastTime">
              <Row>
                <Col>
                  <Date-picker @on-change="change1" type="date" value="yyyy-MM-dd" placeholder="选择日期" v-model="customerForm.lastTime"></Date-picker>
                </Col>
              </Row>
            </Form-item>
          </Col>
          <!--<Col span="12">-->
            <!--<Form-item label="上次配送日期" prop="lastTime">-->
              <!--<Row>-->
                <!--<Col>-->
                  <!--<Date-picker @on-change="change1" type="date" value="yyyy-MM-dd" placeholder="选择日期" v-model="customerForm.lastTime"></Date-picker>-->
                <!--</Col>-->
              <!--</Row>-->
            <!--</Form-item>-->
          <!--</Col>-->
          <Col span="12">
            <FormItem label="联系方式" prop="phone">
              <Input v-model="customerForm.phone"/>
@@ -316,6 +322,7 @@
      modalTitle: "",
      modalTitle2: "",
      modalTitle3: "",
      carList:[],
      searchForm: {
        // 搜索框初始化对象
        pageNumber: 1, // 当前页数
@@ -327,7 +334,6 @@
      areaForm: {
      },
      customerForm: {
        kstatus : 1
      },
      areaSectionForm: {
      },
@@ -366,8 +372,8 @@
          }
        },
        {
          title: "配送人",
          key: "nickName",
          title: "配送车辆",
          key: "carNo",
          width: 200,
        },
        {
@@ -519,33 +525,33 @@
          key: "phone",
          width: 135,
        },
        {
          title: "状态",
          key: "status",
          width:100,
          render: (h, params) => {
            let re = "";
            if (params.row.status == 0) {
              return h("div", [
                h("Badge", {
                  props: {
                    status: "success",
                    text: "正常",
                  },
                }),
              ]);
            } else if (params.row.status == 1) {
              return h("div", [
                h("Badge", {
                  props: {
                    status: "error",
                    text: "不活跃",
                  },
                }),
              ]);
            }
          },
        },
        // {
        //   title: "状态",
        //   key: "status",
        //   width:100,
        //   render: (h, params) => {
        //     let re = "";
        //     if (params.row.status == 0) {
        //       return h("div", [
        //         h("Badge", {
        //           props: {
        //             status: "success",
        //             text: "正常",
        //           },
        //         }),
        //       ]);
        //     } else if (params.row.status == 1) {
        //       return h("div", [
        //         h("Badge", {
        //           props: {
        //             status: "error",
        //             text: "不活跃",
        //           },
        //         }),
        //       ]);
        //     }
        //   },
        // },
        {
          title: "联系人",
          key: "linker",
@@ -713,6 +719,13 @@
        }
      });
    },
    getAllCar(){
      getAll().then((res)=>{
        if (res.success){
          this.carList=res.result;
        }
      });
    },
    getAreaSectionList(areaId) {
      this.loading = true;
      this.searchForm.areaId=areaId;
@@ -800,14 +813,16 @@
    },
    submitCustomer() {
      this.$refs.areaSectionForm.validate((valid) => {
        this.customerForm.lastTime = this.lastTime;
        //this.customerForm.lastTime = this.lastTime;
        this.customerForm.areaSectionId = this.areaSectionId;
        this.customerForm.areaId = this.areaId;
        this.customerForm.kstatus = 1;
        if (valid) {
            this.$delete(this.customerForm,'receives')
          if (this.modalType == 0) {
            // 添加
            this.submitLoading = true;
            this.customerForm.kstatus = 0;
            addCustomer(this.customerForm).then((res) => {
              this.submitLoading = false;
              if (res.success) {
@@ -896,7 +911,8 @@
      console.log(this.areaSectionId);
    },
    addCar() {
      this.getAllUser();
      //this.getAllUser();
      this.getAllCar();
      this.modalType = 0;
      this.modalTitle = "添加";
      this.$refs.areaForm.resetFields();
@@ -920,7 +936,8 @@
      this.addCustomerVisible = true;
    },
    edit(v) {
      this.getAllUser();
      //this.getAllUser();
      this.getAllCar()
      this.modalType = 1;
      this.modalTitle = "编辑";
      this.$refs.areaForm.resetFields();
src/views/your/car-manage/carManage.vue
@@ -323,6 +323,61 @@
          sortable: true,
        },
        {
          title: "司机",
          key: "nickName",
          width: 100,
        },
        {
          title: "配送员",
          key: "followNickName",
          width: 100,
        },
        {
          title: "品牌",
          key: "brand",
          width: 100,
        },
        {
          title: "型号",
          key: "model",
          width: 100,
        },
        {
          title: "排量",
          key: "displacement",
          width: 100,
        },
        {
          title: "加油卡号",
          key: "addOilCode",
          minWidth: 120,
          // sortable: true,
          render: (h, params) => {
            return h("div",params.row.addOilCode=="undefined" ? '':params.row.addOilCode);
          }
        },
        {
          title: "编号",
          key: "code",
          minWidth: 120,
          tooltip:true,
          // render: (h, params) => {
          //   return h("div",params.row.code=="undefined" ? '':params.row.code);
          // }
        },
        {
          title: "购置年份",
          key: "buyYear",
          minWidth: 120,
          sortable: true,
        },
        {
          title: "登记日期",
          key: "createTime",
          minWidth: 180,
          sortable: true,
        },
        {
          title: "状态",
          key: "status",
          width: 100,
@@ -354,61 +409,6 @@
          title: "移除原因",
          key: "removeReason",
          width: 170,
          sortable: true,
        },
        {
          title: "司机",
          key: "nickName",
          width: 100,
        },
        {
          title: "配送员",
          key: "followNickName",
          width: 100,
        },
        {
          title: "品牌",
          key: "brand",
          width: 100,
        },
        {
          title: "型号",
          key: "model",
          width: 100,
        },
        {
          title: "排量",
          key: "displacement",
          width: 100,
        },
        {
          title: "加油卡号",
          key: "addOilCode",
          minWidth: 120,
          sortable: true,
          render: (h, params) => {
            return h("div",params.row.addOilCode=="undefined" ? '':params.row.addOilCode);
          }
        },
        {
          title: "编号",
          key: "code",
          minWidth: 120,
          tooltip:true,
          render: (h, params) => {
            return h("div",params.row.code=="undefined" ? '':params.row.code);
          }
        },
        {
          title: "购置年份",
          key: "buyYear",
          minWidth: 120,
          sortable: true,
        },
        {
          title: "登记日期",
          key: "createTime",
          minWidth: 180,
          sortable: true,
        },
        {
src/views/your/carInfo-manage/carInfoManage.vue
@@ -288,19 +288,19 @@
              return h("div",params.row.endMileage-params.row.beginMileage);
            }
          },
          {
            title: "送货户数",
            key: "oilWear",
            width: 130,
          },
          {
            title: "送货量(件)",
            key: "oilWear",
            width: 130,
            render: (h, params) => {
              return h("div",0);
            }
          },
          // {
          //   title: "送货户数",
          //   // key: "oilWear",
          //   width: 130,
          // },
          // {
          //   title: "送货量(件)",
          //   // key: "oilWear",
          //   width: 130,
          //   render: (h, params) => {
          //     return h("div",0);
          //   }
          // },
          {
            title: "月油耗(升)",
            key: "oilWear",
src/views/your/map/areaMap.vue
New file
@@ -0,0 +1,291 @@
<template>
    <div>
    <div style="float: left;width: 15%;overflow:auto">
        <Table
                border
                :columns="columns"
                :data="data"
                ref="table"
                height="600"
                highlight-row
                @on-current-change="handleRowChange"
        ></Table>
    </div>
    <div style="float: right;width: 85%;">
        <!--<div id="container"></div>-->
        <!--<ul class="drawing-panel" style="z-index: 99;">-->
            <!--<li class = "btn" @click="openEdit">开启编辑</li>-->
            <!--<li class = "btn" @click="closeEdit">保存编辑</li>-->
        <!--</ul>-->
        <ul class = "drawing-panel">
            <li class="bmap-btn bmap-polygon" id="polygon" @click="draw"></li>
            <!--<li class = "btn" @click="clearAll">清除重画</li>-->
        </ul>
        <div id = "container"></div>
    </div>
    </div>
</template>
<script>
    import {
        getAllArea,
        addAreaMap,
        getAllByAreaId,
        delAreaMap,
    } from "@/api/open";
    export default {
        name: "",
        data() {
            return {
                polygon: {},
                columns: [
                    {
                        title: "片区名称",
                        key: "name",
                    },
                ],
                data:[],
                map:{},
                areaId:"",
                drawingManager:{},
                overlays:[]
            }
        },
        mounted() {
            this.getDataList();
            this.map = new BMapGL.Map('container',{enableMapClick:false});
            var point = new BMapGL.Point(118.187167,39.636514);
            this.map.centerAndZoom(point, 12);
            this.map.enableScrollWheelZoom(true);
            // this.polygon = new BMapGL.Polygon([
            //     new BMapGL.Point(118.127822,39.697015),
            //     new BMapGL.Point(118.253728,39.697459),
            //     new BMapGL.Point(118.256028,39.601458),
            //     new BMapGL.Point(118.109424,39.59612),
            //     new BMapGL.Point(118.100801,39.650809),
            // ], {
            //     strokeColor: 'blue',
            //     strokeWeight: 2,
            //     strokeOpacity: 0.5
            // });
            // this.map.addOverlay(this.polygon);
        },
        methods:{
            clearAll() {
                for(var i = 0; i < this.overlays.length; i++){
                    this.map.removeOverlay(this.overlays[i]);
                }
                this.overlays.length = 0
            },
            draw(e) {
                this.clearAll();
                var styleOptions = {
                    strokeColor: '#5E87DB',   // 边线颜色
                    fillColor: '#5E87DB',     // 填充颜色。当参数为空时,圆形没有填充颜色
                    strokeWeight: 2,          // 边线宽度,以像素为单位
                    strokeOpacity: 1,         // 边线透明度,取值范围0-1
                    fillOpacity: 0.2          // 填充透明度,取值范围0-1
                };
                // 实例化鼠标绘制工具
                this.drawingManager = new BMapGLLib.DrawingManager(this.map, {
                    // isOpen: true,        // 是否开启绘制模式
                    enableCalculate: false, // 绘制是否进行测距测面
                    enableSorption: true,   // 是否开启边界吸附功能
                    sorptiondistance: 20,   // 边界吸附距离
                    polygonOptions: styleOptions,    // 多边形的样式
                });
                console.log(e)
                var arr = document.getElementsByClassName('bmap-btn');
                for(var i = 0; i<arr.length; i++) {
                    arr[i].style.backgroundPositionY = '0';
                }
                //e.style.backgroundPositionY = '-52px';
                var drawingType = BMAP_DRAWING_POLYGON;
                // 进行绘制
                if (this.drawingManager._isOpen && this.drawingManager.getDrawingMode() === drawingType) {
                    this.drawingManager.close();
                } else {
                    this.drawingManager.setDrawingMode(drawingType);
                    this.drawingManager.open();
                }
                this.drawingManager.addEventListener('overlaycomplete', this.overlaycomplete);
            },
            overlaycomplete(e){
                this.overlays.push(e.overlay);
                var path = e.overlay.getPath();
                delAreaMap({id:this.areaId}).then((res) => {
                    if(res.success){
                        for(var i=0;i<path.length;i++){
                            addAreaMap({areaId:this.areaId,lng:path[i].lng,lat:path[i].lat,seq:i}).then((res) => {
                                this.findMap();
                            });
                            //this.sleep(150)
                        }
                        // addAreaMap({areaId:this.areaId,lng:path[0].lng,lat:path[0].lat}).then((res) => {
                        //
                        // });
                    }
                });
            },
            sleep(delay) {
                var start = (new Date()).getTime();
                while((new Date()).getTime() - start < delay) {
                    continue;
                }
            },
            openEdit() {
                this.polygon.enableEditing();
            },
            closeEdit() {
                this.polygon.disableEditing();
                var obj = this.polygon.points;
                console.log(this.polygon)
                delAreaMap({id:this.areaId}).then((res) => {
                    if(res.success){
                        for(var i=0;i<obj.length;i++){
                            addAreaMap({areaId:this.areaId,lng:this.getLng(obj[i].lng,obj[i].lat),lat:this.getLat(obj[i].lng,obj[i].lat)}).then((res) => {
                                this.findMap();
                            });
                        }
                    }
                });
            },
            getDataList() {
                getAllArea({}).then((res) => {
                    if (res.success) {
                        this.data = res.result;
                    }
                });
            },
            handleRowChange(currentRow, oldCurrentRow){
                this.areaId = currentRow.id
                this.findMap();
            },
            findMap(){
                getAllByAreaId({id:this.areaId}).then((res) => {
                    if (res.success) {
                        this.map.clearOverlays();
                        if(res.result.length>2){
                            var ps = []
                            for(var i=0;i<res.result.length;i++){
                                ps.push(new BMapGL.Point(res.result[i].lng,res.result[i].lat))
                            }
                            this.polygon = new BMapGL.Polygon(ps, {
                                strokeColor: 'blue',
                                strokeWeight: 2,
                                strokeOpacity: 0.5
                            });
                            this.map.addOverlay(this.polygon);
                        }else{
                            // this.polygon = new BMapGL.Polygon([
                            //     new BMapGL.Point(118.127822,39.697015),
                            //     new BMapGL.Point(118.253728,39.697459),
                            //     new BMapGL.Point(118.256028,39.601458),
                            //     new BMapGL.Point(118.109424,39.59612),
                            //     new BMapGL.Point(118.100801,39.650809),
                            // ], {
                            //     strokeColor: 'blue',
                            //     strokeWeight: 2,
                            //     strokeOpacity: 0.5
                            // });
                            // this.map.addOverlay(this.polygon);
                        }
                    }
                });
            }
        }
    }
</script>
<style scoped>
    body, html, #container {width: 100%; height: 600px; overflow: hidden; margin: 0; font-family: "微软雅黑";}
    ul li {list-style: none;}
    .drawing-panel {
        z-index: 999;
        position: fixed;
        bottom: 3.5rem;
        margin-left: 2.5rem;
        padding-left: 0;
        border-radius: .25rem;
        height: 47px;
        box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
    }
    .bmap-btn {
        border-right: 1px solid #d2d2d2;
        float: left;
        width: 64px;
        height: 100%;
        background-image: url(//api.map.baidu.com/library/DrawingManager/1.4/src/bg_drawing_tool.png);
        cursor: pointer;
    }
    .drawing-panel .bmap-marker {
        background-position: -65px 0;
    }
    .drawing-panel .bmap-polyline {
        background-position: -195px 0;
    }
    .drawing-panel .bmap-rectangle {
        background-position: -325px 0;
    }
    .drawing-panel .bmap-polygon {
        background-position: -260px 0;
    }
    .drawing-panel .bmap-circle {
        background-position: -130px 0;
    }
    /*body,*/
    /*html,*/
    /*#container {*/
        /*overflow: hidden;*/
        /*width: 100%;*/
        /*height: 600px;*/
        /*margin: 0;*/
        /*font-family: "微软雅黑";*/
    /*}*/
    /*ul li {*/
        /*list-style: none;*/
    /*}*/
    /*.drawing-panel {*/
        /*z-index: 999;*/
        /*position: fixed;*/
        /*bottom: 3.5rem;*/
        /*margin-left: 3rem;*/
        /*padding: 1rem 1rem;*/
        /*border-radius: .25rem;*/
        /*background-color: #fff;*/
        /*box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);*/
    /*}*/
    /*.btn {*/
        /*width: 150px;*/
        /*height: 30px;*/
        /*float: left;*/
        /*background-color: #fff;*/
        /*color: rgba(27, 142, 236, 1);*/
        /*font-size: 14px;*/
        /*border:1px solid rgba(27, 142, 236, 1);*/
        /*border-radius: 5px;*/
        /*margin: 0 5px;*/
        /*text-align: center;*/
        /*line-height: 30px;*/
    /*}*/
    /*.btn:hover {*/
        /*background-color: rgba(27, 142, 236, 0.8);*/
        /*color: #fff;*/
    /*}*/
</style>
src/views/your/order-manage/orderEvaluateManage.less
New file
@@ -0,0 +1,13 @@
.permModal {
    .ivu-modal-body {
        max-height: 560px;
        overflow: auto;
    }
}
.depModal {
    .ivu-modal-body {
        max-height: 500px;
        overflow: auto;
    }
}
src/views/your/order-manage/orderEvaluateManage.vue
New file
@@ -0,0 +1,225 @@
<style lang="less">
@import "@/styles/table-common.less";
@import "@/styles/drawer-common.less";
@import "src/views/your/order-manage/orderEvaluateManage.less";
</style>
<template>
  <div class="search">
    <Card>
      <Row class="operation">
        <Input v-model="searchForm.userName" suffix="ios-search" @on-change="getDataList" placeholder="输入配送人" clearable style="width: 250px"/>
        <Input v-model="searchForm.customerName" suffix="ios-search" @on-change="getDataList" placeholder="输入商户名称" clearable style="width: 250px;margin-left: 20px"/>
        <Date-picker clearable @on-change="time1" format="yyyy-MM-dd" type="date" placement="bottom-end" placeholder="请选择配送日期" style="width: 240px;margin-left: 20px">
        </Date-picker>
        <Select v-model="searchForm.status" style="width:200px;margin-left: 20px" clearable>
          <Option v-for="item in cityList" :value="item.value" :key="item">{{ item.label }}</Option>
        </Select>
        <Button @click="init" icon="md-refresh">查询</Button>
      </Row>
      <Table
        :loading="loading"
        border
        :columns="columns"
        :data="data"
        ref="table"
      ></Table>
      <Row type="flex" justify="end" class="page">
        <Page
          :current="searchForm.pageNumber"
          :total="total"
          :page-size="searchForm.pageSize"
          @on-change="changePage"
          @on-page-size-change="changePageSize"
          :page-size-opts="[10, 20, 50]"
          size="small"
          show-total
          show-elevator
          show-sizer
        ></Page>
      </Row>
    </Card>
    <!-- 编辑 -->
  </div>
</template>
<script>
import {
  findPageOrderTask2,
} from "@/api/open";
export default {
  name: "car-manage",
  data() {
    return {
      maxHeight: 510,
      openTip: true,
      openLevel: "0",
      loading: true,
      modalTitle: "",
      modalVisible:false,
      searchForm: {
        pageNumber: 1, // 当前页数
        pageSize: 10, // 页面大小
        sort: "sendDate", // 默认排序字段
        order: "desc", // 默认排序方式
      },
      submitLoading: false,
      selectList: [],
      columns: [
        {
          type: "index",
          width: 60,
          align: "center",
        },
        {
          title: "送货人",
          key: "userName",
          width: 100,
        },
        {
          title: "商户名称",
          key: "customerName",
          ellipsis:true,
        },
        {
          title: "送货条数",
          key: "num",
          width: 100,
        },
        {
          title: "送货日期",
          key: "sendDate",
          width: 160,
        },
        {
          title: "评价星级",
          key: "level",
          width: 100,
        },
        {
          title: "订单状态",
          key: "status",
          width: 120,
          render: (h, params) => {
            let re = "";
            if (params.row.status == 0) {
              return h("div", [
                h("Badge", {
                  props: {
                    status: "success",
                    text: "待配送",
                  },
                }),
              ]);
            } else if (params.row.status == 1) {
              return h("div", [
                h("Badge", {
                  props: {
                    status: "success",
                    text: "已送达",
                  },
                }),
              ]);
            }else{
              return h("div", [
                h("Badge", {
                  props: {
                    status: "error",
                    text: "异常牵收",
                  },
                }),
              ]);
            }
          },
        },
        {
          title: "异常签收原因",
          key: "remarks",
          width: 150,
          ellipsis:true,
        },
        {
          title: "签收方式",
          key: "status",
          width: 150,
          render: (h, params) => {
            if (params.row.status == 1) {
              return h("div", [
                h("Badge", {
                  props: {
                    status: "success",
                    text: "指纹",
                  },
                }),
              ]);
            }
          },
        },
      ],
      data: [],
      total: 0,
      cityList: [
        {
          value: 0,
          label: '待配送'
        },
        {
          value: 1,
          label: '已送达'
        },
        {
          value: 2,
          label: '异常签收'
        }
      ],
    };
  },
  methods: {
    init() {
      this.getDataList();
    },
    time1(e){
      this.searchForm.sendDate = e;
      this.getDataList();
    },
    changePage(v) {
      this.searchForm.pageNumber = v;
      this.getDataList();
      this.clearSelectAll();
    },
    changePageSize(v) {
      this.searchForm.pageSize = v;
      this.getDataList();
    },
    getDataList() {
      this.loading = true;
      findPageOrderTask2(this.searchForm).then((res) => {
        this.loading = false;
        if (res.success) {
          this.data = res.result.records;
          this.total = res.result.total;
        }
      });
    },
    edit(v) {
      this.modalType = 1;
      this.modalTitle = "电子签收单";
      this.$refs.carForm.resetFields();
      // 转换null为""
      for (let attr in v) {
        if (v[attr] == null) {
          v[attr] = "";
        }
      }
      let str = JSON.stringify(v);
      let roleInfo = JSON.parse(str);
      this.carForm = roleInfo;
      this.modalVisible = true;
    },
  },
  mounted() {
    this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px";
    this.init();
  },
};
</script>
src/views/your/orderEvaluate-manage/orderEvaluateManage.vue
@@ -277,6 +277,12 @@
          minWidth: 400,
        },
        {
          title: "送货条数",
          key: "num",
          width: 160,
          sortable: true,
        },
        {
          title: "送货日期",
          key: "sendDate",
          width: 160,
src/views/your/suggest-manage/suggestManage.vue
@@ -216,11 +216,11 @@
        submitLoading: false,
        selectList: [],
        columns: [
          {
            type: "selection",
            width: 60,
            align: "center",
          },
          // {
          //   type: "selection",
          //   width: 60,
          //   align: "center",
          // },
          {
            type: "index",
            width: 60,
@@ -235,7 +235,7 @@
          {
            title: "反馈时间",
            key: "createTime",
            width: 110,
            width: 130,
            render: (h, params) => {
              return h("div",params.row.createTime.substr(0,10));
            }