From 10964ea959757a6cc2871ae769bd4687595eac80 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 15 Dec 2023 17:58:01 +0800
Subject: [PATCH] 首页更换,部分菜单,操作栏调整,部分样式调整

---
 src/page/login/index.vue              |  218 
 public/img/tiwen.png                  |    0 
 src/views/wel/index.vue               |  177 
 src/views/grid/gridWorkLog/index.vue  |  604 +-
 src/styles/login.scss                 |  269 
 public/img/anjian.png                 |    0 
 src/views/work/claim.vue              |  357 
 src/views/work/done.vue               |  313 
 src/styles/media.scss                 |  328 
 src/views/monitor/log/usual.vue       |  289 
 public/img/fangyi.png                 |    0 
 src/views/task/eCall/index.vue        | 1034 ++--
 src/views/grid/index.vue              |  591 +-
 src/views/task/index.vue              |  718 +-
 src/views/place/index.vue             |  914 ++--
 src/views/task/reportForRepairs.vue   |  608 +-
 src/views/rotation/index.vue          |  557 +-
 src/views/tool/model.vue              |  679 +-
 public/img/logo.png                   |    0 
 src/views/monitor/log/error.vue       |  289 
 public/favicon.png                    |    0 
 public/img/yijianbaoj.png             |    0 
 src/util/util.js                      |   14 
 src/views/tool/code.vue               | 1179 ++--
 public/img/bjkeji.png                 |    0 
 src/views/work/send.vue               |  332 
 public/img/tongji.png                 |    0 
 src/views/grid/gridman.vue            |  595 +-
 src/views/work/start.vue              |  378 
 src/views/monitor/log/api.vue         |  279 
 src/views/work/todo.vue               |  329 
 src/views/userHouse/houseHoldList.vue |    1 
 src/views/tool/datasource.vue         |  508 +-
 src/views/district/index.vue          |  616 +-
 34 files changed, 6,060 insertions(+), 6,116 deletions(-)

diff --git a/public/favicon.png b/public/favicon.png
index ecd70ca..dde62ae 100644
--- a/public/favicon.png
+++ b/public/favicon.png
Binary files differ
diff --git a/public/img/anjian.png b/public/img/anjian.png
new file mode 100644
index 0000000..4fe7231
--- /dev/null
+++ b/public/img/anjian.png
Binary files differ
diff --git a/public/img/bjkeji.png b/public/img/bjkeji.png
new file mode 100644
index 0000000..2cfb7b5
--- /dev/null
+++ b/public/img/bjkeji.png
Binary files differ
diff --git a/public/img/fangyi.png b/public/img/fangyi.png
new file mode 100644
index 0000000..70e2574
--- /dev/null
+++ b/public/img/fangyi.png
Binary files differ
diff --git a/public/img/logo.png b/public/img/logo.png
index b3e40cc..8c7f4e2 100644
--- a/public/img/logo.png
+++ b/public/img/logo.png
Binary files differ
diff --git a/public/img/tiwen.png b/public/img/tiwen.png
new file mode 100644
index 0000000..81ea956
--- /dev/null
+++ b/public/img/tiwen.png
Binary files differ
diff --git a/public/img/tongji.png b/public/img/tongji.png
new file mode 100644
index 0000000..dc20dfa
--- /dev/null
+++ b/public/img/tongji.png
Binary files differ
diff --git a/public/img/yijianbaoj.png b/public/img/yijianbaoj.png
new file mode 100644
index 0000000..2dcbe59
--- /dev/null
+++ b/public/img/yijianbaoj.png
Binary files differ
diff --git a/src/page/login/index.vue b/src/page/login/index.vue
index bac4472..625c5d7 100644
--- a/src/page/login/index.vue
+++ b/src/page/login/index.vue
@@ -1,134 +1,134 @@
 <template>
-  <div class="login-container"
-       ref="login"
-       @keyup.enter.native="handleLogin">
-    <top-color v-show="false"></top-color>
-    <div class="login-weaper animated bounceInDown">
-      <div class="login-left">
-        <div class="login-time">
-          {{time}}
-        </div>
-        <p class="title">{{ $t('login.info') }}</p>
-      <!--<img class="img" src="/img/logo.png" alt="">-->
-      </div>
-      <div class="login-border">
-        <div class="login-main">
-          <h4 class="login-title">
-            {{ $t('login.title') }}
-            <!-- <top-lang></top-lang> -->
-          </h4>
-          <userLogin v-if="activeName==='user'"></userLogin>
-          <!-- <codeLogin v-else-if="activeName==='code'"></codeLogin> -->
-          <!-- <thirdLogin v-else-if="activeName==='third'"></thirdLogin> -->
-          <div class="login-menu">
-            <!-- <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a> -->
-            <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
-            <!-- <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a> -->
-            <!-- <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a> -->
-          </div>
-        </div>
+    <div class="login-container" ref="login" @keyup.enter.native="handleLogin">
+        <top-color v-show="false"></top-color>
+        <div class="login-weaper animated bounceInDown">
+            <div class="login-left">
+                <div class="login-time">
+                    {{ time }}
+                </div>
+                <!-- <img class="img" src="/img/logo.png" alt=""> -->
+                <p class="title">{{ $t('login.info') }}</p>
+            </div>
+            <div class="login-border">
+                <img class="img" src="/img/logo.png" alt="">
+                <div class="login-main">
 
-      </div>
+                    <h4 class="login-title">
+                        {{ $t('login.title') }}
+                        <!-- <top-lang></top-lang> -->
+                    </h4>
+                    <userLogin v-if="activeName === 'user'"></userLogin>
+                    <!-- <codeLogin v-else-if="activeName==='code'"></codeLogin> -->
+                    <!-- <thirdLogin v-else-if="activeName==='third'"></thirdLogin> -->
+                    <div class="login-menu">
+                        <!-- <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a> -->
+                        <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
+                        <!-- <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a> -->
+                        <!-- <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a> -->
+                    </div>
+                </div>
+
+            </div>
+        </div>
     </div>
-  </div>
 </template>
 <script>
-  import userLogin from "./userlogin";
-  import codeLogin from "./codelogin";
-  import thirdLogin from "./thirdlogin";
-  import {mapGetters} from "vuex";
-  import {dateFormat} from "@/util/date";
-  import {validatenull} from "@/util/validate";
-  import topLang from "@/page/index/top/top-lang";
-  import topColor from "@/page/index/top/top-color";
-  import {getQueryString, getTopUrl} from "@/util/util";
+import userLogin from "./userlogin"
+import codeLogin from "./codelogin"
+import thirdLogin from "./thirdlogin"
+import { mapGetters } from "vuex"
+import { dateFormat } from "@/util/date"
+import { validatenull } from "@/util/validate"
+import topLang from "@/page/index/top/top-lang"
+import topColor from "@/page/index/top/top-color"
+import { getQueryString, getTopUrl } from "@/util/util"
 
-  export default {
+export default {
     name: "login",
     components: {
-      userLogin,
-      codeLogin,
-      thirdLogin,
-      topLang,
-      topColor
+        userLogin,
+        codeLogin,
+        thirdLogin,
+        topLang,
+        topColor
     },
-    data() {
-      return {
-        time: "",
-        activeName: "user",
-        socialForm: {
-          tenantId: "000000",
-          source: "",
-          code: "",
-          state: "",
+    data () {
+        return {
+            time: "",
+            activeName: "user",
+            socialForm: {
+                tenantId: "000000",
+                source: "",
+                code: "",
+                state: "",
+            }
         }
-      };
     },
     watch: {
-      $route() {
-        this.handleLogin();
-      }
+        $route () {
+            this.handleLogin()
+        }
     },
-    created() {
-      this.handleLogin();
-      this.getTime();
+    created () {
+        this.handleLogin()
+        this.getTime()
     },
-    mounted() {
+    mounted () {
     },
     computed: {
-      ...mapGetters(["website", "tagWel"])
+        ...mapGetters(["website", "tagWel"])
     },
     props: [],
     methods: {
-      getTime() {
-        setInterval(() => {
-          this.time = dateFormat(new Date());
-        }, 1000);
-      },
-      handleLogin() {
-        const topUrl = getTopUrl();
-        const redirectUrl = "/oauth/redirect/";
-        const ssoCode = "?code=";
-        this.socialForm.source = getQueryString("source");
-        this.socialForm.code = getQueryString("code");
-        this.socialForm.state = getQueryString("state");
-        if (validatenull(this.socialForm.source) && topUrl.includes(redirectUrl)) {
-          let source = topUrl.split("?")[0];
-          source = source.split(redirectUrl)[1];
-          this.socialForm.source = source;
+        getTime () {
+            setInterval(() => {
+                this.time = dateFormat(new Date())
+            }, 1000)
+        },
+        handleLogin () {
+            const topUrl = getTopUrl()
+            const redirectUrl = "/oauth/redirect/"
+            const ssoCode = "?code="
+            this.socialForm.source = getQueryString("source")
+            this.socialForm.code = getQueryString("code")
+            this.socialForm.state = getQueryString("state")
+            if (validatenull(this.socialForm.source) && topUrl.includes(redirectUrl)) {
+                let source = topUrl.split("?")[0]
+                source = source.split(redirectUrl)[1]
+                this.socialForm.source = source
+            }
+            if (topUrl.includes(redirectUrl) && !validatenull(this.socialForm.source) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '第三方系统登录中,请稍后。。。',
+                    spinner: "el-icon-loading"
+                })
+                this.$store.dispatch("LoginBySocial", this.socialForm).then(() => {
+                    window.location.href = topUrl.split(redirectUrl)[0]
+                    this.$router.push({ path: this.tagWel.value })
+                    loading.close()
+                }).catch(() => {
+                    loading.close()
+                })
+            } else if (!topUrl.includes(redirectUrl) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '单点系统登录中,请稍后。。。',
+                    spinner: "el-icon-loading"
+                })
+                this.$store.dispatch("LoginBySso", this.socialForm).then(() => {
+                    window.location.href = topUrl.split(ssoCode)[0]
+                    this.$router.push({ path: this.tagWel.value })
+                    loading.close()
+                }).catch(() => {
+                    loading.close()
+                })
+            }
         }
-        if (topUrl.includes(redirectUrl) && !validatenull(this.socialForm.source) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
-          const loading = this.$loading({
-            lock: true,
-            text: '第三方系统登录中,请稍后。。。',
-            spinner: "el-icon-loading"
-          });
-          this.$store.dispatch("LoginBySocial", this.socialForm).then(() => {
-            window.location.href = topUrl.split(redirectUrl)[0];
-            this.$router.push({path: this.tagWel.value});
-            loading.close();
-          }).catch(() => {
-            loading.close();
-          });
-        } else if (!topUrl.includes(redirectUrl) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
-          const loading = this.$loading({
-            lock: true,
-            text: '单点系统登录中,请稍后。。。',
-            spinner: "el-icon-loading"
-          });
-          this.$store.dispatch("LoginBySso", this.socialForm).then(() => {
-            window.location.href = topUrl.split(ssoCode)[0];
-            this.$router.push({path: this.tagWel.value});
-            loading.close();
-          }).catch(() => {
-            loading.close();
-          });
-        }
-      }
     }
-  };
+}
 </script>
 
 <style lang="scss">
-  @import "@/styles/login.scss";
+@import "@/styles/login.scss";
 </style>
diff --git a/src/styles/login.scss b/src/styles/login.scss
index 459b704..8d5c5db 100644
--- a/src/styles/login.scss
+++ b/src/styles/login.scss
@@ -1,184 +1,193 @@
 .login-container {
-  display: flex;
-  align-items: center;
-  position: relative;
-  width: 100%;
-  height: 100%;
-  margin: 0 auto;
-  background-color: #469BC0;
-  // background-image: url("/img/bg/bg.jpg");
-  background-size: 100% 100%;
+    display: flex;
+    align-items: center;
+    position: relative;
+    width: 100%;
+    height: 100%;
+    margin: 0 auto;
+    background-color: #469BC0;
+    // background-image: url("/img/bg/bg.jpg");
+    background-size: 100% 100%;
 }
 
 .login-weaper {
-  margin: 0 auto;
-  width: 1000px;
-  box-shadow: -4px 5px 10px rgba(0, 0, 0, 0.4);
+    margin: 0 auto;
+    width: 1000px;
+    box-shadow: -4px 5px 10px rgba(0, 0, 0, 0.4);
 
-  .el-input-group__append {
-    border: none;
-  }
+    .el-input-group__append {
+        border: none;
+    }
 }
 
 .login-left,
 .login-border {
-  position: relative;
-  min-height: 500px;
-  align-items: center;
-  display: flex;
+    position: relative;
+    min-height: 500px;
+    align-items: center;
+    display: flex;
 }
 
 .login-left {
-  border-top-left-radius: 5px;
-  border-bottom-left-radius: 5px;
-  justify-content: center;
-  flex-direction: column;
-  background-color: #5A9CF8 !important;;
-  color: #fff;
-  float: left;
-  width: 50%;
-  position: relative;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+    justify-content: center;
+    flex-direction: column;
+    background-color: #5A9CF8 !important;
+    ;
+    color: #fff;
+    float: left;
+    width: 50%;
+    position: relative;
 }
 
 .login-left .img {
-  width: 140px;
+    width: 140px;
 }
 
 .login-time {
-  position: absolute;
-  left: 25px;
-  top: 25px;
-  width: 100%;
-  color: #fff;
-  font-weight: 200;
-  opacity: 0.9;
-  font-size: 18px;
-  overflow: hidden;
+    position: absolute;
+    left: 25px;
+    top: 25px;
+    width: 100%;
+    color: #fff;
+    font-weight: 200;
+    opacity: 0.9;
+    font-size: 18px;
+    overflow: hidden;
 }
 
 .login-left .title {
-  text-align: center;
-  color: #fff;
-  font-weight: bold;
-  font-size: 30px;
-  letter-spacing: 2px;
+    text-align: center;
+    color: #fff;
+    font-weight: bold;
+    font-size: 30px;
+    letter-spacing: 2px;
 }
 
 .login-border {
-  border-left: none;
-  border-top-right-radius: 5px;
-  border-bottom-right-radius: 5px;
-  color: #fff;
-  background-color: #fff;
-  width: 50%;
-  float: left;
-  box-sizing: border-box;
+    border-left: none;
+    border-top-right-radius: 5px;
+    border-bottom-right-radius: 5px;
+    color: #fff;
+    background-color: #fff;
+    width: 50%;
+    float: left;
+    box-sizing: border-box;
+    position: relative;
+
+    .img {
+        position: absolute;
+        top: 10px;
+        right: 10px;
+        width: 180px;
+    }
 }
 
 .login-main {
-  margin: 0 auto;
-  width: 65%;
-  box-sizing: border-box;
+    margin: 0 auto;
+    width: 65%;
+    box-sizing: border-box;
 }
 
-.login-main > h3 {
-  margin-bottom: 20px;
+.login-main>h3 {
+    margin-bottom: 20px;
 }
 
-.login-main > p {
-  color: #76838f;
+.login-main>p {
+    color: #76838f;
 }
 
 .login-title {
-  color: #333;
-  margin-bottom: 40px;
-  font-weight: 500;
-  font-size: 22px;
-  text-align: center;
-  letter-spacing: 4px;
+    color: #333;
+    margin-bottom: 40px;
+    font-weight: 500;
+    font-size: 22px;
+    text-align: center;
+    letter-spacing: 4px;
 }
 
 .login-menu {
-  margin-top: 40px;
-  width: 100%;
-  text-align: center;
+    margin-top: 40px;
+    width: 100%;
+    text-align: center;
 
-  a {
-    color: #999;
-    font-size: 12px;
-    margin: 0px 8px;
-  }
+    a {
+        color: #999;
+        font-size: 12px;
+        margin: 0px 8px;
+    }
 }
 
 .login-submit {
-  width: 100%;
-  height: 45px;
-  border: 1px solid #409EFF;
-  background: none;
-  font-size: 18px;
-  letter-spacing: 2px;
-  font-weight: 300;
-  color: #409EFF;
-  cursor: pointer;
-  margin-top: 30px;
-  font-family: "neo";
-  transition: 0.25s;
+    width: 100%;
+    height: 45px;
+    border: 1px solid #409EFF;
+    background: none;
+    font-size: 18px;
+    letter-spacing: 2px;
+    font-weight: 300;
+    color: #409EFF;
+    cursor: pointer;
+    margin-top: 30px;
+    font-family: "neo";
+    transition: 0.25s;
 }
 
 .login-form {
-  margin: 10px 0;
+    margin: 10px 0;
 
-  i {
-    color: #333;
-  }
-
-  .el-form-item__content {
-    width: 100%;
-  }
-
-  .el-form-item {
-    margin-bottom: 12px;
-  }
-
-  .el-input {
-    input {
-      padding-bottom: 10px;
-      text-indent: 5px;
-      background: transparent;
-      border: none;
-      border-radius: 0;
-      color: #333;
-      border-bottom: 1px solid rgb(235, 237, 242);
+    i {
+        color: #333;
     }
 
-    .el-input__prefix {
-      i {
-        padding: 0 5px;
-        font-size: 16px !important;
-      }
+    .el-form-item__content {
+        width: 100%;
     }
-  }
+
+    .el-form-item {
+        margin-bottom: 12px;
+    }
+
+    .el-input {
+        input {
+            padding-bottom: 10px;
+            text-indent: 5px;
+            background: transparent;
+            border: none;
+            border-radius: 0;
+            color: #333;
+            border-bottom: 1px solid rgb(235, 237, 242);
+        }
+
+        .el-input__prefix {
+            i {
+                padding: 0 5px;
+                font-size: 16px !important;
+            }
+        }
+    }
 }
 
 .login-code {
-  display: flex;
-  align-items: center;
-  justify-content: space-around;
-  margin: 0 0 0 10px;
+    display: flex;
+    align-items: center;
+    justify-content: space-around;
+    margin: 0 0 0 10px;
 }
 
 .login-code-img {
-  margin-top: 2px;
-  width: 100px;
-  height: 38px;
-  background-color: #fdfdfd;
-  border: 1px solid #f0f0f0;
-  color: #333;
-  font-size: 14px;
-  font-weight: bold;
-  letter-spacing: 5px;
-  line-height: 38px;
-  text-indent: 5px;
-  text-align: center;
-  cursor:pointer!important;
-}
+    margin-top: 2px;
+    width: 100px;
+    height: 38px;
+    background-color: #fdfdfd;
+    border: 1px solid #f0f0f0;
+    color: #333;
+    font-size: 14px;
+    font-weight: bold;
+    letter-spacing: 5px;
+    line-height: 38px;
+    text-indent: 5px;
+    text-align: center;
+    cursor: pointer !important;
+}
\ No newline at end of file
diff --git a/src/styles/media.scss b/src/styles/media.scss
index 2781c4c..9ae6f0d 100644
--- a/src/styles/media.scss
+++ b/src/styles/media.scss
@@ -2,181 +2,195 @@
 .avue-header,
 .avue-top,
 .avue-logo,
-.avue-layout
-.login-logo,
+.avue-layout .login-logo,
 .avue-main {
-  transition: all .3s;
+    transition: all .3s;
 }
 
 .avue-contail {
-  width: 100%;
-  height: 100%;
-  background: #f0f2f5;
-  background-size: 100%;
-  background-repeat: no-repeat;
+    width: 100%;
+    height: 100%;
+    background: #f0f2f5;
+    background-size: 100%;
+    background-repeat: no-repeat;
 }
 
 
 .avue-left {
-  position: fixed;
-  left: 0;
-  top: 0;
-  width: 240px;
-  height: 100%;
-  z-index: 1025;
+    position: fixed;
+    left: 0;
+    top: 0;
+    width: 240px;
+    height: 100%;
+    z-index: 1025;
 }
 
 .avue--collapse {
-  .avue-left,
-  .avue-logo {
-    width: 60px;
-  }
 
-  .avue-header {
-    padding-left: 60px;
-  }
-
-  .avue-main {
-    width: calc(100% - 60px);
-    left: 60px;
-  }
-}
-
-.avue-header {
-  padding-left: 240px;
-  width: 100%;
-  background-color: #fff;
-  box-sizing: border-box;
-}
-
-.avue-main {
-  position: absolute;
-  left: 240px;
-  padding: 0;
-  padding-bottom: 20px;
-  width: calc(100% - 240px);
-  height: calc(100% - 64px);
-  box-sizing: border-box;
-  overflow: hidden;
-  transition: all 0.5s;
-  background: #f0f2f5;
-  z-index: 1026;
-
-  &--fullscreen {
-    width: 100%;
-    left: 0;
-  }
-}
-
-.avue-view {
-  padding: 0 10px !important;
-  width: 100%;
-  box-sizing: border-box;
-}
-
-.avue-footer {
-  margin: 0 auto;
-  padding: 0 22px;
-  width: 1300px;
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-
-  .logo {
-    margin-left: -50px;
-  }
-
-  .copyright {
-    color: #666;
-    line-height: 1.5;
-    font-size: 12px;
-  }
-}
-
-.avue-shade {
-  position: fixed;
-  display: none;
-  width: 100%;
-  height: 100%;
-  left: 0;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, .3);
-  z-index: 1024;
-
-  &--show {
-    display: block;
-  }
-}
-
-@media screen and (max-width: 992px) {
-  $width: 240px;
-  // ele的自适应
-  .el-dialog,
-  .el-message-box {
-    width: 98% !important;
-  }
-  //登录页面
-  .login-left {
-    display: none !important;
-  }
-  .login-logo {
-    padding-top: 30px !important;
-    margin-left: -30px;
-  }
-  .login-weaper {
-    margin: 0 auto;
-    width: 96% !important;
-  }
-  .login-border {
-    border-radius: 5px;
-    padding: 40px;
-    margin: 0 auto;
-    float: none !important;
-    width: 100% !important;
-  }
-  .login-main {
-    width: 100% !important;
-  }
-  //主框架
-  .avue-tags {
-    display: none;
-  }
-  .avue-left,
-  .avue-logo {
-    left: -$width;
-  }
-  .avue-main {
-    left: 0;
-    width: 100%;
-  }
-  .avue-header {
-    margin-bottom: 15px;
-    padding-left: 15px;
-  }
-  .top-bar__item {
-    display: none;
-  }
-  .avue--collapse {
     .avue-left,
     .avue-logo {
-      width: $width;
-      left: 0;
-    }
-
-    .avue-main {
-      left: $width;
-      width: 100%;
+        width: 60px;
     }
 
     .avue-header {
-      padding: 0;
-      transform: translate3d(230px, 0, 0);
+        padding-left: 60px;
     }
 
-    .avue-shade {
-      display: block;
+    .avue-main {
+        width: calc(100% - 60px);
+        left: 60px;
     }
-  }
 }
+
+.avue-header {
+    padding-left: 240px;
+    width: 100%;
+    background-color: #fff;
+    box-sizing: border-box;
+}
+
+.avue-main {
+    position: absolute;
+    left: 240px;
+    padding: 0;
+    padding-bottom: 20px;
+    width: calc(100% - 240px);
+    height: calc(100% - 64px);
+    box-sizing: border-box;
+    overflow: hidden;
+    transition: all 0.5s;
+    background: #f0f2f5;
+    z-index: 1026;
+
+    &--fullscreen {
+        width: 100%;
+        left: 0;
+    }
+}
+
+.avue-view {
+    padding: 0 10px !important;
+    width: 100%;
+    box-sizing: border-box;
+}
+
+.avue-footer {
+    margin: 0 auto;
+    padding: 0 22px;
+    width: 1300px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    .logo {
+        margin-left: -50px;
+    }
+
+    .copyright {
+        color: #666;
+        line-height: 1.5;
+        font-size: 12px;
+    }
+}
+
+.avue-shade {
+    position: fixed;
+    display: none;
+    width: 100%;
+    height: 100%;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, .3);
+    z-index: 1024;
+
+    &--show {
+        display: block;
+    }
+}
+
+@media screen and (max-width: 992px) {
+    $width: 240px;
+
+    // ele的自适应
+    .el-dialog,
+    .el-message-box {
+        width: 98% !important;
+    }
+
+    //登录页面
+    .login-left {
+        display: none !important;
+    }
+
+    .login-logo {
+        padding-top: 30px !important;
+        margin-left: -30px;
+    }
+
+    .login-weaper {
+        margin: 0 auto;
+        width: 96% !important;
+    }
+
+    .login-border {
+        border-radius: 5px;
+        padding: 40px;
+        margin: 0 auto;
+        float: none !important;
+        width: 100% !important;
+        position: relative;
+    }
+
+    .login-main {
+        width: 100% !important;
+    }
+
+    //主框架
+    .avue-tags {
+        display: none;
+    }
+
+    .avue-left,
+    .avue-logo {
+        left: -$width;
+    }
+
+    .avue-main {
+        left: 0;
+        width: 100%;
+    }
+
+    .avue-header {
+        margin-bottom: 15px;
+        padding-left: 15px;
+    }
+
+    .top-bar__item {
+        display: none;
+    }
+
+    .avue--collapse {
+
+        .avue-left,
+        .avue-logo {
+            width: $width;
+            left: 0;
+        }
+
+        .avue-main {
+            left: $width;
+            width: 100%;
+        }
+
+        .avue-header {
+            padding: 0;
+            transform: translate3d(230px, 0, 0);
+        }
+
+        .avue-shade {
+            display: block;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/util/util.js b/src/util/util.js
index 9df90d0..dd8d384 100644
--- a/src/util/util.js
+++ b/src/util/util.js
@@ -389,3 +389,17 @@
     window.open(URL.createObjectURL(file));
   }
 }
+
+export const processArray = (arr) => {
+    arr.forEach(item => {
+        if ('children' in item && item.children.length > 0) {
+            item.children = processArray(item.children)
+        } else {
+            if ('children' in item) {
+                delete item.children
+            }
+        }
+    })
+
+    return arr
+}
\ No newline at end of file
diff --git a/src/views/district/index.vue b/src/views/district/index.vue
index 3fa0822..c5bab6f 100644
--- a/src/views/district/index.vue
+++ b/src/views/district/index.vue
@@ -1,326 +1,326 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.district_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.district_delete"
+                    @click="handleDelete">删 除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getDistrict } from "@/api/district/index";
-import { mapGetters } from "vuex";
-import website from '@/config/website';
+import { getList, remove, update, add, getDistrict } from "@/api/district/index"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
 export default {
-  data() {
-    return {
-      form: {},
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      datetime: "",
-      selectionList: [],
-      option: {
-        height: "auto",
-        calcHeight: 54,
-        dialogWidth: 950,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 3,
-        menuWidth: 350,
-        border: true,
-        //stripe:true,
-        index: true,
-        viewBtn: true,
-        selection: true,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "小区名称",
-            prop: "name",
-            searchSpan: 4,
-            search: true,
-            width:260,
-            rules: [
-              {
-                required: true,
-                message: "请输入小区名称",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "所属社区",
-            prop: "communityCode",
-            search: true,
-            searchSpan: 4,
-            width:110,
-            type: "tree",
-            dicUrl:"/api/blade-system/region/tree?parentCode=361102",
-            // parent:false,
-            defaultExpandedKeys:["361102003"],
-            props: {
-              label: "name",
-              value: "id"
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            rules: [
-              {
-                required: true,
-                message: "请选择所属社区",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "小区图片",
-            prop: "picUrl",
-            width: 80,
-            type: "upload",
-            listType: "picture-img",
-            action: "/api/blade-resource/oss/endpoint/put-file",
-            propsHttp: {
-              res: "data",
-              url: "link",
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 280,
+                border: true,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "小区名称",
+                        prop: "name",
+                        searchSpan: 4,
+                        search: true,
+                        width: 260,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入小区名称",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "所属社区",
+                        prop: "communityCode",
+                        search: true,
+                        searchSpan: 4,
+                        width: 150,
+                        type: "tree",
+                        dicUrl: "/api/blade-system/region/tree",
+                        props: {
+                            label: "name",
+                            value: "id"
+                        },
+                        rules: [
+                            {
+                                required: true,
+                                message: "请选择所属社区",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "小区图片",
+                        prop: "picUrl",
+                        width: 80,
+                        type: "upload",
+                        listType: "picture-img",
+                        action: "/api/blade-resource/oss/endpoint/put-file",
+                        propsHttp: {
+                            res: "data",
+                            url: "link",
+                        },
+                        span: 24,
+                    },
+                    {
+                        label: "地址",
+                        prop: "address",
+                        span: 24,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入地址",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+
+                    {
+                        label: "小区简介",
+                        prop: "remark",
+                        component: "AvueUeditor",
+                        options: {
+                            action: "/api/blade-resource/oss/endpoint/put-file",
+                            props: {
+                                res: "data",
+                                url: "link",
+                            },
+                        },
+                        hide: true,
+                        minRows: 6,
+                        span: 24,
+                    },
+                ],
             },
-            span: 24,
-          },
-          {
-            label: "地址",
-            prop: "address",
-            span: 24,
-            rules: [
-              {
-                required: true,
-                message: "请输入地址",
-                trigger: "blur",
-              },
-            ],
-          },
-          
-          {
-            label: "小区简介",
-            prop: "remark",
-            component: "AvueUeditor",
-            options: {
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              props: {
-                res: "data",
-                url: "link",
-              },
-            },
-            hide: true,
-            minRows: 6,
-            span: 24,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  watch: {
-  },
-  computed: {
-    ...mapGetters(["permission", "userInfo"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.district_add, true),
-        viewBtn: this.vaildData(this.permission.district_view, true),
-        delBtn: this.vaildData(this.permission.district_delete, true),
-        editBtn: this.vaildData(this.permission.district_edit, true),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    rowSave(row, done, loading) {
-      if (row.picUrl.length > 0) {
-        var urls = []
-        var split = row.picUrl.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.picUrl = urls.join(",")
-      }
-      row.userid = this.userInfo.user_id;
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
+            data: [],
         }
-      );
     },
-    rowUpdate(row, index, done, loading) {
-      if (row.picUrl.length > 0) {
-        var urls = []
-        var split = row.picUrl.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.picUrl = urls.join(",")
-      }
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
+    watch: {
     },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDistrict(this.form.id).then((res) => {
-          this.form = res.data.data;
-          if (this.form.picUrl.length > 0) {
-            var urls = []
-            var names = this.form.picUrl.split(",");
-            names.forEach(name=>{
-              urls.push(website.minioUrl + name)
-            })
-            this.form.picUrl = urls.join(",")
-          }
-        });
-      }
-      // con
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      const { dateTime } = this.query;
-      let values = {
-        ...params,
-      };
-      if (dateTime) {
-        values = {
-          ...params,
-          startTime: dateTime[0],
-          endTime: dateTime[1],
-          ...this.query,
-        };
-        values.dateTime = null;
-      }
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, values).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.data.forEach(item=>{
-          if(item.picUrl){
-            if(item.picUrl.length>0){
-              var urls = []
-              var names = item.picUrl.split(",");
-              names.forEach(name=>{
-                urls.push(website.minioUrl + name)
-              })
-              item.picUrl = urls.join(",")
+    computed: {
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.district_add, true),
+                viewBtn: this.vaildData(this.permission.district_view, true),
+                delBtn: this.vaildData(this.permission.district_delete, true),
+                editBtn: this.vaildData(this.permission.district_edit, true),
             }
-          }
-        })
-        this.loading = false;
-        this.selectionClear();
-      });
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
+    },
+    methods: {
+        rowSave (row, done, loading) {
+            if (row.picUrl.length > 0) {
+                var urls = []
+                var split = row.picUrl.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.picUrl = urls.join(",")
+            }
+            row.userid = this.userInfo.user_id
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.picUrl.length > 0) {
+                var urls = []
+                var split = row.picUrl.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.picUrl = urls.join(",")
+            }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDistrict(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.picUrl.length > 0) {
+                        var urls = []
+                        var names = this.form.picUrl.split(",")
+                        names.forEach(name => {
+                            urls.push(website.minioUrl + name)
+                        })
+                        this.form.picUrl = urls.join(",")
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.picUrl) {
+                        if (item.picUrl.length > 0) {
+                            var urls = []
+                            var names = item.picUrl.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            item.picUrl = urls.join(",")
+                        }
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  }
-};
+}
 </script>
 
 <style>
 .avue-upload__icon {
-  line-height: 6;
+    line-height: 6;
 }
 </style>
diff --git a/src/views/grid/gridWorkLog/index.vue b/src/views/grid/gridWorkLog/index.vue
index 67071df..703165d 100644
--- a/src/views/grid/gridWorkLog/index.vue
+++ b/src/views/grid/gridWorkLog/index.vue
@@ -1,333 +1,313 @@
-<!-- 工作日志 -->
+<!-- 走访日志 -->
 <template>
-  <basic-container>
-    <avue-crud
-      :option="option"
-      :table-loading="loading"
-      :data="data"
-      :page.sync="page"
-      ref="crud"
-      @row-del="rowDel"
-      v-model="form"
-      :permission="permissionList"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      :before-open="beforeOpen"
-      @search-change="searchChange"
-      @search-reset="searchReset"
-      @selection-change="selectionChange"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
-      @on-load="onLoad"
-    >
-      <template slot="menuLeft">
-        <el-button
-          size="small"
-          icon="el-icon-delete"
-          plain
-          v-if="permission.gridWorkLog_delete"
-          @click="handleDelete"
-        >删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.gridWorkLog_delete"
+                    @click="handleDelete">删 除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getList, remove, update, add, getGridWorkLog} from "@/api/grid/gridWorkLog";
-  import {mapGetters} from "vuex";
-  import website from '@/config/website';
+import { getList, remove, update, add, getGridWorkLog } from "@/api/grid/gridWorkLog"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
 
-  export default {
-    data() {
-      return {
-        form: {},
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0,
-        },
-        datetime: "",
-        selectionList: [],
-        option: {
-          height: "auto",
-          calcHeight: 54,
-          dialogWidth: 950,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 3,
-          menuWidth: 350,
-          border: false,
-          //stripe:true,
-          index: true,
-          viewBtn: true,
-          selection: true,
-          excelBtn: true,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "走访人员姓名",
-              prop: "name",
-              span: 12,
-              labelWidth:120,
-              searchLabelWidth:120,
-              searchSpan: 5,
-              search:true,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入走访人员姓名",
-                  trigger: "blur",
-                },
-              ],
+export default {
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            {
-              label: "走访人员电话",
-              prop: "phone",
-              span: 12,
-              labelWidth:120,
-              searchLabelWidth:120,
-              searchSpan: 5,
-              search:true,
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 350,
+                border: false,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                excelBtn: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "走访人员姓名",
+                        prop: "name",
+                        span: 12,
+                        labelWidth: 120,
+                        searchLabelWidth: 120,
+                        searchSpan: 5,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入走访人员姓名",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "走访人员电话",
+                        prop: "phone",
+                        span: 12,
+                        labelWidth: 120,
+                        searchLabelWidth: 120,
+                        searchSpan: 5,
+                        search: true,
+                    },
+                    {
+                        label: "内容",
+                        labelWidth: 120,
+                        prop: "context",
+                        type: "textarea",
+                        span: 24,
+                    },
+                    {
+                        label: "图片",
+                        prop: "url",
+                        type: "upload",
+                        labelWidth: 120,
+                        width: 80,
+                        listType: "picture-img",
+                        action: "/api/blade-resource/oss/endpoint/put-file",
+                        propsHttp: {
+                            res: "data",
+                            name: 'name',
+                            url: "link",
+                        },
+                        span: 24,
+                    },
+                    {
+                        label: "走访时间",
+                        prop: "workTime",
+                        width: 160,
+                        type: "date",
+                        format: "yyyy-MM-dd HH:mm:ss",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入走访时间",
+                                trigger: "blur",
+                            },
+                        ],
+                    }
+                ],
             },
-            {
-              label: "内容",
-              labelWidth:120,
-              prop: "context",
-              type: "textarea",
-              span: 24,
-            },
-            {
-              label: "图片",
-              prop: "url",
-              type: "upload",
-              labelWidth:120,
-              width:80,
-              listType: "picture-img",
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              propsHttp: {
-                res: "data",
-                name: 'name',
-                url: "link",
-              },
-              span: 24,
-            },
-            {
-              label: "走访时间",
-              prop: "workTime",
-              width:160,
-              type: "date",
-              format: "yyyy-MM-dd HH:mm:ss",
-              valueFormat: "yyyy-MM-dd HH:mm:ss",
-              rules: [
-                {
-                  required: true,
-                  message: "请输入走访时间",
-                  trigger: "blur",
-                },
-              ],
-            }
-          ],
-        },
-        data: [],
-      };
+            data: [],
+        }
     },
     watch: {
     },
     computed: {
-      ...mapGetters(["permission","userInfo"]),
-      permissionList() {
-        return {
-          addBtn: this.vaildData(this.permission.gridWorkLog_add, true),
-          viewBtn: this.vaildData(this.permission.gridWorkLog_view, true),
-          delBtn: this.vaildData(this.permission.gridWorkLog_delete, true),
-          editBtn: this.vaildData(this.permission.gridWorkLog_edit, true),
-        };
-      },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach((ele) => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.gridWorkLog_add, true),
+                viewBtn: this.vaildData(this.permission.gridWorkLog_view, true),
+                delBtn: this.vaildData(this.permission.gridWorkLog_delete, true),
+                editBtn: this.vaildData(this.permission.gridWorkLog_edit, true),
+            }
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      rowSave(row, done, loading) {
-        if(row.url.length>0){
-          var urls = []
-          var split = row.url.split(",");
-          split.forEach(url=>{
-             var names = url.split("jczz/");
-             urls.push(names[1])
-          })
-          row.url = urls.join(",")
-        }
-        add(row).then(
-          () => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            done();
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
-      rowUpdate(row, index, done, loading) {
-        if(row.url.length>0){
-          var urls = []
-          var split = row.url.split(",");
-          split.forEach(url=>{
-             var names = url.split("jczz/");
-             urls.push(names[1])
-          })
-          row.url = urls.join(",")
-        }
-        update(row).then(
-          () => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            done();
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
-      rowDel(row) {
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-          .then(() => {
-            return remove(row.id);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-          });
-      },
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDelete() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
-        }
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-          .then(() => {
-            return remove(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            this.$refs.crud.toggleSelection();
-          });
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getGridWorkLog(this.form.id).then((res) => {
-            this.form = res.data.data;
-            if(this.form.url.length>0){
-              var urls = []
-              var names = this.form.url.split(",");
-              names.forEach(name=>{
-                urls.push(website.minioUrl + name)
-              })
-              this.form.url = urls.join(",")
+        rowSave (row, done, loading) {
+            if (row.url.length > 0) {
+                var urls = []
+                var split = row.url.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.url = urls.join(",")
             }
-          });
-        }
-        // con
-        done();
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const {dateTime} = this.query;
-        let values = {
-          ...params,
-        };
-        if (dateTime) {
-          values = {
-            ...params,
-            startTime: dateTime[0],
-            endTime: dateTime[1],
-            ...this.query,
-          };
-          values.dateTime = null;
-        }
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, values).then((res) => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.data.forEach(item=>{
-            if(item.url.length>0){
-              var urls = []
-              var names = item.url.split(",");
-              names.forEach(name=>{
-                urls.push(website.minioUrl + name)
-              })
-              item.url = urls.join(",")
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.url.length > 0) {
+                var urls = []
+                var split = row.url.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.url = urls.join(",")
             }
-          })
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getGridWorkLog(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.url.length > 0) {
+                        var urls = []
+                        var names = this.form.url.split(",")
+                        names.forEach(name => {
+                            urls.push(website.minioUrl + name)
+                        })
+                        this.form.url = urls.join(",")
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.url.length > 0) {
+                        var urls = []
+                        var names = item.url.split(",")
+                        names.forEach(name => {
+                            urls.push(website.minioUrl + name)
+                        })
+                        item.url = urls.join(",")
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     },
-  };
+}
 </script>
 
 <style>
-  .avue-upload__icon {
+.avue-upload__icon {
     line-height: 6;
-  }
+}
 </style>
diff --git a/src/views/grid/gridman.vue b/src/views/grid/gridman.vue
index d9cc943..c8693e8 100644
--- a/src/views/grid/gridman.vue
+++ b/src/views/grid/gridman.vue
@@ -1,314 +1,317 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.gridman_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.gridman_delete" @click="handleDelete">删
+                    除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getGridman } from "@/api/grid/gridman";
-import { mapGetters } from "vuex";
-import website from '@/config/website';
+import { getList, remove, update, add, getGridman } from "@/api/grid/gridman"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
 export default {
-  data() {
-    return {
-      form: {},
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      datetime: "",
-      selectionList: [],
-      option: {
-        height: "auto",
-        calcHeight: 54,
-        dialogWidth: 950,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 3,
-        menuWidth: 350,
-        border: true,
-        //stripe:true,
-        index: true,
-        viewBtn: true,
-        selection: true,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "网格名称",
-            prop: "gridId",
-            searchSpan: 4,
-            search: true,
-            span: 13,
-            row: true,
-            type: "tree",
-            dicUrl: "/api/blade-grid/grid/getGridTree",
-            defaultExpandedKeys: ["361102003"],
-            props: {
-              label: "name",
-              value: "id"
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            rules: [
-              {
-                required: true,
-                message: "请输入网格名称",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "所属社区",
-            prop: "communityCode",
-            type: "tree",
-            dicUrl: "/api/blade-system/region/tree?parentCode=361102",
-            defaultExpandedKeys: ["361102003"],
-            props: {
-              label: "name",
-              value: "id"
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 350,
+                border: true,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "网格名称",
+                        prop: "gridId",
+                        searchSpan: 4,
+                        search: true,
+                        span: 13,
+                        row: true,
+                        type: "tree",
+                        dicUrl: "/api/blade-grid/grid/getGridTree",
+                        defaultExpandedKeys: ["361102003"],
+                        props: {
+                            label: "name",
+                            value: "id"
+                        },
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入网格名称",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "所属社区",
+                        prop: "communityCode",
+                        search: true,
+                        searchSpan: 4,
+                        width: 150,
+                        type: "tree",
+                        dicUrl: "/api/blade-system/region/tree",
+                        props: {
+                            label: "name",
+                            value: "id"
+                        },
+                        rules: [
+                            {
+                                required: true,
+                                message: "请选择所属社区",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "网格员",
+                        prop: "gridmanName",
+                        searchSpan: 4,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入网格员",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "联系电话",
+                        prop: "mobile",
+                        searchSpan: 4,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入联系电话",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "形象照",
+                        prop: "picUrl",
+                        width: 80,
+                        type: "upload",
+                        listType: "picture-img",
+                        action: "/api/blade-resource/oss/endpoint/put-file-attach",
+                        propsHttp: {
+                            res: "data",
+                            url: "link",
+                        },
+                        span: 24,
+                    },
+                    {
+                        label: "备注",
+                        prop: "remark",
+                        type: "textarea",
+                        hide: true,
+                        minRows: 6,
+                        span: 24,
+                    },
+                ],
             },
-            display: false,
-            rules: [
-              {
-                required: true,
-                message: "请选择所属社区",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "网格员",
-            prop: "gridmanName",
-            searchSpan: 4,
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入网格员",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "联系电话",
-            prop: "mobile",
-            searchSpan: 4,
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入联系电话",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "形象照",
-            prop: "picUrl",
-            width: 80,
-            type: "upload",
-            listType: "picture-img",
-            action: "/api/blade-resource/oss/endpoint/put-file-attach",
-            propsHttp: {
-              res: "data",
-              url: "link",
-            },
-            span: 24,
-          },
-          {
-            label: "备注",
-            prop: "remark",
-            type: "textarea",
-            hide: true,
-            minRows: 6,
-            span: 24,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  watch: {
-  },
-  computed: {
-    ...mapGetters(["permission", "userInfo"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.gridman_add, true),
-        viewBtn: this.vaildData(this.permission.gridman_view, true),
-        delBtn: this.vaildData(this.permission.gridman_delete, true),
-        editBtn: this.vaildData(this.permission.gridman_edit, true),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    rowSave(row, done, loading) {
-      if (row.picUrl) {
-        var names = row.picUrl.split("jczz/");
-        row.picUrl = names[1]
-      }
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
+            data: [],
         }
-      );
     },
-    rowUpdate(row, index, done, loading) {
-      if (row.picUrl) {
-        var names = row.picUrl.split("jczz/");
-        row.picUrl = names[1]
-      }
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
+    watch: {
+    },
+    computed: {
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.gridman_add, true),
+                viewBtn: this.vaildData(this.permission.gridman_view, true),
+                delBtn: this.vaildData(this.permission.gridman_delete, true),
+                editBtn: this.vaildData(this.permission.gridman_edit, true),
+            }
         },
-        (error) => {
-          window.console.log(error);
-          loading();
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
+    },
+    methods: {
+        rowSave (row, done, loading) {
+            if (row.picUrl) {
+                var names = row.picUrl.split("jczz/")
+                row.picUrl = names[1]
+            }
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.picUrl) {
+                var names = row.picUrl.split("jczz/")
+                row.picUrl = names[1]
+            }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getGridman(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.picUrl) {
+                        this.form.picUrl = website.minioUrl + this.form.picUrl
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.picUrl) {
+                        item.picUrl = website.minioUrl + item.picUrl
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
         }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getGridman(this.form.id).then((res) => {
-          this.form = res.data.data;
-          if (this.form.picUrl) {
-            this.form.picUrl = website.minioUrl + this.form.picUrl
-          }
-        });
-      }
-      // con
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      const { dateTime } = this.query;
-      let values = {
-        ...params,
-      };
-      if (dateTime) {
-        values = {
-          ...params,
-          startTime: dateTime[0],
-          endTime: dateTime[1],
-          ...this.query,
-        };
-        values.dateTime = null;
-      }
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, values).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.data.forEach(item=>{
-          if (item.picUrl) {
-            item.picUrl = website.minioUrl + item.picUrl
-          }
-        })
-        this.loading = false;
-        this.selectionClear();
-      });
     }
-  }
-};
+}
 </script>
 
 <style>
 .avue-upload__icon {
-  line-height: 6;
+    line-height: 6;
 }
 </style>
diff --git a/src/views/grid/index.vue b/src/views/grid/index.vue
index a657a18..f42dfbd 100644
--- a/src/views/grid/index.vue
+++ b/src/views/grid/index.vue
@@ -1,313 +1,314 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.grid_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.grid_delete" @click="handleDelete">删 除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getGrid } from "@/api/grid/grid";
-import { mapGetters } from "vuex";
-import website from '@/config/website';
+import { getList, remove, update, add, getGrid } from "@/api/grid/grid"
+import { mapGetters } from "vuex"
+// import website from '@/config/website'
 export default {
-  data() {
-    return {
-      form: {},
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      datetime: "",
-      selectionList: [],
-      option: {
-        height: "auto",
-        calcHeight: 54,
-        dialogWidth: 950,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 3,
-        menuWidth: 350,
-        border: true,
-        //stripe:true,
-        index: true,
-        viewBtn: true,
-        selection: true,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "所属社区",
-            prop: "communityCode",
-            search: true,
-            searchSpan: 4,
-            type: "tree",
-            dicUrl: "/api/blade-system/region/tree",
-            defaultExpandedKeys: ["361102003"],
-            props: {
-              label: "name",
-              value: "id"
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            rules: [
-              {
-                required: true,
-                message: "请选择所属社区",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "网格名称",
-            prop: "gridName",
-            searchSpan: 4,
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入网格名称",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "负责人",
-            prop: "principal",
-            searchSpan: 4,
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入负责人",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "联系电话",
-            prop: "principalPhone",
-            searchSpan: 4,
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入联系电话",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "区域",
-            prop: "geom",
-            type:"textarea",
-            hide:true,
-            span: 24,
-            display:false,
-            rules: [
-              {
-                required: true,
-                message: "请输入区域",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "排序",
-            prop: "sort",
-            type:"number",
-            hide:true,
-            value:1,
-            rules: [
-              {
-                required: true,
-                message: "请输入排序",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "网格简介",
-            prop: "remark",
-            component: "AvueUeditor",
-            options: {
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              props: {
-                res: "data",
-                url: "link",
-              },
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 280,
+                border: true,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "所属社区",
+                        prop: "communityCode",
+                        search: true,
+                        searchSpan: 4,
+                        width: 150,
+                        type: "tree",
+                        dicUrl: "/api/blade-system/region/tree",
+                        props: {
+                            label: "name",
+                            value: "id"
+                        },
+                        rules: [
+                            {
+                                required: true,
+                                message: "请选择所属社区",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "网格名称",
+                        prop: "gridName",
+                        searchSpan: 4,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入网格名称",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "负责人",
+                        prop: "principal",
+                        searchSpan: 4,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入负责人",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "联系电话",
+                        prop: "principalPhone",
+                        searchSpan: 4,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入联系电话",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "区域",
+                        prop: "geom",
+                        type: "textarea",
+                        hide: true,
+                        span: 24,
+                        display: false,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入区域",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "排序",
+                        prop: "sort",
+                        type: "number",
+                        hide: true,
+                        value: 1,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入排序",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "网格简介",
+                        prop: "remark",
+                        component: "AvueUeditor",
+                        options: {
+                            action: "/api/blade-resource/oss/endpoint/put-file",
+                            props: {
+                                res: "data",
+                                url: "link",
+                            },
+                        },
+                        hide: true,
+                        minRows: 6,
+                        span: 24,
+                    },
+                ],
             },
-            hide: true,
-            minRows: 6,
-            span: 24,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  watch: {
-  },
-  computed: {
-    ...mapGetters(["permission", "userInfo"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.grid_add, true),
-        viewBtn: this.vaildData(this.permission.grid_view, true),
-        delBtn: this.vaildData(this.permission.grid_delete, true),
-        editBtn: this.vaildData(this.permission.grid_edit, true),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
+            data: [],
         }
-      );
     },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
+    watch: {
+    },
+    computed: {
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.grid_add, true),
+                viewBtn: this.vaildData(this.permission.grid_view, true),
+                delBtn: this.vaildData(this.permission.grid_delete, true),
+                editBtn: this.vaildData(this.permission.grid_edit, true),
+            }
         },
-        (error) => {
-          window.console.log(error);
-          loading();
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
+    },
+    methods: {
+        rowSave (row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getGrid(this.form.id).then((res) => {
+                    this.form = res.data.data
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
         }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getGrid(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      // con
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      const { dateTime } = this.query;
-      let values = {
-        ...params,
-      };
-      if (dateTime) {
-        values = {
-          ...params,
-          startTime: dateTime[0],
-          endTime: dateTime[1],
-          ...this.query,
-        };
-        values.dateTime = null;
-      }
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, values).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
     }
-  }
-};
+}
 </script>
 
 <style>
 .avue-upload__icon {
-  line-height: 6;
+    line-height: 6;
 }
 </style>
diff --git a/src/views/monitor/log/api.vue b/src/views/monitor/log/api.vue
index bef4765..99852c4 100644
--- a/src/views/monitor/log/api.vue
+++ b/src/views/monitor/log/api.vue
@@ -1,161 +1,150 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :permission="permissionList"
-               :before-open="beforeOpen"
-               :page.sync="page"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+            :permission="permissionList" :before-open="beforeOpen" :page.sync="page" @search-change="searchChange"
+            @search-reset="searchReset" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getApiList, getApiLogs} from "@/api/logs";
-  import {mapGetters} from "vuex";
+import { getApiList, getApiLogs } from "@/api/logs"
+import { mapGetters } from "vuex"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: true,
-          editBtn: false,
-          addBtn: false,
-          delBtn: false,
-          menuWidth: 120,
-          dialogType: 'drawer',
-          column: [
-            {
-              label: "服务id",
-              prop: "serviceId",
-              width:'120',
-              search: true
+export default {
+    data () {
+        return {
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: "服务host",
-              prop: "serverHost",
-              search: true
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                editBtn: false,
+                addBtn: false,
+                delBtn: false,
+                menuWidth: 280,
+                dialogType: 'drawer',
+                column: [
+                    {
+                        label: "服务id",
+                        prop: "serviceId",
+                        width: '120',
+                        search: true
+                    },
+                    {
+                        label: "服务host",
+                        prop: "serverHost",
+                        search: true
+                    },
+                    {
+                        label: "服务ip",
+                        prop: "serverIp",
+                        width: '160'
+                    },
+                    {
+                        label: "软件环境",
+                        prop: "env",
+                        width: '80',
+                    },
+                    {
+                        label: "日志名",
+                        prop: "title"
+                    },
+                    {
+                        label: "请求方法",
+                        prop: "method",
+                        width: '80'
+                    },
+                    {
+                        label: "请求接口",
+                        prop: "requestUri"
+                    },
+                    {
+                        label: "日志时间",
+                        prop: "createTime",
+                        width: '180'
+                    },
+                    {
+                        label: "用户代理",
+                        prop: "userAgent",
+                        span: 24,
+                        hide: true
+                    },
+                    {
+                        label: "请求数据",
+                        prop: "params",
+                        type: "textarea",
+                        span: 24,
+                        minRows: 2,
+                        hide: true
+                    }
+                ]
             },
-            {
-              label: "服务ip",
-              prop: "serverIp",
-              width:'160'
-            },
-            {
-              label: "软件环境",
-              prop: "env",
-              width:'80',
-            },
-            {
-              label: "日志名",
-              prop: "title"
-            },
-            {
-              label: "请求方法",
-              prop: "method",
-              width:'80'
-            },
-            {
-              label: "请求接口",
-              prop: "requestUri"
-            },
-            {
-              label: "日志时间",
-              prop: "createTime",
-              width:'180'
-            },
-            {
-              label: "用户代理",
-              prop: "userAgent",
-              span: 24,
-              hide: true
-            },
-            {
-              label: "请求数据",
-              prop: "params",
-              type: "textarea",
-              span: 24,
-              minRows: 2,
-              hide: true
-            }
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
 
     computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          viewBtn: this.vaildData(this.permission.log_api_view, false)
-        };
-      }
+        ...mapGetters(["permission"]),
+        permissionList () {
+            return {
+                viewBtn: this.vaildData(this.permission.log_api_view, false)
+            }
+        }
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getApiLogs(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getApiLogs(this.form.id).then(res => {
+                    this.form = res.data.data
+                })
+            }
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            this.loading = true
+            getApiList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+            })
         }
-        done();
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        this.loading = true;
-        getApiList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-        });
-      }
     }
-  };
+}
 </script>
 
-<style>
-</style>
+<style></style>
diff --git a/src/views/monitor/log/error.vue b/src/views/monitor/log/error.vue
index 3196839..2f9fea9 100644
--- a/src/views/monitor/log/error.vue
+++ b/src/views/monitor/log/error.vue
@@ -1,165 +1,154 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               :before-open="beforeOpen"
-               v-model="form"
-               :permission="permissionList"
-               :page.sync="page"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" :before-open="beforeOpen"
+            v-model="form" :permission="permissionList" :page.sync="page" @search-change="searchChange"
+            @search-reset="searchReset" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getErrorList, getErrorLogs} from "@/api/logs";
-  import {mapGetters} from "vuex";
+import { getErrorList, getErrorLogs } from "@/api/logs"
+import { mapGetters } from "vuex"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: true,
-          editBtn: false,
-          addBtn: false,
-          delBtn: false,
-          menuWidth: 120,
-          dialogType: 'drawer',
-          column: [
-            {
-              label: "服务id",
-              prop: "serviceId",
-              search: true,
-              width:'120'
+export default {
+    data () {
+        return {
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: "服务host",
-              prop: "serverHost",
-              search: true,
-              width:'150'
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                editBtn: false,
+                addBtn: false,
+                delBtn: false,
+                menuWidth: 280,
+                dialogType: 'drawer',
+                column: [
+                    {
+                        label: "服务id",
+                        prop: "serviceId",
+                        search: true,
+                        width: '120'
+                    },
+                    {
+                        label: "服务host",
+                        prop: "serverHost",
+                        search: true,
+                        width: '150'
+                    },
+                    {
+                        label: "服务ip",
+                        prop: "serverIp",
+                        width: '160'
+                    },
+                    {
+                        label: "软件环境",
+                        prop: "env",
+                        width: '80'
+                    },
+                    {
+                        label: "请求方法",
+                        prop: "method",
+                        width: '80'
+                    },
+                    {
+                        label: "请求接口",
+                        prop: "requestUri"
+                    },
+                    {
+                        label: "日志时间",
+                        prop: "createTime",
+                        width: '180'
+                    },
+                    {
+                        label: "用户代理",
+                        prop: "userAgent",
+                        span: 24,
+                        hide: true
+                    },
+                    {
+                        label: "请求数据",
+                        prop: "params",
+                        type: "textarea",
+                        span: 24,
+                        minRows: 2,
+                        hide: true
+                    },
+                    {
+                        label: "日志数据",
+                        prop: "stackTrace",
+                        type: "textarea",
+                        span: 24,
+                        minRows: 16,
+                        hide: true
+                    }
+                ]
             },
-            {
-              label: "服务ip",
-              prop: "serverIp",
-              width:'160'
-            },
-            {
-              label: "软件环境",
-              prop: "env",
-              width:'80'
-            },
-            {
-              label: "请求方法",
-              prop: "method",
-              width:'80'
-            },
-            {
-              label: "请求接口",
-              prop: "requestUri"
-            },
-            {
-              label: "日志时间",
-              prop: "createTime",
-              width:'180'
-            },
-            {
-              label: "用户代理",
-              prop: "userAgent",
-              span: 24,
-              hide: true
-            },
-            {
-              label: "请求数据",
-              prop: "params",
-              type: "textarea",
-              span: 24,
-              minRows: 2,
-              hide: true
-            },
-            {
-              label: "日志数据",
-              prop: "stackTrace",
-              type: "textarea",
-              span: 24,
-              minRows: 16,
-              hide: true
-            }
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          viewBtn: this.vaildData(this.permission.log_error_view, false)
-        };
-      }
+        ...mapGetters(["permission"]),
+        permissionList () {
+            return {
+                viewBtn: this.vaildData(this.permission.log_error_view, false)
+            }
+        }
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getErrorLogs(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getErrorLogs(this.form.id).then(res => {
+                    this.form = res.data.data
+                })
+            }
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            this.loading = true
+            getErrorList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+            })
         }
-        done();
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        this.loading = true;
-        getErrorList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-        });
-      }
     }
-  };
+}
 </script>
 
-<style>
-</style>
+<style></style>
diff --git a/src/views/monitor/log/usual.vue b/src/views/monitor/log/usual.vue
index 329f77b..14678ee 100644
--- a/src/views/monitor/log/usual.vue
+++ b/src/views/monitor/log/usual.vue
@@ -1,165 +1,154 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :permission="permissionList"
-               :page.sync="page"
-               :before-open="beforeOpen"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+            :permission="permissionList" :page.sync="page" :before-open="beforeOpen" @search-change="searchChange"
+            @search-reset="searchReset" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getUsualList, getUsualLogs} from "@/api/logs";
-  import {mapGetters} from "vuex";
+import { getUsualList, getUsualLogs } from "@/api/logs"
+import { mapGetters } from "vuex"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: true,
-          editBtn: false,
-          addBtn: false,
-          delBtn: false,
-          menuWidth: 120,
-          dialogType: 'drawer',
-          column: [
-            {
-              label: "服务id",
-              prop: "serviceId",
-              search: true
+export default {
+    data () {
+        return {
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: "服务host",
-              prop: "serverHost",
-              search: true
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                editBtn: false,
+                addBtn: false,
+                delBtn: false,
+                menuWidth: 280,
+                dialogType: 'drawer',
+                column: [
+                    {
+                        label: "服务id",
+                        prop: "serviceId",
+                        search: true
+                    },
+                    {
+                        label: "服务host",
+                        prop: "serverHost",
+                        search: true
+                    },
+                    {
+                        label: "服务ip",
+                        prop: "serverIp"
+                    },
+                    {
+                        label: "软件环境",
+                        prop: "env",
+                        width: '80'
+                    },
+                    {
+                        label: "日志级别",
+                        prop: "logLevel"
+                    },
+                    {
+                        label: "日志id",
+                        prop: "logId"
+                    },
+                    {
+                        label: "请求接口",
+                        prop: "requestUri"
+                    },
+                    {
+                        label: "日志时间",
+                        prop: "createTime",
+                        width: '180'
+                    },
+                    {
+                        label: "用户代理",
+                        prop: "userAgent",
+                        span: 24,
+                        hide: true
+                    },
+                    {
+                        label: "日志数据",
+                        prop: "logData",
+                        type: "textarea",
+                        span: 24,
+                        minRows: 2,
+                        hide: true
+                    },
+                    {
+                        label: "请求数据",
+                        prop: "params",
+                        type: "textarea",
+                        span: 24,
+                        minRows: 2,
+                        hide: true
+                    }
+                ]
             },
-            {
-              label: "服务ip",
-              prop: "serverIp"
-            },
-            {
-              label: "软件环境",
-              prop: "env",
-              width:'80'
-            },
-            {
-              label: "日志级别",
-              prop: "logLevel"
-            },
-            {
-              label: "日志id",
-              prop: "logId"
-            },
-            {
-              label: "请求接口",
-              prop: "requestUri"
-            },
-            {
-              label: "日志时间",
-              prop: "createTime",
-              width:'180'
-            },
-            {
-              label: "用户代理",
-              prop: "userAgent",
-              span: 24,
-              hide: true
-            },
-            {
-              label: "日志数据",
-              prop: "logData",
-              type: "textarea",
-              span: 24,
-              minRows: 2,
-              hide: true
-            },
-            {
-              label: "请求数据",
-              prop: "params",
-              type: "textarea",
-              span: 24,
-              minRows: 2,
-              hide: true
-            }
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          viewBtn: this.vaildData(this.permission.log_usual_view, false)
-        };
-      }
+        ...mapGetters(["permission"]),
+        permissionList () {
+            return {
+                viewBtn: this.vaildData(this.permission.log_usual_view, false)
+            }
+        }
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getUsualLogs(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getUsualLogs(this.form.id).then(res => {
+                    this.form = res.data.data
+                })
+            }
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            this.loading = true
+            getUsualList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+            })
         }
-        done();
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        this.loading = true;
-        getUsualList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-        });
-      }
     }
-  };
+}
 </script>
 
-<style>
-</style>
+<style></style>
diff --git a/src/views/place/index.vue b/src/views/place/index.vue
index 982c98b..361b8a7 100644
--- a/src/views/place/index.vue
+++ b/src/views/place/index.vue
@@ -1,40 +1,42 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete" @click="handleDelete">删 除
+                </el-button>
+            </template>
 
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text" icon="el-icon-circle-plus-outline" size="small" v-if="permission.househould_manager"
-          @click="ManageTenants(scope.row)">场所维护
-        </el-button>
-      </template>
-    </avue-crud>
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" icon="el-icon-circle-plus-outline" size="small" v-if="permission.househould_manager"
+                    @click="ManageTenants(scope.row)">场所维护
+                </el-button>
+            </template>
+        </avue-crud>
 
-    <el-dialog title="场所维护" append-to-body :visible.sync="roleBox" center>
-      <avue-crud :option="placeOption" :search.sync="search" :table-loading="loading" :data="placeExt" ref="crud"
-        v-model="houseHoldForm" :permission="permissionList" @row-del="houseHoldRowDel" @row-update="houseHoldRowUpdate"
-        @row-save="houseHoldRowSave" :page.sync="holdPage" @current-change="currentChange" @size-change="sizeChange">
-      </avue-crud>
+        <el-dialog title="场所维护" append-to-body :visible.sync="roleBox" center>
+            <avue-crud :option="placeOption" :search.sync="search" :table-loading="loading" :data="placeExt" ref="crud"
+                v-model="houseHoldForm" :permission="permissionList" @row-del="houseHoldRowDel"
+                @row-update="houseHoldRowUpdate" @row-save="houseHoldRowSave" :page.sync="holdPage"
+                @current-change="currentChange" @size-change="sizeChange">
+            </avue-crud>
 
-      <avue-form :option="optionDetail" v-model="placeForm"></avue-form>
+            <avue-form :option="optionDetail" v-model="placeForm"></avue-form>
 
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="roleBox = false">取 消</el-button>
-        <el-button type="primary" @click="submitRole">确 定</el-button>
-      </span>
-    </el-dialog>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="roleBox = false">取 消</el-button>
+                <el-button type="primary" @click="submitRole">确 定</el-button>
+            </span>
+        </el-dialog>
 
-  </basic-container>
+    </basic-container>
 </template>
 
 <script>
-  import {
+import {
     getList,
     remove,
     update,
@@ -42,457 +44,457 @@
     getPlace,
     getPlaceExt,
     updatePlaceExt
-  } from "@/api/place/place";
-  import {
+} from "@/api/place/place"
+import {
     mapGetters
-  } from "vuex";
-  import website from '@/config/website';
-  export default {
-    data() {
-      return {
-        form: {},
-        query: {},
-        loading: true,
-        roleBox: false,
-        placeForm: {},
-        optionDetail: {
-          submitBtn: false,
-          emptyBtn: false,
-          column: [{
-              label: '场所名称',
-              prop: 'placeName',
+} from "vuex"
+import website from '@/config/website'
+export default {
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            roleBox: false,
+            placeForm: {},
+            optionDetail: {
+                submitBtn: false,
+                emptyBtn: false,
+                column: [{
+                    label: '场所名称',
+                    prop: 'placeName',
+                },
+                {
+                    label: '法人信息',
+                    prop: 'legalPerson'
+                },
+                {
+                    label: '法人电话',
+                    prop: 'legalTel'
+                },
+                {
+                    label: '场所位置',
+                    prop: 'localtion'
+                }, {
+                    label: '审核状态',
+                    prop: 'confirmFlag',
+                    type: 'radio',
+                    dicData: [{
+                        label: '待审核',
+                        value: 0
+                    }, {
+                        label: '审核通过',
+                        value: 1
+                    }, {
+                        label: '审核不通过',
+                        value: 2
+                    }]
+                }
+                ]
             },
-            {
-              label: '法人信息',
-              prop: 'legalPerson'
+            rowPlace: {},
+            placeExt: [],
+            placeOption: {
+                menu: false,
+                height: 300,
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: false,
+                addBtn: false,
+                delBtn: false,
+                editBtn: false,
+                border: true,
+                index: true,
+                dialogClickModal: false,
+                column: [{
+                    label: "名称",
+                    prop: "name",
+                    searchSpan: 4,
+                    search: true,
+                }, {
+                    label: "电话",
+                    prop: "telephone",
+                    searchSpan: 4,
+                    search: true,
+                }, {
+                    label: "暂住地",
+                    prop: "tempAddress",
+                    searchSpan: 4,
+                    search: true,
+                },]
             },
-            {
-              label: '法人电话',
-              prop: 'legalTel'
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            {
-              label: '场所位置',
-              prop: 'localtion'
-            }, {
-              label: '审核状态',
-              prop: 'confirmFlag',
-              type: 'radio',
-              dicData: [{
-                label: '待审核',
-                value: 0
-              }, {
-                label: '审核通过',
-                value: 1
-              }, {
-                label: '审核不通过',
-                value: 2
-              }]
-            }
-          ]
-        },
-        rowPlace: {},
-        placeExt: [],
-        placeOption: {
-          menu: false,
-          height: 300,
-          calcHeight: 54,
-          dialogWidth: 950,
-          tip: false,
-          searchShow: false,
-          addBtn: false,
-          delBtn: false,
-          editBtn: false,
-          border: true,
-          index: true,
-          dialogClickModal: false,
-          column: [{
-            label: "名称",
-            prop: "name",
-            searchSpan: 4,
-            search: true,
-          }, {
-            label: "电话",
-            prop: "telephone",
-            searchSpan: 4,
-            search: true,
-          }, {
-            label: "暂住地",
-            prop: "tempAddress",
-            searchSpan: 4,
-            search: true,
-          }, ]
-        },
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0,
-        },
-        datetime: "",
-        selectionList: [],
-        option: {
-          height: "auto",
-          calcHeight: 54,
-          dialogWidth: 950,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 3,
-          menuWidth: 350,
-          border: true,
-          //stripe:true,
-          index: true,
-          viewBtn: true,
-          selection: true,
-          dialogClickModal: false,
-          column: [{
-              label: "场所名称",
-              prop: "placeName",
-              searchSpan: 4,
-              search: true,
-              rules: [{
-                required: true,
-                message: "请输入场所名称",
-                trigger: "blur",
-              }, ],
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 280,
+                border: true,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                column: [{
+                    label: "场所名称",
+                    prop: "placeName",
+                    searchSpan: 4,
+                    search: true,
+                    rules: [{
+                        required: true,
+                        message: "请输入场所名称",
+                        trigger: "blur",
+                    },],
+                },
+                {
+                    label: "场所标签",
+                    prop: "label",
+                    type: "tree",
+                    dicUrl: "/api/blade-categoryLabel/categoryLabel/getAllList",
+                    props: {
+                        label: "categoryName",
+                        value: "categoryNo"
+                    },
+                    multiple: true,
+                    dataType: "string",
+                    hide: true,
+                    rules: [{
+                        required: true,
+                        message: "请输入场所标签",
+                        trigger: "blur",
+                    },],
+                },
+                {
+                    label: "负责人",
+                    prop: "principal",
+                    searchSpan: 4,
+                    search: true,
+                    rules: [{
+                        required: false,
+                        message: "请输入负责人",
+                        trigger: "blur",
+                    },],
+                },
+                {
+                    label: "联系电话",
+                    prop: "principalPhone",
+                    searchSpan: 4,
+                    search: true,
+                    rules: [{
+                        required: false,
+                        message: "请输入联系电话",
+                        trigger: "blur",
+                    },],
+                }, {
+                    label: "审核状态",
+                    prop: "confirmFlag",
+                    searchSpan: 4,
+                    search: true,
+                    dicData: [{
+                        label: '待审核',
+                        value: 0,
+                    }, {
+                        label: '审核通过',
+                        value: 1,
+                    }, {
+                        label: '审核不通过',
+                        value: 2,
+                    }],
+                },
+                {
+                    label: "场所照片",
+                    prop: "imageUrls",
+                    width: 80,
+                    type: "upload",
+                    listType: "picture-card",
+                    dataType: "string",
+                    multiple: true,
+                    action: "/api/blade-resource/oss/endpoint/put-file",
+                    propsHttp: {
+                        res: "data",
+                        name: 'name',
+                        url: "link",
+                    },
+                    span: 24,
+                },
+                {
+                    label: "位置",
+                    prop: "localtion",
+                    span: 24,
+                    minWidth: 220,
+                    overHidden: true,
+                    rules: [{
+                        required: true,
+                        message: "请输入区域",
+                        trigger: "blur",
+                    },],
+                }
+                ],
             },
-            {
-              label: "场所标签",
-              prop: "label",
-              type: "tree",
-              dicUrl: "/api/blade-categoryLabel/categoryLabel/getAllList",
-              props: {
-                label: "categoryName",
-                value: "categoryNo"
-              },
-              multiple: true,
-              dataType: "string",
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入场所标签",
-                trigger: "blur",
-              }, ],
-            },
-            {
-              label: "负责人",
-              prop: "principal",
-              searchSpan: 4,
-              search: true,
-              rules: [{
-                required: false,
-                message: "请输入负责人",
-                trigger: "blur",
-              }, ],
-            },
-            {
-              label: "联系电话",
-              prop: "principalPhone",
-              searchSpan: 4,
-              search: true,
-              rules: [{
-                required: false,
-                message: "请输入联系电话",
-                trigger: "blur",
-              }, ],
-            }, {
-              label: "审核状态",
-              prop: "confirmFlag",
-              searchSpan: 4,
-              search: true,
-              dicData: [{
-                label: '待审核',
-                value: 0,
-              }, {
-                label: '审核通过',
-                value: 1,
-              }, {
-                label: '审核不通过',
-                value: 2,
-              }],
-            },
-            {
-              label: "场所照片",
-              prop: "imageUrls",
-              width: 80,
-              type: "upload",
-              listType: "picture-card",
-              dataType: "string",
-              multiple: true,
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              propsHttp: {
-                res: "data",
-                name: 'name',
-                url: "link",
-              },
-              span: 24,
-            },
-            {
-              label: "位置",
-              prop: "localtion",
-              span: 24,
-              minWidth: 220,
-              overHidden: true,
-              rules: [{
-                required: true,
-                message: "请输入区域",
-                trigger: "blur",
-              }, ],
-            }
-          ],
-        },
-        data: [],
-      };
+            data: [],
+        }
     },
     watch: {},
     computed: {
-      ...mapGetters(["permission", "userInfo"]),
-      permissionList() {
-        return {
-          addBtn: this.vaildData(this.permission.place_add, true),
-          viewBtn: this.vaildData(this.permission.place_view, true),
-          delBtn: this.vaildData(this.permission.place_delete, true),
-          editBtn: this.vaildData(this.permission.place_edit, true),
-        };
-      },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach((ele) => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.place_add, true),
+                viewBtn: this.vaildData(this.permission.place_view, true),
+                delBtn: this.vaildData(this.permission.place_delete, true),
+                editBtn: this.vaildData(this.permission.place_edit, true),
+            }
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
 
-      ManageTenants(item) {
-        this.roleBox = true
-        this.rowPlace = item
-        this.placeForm = {
-          placeName: '',
-          legalPerson: '',
-          legalTel: '',
-          localtion: '',
-          confirmFlag: '',
-        };
-        this.placeExt = []
-        this.onLoadPlaceExt()
-      },
+        ManageTenants (item) {
+            this.roleBox = true
+            this.rowPlace = item
+            this.placeForm = {
+                placeName: '',
+                legalPerson: '',
+                legalTel: '',
+                localtion: '',
+                confirmFlag: '',
+            }
+            this.placeExt = []
+            this.onLoadPlaceExt()
+        },
 
-      submitRole() {
-        updatePlaceExt(this.placeForm).then(
-          () => {
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            this.roleBox = false
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
+        submitRole () {
+            updatePlaceExt(this.placeForm).then(
+                () => {
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.roleBox = false
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
 
-      onLoadPlaceExt() {
-        let params = {
-          placeId: this.rowPlace.id,
-        }
-        getPlaceExt(Object.assign(params)).then(res => {
-          const data = res.data.data;
-          if (data) {
-            this.placeForm = data;
-            this.placeExt = data.placePractitioner;
-            this.loading = false;
-            this.selectionClear();
-          }
-        });
-      },
+        onLoadPlaceExt () {
+            let params = {
+                placeId: this.rowPlace.id,
+            }
+            getPlaceExt(Object.assign(params)).then(res => {
+                const data = res.data.data
+                if (data) {
+                    this.placeForm = data
+                    this.placeExt = data.placePractitioner
+                    this.loading = false
+                    this.selectionClear()
+                }
+            })
+        },
 
-      rowSave(row, done, loading) {
-        if (row.imageUrls.length > 0) {
-          var urls = []
-          var split = row.imageUrls.split(",");
-          split.forEach(url => {
-            var names = url.split("jczz/");
-            urls.push(names[1])
-          })
-          row.imageUrls = urls.join(",")
-        }
-        add(row).then(
-          () => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            done();
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
-      rowUpdate(row, index, done, loading) {
-        if (row.imageUrls.length > 0) {
-          var urls = []
-          var split = row.imageUrls.split(",");
-          split.forEach(url => {
-            var names = url.split("jczz/");
-            urls.push(names[1])
-          })
-          row.imageUrls = urls.join(",")
-        }
-        update(row).then(
-          () => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            done();
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
-      rowDel(row) {
-        this.$confirm("确定将选择数据删除?", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            return remove(row.id);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-          });
-      },
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDelete() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
-        }
-        this.$confirm("确定将选择数据删除?", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            return remove(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            this.$refs.crud.toggleSelection();
-          });
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getPlace(this.form.id).then((res) => {
-            this.form = res.data.data;
-            if (this.form.imageUrls) {
-              if (this.form.imageUrls.length > 0) {
+        rowSave (row, done, loading) {
+            if (row.imageUrls.length > 0) {
                 var urls = []
-                var names = this.form.imageUrls.split(",");
-                names.forEach(name => {
-                  urls.push(website.minioUrl + name)
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
                 })
-                this.form.imageUrls = urls.join(",")
-              }
+                row.imageUrls = urls.join(",")
             }
-            if (this.form.placePoiLabelVOList) {
-              var arr = []
-              this.form.placePoiLabelVOList.forEach(item => {
-                arr.push(item.poiCode);
-              })
-              this.form.label = arr.join(",")
-            }
-            console.log(this.form, 888888)
-          });
-        }
-        // con
-        done();
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const {
-          dateTime
-        } = this.query;
-        let values = {
-          ...params,
-        };
-        if (dateTime) {
-          values = {
-            ...params,
-            startTime: dateTime[0],
-            endTime: dateTime[1],
-            ...this.query,
-          };
-          values.dateTime = null;
-        }
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, values).then((res) => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.data.forEach(item => {
-            if (item.imageUrls) {
-              if (item.imageUrls.length > 0) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.imageUrls.length > 0) {
                 var urls = []
-                var names = item.imageUrls.split(",");
-                names.forEach(name => {
-                  urls.push(website.minioUrl + name)
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
                 })
-                item.imageUrls = urls.join(",")
-              }
+                row.imageUrls = urls.join(",")
             }
-          })
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getPlace(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.imageUrls) {
+                        if (this.form.imageUrls.length > 0) {
+                            var urls = []
+                            var names = this.form.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            this.form.imageUrls = urls.join(",")
+                        }
+                    }
+                    if (this.form.placePoiLabelVOList) {
+                        var arr = []
+                        this.form.placePoiLabelVOList.forEach(item => {
+                            arr.push(item.poiCode)
+                        })
+                        this.form.label = arr.join(",")
+                    }
+                    console.log(this.form, 888888)
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const {
+                dateTime
+            } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.imageUrls) {
+                        if (item.imageUrls.length > 0) {
+                            var urls = []
+                            var names = item.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            item.imageUrls = urls.join(",")
+                        }
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  };
+}
 </script>
 
 <style>
-  .avue-upload__icon {
+.avue-upload__icon {
     line-height: 6;
-  }
+}
 </style>
diff --git a/src/views/rotation/index.vue b/src/views/rotation/index.vue
index bb0b925..8af2bfd 100644
--- a/src/views/rotation/index.vue
+++ b/src/views/rotation/index.vue
@@ -1,310 +1,289 @@
-<!-- 工作日志 -->
+<!-- 走访日志 -->
 <template>
-  <basic-container>
-    <avue-crud
-      :option="option"
-      :table-loading="loading"
-      :data="data"
-      :page.sync="page"
-      ref="crud"
-      @row-del="rowDel"
-      v-model="form"
-      :permission="permissionList"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      :before-open="beforeOpen"
-      @search-change="searchChange"
-      @search-reset="searchReset"
-      @selection-change="selectionChange"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
-      @on-load="onLoad"
-    >
-      <template slot="menuLeft">
-        <el-button
-
-          size="small"
-          icon="el-icon-delete"
-          plain
-          v-if="permission.article_delete"
-          @click="handleDelete"
-        >删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
+                    除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getList, remove, update, add, getRotation} from "@/api/rotation/rotation";
-  import {mapGetters} from "vuex";
-  import website from '@/config/website';
+import { getList, remove, update, add, getRotation } from "@/api/rotation/rotation"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
 
-  export default {
-    data() {
-      return {
-        form: {},
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0,
-        },
-        datetime: "",
-        selectionList: [],
-        option: {
-          height: "auto",
-          calcHeight: 54,
-          dialogWidth: 950,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 3,
-          menuWidth: 350,
-          border: false,
-          //stripe:true,
-          index: true,
-          viewBtn: true,
-          selection: true,
-          excelBtn: true,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "名称",
-              prop: "name",
-              span: 12,
-              searchSpan: 4,
-              search:true,
+export default {
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            {
-              label: "跳转地址",
-              prop: "junpUrl",
-              span: 12,
-              searchSpan: 4,
-              search:true,
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 350,
+                border: false,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                excelBtn: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "名称",
+                        prop: "name",
+                        span: 12,
+                        searchSpan: 4,
+                        search: true,
+                    },
+                    {
+                        label: "跳转地址",
+                        prop: "junpUrl",
+                        span: 12,
+                        searchSpan: 4,
+                        search: true,
+                    },
+                    {
+                        label: "图片",
+                        prop: "url",
+                        type: "upload",
+                        width: 80,
+                        listType: "picture-img",
+                        action: "/api/blade-resource/oss/endpoint/put-file",
+                        propsHttp: {
+                            res: "data",
+                            name: 'name',
+                            url: "link",
+                        },
+                        span: 24,
+                    },
+                    {
+                        label: "时间",
+                        prop: "createTime",
+                        width: 160,
+                        addDisplay: false,
+                        editDisplay: false,
+                        type: "date",
+                        format: "yyyy-MM-dd HH:mm:ss",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                    }
+                ],
             },
-            {
-              label: "图片",
-              prop: "url",
-              type: "upload",
-              width:80,
-              listType: "picture-img",
-              action: "/api/blade-resource/oss/endpoint/put-file",
-              propsHttp: {
-                res: "data",
-                name: 'name',
-                url: "link",
-              },
-              span: 24,
-            },
-            {
-              label: "时间",
-              prop: "createTime",
-              width:160,
-              addDisplay: false,
-              editDisplay: false,
-              type: "date",
-              format: "yyyy-MM-dd HH:mm:ss",
-              valueFormat: "yyyy-MM-dd HH:mm:ss",
-            }
-          ],
-        },
-        data: [],
-      };
+            data: [],
+        }
     },
     watch: {
     },
     computed: {
-      ...mapGetters(["permission","userInfo"]),
-      permissionList() {
-        return {
-          addBtn: this.vaildData(this.permission.rotation_add, true),
-          viewBtn: this.vaildData(this.permission.rotation_view, true),
-          delBtn: this.vaildData(this.permission.rotation_delete, true),
-          editBtn: this.vaildData(this.permission.rotation_edit, true),
-        };
-      },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach((ele) => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.rotation_add, true),
+                viewBtn: this.vaildData(this.permission.rotation_view, true),
+                delBtn: this.vaildData(this.permission.rotation_delete, true),
+                editBtn: this.vaildData(this.permission.rotation_edit, true),
+            }
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      rowSave(row, done, loading) {
-        if(row.url.length>0){
-          var urls = []
-          var split = row.url.split(",");
-          split.forEach(url=>{
-             var names = url.split("jczz/");
-             urls.push(names[1])
-          })
-          row.url = urls.join(",")
-        }
-        add(row).then(
-          () => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            done();
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
-      rowUpdate(row, index, done, loading) {
-        if(row.url.length>0){
-          var urls = []
-          var split = row.url.split(",");
-          split.forEach(url=>{
-             var names = url.split("jczz/");
-             urls.push(names[1])
-          })
-          row.url = urls.join(",")
-        }
-        update(row).then(
-          () => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            done();
-          },
-          (error) => {
-            window.console.log(error);
-            loading();
-          }
-        );
-      },
-      rowDel(row) {
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-          .then(() => {
-            return remove(row.id);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-          });
-      },
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDelete() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
-        }
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-          .then(() => {
-            return remove(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!",
-            });
-            this.$refs.crud.toggleSelection();
-          });
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getRotation(this.form.id).then((res) => {
-            this.form = res.data.data;
-            if(this.form.url.length>0){
-              var urls = []
-              var names = this.form.url.split(",");
-              names.forEach(name=>{
-                urls.push(website.minioUrl + name)
-              })
-              this.form.url = urls.join(",")
+        rowSave (row, done, loading) {
+            if (row.url.length > 0) {
+                var urls = []
+                var split = row.url.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.url = urls.join(",")
             }
-          });
-        }
-        // con
-        done();
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const {dateTime} = this.query;
-        let values = {
-          ...params,
-        };
-        if (dateTime) {
-          values = {
-            ...params,
-            startTime: dateTime[0],
-            endTime: dateTime[1],
-            ...this.query,
-          };
-          values.dateTime = null;
-        }
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, values).then((res) => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.data.forEach(item=>{
-            if(item.url.length>0){
-              var urls = []
-              var names = item.url.split(",");
-              names.forEach(name=>{
-                urls.push(website.minioUrl + name)
-              })
-              item.url = urls.join(",")
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.url.length > 0) {
+                var urls = []
+                var split = row.url.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.url = urls.join(",")
             }
-          })
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getRotation(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.url.length > 0) {
+                        var urls = []
+                        var names = this.form.url.split(",")
+                        names.forEach(name => {
+                            urls.push(website.minioUrl + name)
+                        })
+                        this.form.url = urls.join(",")
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.url.length > 0) {
+                        var urls = []
+                        var names = item.url.split(",")
+                        names.forEach(name => {
+                            urls.push(website.minioUrl + name)
+                        })
+                        item.url = urls.join(",")
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     },
-  };
+}
 </script>
 
 <style>
-  .avue-upload__icon {
+.avue-upload__icon {
     line-height: 6;
-  }
+}
 </style>
diff --git a/src/views/task/eCall/index.vue b/src/views/task/eCall/index.vue
index f8f9aa3..57344ae 100644
--- a/src/views/task/eCall/index.vue
+++ b/src/views/task/eCall/index.vue
@@ -1,540 +1,540 @@
 <!-- e 呼即办 -->
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
+                    除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getECallEvent } from "@/api/task/eCall";
+import { getList, remove, update, add, getECallEvent } from "@/api/task/eCall"
 import {
-  getList as getHouseList,
-  getDetatil as getHouseDetail
-} from "@/api/doorplateAddress/doorplateAddress.js";
-import { mapGetters } from "vuex";
-import website from '@/config/website';
-import AvueMap from "avue-plugin-map";
+    getList as getHouseList,
+    getDetatil as getHouseDetail
+} from "@/api/doorplateAddress/doorplateAddress.js"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
+// import AvueMap from "avue-plugin-map"
 export default {
-  data() {
-    return {
-      form: {},
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      datetime: "",
-      selectionList: [],
-      option: {
-        height: "auto",
-        calcHeight: 54,
-        dialogWidth: 950,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 3,
-        menuWidth: 220,
-        border: true,
-        //stripe:true,
-        index: true,
-        viewBtn: true,
-        selection: true,
-        // excelBtn: true,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "事件名称",
-            prop: "name",
-            span: 12,
-            searchSpan: 4,
-            width: 100,
-            search: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入事件名称",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "事件类型",
-            prop: "type",
-            span: 12,
-            searchSpan: 4,
-            dataType: "number",
-            type: "select",
-            width: 100,
-            dicUrl: "/api/blade-system/dict-biz/dictionary?code=eCallEventType",
-            props: {
-              label: "dictValue",
-              value: "dictKey",
-            },
-            rules: [
-              {
-                required: true,
-                message: "请选择事件类型",
-                trigger: "blur",
-              },
-            ],
-            // search: true,
-          },
-          {
-            label: "所属社区",
-            prop: "communityCode",
-            // search: true,
-            // searchSpan: 4,
-            width: 150,
-            type: "tree",
-            dicUrl: "/api/blade-system/region/tree?parentCode=361102005",
-            props: {
-              label: "name",
-              value: "id"
-            },
-            rules: [
-              {
-                required: true,
-                message: "请选择所属社区",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "数据来源",
-            prop: "source",
-            span: 12,
-            searchSpan: 4,
-            width: 100,
-            hide: true,
-            // search: true,
-          },
-          {
-            label: "姓名",
-            prop: "realName",
-            span: 12,
-            searchSpan: 4,
-            width: 100,
-            search: true,
-            rules: [
-              {
-                required: false,
-                message: "请输入姓名",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "联系方式",
-            prop: "phone",
-            span: 12,
-            width: 100,
-            searchSpan: 4,
-            search: true,
-            rules: [
-              {
-                required: false,
-                message: "请输入联系方式",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "事发地点",
-            prop: "scene",
-            overHidden: true,
-            rules: [
-              {
-                required: true,
-                message: "请输入事发地点",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "事发时间",
-            prop: "occurrenceTime",
-            width: 100,
-            type: "date",
-            format: "yyyy-MM-dd",
-            valueFormat: "yyyy-MM-dd",
-            rules: [
-              {
-                required: true,
-                message: "请选择事发时间",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "事发位置",
-            prop: "location",
-            submitBtn:"提交",
-            hide: true,
-            type: 'map',
-            dataType: "string",
-            span: 24,
-            value: [117.966460, 28.431002, ""]
-          },
-          {
-            label: "标准地址",
-            prop: "addressCode",
-            hide: true,
-            type: "table",
-            span: 24,
-            row: true,
-            children: {
-              border: true,
-              height: 400,
-              searchShow: true,
-              searchMenuSpan: 6,
-              submitText: "确定",
-              column: [
-                // {
-                //   label: "小区",
-                //   prop: "aoiName",
-                //   search: true,
-                //   searchSpan: 4,
-                //   rules: [
-                //     {
-                //       required: true,
-                //       message: "请选择小区",
-                //       trigger: "blur",
-                //     },
-                //   ],
-                // },
-                {
-                  label: "标准地址",
-                  search: true,
-                  searchSpan: 8,
-                  prop: "addressName",
-                  display: false
-                },
-              ],
-            },
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
             page: {
-              pageSize: 10,
-              currentPage: 1,
-              total: 0
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            formatter: (row) => {
-              return row.addressName
-              // if (!row.districtName) return ''
-              // return row.districtName + '-' + row.unit  + row.building  + row.room
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 280,
+                border: true,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                // excelBtn: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "事件名称",
+                        prop: "name",
+                        span: 12,
+                        searchSpan: 4,
+                        width: 100,
+                        search: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入事件名称",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "事件类型",
+                        prop: "type",
+                        span: 12,
+                        searchSpan: 4,
+                        dataType: "number",
+                        type: "select",
+                        width: 100,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=eCallEventType",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey",
+                        },
+                        rules: [
+                            {
+                                required: true,
+                                message: "请选择事件类型",
+                                trigger: "blur",
+                            },
+                        ],
+                        // search: true,
+                    },
+                    {
+                        label: "所属社区",
+                        prop: "communityCode",
+                        search: true,
+                        searchSpan: 4,
+                        width: 150,
+                        type: "tree",
+                        dicUrl: "/api/blade-system/region/tree",
+                        props: {
+                            label: "name",
+                            value: "id"
+                        },
+                        rules: [
+                            {
+                                required: true,
+                                message: "请选择所属社区",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "数据来源",
+                        prop: "source",
+                        span: 12,
+                        searchSpan: 4,
+                        width: 100,
+                        hide: true,
+                        // search: true,
+                    },
+                    {
+                        label: "姓名",
+                        prop: "realName",
+                        span: 12,
+                        searchSpan: 4,
+                        width: 100,
+                        search: true,
+                        rules: [
+                            {
+                                required: false,
+                                message: "请输入姓名",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "联系方式",
+                        prop: "phone",
+                        span: 12,
+                        width: 100,
+                        searchSpan: 4,
+                        search: true,
+                        rules: [
+                            {
+                                required: false,
+                                message: "请输入联系方式",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "事发地点",
+                        prop: "scene",
+                        overHidden: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请输入事发地点",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "事发时间",
+                        prop: "occurrenceTime",
+                        width: 100,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd",
+                        rules: [
+                            {
+                                required: true,
+                                message: "请选择事发时间",
+                                trigger: "blur",
+                            },
+                        ],
+                    },
+                    {
+                        label: "事发位置",
+                        prop: "location",
+                        submitBtn: "提交",
+                        hide: true,
+                        type: 'map',
+                        dataType: "string",
+                        span: 24,
+                        value: [117.966460, 28.431002, ""]
+                    },
+                    {
+                        label: "标准地址",
+                        prop: "addressCode",
+                        hide: true,
+                        type: "table",
+                        span: 24,
+                        row: true,
+                        children: {
+                            border: true,
+                            height: 400,
+                            searchShow: true,
+                            searchMenuSpan: 6,
+                            submitText: "确定",
+                            column: [
+                                // {
+                                //   label: "小区",
+                                //   prop: "aoiName",
+                                //   search: true,
+                                //   searchSpan: 4,
+                                //   rules: [
+                                //     {
+                                //       required: true,
+                                //       message: "请选择小区",
+                                //       trigger: "blur",
+                                //     },
+                                //   ],
+                                // },
+                                {
+                                    label: "标准地址",
+                                    search: true,
+                                    searchSpan: 8,
+                                    prop: "addressName",
+                                    display: false
+                                },
+                            ],
+                        },
+                        page: {
+                            pageSize: 10,
+                            currentPage: 1,
+                            total: 0
+                        },
+                        formatter: (row) => {
+                            return row.addressName
+                            // if (!row.districtName) return ''
+                            // return row.districtName + '-' + row.unit  + row.building  + row.room
+                        },
+                        onLoad: ({ page, value, data }, callback) => {
+                            //首次加载去查询对应的值
+                            if (value) {
+                                getHouseDetail({
+                                    addressCode: value
+                                }).then(res => {
+                                    var resData = res.data.data
+                                    // 查询对应行数据
+                                    callback(resData)
+                                    return
+                                })
+                            }
+                            if (page) {
+                                this.loading = true
+                                var params = {
+                                    ...data,
+                                    townStreetCode: "361102005"
+                                }
+                                getHouseList(page.currentPage, page.pageSize, Object.assign(params)).then(res => {
+                                    const resData = res.data.data
+                                    var total = resData.total
+                                    var data = resData.records
+                                    this.loading = false
+                                    this.selectionClear()
+                                    //分页查询信息
+                                    callback({
+                                        total: total,
+                                        data: data
+                                    })
+                                })
+                            }
+                        },
+                        props: {
+                            label: 'addressName',
+                            value: 'addressCode'
+                        }
+                    },
+
+                    {
+                        label: "现场图片",
+                        prop: "imageUrls",
+                        width: 80,
+                        type: "upload",
+                        listType: "picture-card",
+                        dataType: "string",
+                        multiple: true,
+                        row: true,
+                        action: "/api/blade-resource/oss/endpoint/put-file-attach",
+                        propsHttp: {
+                            res: "data",
+                            name: 'name',
+                            url: "link",
+                        },
+                        span: 24,
+                    },
+
+                    {
+                        label: "事件简述",
+                        prop: "remark",
+                        type: "textarea",
+                        span: 24,
+                    },
+                    // {
+                    //   label: "处置情况",
+                    //   prop: "disSit",
+                    //   type:"textarea",
+                    //   hide:true,
+                    //   span: 24,
+                    // },
+                    {
+                        label: "处理结果",
+                        prop: "disRes",
+                        type: "textarea",
+                        hide: true,
+                        span: 24,
+                    },
+                    {
+                        label: "回访情况",
+                        prop: "retVis",
+                        type: "textarea",
+                        hide: true,
+                        span: 24,
+                    },
+                    // {
+                    //   label: "处置状态",
+                    //   prop: "dis_status",
+                    //   type:"select",
+                    //   hide:true,
+                    // }
+                ],
             },
-            onLoad: ({ page, value, data }, callback) => {
-              //首次加载去查询对应的值
-              if (value) {
-                getHouseDetail({
-                  addressCode: value
-                }).then(res => {
-                  var resData = res.data.data;
-                  // 查询对应行数据
-                  callback(resData)
-                  return
-                });
-              }
-              if (page) {
-                this.loading = true;
-                var params = {
-                  ...data,
-                  townStreetCode: "361102005"
+            data: [],
+        }
+    },
+    watch: {
+        "form.location": {
+            // form是表单或者表格绑定的数据集,v-model='form'
+            handler (val) {
+                if (typeof val == "string") {
+                    console.log(val, 7777)
+                    var arr = val.split(",")
+                    console.log(val, 88888)
+                    //经纬度替换
+                    this.form.lat = arr[1]
+                    this.form.lng = arr[0]
+                    // this.form.location = arr[2];
                 }
-                getHouseList(page.currentPage, page.pageSize, Object.assign(params)).then(res => {
-                  const resData = res.data.data;
-                  var total = resData.total;
-                  var data = resData.records;
-                  this.loading = false;
-                  this.selectionClear();
-                  //分页查询信息
-                  callback({
-                    total: total,
-                    data: data
-                  })
-                });
-              }
             },
-            props: {
-              label: 'addressName',
-              value: 'addressCode'
+            immediate: true,
+        },
+    },
+    computed: {
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.eCallEvent_add, true),
+                viewBtn: this.vaildData(this.permission.eCallEvent_view, true),
+                delBtn: this.vaildData(this.permission.eCallEvent_delete, true),
+                editBtn: this.vaildData(this.permission.eCallEvent_edit, true),
             }
-          },
-
-          {
-            label: "现场图片",
-            prop: "imageUrls",
-            width: 80,
-            type: "upload",
-            listType: "picture-card",
-            dataType: "string",
-            multiple: true,
-            row: true,
-            action: "/api/blade-resource/oss/endpoint/put-file-attach",
-            propsHttp: {
-              res: "data",
-              name: 'name',
-              url: "link",
-            },
-            span: 24,
-          },
-
-          {
-            label: "事件简述",
-            prop: "remark",
-            type: "textarea",
-            span: 24,
-          },
-          // {
-          //   label: "处置情况",
-          //   prop: "disSit",
-          //   type:"textarea",
-          //   hide:true,
-          //   span: 24,
-          // },
-          {
-            label: "处理结果",
-            prop: "disRes",
-            type: "textarea",
-            hide: true,
-            span: 24,
-          },
-          {
-            label: "回访情况",
-            prop: "retVis",
-            type: "textarea",
-            hide: true,
-            span: 24,
-          },
-          // {
-          //   label: "处置状态",
-          //   prop: "dis_status",
-          //   type:"select",
-          //   hide:true,
-          // }
-        ],
-      },
-      data: [],
-    };
-  },
-  watch: {
-    "form.location": {
-      // form是表单或者表格绑定的数据集,v-model='form'
-      handler(val) {
-
-        var that = this;
-        if (typeof val == "string") {
-          console.log(val,7777)
-          var arr = val.split(",");
-          console.log(val,88888)
-          //经纬度替换
-          this.form.lat = arr[1];
-          this.form.lng = arr[0];
-          // this.form.location = arr[2];
-        }
-      },
-      immediate: true,
-    },
-  },
-  computed: {
-    ...mapGetters(["permission", "userInfo"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.eCallEvent_add, true),
-        viewBtn: this.vaildData(this.permission.eCallEvent_view, true),
-        delBtn: this.vaildData(this.permission.eCallEvent_delete, true),
-        editBtn: this.vaildData(this.permission.eCallEvent_edit, true),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    rowSave(row, done, loading) {
-      if (row.imageUrls.length > 0) {
-        var urls = []
-        var split = row.imageUrls.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.imageUrls = urls.join(",")
-      }
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
         },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      if (row.imageUrls.length > 0) {
-        var urls = []
-        var split = row.imageUrls.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.imageUrls = urls.join(",")
-      }
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getECallEvent(this.form.id).then((res) => {
-          this.form = res.data.data;
-          if (this.form.imageUrls.length > 0) {
-            var urls = []
-            var names = this.form.imageUrls.split(",");
-            names.forEach(name => {
-              urls.push(website.minioUrl + name)
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
             })
-            this.form.imageUrls = urls.join(",")
-          }
-        });
-      }
-      // con
-      done();
+            return ids.join(",")
+        },
     },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      const { dateTime } = this.query;
-      let values = {
-        ...params,
-      };
-      if (dateTime) {
-        values = {
-          ...params,
-          startTime: dateTime[0],
-          endTime: dateTime[1],
-          ...this.query,
-        };
-        values.dateTime = null;
-      }
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, values).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.data.forEach(item => {
-          if (item.imageUrls) {
-            if (item.imageUrls.length > 0) {
-              var urls = []
-              var names = item.imageUrls.split(",");
-              names.forEach(name => {
-                urls.push(website.minioUrl + name)
-              })
-              item.imageUrls = urls.join(",")
+    methods: {
+        rowSave (row, done, loading) {
+            if (row.imageUrls.length > 0) {
+                var urls = []
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.imageUrls = urls.join(",")
             }
-          }
-        })
-        this.loading = false;
-        this.selectionClear();
-      });
-    }
-  },
-};
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.imageUrls.length > 0) {
+                var urls = []
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.imageUrls = urls.join(",")
+            }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getECallEvent(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.imageUrls.length > 0) {
+                        var urls = []
+                        var names = this.form.imageUrls.split(",")
+                        names.forEach(name => {
+                            urls.push(website.minioUrl + name)
+                        })
+                        this.form.imageUrls = urls.join(",")
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.imageUrls) {
+                        if (item.imageUrls.length > 0) {
+                            var urls = []
+                            var names = item.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            item.imageUrls = urls.join(",")
+                        }
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
+        }
+    },
+}
 </script>
 
 <style>
 .avue-upload__icon {
-  line-height: 6;
+    line-height: 6;
 }
 </style>
diff --git a/src/views/task/index.vue b/src/views/task/index.vue
index 1def95d..7468f10 100644
--- a/src/views/task/index.vue
+++ b/src/views/task/index.vue
@@ -1,385 +1,387 @@
-<!-- 工作日志 -->
+<!-- 走访日志 -->
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
-      <!-- <template slot-scope="scope" slot="menu">
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
+                    除
+                </el-button>
+            </template>
+            <!-- <template slot-scope="scope" slot="menu">
         <el-button type="text" icon="el-icon-circle-plus-outline" size="small"
           @click="taskApply(scope.row)">任务分发
         </el-button>
       </template> -->
-    </avue-crud>
-    <!-- <el-dialog title="任务分发" append-to-body :visible.sync="taskVisible" width="70%" height="60%">
+        </avue-crud>
+        <!-- <el-dialog title="任务分发" append-to-body :visible.sync="taskVisible" width="70%" height="60%">
       <avue-form :option="taskOption"
              v-model="taskForm"> </avue-form>
         </el-dialog> -->
-  </basic-container>
+    </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getReportForRepairs } from "@/api/task/reportForRepairs";
-import { mapGetters } from "vuex";
-import website from '@/config/website';
+import { getList, remove, update, add, getReportForRepairs } from "@/api/task/reportForRepairs"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
 
 export default {
-  data() {
-    return {
-      taskForm:{},
-      taskOption:{
-        column: [
-          {
-            label: '姓名',
-            prop: 'name',
-            value: 'small'
-          }
-        ]
-      },
-      taskVisible:false,
-      form: {},
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      datetime: "",
-      selectionList: [],
-      option: {
-        height: "auto",
-        calcHeight: 54,
-        dialogWidth: 950,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 3,
-        menuWidth: 280,
-        border: true,
-        //stripe:true,
-        index: true,
-        editBtnText:"任务分发",
-        editTitle:"任务分发",
-        updateBtnText:"确定",
-        viewBtn: true,
-        selection: true,
-        // excelBtn: true,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "类型",
-            prop: "type",
-            span: 12,
-            searchSpan: 4,
-            dataType: "number",
-            type: "select",
-            width: 100,
-            editDisabled:true,
-            dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
-            props: {
-              label: "dictValue",
-              value: "dictKey",
+    data () {
+        return {
+            taskForm: {},
+            taskOption: {
+                column: [
+                    {
+                        label: '姓名',
+                        prop: 'name',
+                        value: 'small'
+                    }
+                ]
             },
-            search: true,
-            span:15,
-            row:true,
-            labelWidth:110,
-          },
-          {
-            label: "姓名",
-            prop: "realName",
-            span: 12,
-            searchSpan: 4,
-            width: 100,
-            search: true,
-            editDisabled:true,
-            labelWidth:110,
-          },
-          {
-            label: "手机号",
-            prop: "phone",
-            span: 12,
-            width: 100,
-            searchSpan: 4,
-            search: true,
-            editDisabled:true,
-            labelWidth:110,
-          },
-          {
-            label: "图片",
-            prop: "imageUrls",
-            width: 80,
-            type: "upload",
-            listType: "picture-card",
-            dataType: "string",
-            multiple: true,
-            action: "/api/blade-resource/oss/endpoint/put-file",
-            propsHttp: {
-              res: "data",
-              name: 'name',
-              url: "link",
+            taskVisible: false,
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            span: 24,
-            editDisabled:true,
-            labelWidth:110,
-          },
-          {
-            label: "上报事发地址",
-            prop: "address",
-            overHidden: true,
-            editDisabled:true,
-            labelWidth:110,
-            span:24
-          },
-          // {
-          //   label: "地点",
-          //   prop: "addressName",
-          //   overHidden:true
-          // },
-          {
-            label: "上报时间",
-            prop: "createTime",
-            width: 160,
-            addDisplay: false,
-            editDisplay: false,
-            type: "date",
-            format: "yyyy-MM-dd HH:mm:ss",
-            valueFormat: "yyyy-MM-dd HH:mm:ss",
-            editDisabled:true,
-            labelWidth:110,
-          },
-          {
-            label: "描述",
-            prop: "remark",
-            type: "textarea",
-            span: 24,
-            editDisabled:true,
-            labelWidth:110,
-          },
-          {
-            label: "接收员",
-            prop: "userIds",
-            type: "tree",
-            hide:true,
-            labelWidth:110,
-            dicUrl:"/api/blade-gridman/gridman/getGridmanList",
-            props: {
-              label: "gridmanName",
-              value: "id",
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 280,
+                border: true,
+                //stripe:true,
+                index: true,
+                editBtnText: "任务分发",
+                editTitle: "任务分发",
+                updateBtnText: "确定",
+                viewBtn: true,
+                selection: true,
+                // excelBtn: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "类型",
+                        prop: "type",
+                        span: 12,
+                        searchSpan: 4,
+                        dataType: "number",
+                        type: "select",
+                        width: 100,
+                        editDisabled: true,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey",
+                        },
+                        search: true,
+                        span: 15,
+                        row: true,
+                        labelWidth: 110,
+                    },
+                    {
+                        label: "姓名",
+                        prop: "realName",
+                        span: 12,
+                        searchSpan: 4,
+                        width: 100,
+                        search: true,
+                        editDisabled: true,
+                        labelWidth: 110,
+                    },
+                    {
+                        label: "手机号",
+                        prop: "phone",
+                        span: 12,
+                        width: 100,
+                        searchSpan: 4,
+                        search: true,
+                        editDisabled: true,
+                        labelWidth: 110,
+                    },
+                    {
+                        label: "图片",
+                        prop: "imageUrls",
+                        width: 80,
+                        type: "upload",
+                        listType: "picture-card",
+                        dataType: "string",
+                        multiple: true,
+                        action: "/api/blade-resource/oss/endpoint/put-file",
+                        propsHttp: {
+                            res: "data",
+                            name: 'name',
+                            url: "link",
+                        },
+                        span: 24,
+                        editDisabled: true,
+                        labelWidth: 110,
+                    },
+                    {
+                        label: "上报事发地址",
+                        prop: "address",
+                        overHidden: true,
+                        editDisabled: true,
+                        labelWidth: 110,
+                        span: 24
+                    },
+                    // {
+                    //   label: "地点",
+                    //   prop: "addressName",
+                    //   overHidden:true
+                    // },
+                    {
+                        label: "上报时间",
+                        prop: "createTime",
+                        width: 160,
+                        addDisplay: false,
+                        editDisplay: false,
+                        type: "date",
+                        format: "yyyy-MM-dd HH:mm:ss",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                        editDisabled: true,
+                        labelWidth: 110,
+                    },
+                    {
+                        label: "描述",
+                        prop: "remark",
+                        type: "textarea",
+                        span: 24,
+                        editDisabled: true,
+                        labelWidth: 110,
+                    },
+                    {
+                        label: "接收员",
+                        prop: "userIds",
+                        type: "tree",
+                        hide: true,
+                        labelWidth: 110,
+                        dicUrl: "/api/blade-gridman/gridman/getGridmanList",
+                        props: {
+                            label: "gridmanName",
+                            value: "id",
+                        },
+                    }
+                ],
             },
-          }
-        ],
-      },
-      data: [],
-    };
-  },
-  watch: {
-  },
-  computed: {
-    ...mapGetters(["permission", "userInfo"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.reportForRepairs_add, false),
-        viewBtn: this.vaildData(this.permission.reportForRepairs_view, true),
-        delBtn: this.vaildData(this.permission.reportForRepairs_delete, false),
-        editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    // 任务派发
-    taskApply(row){
-      var that = this
-      this.taskVisible = true
-      this.$nextTick(() => {
-        })
-    },
-    rowSave(row, done, loading) {
-      if (row.imageUrls.length > 0) {
-        var urls = []
-        var split = row.imageUrls.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.imageUrls = urls.join(",")
-      }
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
+            data: [],
         }
-      );
     },
-    rowUpdate(row, index, done, loading) {
-      if (row.imageUrls.length > 0) {
-        var urls = []
-        var split = row.imageUrls.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.imageUrls = urls.join(",")
-      }
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
+    watch: {
+    },
+    computed: {
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.reportForRepairs_add, false),
+                viewBtn: this.vaildData(this.permission.reportForRepairs_view, true),
+                delBtn: this.vaildData(this.permission.reportForRepairs_delete, false),
+                editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
+            }
         },
-        (error) => {
-          window.console.log(error);
-          loading();
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
+    },
+    methods: {
+        // 任务派发
+        taskApply (row) {
+            var that = this
+            this.taskVisible = true
+            this.$nextTick(() => {
+            })
+        },
+        rowSave (row, done, loading) {
+            if (row.imageUrls.length > 0) {
+                var urls = []
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.imageUrls = urls.join(",")
+            }
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.imageUrls.length > 0) {
+                var urls = []
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.imageUrls = urls.join(",")
+            }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getReportForRepairs(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.imageUrls) {
+                        if (this.form.imageUrls.length > 0) {
+                            var urls = []
+                            var names = this.form.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            this.form.imageUrls = urls.join(",")
+                        }
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.imageUrls) {
+                        if (item.imageUrls.length > 0) {
+                            var urls = []
+                            var names = item.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            item.imageUrls = urls.join(",")
+                        }
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
         }
-      );
     },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getReportForRepairs(this.form.id).then((res) => {
-          this.form = res.data.data;
-          if (this.form.imageUrls) {
-            if (this.form.imageUrls.length > 0) {
-              var urls = []
-              var names = this.form.imageUrls.split(",");
-              names.forEach(name => {
-                urls.push(website.minioUrl + name)
-              })
-              this.form.imageUrls = urls.join(",")
-            }
-          }
-        });
-      }
-      // con
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      const { dateTime } = this.query;
-      let values = {
-        ...params,
-      };
-      if (dateTime) {
-        values = {
-          ...params,
-          startTime: dateTime[0],
-          endTime: dateTime[1],
-          ...this.query,
-        };
-        values.dateTime = null;
-      }
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, values).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.data.forEach(item => {
-          if (item.imageUrls) {
-            if (item.imageUrls.length > 0) {
-              var urls = []
-              var names = item.imageUrls.split(",");
-              names.forEach(name => {
-                urls.push(website.minioUrl + name)
-              })
-              item.imageUrls = urls.join(",")
-            }
-          }
-        })
-        this.loading = false;
-        this.selectionClear();
-      });
-    }
-  },
-};
+}
 </script>
 
 <style>
 .avue-upload__icon {
-  line-height: 6;
+    line-height: 6;
 }
 </style>
diff --git a/src/views/task/reportForRepairs.vue b/src/views/task/reportForRepairs.vue
index 76f6603..e5d974c 100644
--- a/src/views/task/reportForRepairs.vue
+++ b/src/views/task/reportForRepairs.vue
@@ -1,322 +1,324 @@
-<!-- 工作日志 -->
+<!-- 走访日志 -->
 <template>
-  <basic-container>
-    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
-      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
-      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
-      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
+                    除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-import { getList, remove, update, add, getReportForRepairs } from "@/api/task/reportForRepairs";
-import { mapGetters } from "vuex";
-import website from '@/config/website';
+import { getList, remove, update, add, getReportForRepairs } from "@/api/task/reportForRepairs"
+import { mapGetters } from "vuex"
+import website from '@/config/website'
 
 export default {
-  data() {
-    return {
-      form: {},
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      datetime: "",
-      selectionList: [],
-      option: {
-        height: "auto",
-        calcHeight: 54,
-        dialogWidth: 950,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 3,
-        menuWidth: 350,
-        border: true,
-        //stripe:true,
-        index: true,
-        viewBtn: true,
-        selection: true,
-        // excelBtn: true,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "类型",
-            prop: "type",
-            span: 12,
-            searchSpan: 4,
-            dataType: "number",
-            type:"select",
-            width:100,
-            dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
-            props: {
-              label: "dictValue",
-              value: "dictKey",
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
             },
-            search: true,
-          },
-          {
-            label: "姓名",
-            prop: "realName",
-            span: 12,
-            searchSpan: 4,
-            width:100,
-            search: true,
-          },
-          {
-            label: "手机号",
-            prop: "phone",
-            span: 12,
-            width:100,
-            searchSpan: 4,
-            search: true,
-          },
-          {
-            label: "图片",
-            prop: "imageUrls",
-            width:80,
-            type: "upload",
-            listType: "picture-card",
-            dataType:"string",
-            multiple: true,
-            action: "/api/blade-resource/oss/endpoint/put-file",
-            propsHttp: {
-              res: "data",
-              name: 'name',
-              url: "link",
+            datetime: "",
+            selectionList: [],
+            option: {
+                height: "auto",
+                calcHeight: 54,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 3,
+                menuWidth: 350,
+                border: true,
+                //stripe:true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                // excelBtn: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "类型",
+                        prop: "type",
+                        span: 12,
+                        searchSpan: 4,
+                        dataType: "number",
+                        type: "select",
+                        width: 100,
+                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey",
+                        },
+                        search: true,
+                    },
+                    {
+                        label: "姓名",
+                        prop: "realName",
+                        span: 12,
+                        searchSpan: 4,
+                        width: 100,
+                        search: true,
+                    },
+                    {
+                        label: "手机号",
+                        prop: "phone",
+                        span: 12,
+                        width: 100,
+                        searchSpan: 4,
+                        search: true,
+                    },
+                    {
+                        label: "图片",
+                        prop: "imageUrls",
+                        width: 80,
+                        type: "upload",
+                        listType: "picture-card",
+                        dataType: "string",
+                        multiple: true,
+                        action: "/api/blade-resource/oss/endpoint/put-file",
+                        propsHttp: {
+                            res: "data",
+                            name: 'name',
+                            url: "link",
+                        },
+                        span: 24,
+                    },
+                    {
+                        label: "地点",
+                        prop: "addressName",
+                        overHidden: true
+                    },
+                    {
+                        label: "上报时间",
+                        prop: "createTime",
+                        width: 160,
+                        addDisplay: false,
+                        editDisplay: false,
+                        type: "date",
+                        format: "yyyy-MM-dd HH:mm:ss",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
+                    },
+                    {
+                        label: "备注",
+                        prop: "remark",
+                        type: "textarea",
+                        hide: true,
+                        span: 24,
+                    }
+                ],
             },
-            span: 24,
-          },
-          {
-            label: "地点",
-            prop: "addressName",
-            overHidden:true
-          },
-          {
-            label: "上报时间",
-            prop: "createTime",
-            width: 160,
-            addDisplay: false,
-            editDisplay: false,
-            type: "date",
-            format: "yyyy-MM-dd HH:mm:ss",
-            valueFormat: "yyyy-MM-dd HH:mm:ss",
-          },
-          {
-            label: "备注",
-            prop: "remark",
-            type:"textarea",
-            hide:true,
-            span: 24,
-          }
-        ],
-      },
-      data: [],
-    };
-  },
-  watch: {
-  },
-  computed: {
-    ...mapGetters(["permission", "userInfo"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.reportForRepairs_add, true),
-        viewBtn: this.vaildData(this.permission.reportForRepairs_view, true),
-        delBtn: this.vaildData(this.permission.reportForRepairs_delete, true),
-        editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    rowSave(row, done, loading) {
-      if (row.imageUrls.length > 0) {
-        var urls = []
-        var split = row.imageUrls.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.imageUrls = urls.join(",")
-      }
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
+            data: [],
         }
-      );
     },
-    rowUpdate(row, index, done, loading) {
-      if (row.imageUrls.length > 0) {
-        var urls = []
-        var split = row.imageUrls.split(",");
-        split.forEach(url => {
-          var names = url.split("jczz/");
-          urls.push(names[1])
-        })
-        row.imageUrls = urls.join(",")
-      }
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
+    watch: {
+    },
+    computed: {
+        ...mapGetters(["permission", "userInfo"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.reportForRepairs_add, true),
+                viewBtn: this.vaildData(this.permission.reportForRepairs_view, true),
+                delBtn: this.vaildData(this.permission.reportForRepairs_delete, true),
+                editBtn: this.vaildData(this.permission.reportForRepairs_edit, true),
+            }
         },
-        (error) => {
-          window.console.log(error);
-          loading();
+        ids () {
+            let ids = []
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
+    },
+    methods: {
+        rowSave (row, done, loading) {
+            if (row.imageUrls.length > 0) {
+                var urls = []
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.imageUrls = urls.join(",")
+            }
+            add(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowUpdate (row, index, done, loading) {
+            if (row.imageUrls.length > 0) {
+                var urls = []
+                var split = row.imageUrls.split(",")
+                split.forEach(url => {
+                    var names = url.split("jczz/")
+                    urls.push(names[1])
+                })
+                row.imageUrls = urls.join(",")
+            }
+            update(row).then(
+                () => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    done()
+                },
+                (error) => {
+                    window.console.log(error)
+                    loading()
+                }
+            )
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getReportForRepairs(this.form.id).then((res) => {
+                    this.form = res.data.data
+                    if (this.form.imageUrls) {
+                        if (this.form.imageUrls.length > 0) {
+                            var urls = []
+                            var names = this.form.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            this.form.imageUrls = urls.join(",")
+                        }
+                    }
+                })
+            }
+            // con
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const { dateTime } = this.query
+            let values = {
+                ...params,
+            }
+            if (dateTime) {
+                values = {
+                    ...params,
+                    startTime: dateTime[0],
+                    endTime: dateTime[1],
+                    ...this.query,
+                }
+                values.dateTime = null
+            }
+            this.loading = true
+            getList(page.currentPage, page.pageSize, values).then((res) => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.data.forEach(item => {
+                    if (item.imageUrls) {
+                        if (item.imageUrls.length > 0) {
+                            var urls = []
+                            var names = item.imageUrls.split(",")
+                            names.forEach(name => {
+                                urls.push(website.minioUrl + name)
+                            })
+                            item.imageUrls = urls.join(",")
+                        }
+                    }
+                })
+                this.loading = false
+                this.selectionClear()
+            })
         }
-      );
     },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getReportForRepairs(this.form.id).then((res) => {
-          this.form = res.data.data;
-          if (this.form.imageUrls) {
-            if (this.form.imageUrls.length > 0) {
-              var urls = []
-              var names = this.form.imageUrls.split(",");
-              names.forEach(name => {
-                urls.push(website.minioUrl + name)
-              })
-              this.form.imageUrls = urls.join(",")
-            }
-          }
-        });
-      }
-      // con
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      const { dateTime } = this.query;
-      let values = {
-        ...params,
-      };
-      if (dateTime) {
-        values = {
-          ...params,
-          startTime: dateTime[0],
-          endTime: dateTime[1],
-          ...this.query,
-        };
-        values.dateTime = null;
-      }
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, values).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.data.forEach(item => {
-          if (item.imageUrls) {
-            if (item.imageUrls.length > 0) {
-              var urls = []
-              var names = item.imageUrls.split(",");
-              names.forEach(name => {
-                urls.push(website.minioUrl + name)
-              })
-              item.imageUrls = urls.join(",")
-            }
-          }
-        })
-        this.loading = false;
-        this.selectionClear();
-      });
-    }
-  },
-};
+}
 </script>
 
 <style>
 .avue-upload__icon {
-  line-height: 6;
+    line-height: 6;
 }
 </style>
diff --git a/src/views/tool/code.vue b/src/views/tool/code.vue
index b2d05cc..694309b 100644
--- a/src/views/tool/code.vue
+++ b/src/views/tool/code.vue
@@ -1,624 +1,599 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :permission="permissionList"
-               :page.sync="page"
-               @row-del="rowDel"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               :before-open="beforeOpen"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   v-if="permission.code_delete"
-                   plain
-                   @click="handleDelete">删 除
-        </el-button>
-        <el-button type="primary"
-                   size="small"
-                   plain
-                   icon="el-icon-refresh"
-                   @click="handleBuild">代码生成
-        </el-button>
-      </template>
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-document-copy"
-                   v-if="permission.code_edit"
-                   class="none-border"
-                   @click.stop="handleCopy(scope.row)">复制
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+            :permission="permissionList" :page.sync="page" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button type="danger" size="small" icon="el-icon-delete" v-if="permission.code_delete" plain
+                    @click="handleDelete">删 除
+                </el-button>
+                <el-button type="primary" size="small" plain icon="el-icon-refresh" @click="handleBuild">代码生成
+                </el-button>
+            </template>
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-document-copy" v-if="permission.code_edit"
+                    class="none-border" @click.stop="handleCopy(scope.row)">复制
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getList, getCode, build, remove, add, update, copy} from "@/api/tool/code";
-  import {getDetail as modelDetail, prototypeDetail} from "@/api/tool/model";
-  import {templateDic} from "@/const/tool/model";
-  import {validatenull} from "@/util/validate";
-  import {mapGetters} from "vuex";
+import { getList, getCode, build, remove, add, update, copy } from "@/api/tool/code"
+import { getDetail as modelDetail, prototypeDetail } from "@/api/tool/model"
+import { templateDic } from "@/const/tool/model"
+import { validatenull } from "@/util/validate"
+import { mapGetters } from "vuex"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionList: [],
-        loading: true,
-        query: {},
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          dialogWidth: 900,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          selection: true,
-          labelWidth: 120,
-          menuWidth: 300,
-          viewBtn: true,
-          dialogClickModal: false,
-          tabs: true,
-          column: [
-            {
-              label: "模块名",
-              prop: "codeName",
-              search: true,
-              display: false,
+export default {
+    data () {
+        return {
+            form: {},
+            selectionList: [],
+            loading: true,
+            query: {},
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: '模版类型',
-              prop: 'templateType',
-              type: "select",
-              dicData: templateDic,
-              display: false,
-            },
-            {
-              label: "表名",
-              prop: "tableName",
-              search: true,
-              display: false,
-            },
-            {
-              label: "服务名",
-              prop: "serviceName",
-              search: true,
-              display: false,
-            },
-            {
-              label: "包名",
-              prop: "packageName",
-              display: false,
-            },
-          ],
-          group: [
-            {
-              label: '模型配置',
-              prop: 'modelSetting',
-              icon: 'el-icon-tickets',
-              column: [
-                {
-                  label: "数据模型",
-                  prop: "modelId",
-                  search: true,
-                  span: 24,
-                  type: "select",
-                  dicUrl: "/api/blade-develop/model/select",
-                  props: {
-                    label: "modelName",
-                    value: "id"
-                  },
-                  rules: [{
-                    required: true,
-                    message: "请选择数据模型",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "模块名",
-                  prop: "codeName",
-                  search: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入模块名",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "服务名",
-                  prop: "serviceName",
-                  search: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入服务名",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "表名",
-                  prop: "tableName",
-                  rules: [{
-                    required: true,
-                    message: "请输入表名",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "表前缀",
-                  prop: "tablePrefix",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入表前缀",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "主键名",
-                  prop: "pkName",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入主键名",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "包名",
-                  prop: "packageName",
-                  overHidden: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入包名",
-                    trigger: "blur"
-                  }]
-                },
-              ]
-            },
-            {
-              label: '模版配置',
-              prop: 'templateSetting',
-              icon: 'el-icon-copy-document',
-              column: [
-                {
-                  label: '模版类型',
-                  prop: 'templateType',
-                  type: "select",
-                  dicData: templateDic,
-                  value: "crud",
-                  rules: [{
-                    required: true,
-                    message: "请选择模版类型",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "作者信息",
-                  prop: "author",
-                  value: "BladeX",
-                  rules: [{
-                    required: true,
-                    message: "请输入作者",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "子表模型",
-                  prop: "subModelId",
-                  type: "select",
-                  dicUrl: "/api/blade-develop/model/select",
-                  props: {
-                    label: "modelName",
-                    value: "id"
-                  },
-                  display: false,
-                  hide: true,
-                },
-                {
-                  label: "子表外键",
-                  prop: "subFkId",
-                  display: false,
-                  hide: true,
-                },
-                {
-                  label: "树主键字段",
-                  prop: "treeId",
-                  type: "select",
-                  dicData: [],
-                  props: {
-                    label: "jdbcComment",
-                    value: "jdbcName"
-                  },
-                  display: false,
-                  hide: true,
-                },
-                {
-                  label: "树父主键字段",
-                  prop: "treePid",
-                  type: "select",
-                  dicData: [],
-                  props: {
-                    label: "jdbcComment",
-                    value: "jdbcName"
-                  },
-                  display: false,
-                  hide: true,
-                },
-                {
-                  label: "树名称字段",
-                  prop: "treeName",
-                  type: "select",
-                  dicData: [],
-                  props: {
-                    label: "jdbcComment",
-                    value: "jdbcName"
-                  },
-                  display: false,
-                  hide: true,
-                },
-              ]
-            },
-            {
-              label: '生成配置',
-              prop: 'codingSetting',
-              icon: 'el-icon-printer',
-              column: [
-                {
-                  label: "基础业务",
-                  labelTip:'配置是否使用BladeX封装的BaseService解锁更多功能',
-                  prop: "baseMode",
-                  type: 'radio',
-                  dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
-                  props: {
-                    label: "dictValue",
-                    value: "dictKey"
-                  },
-                  value: 2,
-                  dataType: "number",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请选择基础业务",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "包装器",
-                  labelTip:'配置是否使用Wrapper包装器来拓展Controller返回列表的字段',
-                  prop: "wrapMode",
-                  type: 'radio',
-                  dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
-                  props: {
-                    label: "dictValue",
-                    value: "dictKey"
-                  },
-                  value: 2,
-                  dataType: "number",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请选择包装器",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "远程调用",
-                  labelTip:'配置是否使用Feign远程调用',
-                  prop: "feignMode",
-                  type: 'radio',
-                  dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
-                  props: {
-                    label: "dictValue",
-                    value: "dictKey"
-                  },
-                  value: 1,
-                  dataType: "number",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请选择基础业务",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "代码风格",
-                  labelTip:'选择不同底层实现的代码模版',
-                  prop: "codeStyle",
-                  type: 'radio',
-                  dicData: [
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                dialogWidth: 900,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: true,
+                labelWidth: 120,
+                menuWidth: 280,
+                viewBtn: true,
+                dialogClickModal: false,
+                tabs: true,
+                column: [
                     {
-                      label: "saber",
-                      value: "saber"
+                        label: "模块名",
+                        prop: "codeName",
+                        search: true,
+                        display: false,
                     },
                     {
-                      label: "element",
-                      value: "element"
+                        label: '模版类型',
+                        prop: 'templateType',
+                        type: "select",
+                        dicData: templateDic,
+                        display: false,
+                    },
+                    {
+                        label: "表名",
+                        prop: "tableName",
+                        search: true,
+                        display: false,
+                    },
+                    {
+                        label: "服务名",
+                        prop: "serviceName",
+                        search: true,
+                        display: false,
+                    },
+                    {
+                        label: "包名",
+                        prop: "packageName",
+                        display: false,
+                    },
+                ],
+                group: [
+                    {
+                        label: '模型配置',
+                        prop: 'modelSetting',
+                        icon: 'el-icon-tickets',
+                        column: [
+                            {
+                                label: "数据模型",
+                                prop: "modelId",
+                                search: true,
+                                span: 24,
+                                type: "select",
+                                dicUrl: "/api/blade-develop/model/select",
+                                props: {
+                                    label: "modelName",
+                                    value: "id"
+                                },
+                                rules: [{
+                                    required: true,
+                                    message: "请选择数据模型",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "模块名",
+                                prop: "codeName",
+                                search: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入模块名",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "服务名",
+                                prop: "serviceName",
+                                search: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入服务名",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "表名",
+                                prop: "tableName",
+                                rules: [{
+                                    required: true,
+                                    message: "请输入表名",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "表前缀",
+                                prop: "tablePrefix",
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入表前缀",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "主键名",
+                                prop: "pkName",
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入主键名",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "包名",
+                                prop: "packageName",
+                                overHidden: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入包名",
+                                    trigger: "blur"
+                                }]
+                            },
+                        ]
+                    },
+                    {
+                        label: '模版配置',
+                        prop: 'templateSetting',
+                        icon: 'el-icon-copy-document',
+                        column: [
+                            {
+                                label: '模版类型',
+                                prop: 'templateType',
+                                type: "select",
+                                dicData: templateDic,
+                                value: "crud",
+                                rules: [{
+                                    required: true,
+                                    message: "请选择模版类型",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "作者信息",
+                                prop: "author",
+                                value: "BladeX",
+                                rules: [{
+                                    required: true,
+                                    message: "请输入作者",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "子表模型",
+                                prop: "subModelId",
+                                type: "select",
+                                dicUrl: "/api/blade-develop/model/select",
+                                props: {
+                                    label: "modelName",
+                                    value: "id"
+                                },
+                                display: false,
+                                hide: true,
+                            },
+                            {
+                                label: "子表外键",
+                                prop: "subFkId",
+                                display: false,
+                                hide: true,
+                            },
+                            {
+                                label: "树主键字段",
+                                prop: "treeId",
+                                type: "select",
+                                dicData: [],
+                                props: {
+                                    label: "jdbcComment",
+                                    value: "jdbcName"
+                                },
+                                display: false,
+                                hide: true,
+                            },
+                            {
+                                label: "树父主键字段",
+                                prop: "treePid",
+                                type: "select",
+                                dicData: [],
+                                props: {
+                                    label: "jdbcComment",
+                                    value: "jdbcName"
+                                },
+                                display: false,
+                                hide: true,
+                            },
+                            {
+                                label: "树名称字段",
+                                prop: "treeName",
+                                type: "select",
+                                dicData: [],
+                                props: {
+                                    label: "jdbcComment",
+                                    value: "jdbcName"
+                                },
+                                display: false,
+                                hide: true,
+                            },
+                        ]
+                    },
+                    {
+                        label: '生成配置',
+                        prop: 'codingSetting',
+                        icon: 'el-icon-printer',
+                        column: [
+                            {
+                                label: "基础业务",
+                                labelTip: '配置是否使用BladeX封装的BaseService解锁更多功能',
+                                prop: "baseMode",
+                                type: 'radio',
+                                dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
+                                props: {
+                                    label: "dictValue",
+                                    value: "dictKey"
+                                },
+                                value: 2,
+                                dataType: "number",
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请选择基础业务",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "包装器",
+                                labelTip: '配置是否使用Wrapper包装器来拓展Controller返回列表的字段',
+                                prop: "wrapMode",
+                                type: 'radio',
+                                dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
+                                props: {
+                                    label: "dictValue",
+                                    value: "dictKey"
+                                },
+                                value: 2,
+                                dataType: "number",
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请选择包装器",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "远程调用",
+                                labelTip: '配置是否使用Feign远程调用',
+                                prop: "feignMode",
+                                type: 'radio',
+                                dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
+                                props: {
+                                    label: "dictValue",
+                                    value: "dictKey"
+                                },
+                                value: 1,
+                                dataType: "number",
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请选择基础业务",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "代码风格",
+                                labelTip: '选择不同底层实现的代码模版',
+                                prop: "codeStyle",
+                                type: 'radio',
+                                dicData: [
+                                    {
+                                        label: "saber",
+                                        value: "saber"
+                                    },
+                                    {
+                                        label: "element",
+                                        value: "element"
+                                    }
+                                ],
+                                value: "saber",
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请选择代码风格",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "后端生成路径",
+                                prop: "apiPath",
+                                span: 24,
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入后端生成路径",
+                                    trigger: "blur"
+                                }]
+                            },
+                            {
+                                label: "前端生成路径",
+                                prop: "webPath",
+                                span: 24,
+                                hide: true,
+                                rules: [{
+                                    required: true,
+                                    message: "请输入前端生成路径",
+                                    trigger: "blur"
+                                }]
+                            }
+                        ]
                     }
-                  ],
-                  value: "saber",
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请选择代码风格",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "后端生成路径",
-                  prop: "apiPath",
-                  span: 24,
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入后端生成路径",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "前端生成路径",
-                  prop: "webPath",
-                  span: 24,
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入前端生成路径",
-                    trigger: "blur"
-                  }]
-                }
-              ]
-            }
-          ]
-        },
-        data: []
-      };
+                ]
+            },
+            data: []
+        }
     },
     watch: {
-      'form.modelId'() {
-        if (!validatenull(this.form.modelId)) {
-          // 获取数据模型信息
-          modelDetail(this.form.modelId).then(res => {
-            const result = res.data;
-            if (result.success) {
-              const {modelName, modelTable, modelCode} = result.data;
-              if (validatenull(this.form.tablePrefix)) {
-                this.form.tablePrefix = modelTable.split("_")[0] + "_";
-              }
-              if (validatenull(this.form.tableName)) {
-                this.form.tableName = modelTable;
-              }
-              if (validatenull(this.form.codeName)) {
-                this.form.codeName = modelName;
-              }
-              if (validatenull(this.form.serviceName)) {
-                this.form.serviceName = `blade-${modelCode}`;
-              }
-              if (validatenull(this.form.pkName)) {
-                this.form.pkName = "id";
-              }
-              if (validatenull(this.form.packageName)) {
-                this.form.packageName = `org.springblade.modules.${modelCode}`;
-              }
-              if (validatenull(this.form.subFkId) && !validatenull(this.form.tablePrefix)) {
-                this.form.subFkId = modelTable.replace(this.form.tablePrefix, "") + "_id";
-              }
+        'form.modelId' () {
+            if (!validatenull(this.form.modelId)) {
+                // 获取数据模型信息
+                modelDetail(this.form.modelId).then(res => {
+                    const result = res.data
+                    if (result.success) {
+                        const { modelName, modelTable, modelCode } = result.data
+                        if (validatenull(this.form.tablePrefix)) {
+                            this.form.tablePrefix = modelTable.split("_")[0] + "_"
+                        }
+                        if (validatenull(this.form.tableName)) {
+                            this.form.tableName = modelTable
+                        }
+                        if (validatenull(this.form.codeName)) {
+                            this.form.codeName = modelName
+                        }
+                        if (validatenull(this.form.serviceName)) {
+                            this.form.serviceName = `blade-${modelCode}`
+                        }
+                        if (validatenull(this.form.pkName)) {
+                            this.form.pkName = "id"
+                        }
+                        if (validatenull(this.form.packageName)) {
+                            this.form.packageName = `org.springblade.modules.${modelCode}`
+                        }
+                        if (validatenull(this.form.subFkId) && !validatenull(this.form.tablePrefix)) {
+                            this.form.subFkId = modelTable.replace(this.form.tablePrefix, "") + "_id"
+                        }
 
-              // 获取数据原型信息
-              prototypeDetail(this.form.modelId).then(res => {
-                const result = res.data;
-                if (result.success) {
-                  const columnTreeId = this.findObject(this.option.group, "treeId");
-                  const columnTreePid = this.findObject(this.option.group, "treePid");
-                  const columnTreeName = this.findObject(this.option.group, "treeName");
-                  columnTreeId.dicData = result.data;
-                  columnTreePid.dicData = result.data;
-                  columnTreeName.dicData = result.data;
-                }
-              });
+                        // 获取数据原型信息
+                        prototypeDetail(this.form.modelId).then(res => {
+                            const result = res.data
+                            if (result.success) {
+                                const columnTreeId = this.findObject(this.option.group, "treeId")
+                                const columnTreePid = this.findObject(this.option.group, "treePid")
+                                const columnTreeName = this.findObject(this.option.group, "treeName")
+                                columnTreeId.dicData = result.data
+                                columnTreePid.dicData = result.data
+                                columnTreeName.dicData = result.data
+                            }
+                        })
+                    }
+                })
             }
-          });
+        },
+        'form.templateType' () {
+            // 模版类型
+            const type = this.form.templateType
+
+            // 主子表字段显隐
+            const columnSubModelId = this.findObject(this.option.group, "subModelId")
+            const columnSubFkId = this.findObject(this.option.group, "subFkId")
+            columnSubModelId.display = type === "sub"
+            columnSubFkId.display = type === "sub"
+
+            // 树表字段显隐
+            const columnTreeId = this.findObject(this.option.group, "treeId")
+            const columnTreePid = this.findObject(this.option.group, "treePid")
+            const columnTreeName = this.findObject(this.option.group, "treeName")
+            columnTreeId.display = type === "tree"
+            columnTreePid.display = type === "tree"
+            columnTreeName.display = type === "tree"
+
         }
-      },
-      'form.templateType'() {
-        // 模版类型
-        const type = this.form.templateType;
-
-        // 主子表字段显隐
-        const columnSubModelId = this.findObject(this.option.group, "subModelId");
-        const columnSubFkId = this.findObject(this.option.group, "subFkId");
-        columnSubModelId.display = type === "sub";
-        columnSubFkId.display = type === "sub";
-
-        // 树表字段显隐
-        const columnTreeId = this.findObject(this.option.group, "treeId");
-        const columnTreePid = this.findObject(this.option.group, "treePid");
-        const columnTreeName = this.findObject(this.option.group, "treeName");
-        columnTreeId.display = type === "tree";
-        columnTreePid.display = type === "tree";
-        columnTreeName.display = type === "tree";
-
-      }
     },
     computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          addBtn: this.vaildData(this.permission.code_add, false),
-          viewBtn: this.vaildData(this.permission.code_view, false),
-          delBtn: this.vaildData(this.permission.code_delete, false),
-          editBtn: this.vaildData(this.permission.code_edit, false)
-        };
-      },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      }
+        ...mapGetters(["permission"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.code_add, false),
+                viewBtn: this.vaildData(this.permission.code_view, false),
+                delBtn: this.vaildData(this.permission.code_delete, false),
+                editBtn: this.vaildData(this.permission.code_edit, false)
+            }
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        }
     },
     methods: {
-      rowSave(row, done, loading) {
-        add(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          window.console.log(error);
-          loading();
-        });
-      },
-      rowUpdate(row, index, done, loading) {
-        update(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          window.console.log(error);
-          loading();
-        });
-      },
-      rowDel(row) {
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return remove(row.id);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
-            });
-          });
-      },
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDelete() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
+        rowSave (row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                })
+                done()
+            }, error => {
+                window.console.log(error)
+                loading()
+            })
+        },
+        rowUpdate (row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                })
+                done()
+            }, error => {
+                window.console.log(error)
+                loading()
+            })
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                })
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        handleBuild () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("是否生成选中模块的代码?", {
+                title: "代码生成确认",
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return build(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        handleCopy (row) {
+            copy(row.id).then(() => {
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "复制成功!"
+                })
+            })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getCode(this.form.id).then(res => {
+                    this.form = res.data.data
+                })
+            }
+            done()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            this.loading = true
+            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
         }
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return remove(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
-            });
-            this.$refs.crud.toggleSelection();
-          });
-      },
-      handleBuild() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
-        }
-        this.$confirm("是否生成选中模块的代码?", {
-          title: "代码生成确认",
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return build(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
-            });
-            this.$refs.crud.toggleSelection();
-          });
-      },
-      handleCopy(row) {
-        copy(row.id).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "复制成功!"
-          });
-        });
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getCode(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
-        }
-        done();
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
     }
-  };
+}
 </script>
diff --git a/src/views/tool/datasource.vue b/src/views/tool/datasource.vue
index 9516941..75b1d8d 100644
--- a/src/views/tool/datasource.vue
+++ b/src/views/tool/datasource.vue
@@ -1,278 +1,260 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               :page.sync="page"
-               :permission="permissionList"
-               :before-open="beforeOpen"
-               v-model="form"
-               ref="crud"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               @row-del="rowDel"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   plain
-                   v-if="permission.datasource_delete"
-                   @click="handleDelete">删 除
-        </el-button>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
+            :before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave"
+            @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.datasource_delete"
+                    @click="handleDelete">删 除
+                </el-button>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getList, getDetail, add, update, remove} from "@/api/tool/datasource";
-  import {mapGetters} from "vuex";
+import { getList, getDetail, add, update, remove } from "@/api/tool/datasource"
+import { mapGetters } from "vuex"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        selectionList: [],
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          dialogWidth: 900,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: true,
-          selection: true,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "名称",
-              prop: "name",
-              width: 120,
-              rules: [{
-                required: true,
-                message: "请输入数据源名称",
-                trigger: "blur"
-              }]
+export default {
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: "驱动类",
-              prop: "driverClass",
-              type: 'select',
-              dicData: [
-                {
-                  label: 'com.mysql.cj.jdbc.Driver',
-                  value: 'com.mysql.cj.jdbc.Driver',
-                }, {
-                  label: 'org.postgresql.Driver',
-                  value: 'org.postgresql.Driver',
-                }, {
-                  label: 'oracle.jdbc.OracleDriver',
-                  value: 'oracle.jdbc.OracleDriver',
-                }, {
-                  label: 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
-                  value: 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
-                }, {
-                  label: 'dm.jdbc.driver.DmDriver',
-                  value: 'dm.jdbc.driver.DmDriver',
-                }
-              ],
-              width: 200,
-              rules: [{
-                required: true,
-                message: "请输入驱动类",
-                trigger: "blur"
-              }]
+            selectionList: [],
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                dialogWidth: 900,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                menuWidth: 280,
+                column: [
+                    {
+                        label: "名称",
+                        prop: "name",
+                        width: 120,
+                        rules: [{
+                            required: true,
+                            message: "请输入数据源名称",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "驱动类",
+                        prop: "driverClass",
+                        type: 'select',
+                        dicData: [
+                            {
+                                label: 'com.mysql.cj.jdbc.Driver',
+                                value: 'com.mysql.cj.jdbc.Driver',
+                            }, {
+                                label: 'org.postgresql.Driver',
+                                value: 'org.postgresql.Driver',
+                            }, {
+                                label: 'oracle.jdbc.OracleDriver',
+                                value: 'oracle.jdbc.OracleDriver',
+                            }, {
+                                label: 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
+                                value: 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
+                            }, {
+                                label: 'dm.jdbc.driver.DmDriver',
+                                value: 'dm.jdbc.driver.DmDriver',
+                            }
+                        ],
+                        width: 200,
+                        rules: [{
+                            required: true,
+                            message: "请输入驱动类",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "用户名",
+                        prop: "username",
+                        width: 120,
+                        rules: [{
+                            required: true,
+                            message: "请输入用户名",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "密码",
+                        prop: "password",
+                        hide: true,
+                        rules: [{
+                            required: true,
+                            message: "请输入密码",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "连接地址",
+                        prop: "url",
+                        span: 24,
+                        rules: [{
+                            required: true,
+                            message: "请输入连接地址",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "备注",
+                        prop: "remark",
+                        span: 24,
+                        minRows: 3,
+                        hide: true,
+                        type: "textarea"
+                    },
+                ]
             },
-            {
-              label: "用户名",
-              prop: "username",
-              width: 120,
-              rules: [{
-                required: true,
-                message: "请输入用户名",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "密码",
-              prop: "password",
-              hide: true,
-              rules: [{
-                required: true,
-                message: "请输入密码",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "连接地址",
-              prop: "url",
-              span: 24,
-              rules: [{
-                required: true,
-                message: "请输入连接地址",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "备注",
-              prop: "remark",
-              span: 24,
-              minRows: 3,
-              hide: true,
-              type: "textarea"
-            },
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          addBtn: this.vaildData(this.permission.datasource_add, false),
-          viewBtn: this.vaildData(this.permission.datasource_view, false),
-          delBtn: this.vaildData(this.permission.datasource_delete, false),
-          editBtn: this.vaildData(this.permission.datasource_edit, false)
-        };
-      },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      }
+        ...mapGetters(["permission"]),
+        permissionList () {
+            return {
+                addBtn: this.vaildData(this.permission.datasource_add, false),
+                viewBtn: this.vaildData(this.permission.datasource_view, false),
+                delBtn: this.vaildData(this.permission.datasource_delete, false),
+                editBtn: this.vaildData(this.permission.datasource_edit, false)
+            }
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        }
     },
     methods: {
-      rowSave(row, done, loading) {
-        add(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          window.console.log(error);
-          loading();
-        });
-      },
-      rowUpdate(row, index, done, loading) {
-        update(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          window.console.log(error);
-          loading();
-        });
-      },
-      rowDel(row) {
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return remove(row.id);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
-            });
-          });
-      },
-      handleDelete() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
+        rowSave (row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                })
+                done()
+            }, error => {
+                window.console.log(error)
+                loading()
+            })
+        },
+        rowUpdate (row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                })
+                done()
+            }, error => {
+                window.console.log(error)
+                loading()
+            })
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                })
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then(res => {
+                    this.form = res.data.data
+                })
+            }
+            done()
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            this.loading = true
+            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
         }
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return remove(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
-            });
-            this.$refs.crud.toggleSelection();
-          });
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getDetail(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
-        }
-        done();
-      },
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
     }
-  };
+}
 </script>
 
-<style>
-</style>
+<style></style>
diff --git a/src/views/tool/model.vue b/src/views/tool/model.vue
index 685525f..6c8800f 100644
--- a/src/views/tool/model.vue
+++ b/src/views/tool/model.vue
@@ -1,371 +1,350 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               :page="page"
-               :permission="permissionList"
-               :before-open="beforeOpen"
-               v-model="form"
-               v-loading.fullscreen.lock="fullscreenLoading"
-               ref="crud"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               @row-del="rowDel"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   plain
-                   @click="handleDelete">删 除
-        </el-button>
-      </template>
-      <template slot-scope="{row}" slot="menu">
-        <el-button type="text"
-                   icon="el-icon-setting"
-                   size="small"
-                   plain
-                   class="none-border"
-                   @click.stop="handleModel(row)">模型配置
-        </el-button>
-      </template>
-      <template slot-scope="{row}" slot="modelTable">
-        <el-tag>{{ row.modelTable }}</el-tag>
-      </template>
-    </avue-crud>
-    <el-dialog title="数据库模型配置"
-               :visible.sync="modelBox"
-               :fullscreen="true"
-               append-to-body>
-      <avue-crud ref="crudModel" :option="optionModel" :table-loading="loading" :data="fields"></avue-crud>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="danger" @click="modelBox = false">关 闭</el-button>
-        <el-button type="primary" @click="handleSubmit">提 交</el-button>
-      </span>
-    </el-dialog>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page="page" :permission="permissionList"
+            :before-open="beforeOpen" v-model="form" v-loading.fullscreen.lock="fullscreenLoading" ref="crud"
+            @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel" @search-change="searchChange"
+            @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+            @size-change="sizeChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button type="danger" size="small" icon="el-icon-delete" plain @click="handleDelete">删 除
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="menu">
+                <el-button type="text" icon="el-icon-setting" size="small" plain class="none-border"
+                    @click.stop="handleModel(row)">模型配置
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="modelTable">
+                <el-tag>{{ row.modelTable }}</el-tag>
+            </template>
+        </avue-crud>
+        <el-dialog title="数据库模型配置" :visible.sync="modelBox" :fullscreen="true" append-to-body>
+            <avue-crud ref="crudModel" :option="optionModel" :table-loading="loading" :data="fields"></avue-crud>
+            <span slot="footer" class="dialog-footer">
+                <el-button type="danger" @click="modelBox = false">关 闭</el-button>
+                <el-button type="primary" @click="handleSubmit">提 交</el-button>
+            </span>
+        </el-dialog>
+    </basic-container>
 </template>
 
 <script>
 import {
-  getList,
-  getDetail,
-  add,
-  update,
-  remove,
-  getTableList,
-  getTableInfoByName,
-  getModelPrototype,
-  submitModelPrototype
-} from "@/api/tool/model";
-import {entityDic, option, optionModel} from "@/const/tool/model";
-import {validatenull} from "@/util/validate";
-import {mapGetters} from "vuex";
+    getList,
+    getDetail,
+    add,
+    update,
+    remove,
+    getTableList,
+    getTableInfoByName,
+    getModelPrototype,
+    submitModelPrototype
+} from "@/api/tool/model"
+import { entityDic, option, optionModel } from "@/const/tool/model"
+import { validatenull } from "@/util/validate"
+import { mapGetters } from "vuex"
 
 export default {
-  data() {
-    return {
-      form: {},
-      query: {},
-      loading: true,
-      loadingOption: {
-        lock: true,
-        text: '物理表读取中',
-        spinner: 'el-icon-loading',
-        background: 'rgba(0, 0, 0, 0)'
-      },
-      fullscreenLoading: false,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0
-      },
-      selectionList: [],
-      modelBox: false,
-      modelId: 0,
-      datasourceId: 1,
-      tableInfo: {},
-      active: 0,
-      stepStart: 0,
-      stepEnd: 4,
-      data: [],
-      option: option,
-      optionModel: optionModel,
-      formStep: {},
-      fields: [],
-      selectionModelList: [],
-      // 默认不需要显示的字段名
-      hideFields: ["id", "tenant_id", "create_user", "create_dept", "create_time", "update_user", "update_time", "status", "is_deleted"]
-    };
-  },
-  watch: {
-    'form.datasourceId'() {
-      if (!validatenull(this.form.datasourceId)) {
-        const fullLoading = this.$loading(this.loadingOption);
-        getTableList(this.form.datasourceId).then(res => {
-          const column = this.findObject(this.option.column, "modelTable");
-          column.dicData = res.data.data;
-          fullLoading.close();
-        }).catch(() => {
-          fullLoading.close();
-        })
-      }
-    },
-    'form.modelTable'() {
-      if (!validatenull(this.form.modelTable)) {
-        const fullLoading = this.$loading(this.loadingOption);
-        getTableInfoByName(this.form.modelTable, this.form.datasourceId).then(res => {
-          const result = res.data;
-          if (result.success) {
-            const {comment, entityName} = result.data;
-            if (validatenull(this.form.modelClass)) {
-              this.form.modelClass = entityName;
-            }
-            if (validatenull(this.form.modelName)) {
-              this.form.modelName = comment;
-            }
-            if (validatenull(this.form.modelCode)) {
-              this.form.modelCode = entityName.replace(/^\S/, s => s.toLowerCase());
-            }
-            fullLoading.close();
-          }
-        }).catch(() => {
-          fullLoading.close();
-        });
-      }
-    }
-  },
-  computed: {
-    ...mapGetters(["permission"]),
-    permissionList() {
-      return {
-        addBtn: true,
-        delBtn: true,
-        editBtn: true,
-        viewBtn: false
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach(ele => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  methods: {
-    rowSave(row, done, loading) {
-      add(row).then((res) => {
-        done();
-        this.onLoad(this.page);
-        this.$message({
-          type: "success",
-          message: "操作成功!"
-        });
-        this.$confirm("是否进行模型配置?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(() => {
-          let model = {
-            id: res.data.data.id,
-            datasourceId: res.data.data.datasourceId
-          };
-          this.handleModel(model);
-        });
-      }, error => {
-        loading();
-        window.console.log(error);
-      });
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(() => {
-        done();
-        this.onLoad(this.page);
-        this.$message({
-          type: "success",
-          message: "操作成功!"
-        });
-      }, error => {
-        loading();
-        window.console.log(error);
-      });
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-        });
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then(res => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionModelChange(list) {
-      this.selectionModelList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-    handleModel(row) {
-      this.fields = [];
-      this.modelBox = true;
-      this.loading = true;
-      this.modelId = row.id;
-      this.datasourceId = row.datasourceId;
-      getModelPrototype(this.modelId, this.datasourceId).then(res => {
-        const result = res.data;
-        if (result.success) {
-          this.fields = result.data;
-          this.fields.forEach(item => {
-            item.$cellEdit = true;
-            item.modelId = this.modelId;
-            // 根据字段物理类型自动适配实体类型
-            if (!validatenull(item.name)) {
-              item.jdbcName = item.name;
-              item.jdbcType = item.propertyType;
-              item.jdbcComment = item.comment;
-              if (item.propertyType === "LocalDateTime") {
-                item.propertyType = "Date";
-                item.propertyEntity = "java.util.Date";
-              } else {
-                entityDic.forEach(d => {
-                  if (d.label === item.propertyType) {
-                    item.propertyType = d.label;
-                    item.propertyEntity = d.value;
-                  }
-                });
-              }
-            }
-            // 首次加载配置默认值
-            if (validatenull(item.id)) {
-              item.isList = 1;
-              item.isForm = 1;
-              item.isRow = 0;
-              item.isRequired = 0;
-              item.isQuery = 0;
-              item.componentType = "input";
-              // 默认不需要显示的字段名配置
-              if (this.hideFields.includes(item.jdbcName)) {
-                item.isList = 0;
-                item.isForm = 0;
-                item.isRequired = 0;
-              }
-            }
-          });
-          this.loading = false;
+    data () {
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            loadingOption: {
+                lock: true,
+                text: '物理表读取中',
+                spinner: 'el-icon-loading',
+                background: 'rgba(0, 0, 0, 0)'
+            },
+            fullscreenLoading: false,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            selectionList: [],
+            modelBox: false,
+            modelId: 0,
+            datasourceId: 1,
+            tableInfo: {},
+            active: 0,
+            stepStart: 0,
+            stepEnd: 4,
+            data: [],
+            option: {
+                menuWidth: 280,
+                ...option,
+            },
+            optionModel: optionModel,
+            formStep: {},
+            fields: [],
+            selectionModelList: [],
+            // 默认不需要显示的字段名
+            hideFields: ["id", "tenant_id", "create_user", "create_dept", "create_time", "update_user", "update_time", "status", "is_deleted"]
         }
-      });
     },
-    handleSubmit() {
-      console.log(this.fields);
-      this.$confirm("确定提交模型配置?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning"
-      }).then(() => {
-        this.fields.forEach(item => {
-          entityDic.forEach(d => {
-            if (d.value === item.propertyEntity) {
-              item.propertyType = d.label;
+    watch: {
+        'form.datasourceId' () {
+            if (!validatenull(this.form.datasourceId)) {
+                const fullLoading = this.$loading(this.loadingOption)
+                getTableList(this.form.datasourceId).then(res => {
+                    const column = this.findObject(this.option.column, "modelTable")
+                    column.dicData = res.data.data
+                    fullLoading.close()
+                }).catch(() => {
+                    fullLoading.close()
+                })
             }
-          });
-        });
-        submitModelPrototype(this.fields).then(res => {
-          const result = res.data;
-          if (result.success) {
-            this.$message.success(result.msg);
-            this.modelBox = false;
-          } else {
-            this.$message.error(result.msg);
-          }
-        })
-      });
+        },
+        'form.modelTable' () {
+            if (!validatenull(this.form.modelTable)) {
+                const fullLoading = this.$loading(this.loadingOption)
+                getTableInfoByName(this.form.modelTable, this.form.datasourceId).then(res => {
+                    const result = res.data
+                    if (result.success) {
+                        const { comment, entityName } = result.data
+                        if (validatenull(this.form.modelClass)) {
+                            this.form.modelClass = entityName
+                        }
+                        if (validatenull(this.form.modelName)) {
+                            this.form.modelName = comment
+                        }
+                        if (validatenull(this.form.modelCode)) {
+                            this.form.modelCode = entityName.replace(/^\S/, s => s.toLowerCase())
+                        }
+                        fullLoading.close()
+                    }
+                }).catch(() => {
+                    fullLoading.close()
+                })
+            }
+        }
+    },
+    computed: {
+        ...mapGetters(["permission"]),
+        permissionList () {
+            return {
+                addBtn: true,
+                delBtn: true,
+                editBtn: true,
+                viewBtn: false
+            }
+        },
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
+    },
+    methods: {
+        rowSave (row, done, loading) {
+            add(row).then((res) => {
+                done()
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                })
+                this.$confirm("是否进行模型配置?", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    let model = {
+                        id: res.data.data.id,
+                        datasourceId: res.data.data.datasourceId
+                    }
+                    this.handleModel(model)
+                })
+            }, error => {
+                loading()
+                window.console.log(error)
+            })
+        },
+        rowUpdate (row, index, done, loading) {
+            update(row).then(() => {
+                done()
+                this.onLoad(this.page)
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                })
+            }, error => {
+                loading()
+                window.console.log(error)
+            })
+        },
+        rowDel (row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                })
+        },
+        handleDelete () {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据")
+                return
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                    this.$refs.crud.toggleSelection()
+                })
+        },
+        beforeOpen (done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then(res => {
+                    this.form = res.data.data
+                })
+            }
+            done()
+        },
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionModelChange (list) {
+            this.selectionModelList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        onLoad (page, params = {}) {
+            this.loading = true
+            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
+        },
+        handleModel (row) {
+            this.fields = []
+            this.modelBox = true
+            this.loading = true
+            this.modelId = row.id
+            this.datasourceId = row.datasourceId
+            getModelPrototype(this.modelId, this.datasourceId).then(res => {
+                const result = res.data
+                if (result.success) {
+                    this.fields = result.data
+                    this.fields.forEach(item => {
+                        item.$cellEdit = true
+                        item.modelId = this.modelId
+                        // 根据字段物理类型自动适配实体类型
+                        if (!validatenull(item.name)) {
+                            item.jdbcName = item.name
+                            item.jdbcType = item.propertyType
+                            item.jdbcComment = item.comment
+                            if (item.propertyType === "LocalDateTime") {
+                                item.propertyType = "Date"
+                                item.propertyEntity = "java.util.Date"
+                            } else {
+                                entityDic.forEach(d => {
+                                    if (d.label === item.propertyType) {
+                                        item.propertyType = d.label
+                                        item.propertyEntity = d.value
+                                    }
+                                })
+                            }
+                        }
+                        // 首次加载配置默认值
+                        if (validatenull(item.id)) {
+                            item.isList = 1
+                            item.isForm = 1
+                            item.isRow = 0
+                            item.isRequired = 0
+                            item.isQuery = 0
+                            item.componentType = "input"
+                            // 默认不需要显示的字段名配置
+                            if (this.hideFields.includes(item.jdbcName)) {
+                                item.isList = 0
+                                item.isForm = 0
+                                item.isRequired = 0
+                            }
+                        }
+                    })
+                    this.loading = false
+                }
+            })
+        },
+        handleSubmit () {
+            console.log(this.fields)
+            this.$confirm("确定提交模型配置?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                this.fields.forEach(item => {
+                    entityDic.forEach(d => {
+                        if (d.value === item.propertyEntity) {
+                            item.propertyType = d.label
+                        }
+                    })
+                })
+                submitModelPrototype(this.fields).then(res => {
+                    const result = res.data
+                    if (result.success) {
+                        this.$message.success(result.msg)
+                        this.modelBox = false
+                    } else {
+                        this.$message.error(result.msg)
+                    }
+                })
+            })
 
+        }
     }
-  }
-};
+}
 </script>
 
 <style>
 .none-border {
-  border: 0;
-  background-color: transparent !important;
+    border: 0;
+    background-color: transparent !important;
 }
 
 .step-div {
-  margin-top: 30px;
+    margin-top: 30px;
 }
 </style>
diff --git a/src/views/userHouse/houseHoldList.vue b/src/views/userHouse/houseHoldList.vue
index e9fd58c..d218f5b 100644
--- a/src/views/userHouse/houseHoldList.vue
+++ b/src/views/userHouse/houseHoldList.vue
@@ -159,6 +159,7 @@
           addBtn: true,
           dialogType: 'drawer',
           dialogClickModal: false,
+          menuWidth:280,
           column: [{
               label: "姓名",
               prop: "name",
diff --git a/src/views/wel/index.vue b/src/views/wel/index.vue
index 85f954c..9ffc176 100644
--- a/src/views/wel/index.vue
+++ b/src/views/wel/index.vue
@@ -1,34 +1,161 @@
 <template>
-  <div>
-
-  </div>
+    <div id="homeL">
+        <div class="homeL-up">
+            <span class="h1">基层智治综合协同平台</span>
+            <span class="h2">Grassroots intelligent governance integrated cooperation platform</span>
+        </div>
+        <div class="homeL-bar">
+            <div class="outS" @click="down1">
+                <div class="down1"><span>住户管理</span></div>
+            </div>
+            <div class="outS" @click="down2">
+                <div class="down2"><span>房屋管理</span></div>
+            </div>
+            <div class="outS" @click="down3">
+                <div class="down3"><span>E呼即办</span></div>
+            </div>
+            <div class="outS" @click="down4">
+                <div class="down4"><span>报事报修</span></div>
+            </div>
+            <div class="outS" @click="down5">
+                <div class="down5"><span>走访日志</span></div>
+            </div>
+        </div>
+    </div>
 </template>
-
+  
 <script>
-  import {mapGetters} from "vuex";
-
-  export default {
-    name: "wel",
-    data() {
-      return {
-        activeNames: ['1', '2', '3', '5'],
-        logActiveNames: ['31']
-      };
-    },
-    computed: {
-      ...mapGetters(["userInfo"]),
+export default {
+    data () {
+        return {
+            a: 1,
+        }
     },
     methods: {
-      handleChange(val) {
-        window.console.log(val);
-      }
+        down1 () {
+            this.$router.push({ path: "/userHouse/houseHoldList" })
+        },
+        down2 () {
+            this.$router.push({ path: "/userHouse/houseList" })
+        },
+        down3 () {
+            this.$router.push({ path: "/task/eCall/index" })
+        },
+        down4 () {
+            this.$router.push({ path: "/task/reportForRepairs" })
+        },
+        down5 () {
+            this.$router.push({ path: "/grid/gridWorkLog/index" })
+        },
     },
-  };
+    mouted () { },
+}
 </script>
+  
+<style lang="scss">
+#homeL {
+    display: flex;
+    flex-direction: column;
+    width: 100%;
+    height: 96.6%;
 
-<style>
-  .el-font-size {
-    font-size: 14px;
-  }
-</style>
+    //   border: 1px solid #000;
+    .homeL-up {
+        width: 100%;
+        height: 70%;
+        // border: 1px solid rgb(39, 164, 185);
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        flex-direction: column;
+        background-image: url("../../../public/img/bjkeji.png");
+        background-color: #fff;
+        background-repeat: no-repeat;
+        background-size: 100% 100%;
+        -moz-background-size: 100% 100%;
+        color: #4BA3FE;
 
+        .h1,
+        .h2 {
+            position: relative;
+            left: 22%;
+        }
+
+        .h1 {
+            font-size: 54px;
+        }
+
+        .h2 {
+            font-size: 28px;
+        }
+    }
+
+    .homeL-bar {
+        height: 0;
+        flex: 1;
+        width: 100%;
+        display: flex;
+        align-items: center;
+
+        .outS {
+            width: 20%;
+            height: 94.6%;
+            display: flex;
+            justify-content: center;
+        }
+
+        .down1,
+        .down2,
+        .down3,
+        .down4,
+        .down5 {
+            width: 96%;
+            height: 100%;
+            background-repeat: no-repeat;
+            background-size: 100% 100%;
+            cursor: pointer;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            border-radius: 5px;
+
+            &:hover {
+                width: 99%;
+                height: 99%;
+                transition: all 0.3s ease;
+            }
+
+            span {
+                position: relative;
+                top: -30px;
+                left: -50px;
+                font-weight: 600;
+                font-size: 30px;
+                color: #fff;
+                display: inline-block;
+                // border: 1px solid rgb(180, 22, 75);
+            }
+        }
+
+        .down1 {
+            background-image: url("../../../public/img/yijianbaoj.png");
+        }
+
+        .down2 {
+            background-image: url("../../../public/img/fangyi.png");
+        }
+
+        .down3 {
+            background-image: url("../../../public/img/anjian.png");
+        }
+
+        .down4 {
+            background-image: url("../../../public/img/tiwen.png");
+        }
+
+        .down5 {
+            background-image: url("../../../public/img/tongji.png");
+        }
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/work/claim.vue b/src/views/work/claim.vue
index eafbea2..97e0735 100644
--- a/src/views/work/claim.vue
+++ b/src/views/work/claim.vue
@@ -1,201 +1,182 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-download"
-                   v-if="permission.work_claim_sign"
-                   @click.stop="handleClaim(scope.row)">签收
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-info"
-                   v-if="permission.work_claim_detail"
-                   @click.stop="handleDetail(scope.row)">详情
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-search"
-                   v-if="permission.work_claim_follow"
-                   @click.stop="handleImage(scope.row,scope.index)">流程图
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="processDefinitionVersion">
-        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
-      </template>
-    </avue-crud>
-    <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+            @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-download" v-if="permission.work_claim_sign"
+                    @click.stop="handleClaim(scope.row)">签收
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-info" v-if="permission.work_claim_detail"
+                    @click.stop="handleDetail(scope.row)">详情
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-search" v-if="permission.work_claim_follow"
+                    @click.stop="handleImage(scope.row, scope.index)">流程图
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="processDefinitionVersion">
+                <el-tag>v{{ row.processDefinitionVersion }}</el-tag>
+            </template>
+        </avue-crud>
+        <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
+    </basic-container>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {claimList, claimTask} from "@/api/work/work";
-  import {flowCategory, flowRoute} from "@/util/flow";
+import { mapGetters } from "vuex"
+import { claimList, claimTask } from "@/api/work/work"
+import { flowCategory, flowRoute } from "@/util/flow"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionId: '',
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        processInstanceId: '',
-        flowBox: false,
-        workBox: false,
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          simplePage: true,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          selection: true,
-          editBtn: false,
-          addBtn: false,
-          viewBtn: false,
-          delBtn: false,
-          dialogWidth: 900,
-          menuWidth: 200,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "流程分类",
-              type: "select",
-              row: true,
-              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              dataType: "number",
-              slot: true,
-              prop: "category",
-              search: true,
-              hide: true,
-              width: 100,
+export default {
+    data () {
+        return {
+            form: {},
+            selectionId: '',
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: '流程名称',
-              prop: 'processDefinitionName',
-              search: true,
+            processInstanceId: '',
+            flowBox: false,
+            workBox: false,
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: true,
+                editBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                dialogWidth: 900,
+                menuWidth: 280,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "流程分类",
+                        type: "select",
+                        row: true,
+                        dicUrl: "/api/blade-system/dict/dictionary?code=flow",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey"
+                        },
+                        dataType: "number",
+                        slot: true,
+                        prop: "category",
+                        search: true,
+                        hide: true,
+                        width: 100,
+                    },
+                    {
+                        label: '流程名称',
+                        prop: 'processDefinitionName',
+                        search: true,
+                    },
+                    {
+                        label: '当前步骤',
+                        prop: 'taskName',
+                    },
+                    {
+                        label: '流程版本',
+                        prop: 'processDefinitionVersion',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '申请时间',
+                        prop: 'createTime',
+                        width: 165,
+                    },
+                ]
             },
-            {
-              label: '当前步骤',
-              prop: 'taskName',
-            },
-            {
-              label: '流程版本',
-              prop: 'processDefinitionVersion',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '申请时间',
-              prop: 'createTime',
-              width: 165,
-            },
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission", "flowRoutes"]),
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "flowRoutes"]),
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleClaim(row) {
-        this.$confirm("确定签收此任务?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return claimTask(row.taskId);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
-            });
-          });
-      },
-      handleDetail(row) {
-        this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}`});
-      },
-      handleImage(row) {
-        this.processInstanceId = row.processInstanceId;
-        this.flowBox = true;
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const query = {
-          ...this.query,
-          category: (params.category) ? flowCategory(params.category) : null
-        };
-        this.loading = true;
-        claimList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleClaim (row) {
+            this.$confirm("确定签收此任务?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return claimTask(row.taskId)
+                })
+                .then(() => {
+                    this.onLoad(this.page)
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    })
+                })
+        },
+        handleDetail (row) {
+            this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` })
+        },
+        handleImage (row) {
+            this.processInstanceId = row.processInstanceId
+            this.flowBox = true
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const query = {
+                ...this.query,
+                category: (params.category) ? flowCategory(params.category) : null
+            }
+            this.loading = true
+            claimList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  };
+}
 </script>
diff --git a/src/views/work/done.vue b/src/views/work/done.vue
index 83ceea1..ceaf494 100644
--- a/src/views/work/done.vue
+++ b/src/views/work/done.vue
@@ -1,178 +1,161 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :page.sync="page"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-info"
-                   v-if="permission.work_done_detail"
-                   @click.stop="handleDetail(scope.row)">详情
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-search"
-                   v-if="permission.work_done_follow"
-                   @click.stop="handleImage(scope.row,scope.index)">流程图
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="processDefinitionVersion">
-        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
-      </template>
-    </avue-crud>
-    <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form" :page.sync="page"
+            @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-info" v-if="permission.work_done_detail"
+                    @click.stop="handleDetail(scope.row)">详情
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-search" v-if="permission.work_done_follow"
+                    @click.stop="handleImage(scope.row, scope.index)">流程图
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="processDefinitionVersion">
+                <el-tag>v{{ row.processDefinitionVersion }}</el-tag>
+            </template>
+        </avue-crud>
+        <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
+    </basic-container>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {doneList} from "@/api/work/work";
-  import {flowCategory, flowRoute} from "@/util/flow";
+import { mapGetters } from "vuex"
+import { doneList } from "@/api/work/work"
+import { flowCategory, flowRoute } from "@/util/flow"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionId: '',
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        processInstanceId: '',
-        flowBox: false,
-        workBox: false,
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          selection: true,
-          editBtn: false,
-          addBtn: false,
-          viewBtn: false,
-          delBtn: false,
-          dialogWidth: 900,
-          menuWidth: 150,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "流程分类",
-              type: "select",
-              row: true,
-              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              dataType: "number",
-              slot: true,
-              prop: "category",
-              search: true,
-              hide: true,
-              width: 100,
+export default {
+    data () {
+        return {
+            form: {},
+            selectionId: '',
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: '流程名称',
-              prop: 'processDefinitionName',
-              search: true,
+            processInstanceId: '',
+            flowBox: false,
+            workBox: false,
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: true,
+                editBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                dialogWidth: 900,
+                menuWidth: 280,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "流程分类",
+                        type: "select",
+                        row: true,
+                        dicUrl: "/api/blade-system/dict/dictionary?code=flow",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey"
+                        },
+                        dataType: "number",
+                        slot: true,
+                        prop: "category",
+                        search: true,
+                        hide: true,
+                        width: 100,
+                    },
+                    {
+                        label: '流程名称',
+                        prop: 'processDefinitionName',
+                        search: true,
+                    },
+                    {
+                        label: '当前步骤',
+                        prop: 'taskName',
+                    },
+                    {
+                        label: '流程版本',
+                        prop: 'processDefinitionVersion',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '申请时间',
+                        prop: 'createTime',
+                        width: 165,
+                    },
+                ]
             },
-            {
-              label: '当前步骤',
-              prop: 'taskName',
-            },
-            {
-              label: '流程版本',
-              prop: 'processDefinitionVersion',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '申请时间',
-              prop: 'createTime',
-              width: 165,
-            },
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission", "flowRoutes"]),
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "flowRoutes"]),
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDetail(row) {
-        this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}`});
-      },
-      handleImage(row) {
-        this.processInstanceId = row.processInstanceId;
-        this.flowBox = true;
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const query = {
-          ...this.query,
-          category: (params.category) ? flowCategory(params.category) : null
-        };
-        this.loading = true;
-        doneList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDetail (row) {
+            this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` })
+        },
+        handleImage (row) {
+            this.processInstanceId = row.processInstanceId
+            this.flowBox = true
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const query = {
+                ...this.query,
+                category: (params.category) ? flowCategory(params.category) : null
+            }
+            this.loading = true
+            doneList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  };
+}
 </script>
diff --git a/src/views/work/send.vue b/src/views/work/send.vue
index 0a06f88..75ef0b5 100644
--- a/src/views/work/send.vue
+++ b/src/views/work/send.vue
@@ -1,188 +1,170 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :page.sync="page"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-info"
-                   v-if="permission.work_send_detail"
-                   @click.stop="handleDetail(scope.row)">详情
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-search"
-                   v-if="permission.work_send_follow"
-                   @click.stop="handleImage(scope.row,scope.index)">流程图
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="processDefinitionVersion">
-        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
-      </template>
-      <template slot-scope="{row}"
-                slot="processIsFinished">
-        <el-tag>{{row.processIsFinished==='finished' ? '已完成' : '未完成'}}</el-tag>
-      </template>
-    </avue-crud>
-    <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form" :page.sync="page"
+            @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-info" v-if="permission.work_send_detail"
+                    @click.stop="handleDetail(scope.row)">详情
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-search" v-if="permission.work_send_follow"
+                    @click.stop="handleImage(scope.row, scope.index)">流程图
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="processDefinitionVersion">
+                <el-tag>v{{ row.processDefinitionVersion }}</el-tag>
+            </template>
+            <template slot-scope="{row}" slot="processIsFinished">
+                <el-tag>{{ row.processIsFinished === 'finished' ? '已完成' : '未完成' }}</el-tag>
+            </template>
+        </avue-crud>
+        <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
+    </basic-container>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {sendList} from "@/api/work/work";
-  import {flowCategory,flowRoute} from "@/util/flow";
+import { mapGetters } from "vuex"
+import { sendList } from "@/api/work/work"
+import { flowCategory, flowRoute } from "@/util/flow"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionId: '',
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        processInstanceId: '',
-        flowBox: false,
-        workBox: false,
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          selection: true,
-          editBtn: false,
-          addBtn: false,
-          viewBtn: false,
-          delBtn: false,
-          dialogWidth: 900,
-          menuWidth: 150,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "流程分类",
-              type: "select",
-              row: true,
-              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              dataType: "number",
-              slot: true,
-              prop: "category",
-              search: true,
-              hide: true,
-              width: 100,
+export default {
+    data () {
+        return {
+            form: {},
+            selectionId: '',
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: '流程名称',
-              prop: 'processDefinitionName',
-              search: true,
+            processInstanceId: '',
+            flowBox: false,
+            workBox: false,
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: true,
+                editBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                dialogWidth: 900,
+                menuWidth: 280,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "流程分类",
+                        type: "select",
+                        row: true,
+                        dicUrl: "/api/blade-system/dict/dictionary?code=flow",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey"
+                        },
+                        dataType: "number",
+                        slot: true,
+                        prop: "category",
+                        search: true,
+                        hide: true,
+                        width: 100,
+                    },
+                    {
+                        label: '流程名称',
+                        prop: 'processDefinitionName',
+                        search: true,
+                    },
+                    {
+                        label: '当前步骤',
+                        prop: 'taskName',
+                    },
+                    {
+                        label: '流程版本',
+                        prop: 'processDefinitionVersion',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '流程进度',
+                        prop: 'processIsFinished',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '申请时间',
+                        prop: 'createTime',
+                        width: 165,
+                    },
+                ]
             },
-            {
-              label: '当前步骤',
-              prop: 'taskName',
-            },
-            {
-              label: '流程版本',
-              prop: 'processDefinitionVersion',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '流程进度',
-              prop: 'processIsFinished',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '申请时间',
-              prop: 'createTime',
-              width: 165,
-            },
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission", "flowRoutes"]),
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "flowRoutes"]),
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDetail(row) {
-        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` });
-      },
-      handleImage(row) {
-        this.processInstanceId = row.processInstanceId;
-        this.flowBox = true;
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const query = {
-          ...this.query,
-          category: (params.category) ? flowCategory(params.category) : null
-        };
-        this.loading = true;
-        sendList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleDetail (row) {
+            this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` })
+        },
+        handleImage (row) {
+            this.processInstanceId = row.processInstanceId
+            this.flowBox = true
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const query = {
+                ...this.query,
+                category: (params.category) ? flowCategory(params.category) : null
+            }
+            this.loading = true
+            sendList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  };
+}
 </script>
diff --git a/src/views/work/start.vue b/src/views/work/start.vue
index a4baecd..99b5c04 100644
--- a/src/views/work/start.vue
+++ b/src/views/work/start.vue
@@ -1,214 +1,194 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               :page.sync="page"
-               v-model="form"
-               ref="crud"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-radio-group v-model="mode" size="small">
-          <el-radio-button label="1">通用流程</el-radio-button>
-          <el-radio-button label="2">定制流程</el-radio-button>
-        </el-radio-group>
-      </template>
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-video-play"
-                   v-if="permission.work_start_flow"
-                   @click.stop="handleStart(scope.row)">发起
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-search"
-                   v-if="permission.work_start_image"
-                   @click.stop="handleImage(scope.row,scope.index)">流程图
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="tenantId">
-        <el-tag>{{row.tenantId===''?'通用':row.tenantId}}</el-tag>
-      </template>
-      <template slot-scope="{row}"
-                slot="version">
-        <el-tag>v{{row.version}}</el-tag>
-      </template>
-      <template slot-scope="{row}"
-                slot="suspensionState">
-        <el-tag>{{row.suspensionState===1?'激活':'挂起'}}</el-tag>
-      </template>
-      <template slot-scope="{row}"
-                slot="category">
-        <el-tag>{{row.categoryName}}</el-tag>
-      </template>
-    </avue-crud>
-    <flow-design is-dialog :is-display.sync="flowBox" :process-definition-id="processDefinitionId"></flow-design>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" v-model="form" ref="crud"
+            @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-radio-group v-model="mode" size="small">
+                    <el-radio-button label="1">通用流程</el-radio-button>
+                    <el-radio-button label="2">定制流程</el-radio-button>
+                </el-radio-group>
+            </template>
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-video-play" v-if="permission.work_start_flow"
+                    @click.stop="handleStart(scope.row)">发起
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-search" v-if="permission.work_start_image"
+                    @click.stop="handleImage(scope.row, scope.index)">流程图
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="tenantId">
+                <el-tag>{{ row.tenantId === '' ? '通用' : row.tenantId }}</el-tag>
+            </template>
+            <template slot-scope="{row}" slot="version">
+                <el-tag>v{{ row.version }}</el-tag>
+            </template>
+            <template slot-scope="{row}" slot="suspensionState">
+                <el-tag>{{ row.suspensionState === 1 ? '激活' : '挂起' }}</el-tag>
+            </template>
+            <template slot-scope="{row}" slot="category">
+                <el-tag>{{ row.categoryName }}</el-tag>
+            </template>
+        </avue-crud>
+        <flow-design is-dialog :is-display.sync="flowBox" :process-definition-id="processDefinitionId"></flow-design>
+    </basic-container>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {startList} from "@/api/work/work";
-  import {flowCategory, flowRoute} from "@/util/flow";
+import { mapGetters } from "vuex"
+import { startList } from "@/api/work/work"
+import { flowCategory, flowRoute } from "@/util/flow"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        mode: '1',
-        selectionId: '',
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        processDefinitionId: '',
-        flowBox: false,
-        workBox: false,
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          selection: true,
-          editBtn: false,
-          addBtn: false,
-          viewBtn: false,
-          delBtn: false,
-          menuWidth: 150,
-          dialogWidth: 900,
-          dialogClickModal: false,
-          column: [
-            {
-              label: '租户编号',
-              prop: 'tenantId',
-              slot: true,
-              width: 120,
+export default {
+    data () {
+        return {
+            form: {},
+            mode: '1',
+            selectionId: '',
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: "流程分类",
-              type: "select",
-              row: true,
-              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              dataType: "number",
-              slot: true,
-              prop: "category",
-              search: true,
-              width: 100,
+            processDefinitionId: '',
+            flowBox: false,
+            workBox: false,
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: true,
+                editBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                menuWidth: 280,
+                dialogWidth: 900,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: '租户编号',
+                        prop: 'tenantId',
+                        slot: true,
+                        width: 120,
+                    },
+                    {
+                        label: "流程分类",
+                        type: "select",
+                        row: true,
+                        dicUrl: "/api/blade-system/dict/dictionary?code=flow",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey"
+                        },
+                        dataType: "number",
+                        slot: true,
+                        prop: "category",
+                        search: true,
+                        width: 100,
+                    },
+                    {
+                        label: '流程标识',
+                        prop: 'key',
+                    },
+                    {
+                        label: '流程名称',
+                        prop: 'name',
+                        search: true,
+                    },
+                    {
+                        label: '流程版本',
+                        prop: 'version',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '状态',
+                        prop: 'suspensionState',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '部署时间',
+                        prop: 'deploymentTime',
+                        width: 165,
+                    },
+                ]
             },
-            {
-              label: '流程标识',
-              prop: 'key',
-            },
-            {
-              label: '流程名称',
-              prop: 'name',
-              search: true,
-            },
-            {
-              label: '流程版本',
-              prop: 'version',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '状态',
-              prop: 'suspensionState',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '部署时间',
-              prop: 'deploymentTime',
-              width: 165,
-            },
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     watch: {
-      'mode'() {
-        this.onLoad(this.page);
-      }
+        'mode' () {
+            this.onLoad(this.page)
+        }
     },
     computed: {
-      ...mapGetters(["permission", "flowRoutes"]),
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "flowRoutes"]),
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleStart(row) {
-        this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/form/${row.id}`});
-      },
-      handleImage(row) {
-        this.processDefinitionId = row.id;
-        this.flowBox = true;
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const query = {
-          ...this.query,
-          category: (params.category) ? flowCategory(params.category) : null,
-          mode: this.mode
-        };
-        this.loading = true;
-        startList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleStart (row) {
+            this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/form/${row.id}` })
+        },
+        handleImage (row) {
+            this.processDefinitionId = row.id
+            this.flowBox = true
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const query = {
+                ...this.query,
+                category: (params.category) ? flowCategory(params.category) : null,
+                mode: this.mode
+            }
+            this.loading = true
+            startList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  };
+}
 </script>
diff --git a/src/views/work/todo.vue b/src/views/work/todo.vue
index cb65914..27c0d22 100644
--- a/src/views/work/todo.vue
+++ b/src/views/work/todo.vue
@@ -1,187 +1,168 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot-scope="scope" slot="menu">
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-s-check"
-                   v-if="permission.work_todo_handle"
-                   @click.stop="handleWork(scope.row)">处理
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-info"
-                   v-if="permission.work_todo_detail"
-                   @click.stop="handleDetail(scope.row)">详情
-        </el-button>
-        <el-button type="text"
-                   size="small"
-                   icon="el-icon-search"
-                   v-if="permission.work_todo_follow"
-                   @click.stop="handleImage(scope.row,scope.index)">流程图
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="processDefinitionVersion">
-        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
-      </template>
-    </avue-crud>
-    <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+            @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot-scope="scope" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-s-check" v-if="permission.work_todo_handle"
+                    @click.stop="handleWork(scope.row)">处理
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-info" v-if="permission.work_todo_detail"
+                    @click.stop="handleDetail(scope.row)">详情
+                </el-button>
+                <el-button type="text" size="small" icon="el-icon-search" v-if="permission.work_todo_follow"
+                    @click.stop="handleImage(scope.row, scope.index)">流程图
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="processDefinitionVersion">
+                <el-tag>v{{ row.processDefinitionVersion }}</el-tag>
+            </template>
+        </avue-crud>
+        <flow-design is-dialog :is-display.sync="flowBox" :process-instance-id="processInstanceId"></flow-design>
+    </basic-container>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {todoList} from "@/api/work/work";
-  import {flowCategory,flowRoute} from "@/util/flow";
+import { mapGetters } from "vuex"
+import { todoList } from "@/api/work/work"
+import { flowCategory, flowRoute } from "@/util/flow"
 
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionId: '',
-        selectionList: [],
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        processInstanceId: '',
-        flowBox: false,
-        workBox: false,
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          tip: false,
-          simplePage: true,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          selection: true,
-          editBtn: false,
-          addBtn: false,
-          viewBtn: false,
-          delBtn: false,
-          dialogWidth: 900,
-          menuWidth: 200,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "流程分类",
-              type: "select",
-              row: true,
-              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              dataType: "number",
-              slot: true,
-              prop: "category",
-              search: true,
-              hide: true,
-              width: 100,
+export default {
+    data () {
+        return {
+            form: {},
+            selectionId: '',
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: '流程名称',
-              prop: 'processDefinitionName',
-              search: true,
+            processInstanceId: '',
+            flowBox: false,
+            workBox: false,
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: true,
+                editBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                dialogWidth: 900,
+                menuWidth: 280,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "流程分类",
+                        type: "select",
+                        row: true,
+                        dicUrl: "/api/blade-system/dict/dictionary?code=flow",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey"
+                        },
+                        dataType: "number",
+                        slot: true,
+                        prop: "category",
+                        search: true,
+                        hide: true,
+                        width: 100,
+                    },
+                    {
+                        label: '流程名称',
+                        prop: 'processDefinitionName',
+                        search: true,
+                    },
+                    {
+                        label: '当前步骤',
+                        prop: 'taskName',
+                    },
+                    {
+                        label: '流程版本',
+                        prop: 'processDefinitionVersion',
+                        slot: true,
+                        width: 80,
+                    },
+                    {
+                        label: '申请时间',
+                        prop: 'createTime',
+                        width: 165,
+                    },
+                ]
             },
-            {
-              label: '当前步骤',
-              prop: 'taskName',
-            },
-            {
-              label: '流程版本',
-              prop: 'processDefinitionVersion',
-              slot: true,
-              width: 80,
-            },
-            {
-              label: '申请时间',
-              prop: 'createTime',
-              width: 165,
-            },
-          ]
-        },
-        data: []
-      };
+            data: []
+        }
     },
     computed: {
-      ...mapGetters(["permission", "flowRoutes"]),
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      },
+        ...mapGetters(["permission", "flowRoutes"]),
+        ids () {
+            let ids = []
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id)
+            })
+            return ids.join(",")
+        },
     },
     methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleWork(row) {
-        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` });
-      },
-      handleDetail(row) {
-        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` });
-      },
-      handleImage(row) {
-        this.processInstanceId = row.processInstanceId;
-        this.flowBox = true;
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const query = {
-          ...this.query,
-          category: (params.category) ? flowCategory(params.category) : null
-        };
-        this.loading = true;
-        todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
+        searchReset () {
+            this.query = {}
+            this.onLoad(this.page)
+        },
+        searchChange (params, done) {
+            this.query = params
+            this.page.currentPage = 1
+            this.onLoad(this.page, params)
+            done()
+        },
+        selectionChange (list) {
+            this.selectionList = list
+        },
+        selectionClear () {
+            this.selectionList = []
+            this.$refs.crud.toggleSelection()
+        },
+        handleWork (row) {
+            this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` })
+        },
+        handleDetail (row) {
+            this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` })
+        },
+        handleImage (row) {
+            this.processInstanceId = row.processInstanceId
+            this.flowBox = true
+        },
+        currentChange (currentPage) {
+            this.page.currentPage = currentPage
+        },
+        sizeChange (pageSize) {
+            this.page.pageSize = pageSize
+        },
+        refreshChange () {
+            this.onLoad(this.page, this.query)
+        },
+        onLoad (page, params = {}) {
+            const query = {
+                ...this.query,
+                category: (params.category) ? flowCategory(params.category) : null
+            }
+            this.loading = true
+            todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
+                const data = res.data.data
+                this.page.total = data.total
+                this.data = data.records
+                this.loading = false
+                this.selectionClear()
+            })
+        }
     }
-  };
+}
 </script>

--
Gitblit v1.9.3