From 392f7a3134cb7a27a555bb1b3e2f3601c5eadde1 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 27 五月 2024 15:06:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java |   33 
 admin/src/views/operation/danger/typeSet.vue                                                                   |  157 ++---
 admin/src/views/operation/danger/areaSet.vue                                                                   |  170 ++---
 admin/src/assets/style/style.scss                                                                              |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java      |    6 
 admin/src/api/business/hiddenDangerParam.js                                                                    |   36 +
 admin/src/components/business/OperaHiddenDangerParamWindow.vue                                                 |  109 +++
 admin/src/views/business/visitOrigin.vue                                                                       |  166 ++---
 /dev/null                                                                                                      |  139 ----
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java       |    4 
 admin/src/api/business/visitReason.js                                                                          |   36 +
 admin/src/components/business/OperaVisitreasonWindow.vue                                                       |   71 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java               |    7 
 server/system_service/src/main/java/com/doumee/core/utils/Date.java                                            |    6 
 admin/src/api/business/hiddenDanger.js                                                                         |   32 +
 admin/src/components/business/OperaHiddenDangerWindow.vue                                                      |  401 ++++++++++++++
 admin/src/views/business/internalMember.vue                                                                    |    8 
 admin/src/views/vehicle/parkBook.vue                                                                           |    2 
 admin/src/views/operation/danger/record.vue                                                                    |  270 ++++++---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerParamCloudController.java         |    8 
 20 files changed, 1,121 insertions(+), 550 deletions(-)

diff --git a/admin/src/api/business/hiddenDanger.js b/admin/src/api/business/hiddenDanger.js
new file mode 100644
index 0000000..6d889e0
--- /dev/null
+++ b/admin/src/api/business/hiddenDanger.js
@@ -0,0 +1,32 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDanger/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDanger/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDanger/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/hiddenDanger/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/hiddenDanger/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/business/hiddenDangerParam.js b/admin/src/api/business/hiddenDangerParam.js
new file mode 100644
index 0000000..8dcb9c3
--- /dev/null
+++ b/admin/src/api/business/hiddenDangerParam.js
@@ -0,0 +1,36 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDangerParam/page', data, {
+    trim: true
+  })
+}
+export function allList (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDangerParam/list', data, {
+    trim: true
+  })
+}
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDangerParam/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/hiddenDangerParam/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/hiddenDangerParam/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/hiddenDangerParam/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/api/business/visitReason.js b/admin/src/api/business/visitReason.js
new file mode 100644
index 0000000..721214d
--- /dev/null
+++ b/admin/src/api/business/visitReason.js
@@ -0,0 +1,36 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/visitReason/page', data, {
+    trim: true
+  })
+}
+export function allList (data) {
+  return request.post('/visitsAdmin/cloudService/business/visitReason/list', data, {
+    trim: true
+  })
+}
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/visitReason/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/visitReason/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/visitReason/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/visitsAdmin/cloudService/business/visitReason/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index 533b4b1..0be2757 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -114,10 +114,20 @@
     font-weight: bold;
   }
 }
+.status-blue{
+  color: #3C77DA;
+}
+.status-green{
+  color:green;
+}
+.status-red{
+  color:red;
+}
 .tip-warn {
   margin: 4px 0 25px 0;
   font-size: 12px;
   color: #999;
+  line-height: 25px;
   i {
     color: orange;
     margin-right: 4px;
diff --git a/admin/src/components/business/OperaHiddenDangerParamWindow.vue b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
new file mode 100644
index 0000000..1f2e576
--- /dev/null
+++ b/admin/src/components/business/OperaHiddenDangerParamWindow.vue
@@ -0,0 +1,109 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="500px"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+      <el-form :model="form" ref="form" :rules="rules">
+          <el-form-item label="鍚嶇О" prop="name">
+            <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+          </el-form-item>
+          <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+            <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+          </el-form-item>
+          <el-form-item v-if="form.type==0" label="閫夋嫨瀹夊叏鍛橈細" prop="memberIdList">
+            <el-select v-model="form.memberIdList" filterable multiple clearable placeholder="璇烽�夋嫨">
+              <el-option
+                  v-for="item in memberList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/business/member'
+export default {
+  name: 'OperaHiddenDangerParamWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      memberList: [],
+      form: {
+        id: null,
+        name: null,
+        memberIdList: null,
+        type: null,
+        sortnum: null
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�' }
+        ]
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/hiddenDangerParam',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, target,type) {
+      this.title = title
+      this.visible = true
+      this.form.type=type
+      this.loadMember()
+      // 鏂板缓缁勭粐
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+          this.form.type=type
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+          this.form.type=type
+          if (this.type ==0 && target.memberIds != null && target.memberIds != '') {
+            let t = target.memberIds.split(',')
+            this.form.memberIdList =[]
+            t.forEach(item =>{
+              this.form.memberIdList.push(parseInt(item))
+            });
+          }
+        }
+      })
+    },
+    loadMember () {
+      allList({
+        type: 2
+      })
+        .then(res => {
+          this.memberList = res
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking = false
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
new file mode 100644
index 0000000..b43e322
--- /dev/null
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -0,0 +1,401 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visable"
+    @confirm="confirm"
+    @close="reject"
+  >
+    <div class="modal_wrap">
+      <div class="modal_content">
+        <div class="header">
+          <div class="left">
+            <div class="h1">闅愭偅闅忔墜鎷�</div>
+            <div class="time">鎻愭姤鏃堕棿锛歿{model.createDate}}</div>
+          </div>
+          <div class="right" v-if="model.status==0">寰呭鏍�</div>
+          <div class="right" v-if="model.status==1">宸插鐞�</div>
+          <div class="right" v-if="model.status==2">宸叉挙閿�</div>
+        </div>
+        <div class="info">
+          <div class="title">闅愭偅闅忔墜鎷嶈鎯�</div>
+          <div class="list">
+            <div class="item">
+              <div class="label">鎻愭姤浜�</div>
+              <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}}</div>
+            </div>
+            <div class="item">
+              <div class="label">闅愭偅鍖哄煙</div>
+              <div class="value">{{model.areaName || ''}}</div>
+            </div>
+            <div class="item">
+              <div class="label">闅愭偅绫诲瀷</div>
+              <div class="value">{{model.categoryName || ''}}</div>
+            </div>
+            <div class="item">
+              <div class="label">闅愭偅鎻忚堪</div>
+              <div class="value">{{model.content || ''}}</div>
+            </div>
+            <div class="item">
+              <div class="label">鐜板満鎯呭喌</div>
+              <div class="value" v-if="model.submitFileList ==null || !model.submitFileList.length">鏃�</div>
+              <div class="value" v-if="model.submitFileList !=null && model.submitFileList.length">
+                <span v-for="item in model.submitFileList" :key="item.id">{{item.fileurlFull}}</span>
+              </div>
+            </div>
+            <div class="item" v-if="model.status==1">
+              <div class="label">澶勭悊鍓�</div>
+              <div class="value"></div>
+            </div>
+            <div class="item" v-if="model.status==1">
+              <div class="label">澶勭悊鍚�</div>
+              <div class="value"></div>
+            </div>
+            <div class="item" v-if="model.status==1 || model.status==2">
+              <div class="label">澶勭悊璇存槑</div>
+              <div class="value">{{model.checkInfo}}</div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="side">
+        <div class="side_title">瀹℃壒娴佺▼</div>
+        <div class="list">
+          <div class="item">
+            <div class="separate"></div>
+            <div class="info">
+              <i class="el-icon-success icon"></i>
+              <img src="" class="avatar" alt="" />
+              <div class="content">
+                <div class="line">
+                  <div class="name">鍒樻煇鍒樻煇</div>
+                  <div class="time">2020-02-02 12:20</div>
+                </div>
+                <div class="line">
+                  <div class="company">涓浗绉诲姩鏈夐檺鍏徃</div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="item">
+            <!-- <div v-if="" class="separate"></div> -->
+            <div class="info">
+              <i class="el-icon-success icon"></i>
+              <img src="" class="avatar" alt="" />
+              <div class="content">
+                <div class="line">
+                  <div class="name">鍒樻煇鍒樻煇</div>
+                  <div class="time">2020-02-02 12:20</div>
+                </div>
+                <div class="line">
+                  <div class="company">
+                    涓浗绉诲姩鏈夐檺鍏徃( <span class="status">宸插悓鎰�</span> )
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="remark">鎻愪氦绾﹀ソ鐨�</div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!--  -->
+    <template #btns>
+      <el-button type="primary" plain @click="handleTransfer">杞氦</el-button>
+    </template>
+    <!--  鍚屾剰/鎷掔粷 -->
+    <el-dialog
+      append-to-body
+      :title="apprTitle"
+      :visible.sync="isShowAppr"
+      width="480px"
+    >
+      <el-input
+        type="textarea"
+        :placeholder="apprTitle + '璇存槑锛岄潪蹇呭~'"
+        :rows="4"
+        v-model="param.explain"
+      />
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="isShowAppr = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="isShowAppr = false">纭畾</el-button>
+      </span>
+    </el-dialog>
+    <!-- 闅愭偅 -->
+    <el-dialog
+      append-to-body
+      title="闅愭偅"
+      :visible.sync="isShowProblem"
+      width="480px"
+    >
+      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
+        <el-form-item label="閫�鍥炴椂闂�">
+          <el-date-picker
+            class="w300"
+            value-format="yyyy-MM-dd"
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+            v-model="param.date"
+          />
+        </el-form-item>
+        <el-form-item label="鏁存敼鍓�">
+          <div class="df_ac">
+            <img src="@/assets/avatar/man.png" />
+            <el-upload
+              class="avatar-uploader"
+              action="https://jsonplaceholder.typicode.com/posts/"
+              :show-file-list="false"
+              :on-success="handleAvatarSuccess"
+              :before-upload="beforeAvatarUpload"
+            >
+              <img v-if="param.url" :src="param.url" class="avatar" />
+              <div v-else class="upload_box">
+                <el-icon class="el-icon-plus icon" />
+                <div class="text">鍥剧墖/瑙嗛</div>
+              </div>
+            </el-upload>
+          </div>
+        </el-form-item>
+        <el-form-item label="閫�鍥炶鏄�">
+          <el-input
+            type="textarea"
+            placeholder="璇峰~鍐欒鏄�"
+            :rows="4"
+            v-model="param.explain"
+          />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="isShowProblem = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="isShowProblem = false"
+          >纭畾</el-button
+        >
+      </span>
+    </el-dialog>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  components: { GlobalWindow },
+  data() {
+    return {
+      title: '璁垮棰勭害璇︽儏',
+      visable: false,
+      model: { },
+      isShowAppr: false,
+      apprTitle: '鍚屾剰',
+      param: {},
+      isShowProblem: false,
+      rules: {}
+    }
+  },
+  methods: {
+    open(title,target){
+      this.title =title
+      this.visable=true
+      this.model = target
+    },
+    confirm() {
+      console.log('--')
+    },
+    handleTransfer() {
+      this.isShowProblem = true
+    },
+    reject() { },
+    handleAvatarSuccess() { },
+    beforeAvatarUpload() { }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.upload_box {
+  width: 84px;
+  height: 84px;
+  border-radius: 4px;
+  background-color: #f7f7f7;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  color: #999999;
+  border: 1px solid #e4e4e4;
+  .icon {
+    font-size: 24px;
+  }
+  .text {
+    font-size: 12px;
+  }
+}
+.modal_wrap {
+  display: flex;
+  height: 100%;
+  .modal_content {
+    flex: 1;
+    padding: 0px 30px;
+    border-radius: 8px;
+    overflow: hidden;
+    height: 100%;
+
+    .title {
+      font-weight: 600;
+      font-size: 18px;
+      color: #333333;
+      margin-bottom: 20px;
+      margin-top: 30px;
+    }
+
+    .info {
+      .list {
+        display: flex;
+        flex-wrap: wrap;
+
+        .item {
+          display: flex;
+          width: 40%;
+          margin-bottom: 20px;
+          &:nth-of-type(2n) {
+            width: 60%;
+          }
+
+          .label {
+            color: #888888;
+            width: 68px;
+          }
+
+          .value {
+            color: #111111;
+          }
+        }
+      }
+    }
+
+    .header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      padding: 20px 30px;
+      margin: 0 -30px;
+      border-radius: 8px 8px 0 0;
+      background: linear-gradient(to right, #f2f6fe, #cadffa);
+
+      .h1 {
+        font-weight: 600;
+        font-size: 22px;
+        color: #111111;
+        margin-bottom: 8px;
+      }
+
+      .time {
+        font-size: 14px;
+        color: #999999;
+      }
+
+      .right {
+        height: 40px;
+        font-size: 16px;
+        color: #ffffff;
+        line-height: 40px;
+        padding: 0 20px;
+        background: #207ff7;
+        box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16);
+        border-radius: 16px 0px 16px 0px;
+      }
+    }
+    .table_info {
+      .name_wrap {
+        display: flex;
+        align-items: center;
+        .avatar {
+          width: 40px;
+          height: 40px;
+          border-radius: 50%;
+          margin-right: 12px;
+        }
+        .content {
+          .line {
+            display: flex;
+          }
+          .tag {
+            color: #b2cbf9;
+            border: 1px solid #b2cbf9;
+            padding: 0px 4px;
+            border-radius: 4px;
+            margin-left: 6px;
+          }
+        }
+      }
+    }
+  }
+
+  .side {
+    height: 100%;
+    width: 420px;
+    background: #ffffff;
+    border-left: 20px solid #f7f7f7;
+    .list {
+      .item {
+        padding: 8px 0;
+        position: relative;
+        .separate {
+          position: absolute;
+          border-left: 2px dashed #cccccc;
+          left: 51px;
+          height: calc(100% - 24px);
+          top: 46px;
+        }
+        .info {
+          display: flex;
+          align-items: center;
+          margin-left: 40px;
+          .icon {
+            position: relative;
+            z-index: 11;
+            color: #53b76f;
+            font-size: 24px;
+          }
+          .avatar {
+            width: 40px;
+            height: 40px;
+            border-radius: 50%;
+            margin: 0 12px 0 16px;
+            border: 1px solid;
+          }
+          .content {
+            flex: 1;
+            .line {
+              display: flex;
+              justify-content: space-between;
+              align-content: center;
+              margin-bottom: 6px;
+              .name {
+                font-weight: 600;
+                font-size: 16px;
+                color: #111111;
+              }
+              .time {
+                color: #888888;
+              }
+              .company {
+                font-size: 13px;
+                color: #888888;
+                .status {
+                  color: #00ba67;
+                }
+              }
+            }
+          }
+        }
+        .remark {
+          background: #f7f7f7;
+          border-radius: 4px;
+          padding: 13px 15px;
+          color: #666666;
+          margin-left: 120px;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/admin/src/components/business/OperaVisitreasonWindow.vue b/admin/src/components/business/OperaVisitreasonWindow.vue
new file mode 100644
index 0000000..68d019c
--- /dev/null
+++ b/admin/src/components/business/OperaVisitreasonWindow.vue
@@ -0,0 +1,71 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="500px"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+      <el-form :model="form" ref="form" :rules="rules">
+          <el-form-item label="浜嬬敱" prop="title">
+            <el-input v-model="form.title" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+          </el-form-item>
+          <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+            <el-input v-model="form.sortnum" type="number" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+          </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaVisitreasonWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      memberList: [],
+      form: {
+        id: null,
+        title: null,
+        sortnum: null
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        title: [
+          { required: true, message: '璇疯緭鍏ヤ簨鐢�' }
+        ]
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/visitReason',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓缁勭粐
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/internalMember.vue b/admin/src/views/business/internalMember.vue
index 57de4cd..88dbdbe 100644
--- a/admin/src/views/business/internalMember.vue
+++ b/admin/src/views/business/internalMember.vue
@@ -31,16 +31,13 @@
                     <el-option label="鍚屾澶辫触" value="2"></el-option>
                 </el-select>
             </el-form-item>
-          <el-form-item label=""  >
-              <el-checkbox style="font-size: 12px"  label="1" v-model="searchForm.includeChild" key="1"  >鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
-          </el-form-item>
             <section>
                 <el-button type="primary" @click="search">鎼滅储</el-button>
                 <el-button @click="reset">閲嶇疆</el-button>
             </section>
         </el-form>
         <template v-slot:menu>
-            <div style="width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px;">浼佷笟缁勭粐鏋舵瀯</div>
+            <div style="width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px;">浼佷笟缁勭粐鏋舵瀯</div>areaSet
             <div style="width: 100%; height: calc(100vh - 170px); overflow-y: scroll;">
                 <Tree :list="companyTree" :defaultProps="{name: 'name', status: 'fsStatus', children: 'childList', id: 'id'}" @callback="callback" />
             </div>
@@ -55,6 +52,9 @@
               <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆',searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
                 <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
                 <li><el-button type="primary" v-permissions="['business:empower:create']"  @click="startEmpowerBatch()"  icon="el-icon-plus">涓嬪彂鎺堟潈</el-button></li>
+             <li style="float: right">
+                <el-checkbox style="font-size: 12px"  label="1" v-model="searchForm.includeChild" key="1"  @change="search" >鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
+             </li>
             </ul>
             <el-table
                 v-loading="isWorking.search"
diff --git a/admin/src/views/business/visitOrigin.vue b/admin/src/views/business/visitOrigin.vue
index ceffbd4..6b709b6 100644
--- a/admin/src/views/business/visitOrigin.vue
+++ b/admin/src/views/business/visitOrigin.vue
@@ -1,114 +1,82 @@
 <template>
-  <div class="main_app">
-    <div class="table_btns">
-      <el-button icon="el-icon-plus" @click="handleEdit()" type="primary"
-        >鏂板缓</el-button
+  <TableLayout :permissions="['business:member:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
+      <el-form-item label="鎷滆浜嬬敱" prop="name">
+        <el-input v-model="searchForm.title" clearable placeholder="璇疯緭鍏ユ嫓璁夸簨鐢�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:visitreason:create','business:visitreason:delete']">
+        <li><el-button type="primary" @click="$refs.OperaVisitreasonWindow.open('鏂板缓鎷滆浜嬬敱',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:visitreason:create']">鏂板缓</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:visitreason:delete']">鎵归噺鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+          v-loading="isWorking.search"
+          :data="tableData.list"
+          stripe
+          @selection-change="handleSelectionChange"
       >
-    </div>
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column
-        prop="name"
-        label="鎷滆浜嬬敱"
-        min-width="100"
-      ></el-table-column>
-      <el-table-column
-        prop="name"
-        label="鎺掑簭鐮�"
-        min-width="80"
-      ></el-table-column>
-      <el-table-column label="鎿嶄綔" width="230" fixed="right">
-        <!-- v-permissions="['business:company:update']" -->
-        <template slot-scope="{ row }">
-          <el-button type="text" icon="el-icon-edit" @click="handleEdit(row)"
-            >缂栬緫</el-button
-          >
-          <el-button
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDel(row)"
-            class="red"
-            >鍒犻櫎</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <!--  -->
-    <el-dialog title="鎷滆浜嬬敱" :visible.sync="isShowEdit" width="480px">
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <el-form-item label="鎷滆浜嬬敱">
-          <el-input type="text" placeholder="璇疯緭鍏�" v-model="param.explain" />
-        </el-form-item>
-        <el-form-item label="鎺掑簭鐮�">
-          <el-input
-            type="text"
-            placeholder="璇疯緭鍏�"
-            oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 6)"
-            v-model="param.sortNum"
-          />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowEdit = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="handleSub">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </div>
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="title" label="鎷滆浜嬬敱" min-width="200px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�"  min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="200px"></el-table-column>
+        <el-table-column
+            v-if="containPermissions(['business:visitreason:update', 'business:visitreason:delete' ])"
+            label="鎿嶄綔"
+            min-width="250"
+            fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaVisitreasonWindow.open('缂栬緫鎷滆浜嬬敱',row,searchForm.type)" v-permissions="['business:visitreason:update']">缂栬緫</el-button>
+            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:visitreason:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+          @size-change="handleSizeChange"
+          @current-change="handlePageChange"
+          :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaVisitreasonWindow ref="OperaVisitreasonWindow" @success="handlePageChange"/>
+  </TableLayout>
 </template>
 
 <script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
+import OperaVisitreasonWindow from '@/components/business/OperaVisitreasonWindow'
 export default {
-  components: {
-    Pagination
-  },
+  name: 'areaSet',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaVisitreasonWindow },
   data () {
     return {
-      loading: false,
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [{}],
-      total: 0,
-
-      isShowEdit: false,
-      param: {},
-      rules: {}
+      // 鎼滅储
+      searchForm: {
+        title: ''
+      }
     }
   },
+  created () {
+    this.config({
+      module: '鎷滆浜嬬敱閰嶇疆',
+      api: '/business/visitReason',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
   methods: {
-    handleSub () {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    handleEdit (row) {
-      this.isShowEdit = true
-    },
-    handleDel (row) {
-      this.$confirm('纭鍒犻櫎鎷滆浜嬬敱', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-
-      })
-    },
-    getList (page) { },
-    clear () { },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
   }
 }
 </script>
-
-<style>
-</style>
diff --git a/admin/src/views/operation/danger/areaSet.vue b/admin/src/views/operation/danger/areaSet.vue
index 2ff6b03..6505acb 100644
--- a/admin/src/views/operation/danger/areaSet.vue
+++ b/admin/src/views/operation/danger/areaSet.vue
@@ -1,116 +1,84 @@
 <template>
-  <div class="main_app">
-    <div class="mb20">
-      <el-button type="primary" @click="handleEdit()">鏂板</el-button>
-    </div>
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column
-        prop="name"
-        label="闅愭偅鍖哄煙"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎺掑簭鐮�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="瀹夊叏鍛�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎿嶄綔"
-        min-width="80"
-        align="center"
-        show-overflow-tooltip
+  <TableLayout :permissions="['business:member:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
+      <el-form-item label="闅愭偅鍖哄煙" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ラ殣鎮e尯鍩�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:hiddendangerparam:create','business:hiddendangerparam:delete']">
+        <li><el-button type="primary" @click="$refs.OperaHiddenDangerParamWindow.open('鏂板缓闅愭偅鍖哄煙',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:hiddendangerparam:create']">鏂板缓</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:hiddendangerparam:delete']">鎵归噺鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+          v-loading="isWorking.search"
+          :data="tableData.list"
+          stripe
+          @selection-change="handleSelectionChange"
       >
-        <template v-slot="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">缂栬緫</el-button>
-          <el-button type="text" class="red" @click="handleDel(scope.row)"
-            >鍒犻櫎</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <el-dialog
-      :title="param.id ? '缂栬緫闅愭偅鍖哄煙' : '鏂板闅愭偅鍖哄煙'"
-      :visible.sync="isShowEdit"
-      width="480px"
-    >
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <el-form-item label="闅愭偅鍖哄煙" prop="name">
-          <el-input v-model="param.aaa"></el-input>
-        </el-form-item>
-        <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="name">
-          <el-input
-            v-model="param.ccc"
-            oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 7)"
-          />
-        </el-form-item>
-        <el-form-item label="瀹夊叏鍛�" prop="name">
-          <el-select placeholder="璇烽�夋嫨锛屽閫�" multiple filterable>
-            <el-option></el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowEdit = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="handleSub">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </div>
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="闅愭偅鍖哄煙" min-width="200px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�"  min-width="100px"></el-table-column>
+        <el-table-column prop="memberNames" label="瀹夊叏鍛�" min-width="200px"></el-table-column>
+        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="200px"></el-table-column>
+        <el-table-column
+            v-if="containPermissions(['business:hiddendangerparam:update', 'business:hiddendangerparam:delete' ])"
+            label="鎿嶄綔"
+            min-width="250"
+            fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerParamWindow.open('缂栬緫闅愭偅鍖哄煙',row,searchForm.type)" v-permissions="['business:hiddendangerparam:update']">缂栬緫</el-button>
+            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:hiddendangerparam:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+          @size-change="handleSizeChange"
+          @current-change="handlePageChange"
+          :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaHiddenDangerParamWindow ref="OperaHiddenDangerParamWindow" @success="handlePageChange"/>
+  </TableLayout>
 </template>
 
 <script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
+import OperaHiddenDangerParamWindow from '@/components/business/OperaHiddenDangerParamWindow'
 export default {
-  components: {
-    Pagination
-  },
+  name: 'areaSet',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaHiddenDangerParamWindow },
   data () {
     return {
-      loading: false,
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [],
-      total: 0,
-      isShowEdit: false,
-      param: {},
-      rules: {}
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type:0
+      }
     }
   },
+  created () {
+    this.config({
+      module: '闅愭偅闅忔墜鎷嶉厤缃�',
+      api: '/business/hiddenDangerParam',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
   methods: {
-    handleSub () {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    getList (page) { },
-    clear () { },
-    handleEdit (row) {
-      this.isShowEdit = true
-    },
-    handleDel () { },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
   }
 }
 </script>
-
-<style>
-</style>
diff --git a/admin/src/views/operation/danger/record.vue b/admin/src/views/operation/danger/record.vue
index e30d825..339268a 100644
--- a/admin/src/views/operation/danger/record.vue
+++ b/admin/src/views/operation/danger/record.vue
@@ -1,113 +1,191 @@
 <template>
-  <div class="main_app">
-    <QueryForm
-      v-model="filters"
-      :query-form-config="queryFormConfig"
-      @handleQuery="getList(1)"
-      @clear="clear"
-    />
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column
-        prop="name"
-        label="闅愭偅鍖哄煙"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="闅愭偅绫诲瀷"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎻愭姤浜�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎻愭姤鏃堕棿"
-        min-width="80"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="澶勭悊缁撴灉"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎿嶄綔"
-        min-width="80"
-        show-overflow-tooltip
+  <TableLayout :permissions="['business:empower:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鎻愭姤浜�" prop="memberName">
+        <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎻愭姤浜虹粍缁�" prop="companyName">
+        <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="闅愭偅鍖哄煙" prop="areaId">
+        <el-select v-model="searchForm.areaId" placeholder="璇烽�夋嫨闅愭偅鍖哄煙" @keypress.enter.native="search">
+          <el-option
+              v-for="item in areaList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="闅愭偅绫诲瀷" prop="typeId">
+        <el-select v-model="searchForm.cateId" placeholder="璇烽�夋嫨闅愭偅绫诲瀷" @keypress.enter.native="search">
+          <el-option
+              v-for="item in cateList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鎻愭姤鏃堕棿" prop="startTime">
+        <el-date-picker
+            @change="seleTime"
+            v-model="time"
+            @keypress.enter.native="search"
+            type="datetimerange"
+            format="yyyy-MM-dd HH:mm:ss"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡">
+        </el-date-picker>
+      </el-form-item>
+      <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+        <el-radio-button label="0">褰撳ぉ</el-radio-button>
+        <el-radio-button label="1">杩�7澶�</el-radio-button>
+        <el-radio-button label="2">杩�30澶�</el-radio-button>
+      </el-radio-group>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:empower:create', 'business:empower:delete']">
+        <!--<li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li> -->
+      </ul>
+      <el-table
+          v-loading="isWorking.search"
+          :data="tableData.list"
+          stripe
+          @selection-change="handleSelectionChange"
       >
-        <template v-slot="scope">
-          <el-button type="text" @click="handleDetail(scope.row)">鏌ョ湅璇︽儏</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-  </div>
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="areaName" label="闅愭偅鍖哄煙" min-width="150px"></el-table-column>
+        <el-table-column prop="categoryName" label="闅愭偅绫诲瀷" min-width="150px"></el-table-column>
+        <el-table-column prop="memberName" label="鎻愭姤浜�" min-width="80px"></el-table-column>
+        <el-table-column prop="companyName" label="鎵�灞炵粍缁�" min-width="150px"></el-table-column>
+        <el-table-column prop="createDate" label="鎻愭姤鏃堕棿" min-width="150px"></el-table-column>
+        <el-table-column label="澶勭悊缁撴灉" min-width="100px">
+          <template slot-scope="{row}">
+            <span class="status-blue"  v-if="row.status === 0">寰呭鐞�</span>
+            <span class="status-green"   v-if="row.status === 1">宸插鐞�</span>
+            <span class="status-red"   v-if="row.status === 2">宸叉挙閿�</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="150px"></el-table-column>
+        <el-table-column
+            label="鎿嶄綔"
+            min-width="100"
+            fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerWindow.open('闅愭偅闅忔墜鎷嶈鎯�',row)" >鏌ョ湅璇︽儏</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+          @size-change="handleSizeChange"
+          @current-change="handlePageChange"
+          :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="handlePageChange"/>
+  </TableLayout>
 </template>
 
 <script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
+import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
+import { timeForMat } from '@/utils/util'
+import { allList } from '@/api/business/hiddenDangerParam'
 export default {
-  components: {
-    Pagination,
-    QueryForm
-  },
+  name: 'Empower',
+  extends: BaseTable,
+  components: { TableLayout, Pagination ,OperaHiddenDangerWindow},
   data () {
     return {
-      filters: {},
-      loading: false,
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'name',
-            type: 'select',
-            label: '闅愭偅鍖哄煙',
-            options: []
-          },
-          {
-            filed: 'name',
-            type: 'select',
-            label: '闅愭偅绫诲瀷',
-            options: []
-          },
-          {
-            filed: 'selDate',
-            type: 'daterange',
-            label: '闅愭偅鎻愭姤鏃ユ湡'
-          }
-        ],
-        online: true
+      // 鎼滅储
+      searchForm: {
+        memberName: '',
+        companyName: '',
+        queryStartTime: '',
+        queryEndTime: '',
+        areaId: null,
+        cateId: null
       },
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [],
-      total: 0
+      cateList: [],
+      areaList: [],
+      time: []
     }
   },
+  created () {
+    this.config({
+      module: '闅愭偅闅忔墜鎷嶇鐞�',
+      api: '/business/hiddenDanger',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    // this.search()
+    this.changeRadio('0')
+    this.loadParams()
+  },
   methods: {
-    handleDetail () {},
-    getList (page) { },
-    clear () { },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
+    changeRadio (e) {
+      this.searchForm.radio = e
+      if (e === '0') {
+        this.searchForm.queryStartTime = timeForMat(0)[0]
+        this.searchForm.queryEndTime = timeForMat(0)[1]
+        this.time = timeForMat(0)
+      } else if (e === '1') {
+        this.searchForm.queryStartTime = timeForMat(6)[0]
+        this.searchForm.queryEndTime = timeForMat(6)[1]
+        this.time = timeForMat(6)
+      } else if (e === '2') {
+        this.searchForm.queryStartTime = timeForMat(29)[0]
+        this.searchForm.queryEndTime = timeForMat(29)[1]
+        this.time = timeForMat(29)
+      }
+      this.search()
+    },
+    loadParams () {
+      allList({
+      })
+        .then(res => {
+          if (res != null && res.length) {
+            res.forEach(item => {
+              if (item && item.type != null && item.type === 0) {
+                this.areaList.push(item)
+              }
+              if (item && item.type != null && item.type === 1) {
+                this.cateList.push(item)
+              }
+            })
+          }
+        })
+        .catch(e => {
+          // this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+        })
+    },
+    seleTime (e) {
+      this.searchForm.queryStartTime = e[0]
+      this.searchForm.queryEndTime = e[1]
+      this.searchForm.radio = null
+      this.search()
+    },
+    reset () {
+      this.$refs.searchForm.resetFields()
+      this.searchForm.radio = '0'
+      this.changeRadio('0')
+      // this.search()
     }
   }
 }
 </script>
-
-<style>
-</style>
diff --git a/admin/src/views/operation/danger/typeSet.vue b/admin/src/views/operation/danger/typeSet.vue
index 01e283a..1d5bbb9 100644
--- a/admin/src/views/operation/danger/typeSet.vue
+++ b/admin/src/views/operation/danger/typeSet.vue
@@ -1,104 +1,83 @@
 <template>
-  <div class="main_app">
-    <div class="mb20">
-      <el-button type="primary" @click="handleEdit()">鏂板</el-button>
-    </div>
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column
-        prop="name"
-        label="闅愭偅绫诲瀷"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎺掑簭鐮�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎿嶄綔"
-        min-width="80"
-        align="center"
-        show-overflow-tooltip
+  <TableLayout :permissions="['business:member:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
+      <el-form-item label="闅愭偅绫诲瀷" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ラ殣鎮g被鍨�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:hiddendangerparam:create','business:hiddendangerparam:delete']">
+        <li><el-button type="primary" @click="$refs.OperaHiddenDangerParamWindow.open('鏂板缓闅愭偅绫诲瀷',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:hiddendangerparam:create']">鏂板缓</el-button></li>
+        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:hiddendangerparam:delete']">鎵归噺鍒犻櫎</el-button></li>
+      </ul>
+      <el-table
+          v-loading="isWorking.search"
+          :data="tableData.list"
+          stripe
+          @selection-change="handleSelectionChange"
       >
-        <template v-slot="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">缂栬緫</el-button>
-          <el-button type="text" class="red" @click="handleDel(scope.row)"
-            >鍒犻櫎</el-button
-          >
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-    <el-dialog
-      :title="param.id ? '缂栬緫闅愭偅绫诲瀷' : '鏂板闅愭偅绫诲瀷'"
-      :visible.sync="isShowEdit"
-      width="480px"
-    >
-      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
-        <el-form-item label="闅愭偅绫诲瀷" prop="name">
-          <el-input v-model="param.aaa"></el-input>
-        </el-form-item>
-        <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="name">
-          <el-input
-            oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 7)"
-          />
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="isShowEdit = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="handleSub">纭畾</el-button>
-      </span>
-    </el-dialog>
-  </div>
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="闅愭偅绫诲瀷" min-width="200px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�"  min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鎿嶄綔鏃堕棿" min-width="200px"></el-table-column>
+        <el-table-column
+            v-if="containPermissions(['business:hiddendangerparam:update', 'business:hiddendangerparam:delete' ])"
+            label="鎿嶄綔"
+            min-width="250"
+            fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" icon="el-icon-edit" @click="$refs.OperaHiddenDangerParamWindow.open('缂栬緫闅愭偅绫诲瀷',row,searchForm.type)" v-permissions="['business:hiddendangerparam:update']">缂栬緫</el-button>
+            <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:hiddendangerparam:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+          @size-change="handleSizeChange"
+          @current-change="handlePageChange"
+          :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaHiddenDangerParamWindow ref="OperaHiddenDangerParamWindow" @success="handlePageChange"/>
+  </TableLayout>
 </template>
 
 <script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
+import OperaHiddenDangerParamWindow from '@/components/business/OperaHiddenDangerParamWindow'
 export default {
-  components: {
-    Pagination
-  },
+  name: 'areaSet',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaHiddenDangerParamWindow },
   data () {
     return {
-      loading: false,
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [],
-      total: 0,
-      isShowEdit: false,
-      param: {},
-      rules: {}
+      // 鎼滅储
+      searchForm: {
+        name: '',
+        type:1
+      }
     }
   },
+  created () {
+    this.config({
+      module: '闅愭偅闅忔墜鎷嶉厤缃被鍨�',
+      api: '/business/hiddenDangerParam',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
   methods: {
-    handleSub () {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    getList (page) { },
-    clear () { },
-    handleEdit (row) {
-      this.isShowEdit = true
-    },
-    handleDel () { },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
   }
 }
 </script>
-
-<style>
-</style>
diff --git a/admin/src/views/vehicle/authorizationRecord.vue b/admin/src/views/vehicle/authorizationRecord.vue
deleted file mode 100644
index b6c5d63..0000000
--- a/admin/src/views/vehicle/authorizationRecord.vue
+++ /dev/null
@@ -1,139 +0,0 @@
-<template>
-  <div class="main_app">
-    <QueryForm
-      v-model="filters"
-      :query-form-config="queryFormConfig"
-      @handleQuery="getList(1)"
-      @clear="clear"
-    >
-      <template #date>
-        <el-radio-group v-model="filters.aa">
-          <el-radio-button label="">褰撳ぉ</el-radio-button>
-          <el-radio-button label="鍖椾含">杩�7澶�</el-radio-button>
-          <el-radio-button label="骞垮窞">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
-    <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column
-        prop="name"
-        label="杞︾墝鐓�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="杞﹁締绫诲瀷"
-        min-width="80"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎺堟潈鍋滆溅鍦�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎺堟潈鏈夋晥鏈�"
-        min-width="110"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎿嶄綔浜�"
-        min-width="100"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎺堟潈鐘舵��"
-        min-width="80"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鏈�鍚庢搷浣滄椂闂�"
-        min-width="110"
-        show-overflow-tooltip
-      />
-      <el-table-column
-        prop="name"
-        label="鎺堟潈澶辫触鍘熷洜"
-        min-width="110"
-        show-overflow-tooltip
-      />
-    </el-table>
-    <pagination
-      @size-change="handleSizeChange"
-      @current-change="getList"
-      :pagination="pagination"
-    />
-  </div>
-</template>
-
-<script>
-import Pagination from '@/components/common/Pagination'
-import QueryForm from '@/components/common/QueryForm'
-export default {
-  components: {
-    Pagination,
-    QueryForm
-  },
-  data () {
-    return {
-      filters: {},
-      loading: false,
-      queryFormConfig: {
-        formItems: [
-          {
-            filed: 'idCard',
-            type: 'input',
-            label: '杞︾墝鐓�'
-          },
-          {
-            filed: 'name',
-            type: 'select',
-            label: '鎺堟潈鐘舵��',
-            options: []
-          },
-          {
-            filed: 'name',
-            type: 'select',
-            label: '杞﹁締绫诲瀷',
-            options: []
-          },
-          {
-            filed: 'name',
-            type: 'datetimerange',
-            label: '涓嬪彂鏃堕棿',
-            options: []
-          },
-          {
-            filed: 'date',
-            type: 'slot',
-            label: ''
-          }
-        ],
-        online: true
-      },
-      pagination: {
-        capacity: 10,
-        page: 1
-      },
-      list: [],
-      total: 0
-    }
-  },
-  methods: {
-    getList (page) { },
-    clear () { },
-    handleSizeChange (capacity) {
-      this.pagination.capacity = capacity
-    }
-  }
-}
-</script>
-
-<style>
-</style>
diff --git a/admin/src/views/vehicle/parkBook.vue b/admin/src/views/vehicle/parkBook.vue
index 5df6009..adf8ffe 100644
--- a/admin/src/views/vehicle/parkBook.vue
+++ b/admin/src/views/vehicle/parkBook.vue
@@ -45,7 +45,7 @@
                 <el-table-column prop="memberName" label="濮撳悕" min-width="100px"></el-table-column>
                 <el-table-column prop="memberPhone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
                 <el-table-column prop="companyName" label="缁勭粐" min-width="100px"></el-table-column>
-                <el-table-column prop="startTime" label="鏈夋晥鏈�" min-width="100px">
+                <el-table-column prop="startTime" label="鏈夋晥鏈�" min-width="130px">
                     <template slot-scope="{row}">
                         <span>{{validity(row.startTime, row.endTime)}}</span>
 <!--                        <span v-if="!row.startTime || !row.endTime">闀挎湡</span>-->
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Date.java b/server/system_service/src/main/java/com/doumee/core/utils/Date.java
index 3e8e209..699473a 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Date.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Date.java
@@ -16,6 +16,9 @@
      * @return java.util.Date
      */
     public java.util.Date getStart (java.util.Date date) {
+        if(date ==null){
+            return null;
+        }
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.set(Calendar.HOUR_OF_DAY, 0);
@@ -42,6 +45,9 @@
      * @return java.util.Date
      */
     public java.util.Date getEnd (java.util.Date date) {
+        if(date ==null){
+            return null;
+        }
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerParamCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerParamCloudController.java
index 1a3be54..42313d9 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerParamCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HiddenDangerParamCloudController.java
@@ -16,6 +16,8 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
 /**
  * @author 姹熻箘韫�
  * @since 2024/04/28 16:06
@@ -62,6 +64,12 @@
         return ApiResponse.success(null);
     }
 
+    @ApiOperation("鏌ヨ鍏ㄩ儴")
+    @PostMapping("/list")
+    @CloudRequiredPermission("business:hiddendangerparam:query")
+    public ApiResponse<List<HiddenDangerParam>> findPage (@RequestBody HiddenDangerParam pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(hiddenDangerParamService.findList(pageWrap));
+    }
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @CloudRequiredPermission("business:hiddendangerparam:query")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
index c5b3557..16662f9 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDangerParam.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
 import io.swagger.annotations.ApiModel;
@@ -10,6 +11,7 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 闅愭偅鍖哄煙閰嶇疆绫诲瀷淇℃伅琛�
@@ -32,7 +34,6 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -41,7 +42,6 @@
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
@@ -79,5 +79,8 @@
     @ApiModelProperty(value = "绫诲瀷 0闅愭偅鍖哄煙 1闅愭偅绫诲瀷", example = "1")
     @ExcelColumn(name="绫诲瀷 0闅愭偅鍖哄煙 1闅愭偅绫诲瀷")
     private Integer type;
+    @ApiModelProperty(value = "鐢ㄦ埛缂栫爜闆嗗悎", example = "1")
+    @TableField(exist = false)
+    private List<Integer> memberIdList;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
index 4606604..955607d 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
@@ -10,6 +10,7 @@
 import com.doumee.dao.business.HiddenDangerParamMapper;
 import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.model.CarDriver;
+import com.doumee.dao.business.model.HiddenDanger;
 import com.doumee.dao.business.model.HiddenDangerParam;
 import com.doumee.dao.business.model.Member;
 import com.doumee.service.business.HiddenDangerParamService;
@@ -47,18 +48,19 @@
         }
         if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
             //濡傛灉鏄尯鍩熼厤缃�
-            List<Integer> ids = Constants.getIntegerListByStrs(model.getMemberIds());
+            List<Integer> ids = model.getMemberIdList();
             if(ids==null || ids.size() ==0){
                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝瀹夊叏鍛樹俊鎭笉姝g‘锛岃鎸夎姹傚~鍐欏唴瀹癸紒");
             }
            List<Member>  memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                     .eq(Member::getType,Constants.TWO)
+                    .in(Member::getId,ids)
                     .eq(Member::getIsdeleted,Constants.ZERO));
             if(memberList == null || memberList.size() == 0 || memberList.size() != ids.size() ){
                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勫畨鍏ㄥ憳淇℃伅锛�");
             }
-            String names = null;
-            String idss = null;
+            String names = "";
+            String idss = "";
             for(Member member : memberList){
                 if(StringUtils.isNotBlank(names)){
                     names += ",";
@@ -67,7 +69,7 @@
                     idss += ",";
                 }
                 names += member.getName();
-                names += member.getId();
+                idss += member.getId();
             }
             model.setMemberNames(names);
             model.setMemberIds(idss);
@@ -121,18 +123,19 @@
         }
         if(Constants.equalsInteger(hiddenDangerParam.getType(),Constants.ZERO)){
             //濡傛灉鏄尯鍩熼厤缃�,鏍¢獙瀹夊叏鍛樹俊鎭槸鍚︽纭�
-            List<Integer> ids = Constants.getIntegerListByStrs(model.getMemberIds());
+            List<Integer> ids =model.getMemberIdList();
             if(ids==null || ids.size() ==0){
                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝瀹夊叏鍛樹俊鎭笉姝g‘锛岃鎸夎姹傚~鍐欏唴瀹癸紒");
             }
             List<Member>  memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                     .eq(Member::getType,Constants.TWO)
+                    .in(Member::getId,ids)
                     .eq(Member::getIsdeleted,Constants.ZERO));
             if(memberList == null || memberList.size() == 0 || memberList.size() != ids.size() ){
                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勫畨鍏ㄥ憳淇℃伅锛�");
             }
-            String names = null;
-            String idss = null;
+            String names = "";
+            String idss = "";
             for(Member member : memberList){
                 if(StringUtils.isNotBlank(names)){
                     names += ",";
@@ -141,7 +144,7 @@
                     idss += ",";
                 }
                 names += member.getName();
-                names += member.getId();
+                idss += member.getId();
             }
             model.setMemberNames(names);
             model.setMemberIds(idss);
@@ -176,7 +179,10 @@
 
     @Override
     public List<HiddenDangerParam> findList(HiddenDangerParam hiddenDangerParam) {
+
+        hiddenDangerParam.setIsdeleted(Constants.ZERO);
         QueryWrapper<HiddenDangerParam> wrapper = new QueryWrapper<>(hiddenDangerParam);
+        wrapper.lambda().orderByAsc(HiddenDangerParam::getSortnum);
         return hiddenDangerParamMapper.selectList(wrapper);
     }
   
@@ -189,13 +195,9 @@
         queryWrapper.lambda()
                 .eq(pageWrap.getModel().getId() != null, HiddenDangerParam::getId, pageWrap.getModel().getId())
                 .eq(pageWrap.getModel().getCreator() != null, HiddenDangerParam::getCreator, pageWrap.getModel().getCreator())
-                .ge(pageWrap.getModel().getCreateDate() != null, HiddenDangerParam::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
-                .le(pageWrap.getModel().getCreateDate() != null, HiddenDangerParam::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
                 .eq(pageWrap.getModel().getEditor() != null, HiddenDangerParam::getEditor, pageWrap.getModel().getEditor())
-                .ge(pageWrap.getModel().getEditDate() != null, HiddenDangerParam::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
-                .le(pageWrap.getModel().getEditDate() != null, HiddenDangerParam::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
                 .eq(pageWrap.getModel().getIsdeleted() != null, HiddenDangerParam::getIsdeleted, pageWrap.getModel().getIsdeleted())
-                .eq(pageWrap.getModel().getName() != null, HiddenDangerParam::getName, pageWrap.getModel().getName())
+                .like(pageWrap.getModel().getName() != null, HiddenDangerParam::getName, pageWrap.getModel().getName())
                 .eq(pageWrap.getModel().getRemark() != null, HiddenDangerParam::getRemark, pageWrap.getModel().getRemark())
                 .eq(pageWrap.getModel().getStatus() != null, HiddenDangerParam::getStatus, pageWrap.getModel().getStatus())
                 .eq(pageWrap.getModel().getSortnum() != null, HiddenDangerParam::getSortnum, pageWrap.getModel().getSortnum())
@@ -203,6 +205,7 @@
                 .eq(pageWrap.getModel().getMemberIds() != null, HiddenDangerParam::getMemberIds, pageWrap.getModel().getMemberIds())
                 .eq(pageWrap.getModel().getMemberNames() != null, HiddenDangerParam::getMemberNames, pageWrap.getModel().getMemberNames())
                 .eq(pageWrap.getModel().getType() != null, HiddenDangerParam::getType, pageWrap.getModel().getType())
+                .orderByAsc(HiddenDangerParam::getSortnum)
                 .orderByDesc(HiddenDangerParam::getCreateDate)
                 .eq( HiddenDangerParam::getIsdeleted, Constants.ZERO)
         ;
@@ -213,7 +216,9 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
-        return PageData.from(hiddenDangerParamMapper.selectPage(page, queryWrapper));
+        PageData<HiddenDangerParam> result = PageData.from(hiddenDangerParamMapper.selectPage(page, queryWrapper));
+
+        return result;
     }
 
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
index 347a265..523e0f1 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -225,12 +225,12 @@
                 .select("t1.name", HiddenDanger::getMemberName)
                 .select("t1.phone",HiddenDanger::getMemberPhone)
                 .select("t2.name",HiddenDanger::getCheckorName)
-                .select("t3.phone",HiddenDanger::getCheckorPhone)
+                .select("t2.phone",HiddenDanger::getCheckorPhone)
                 .select("t4.company_name_path",HiddenDanger::getCompanyName);
         queryWrapper.leftJoin(Member.class,Member::getId,HiddenDanger::getMemberId)
-                .leftJoin("company t4 on t1.company_id=t4.id")
                 .leftJoin(Member.class,Member::getId,HiddenDanger::getCheckUserId)
-                .leftJoin(HiddenDangerParam.class,HiddenDangerParam::getId,HiddenDanger::getCateId);
+                .leftJoin(HiddenDangerParam.class,HiddenDangerParam::getId,HiddenDanger::getCateId)
+                .leftJoin("company t4 on t1.company_id=t4.id");
         queryWrapper
                 .eq(pageWrap.getModel().getId() != null, HiddenDanger::getId, pageWrap.getModel().getId())
                 .eq(pageWrap.getModel().getCreator() != null, HiddenDanger::getCreator, pageWrap.getModel().getCreator())
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
index bc9f8cc..8b6d77b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
@@ -117,10 +117,10 @@
                 .le(pageWrap.getModel().getEditDate() != null, VisitReason::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
                 .eq(pageWrap.getModel().getIsdeleted() != null, VisitReason::getIsdeleted, pageWrap.getModel().getIsdeleted())
                 .eq(pageWrap.getModel().getRemark() != null, VisitReason::getRemark, pageWrap.getModel().getRemark())
-                .eq(pageWrap.getModel().getTitle() != null, VisitReason::getTitle, pageWrap.getModel().getTitle())
+                .like(pageWrap.getModel().getTitle() != null, VisitReason::getTitle, pageWrap.getModel().getTitle())
                 .eq(pageWrap.getModel().getSortnum() != null, VisitReason::getSortnum, pageWrap.getModel().getSortnum())
                 .eq(pageWrap.getModel().getType() != null, VisitReason::getType, pageWrap.getModel().getType())
-                .orderByDesc(VisitReason::getSortnum)
+                .orderByAsc(VisitReason::getSortnum)
         ;
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {

--
Gitblit v1.9.3