From af7f59aa953cac8c40921d37d2ba9aac7c4facdb Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Fri, 13 Aug 2021 19:20:03 +0800
Subject: [PATCH] 许可备案系统

---
 src/config/website.js           |    2 
 src/lang/zh.js                  |    6 
 src/page/login/index.vue        |   50 
 src/views/home/data.js          |  570 ++++++++++++
 src/api/revoke/revoke.js        |   14 
 vue.config.js                   |    4 
 public/index.html               |    1 
 src/api/permit/permit.js        |   51 +
 src/router/views/index.js       |   74 +
 src/views/record/record.vue     |   22 
 src/views/home/spi.vue          |  367 ++++++++
 src/views/permit/permit.vue     |   22 
 public/img/permit/close-btn.png |    0 
 src/views/home/index.vue        | 1136 +++++++++++++++++++++++++
 src/views/revoke/revoke.vue     |   22 
 src/api/recordk/recordk.js      |   14 
 src/page/index/top/index.vue    |   20 
 src/page/login/userlogin.vue    |    2 
 public/img/permit/服务许可背景图.jpg   |    0 
 src/page/login/codelogin.vue    |  233 ++++
 src/api/record/record.js        |   15 
 src/views/recordk/recordk.vue   |   22 
 22 files changed, 2,501 insertions(+), 146 deletions(-)

diff --git a/public/img/permit/close-btn.png b/public/img/permit/close-btn.png
new file mode 100644
index 0000000..6627b5b
--- /dev/null
+++ b/public/img/permit/close-btn.png
Binary files differ
diff --git "a/public/img/permit/\346\234\215\345\212\241\350\256\270\345\217\257\350\203\214\346\231\257\345\233\276.jpg" "b/public/img/permit/\346\234\215\345\212\241\350\256\270\345\217\257\350\203\214\346\231\257\345\233\276.jpg"
new file mode 100644
index 0000000..763ac11
--- /dev/null
+++ "b/public/img/permit/\346\234\215\345\212\241\350\256\270\345\217\257\350\203\214\346\231\257\345\233\276.jpg"
Binary files differ
diff --git a/public/index.html b/public/index.html
index 6722a7d..2520b4c 100644
--- a/public/index.html
+++ b/public/index.html
@@ -18,6 +18,7 @@
   <link rel="stylesheet" href="<%= BASE_URL %>cdn/avue/2.8.12/index.css">
   <script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
   <script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
+  <script type="text/javascript" src="js/jquery-2.1.3.min.js"></script>
   <link rel="icon" href="<%= BASE_URL %>favicon.png">
   <title>单位许可和备案系统</title>
   <style>
diff --git a/src/api/permit/permit.js b/src/api/permit/permit.js
index 696f8a4..ee00e68 100644
--- a/src/api/permit/permit.js
+++ b/src/api/permit/permit.js
@@ -1,9 +1,43 @@
 import request from '@/router/axios';
-import {urls} from '@/api/urls';
 
 export const getList = (current, size, params) => {
   return request({
     url: '/api/permit/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getListre = (current, size, params) => {
+  return request({
+    url: '/api/record/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+export const getListrev = (current, size, params) => {
+  return request({
+    url: '/api/revoke/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getListrek = (current, size, params) => {
+  return request({
+    url: '/api/recordk/list',
     method: 'get',
     params: {
       ...params,
@@ -41,14 +75,25 @@
   })
 }
 
-export const addnw = (row) => {
+export const adds = (row) => {
   return request({
-    url: urls+'/permit/save',
+    url: '/api/permit/storage',
     method: 'post',
     data: row
   })
 }
 
+
+export const selectIn = (cardid,ptype) => {
+  return request({
+    url: '/api/permit/selectIn',
+    method: 'post',
+    params: {
+      cardid,
+      ptype
+    }
+  })
+}
 export const update = (row) => {
   return request({
     url: '/api/permit/submit',
diff --git a/src/api/record/record.js b/src/api/record/record.js
index a331de0..875f132 100644
--- a/src/api/record/record.js
+++ b/src/api/record/record.js
@@ -1,5 +1,4 @@
 import request from '@/router/axios';
-import {urls} from '@/api/urls';
 export const getList = (current, size, params) => {
   return request({
     url: '/api/record/list',
@@ -40,13 +39,13 @@
   })
 }
 
-export const addnw = (row) => {
-  return request({
-    url: urls+'/record/save',
-    method: 'post',
-    data: row
-  })
-}
+// export const addnw = (row) => {
+//   return request({
+//     url: urls+'/record/save',
+//     method: 'post',
+//     data: row
+//   })
+// }
 
 export const update = (row) => {
   return request({
diff --git a/src/api/recordk/recordk.js b/src/api/recordk/recordk.js
index e6e8383..97c7fd9 100644
--- a/src/api/recordk/recordk.js
+++ b/src/api/recordk/recordk.js
@@ -40,13 +40,13 @@
   })
 }
 
-export const addnw = (row) => {
-  return request({
-    url: urls+'/recordk/save',
-    method: 'post',
-    data: row
-  })
-}
+// export const addnw = (row) => {
+//   return request({
+//     url: urls+'/recordk/save',
+//     method: 'post',
+//     data: row
+//   })
+// }
 
 export const update = (row) => {
   return request({
diff --git a/src/api/revoke/revoke.js b/src/api/revoke/revoke.js
index a5952e1..ae9ec99 100644
--- a/src/api/revoke/revoke.js
+++ b/src/api/revoke/revoke.js
@@ -39,13 +39,13 @@
     data: row
   })
 }
-export const addnw = (row) => {
-  return request({
-    url: urls+'/revoke/save',
-    method: 'post',
-    data: row
-  })
-}
+// export const addnw = (row) => {
+//   return request({
+//     url: urls+'/revoke/save',
+//     method: 'post',
+//     data: row
+//   })
+// }
 
 
 export const update = (row) => {
diff --git a/src/config/website.js b/src/config/website.js
index 7a6bcad..fd6e766 100644
--- a/src/config/website.js
+++ b/src/config/website.js
@@ -20,7 +20,7 @@
   isFirstPage: false,
   fistPage: {
     label: "申办许可申请",
-    value: "/wel/index",
+    value: "/wel",
     params: {},
     query: {},
     meta: {
diff --git a/src/lang/zh.js b/src/lang/zh.js
index 3d76c0d..f30a825 100644
--- a/src/lang/zh.js
+++ b/src/lang/zh.js
@@ -71,6 +71,8 @@
     tenantId: '请输入租户ID',
     username: '请输入账号',
     password: '请输入密码',
+    password2: '请再次输入密码',
+    name: '请输入姓名',
     wechat: '微信',
     qq: 'QQ',
     github: 'github',
@@ -78,8 +80,10 @@
     phone: '请输入手机号',
     code: '请输入验证码',
     submit: '登录',
+    zc:'注册',
+    gb:'关闭',
     userLogin: '账号密码登录',
-    phoneLogin: '手机号登录',
+    phoneLogin: '账号密码注册',
     thirdLogin: '第三方系统登录',
     msgText: '发送验证码',
     msgSuccess: '秒后重发',
diff --git a/src/page/index/top/index.vue b/src/page/index/top/index.vue
index 7e480e1..132b063 100644
--- a/src/page/index/top/index.vue
+++ b/src/page/index/top/index.vue
@@ -8,16 +8,16 @@
            @click="setCollapse"></i>
       </div>
     </div>
-    <div class="top-bar__title">
-      <div class="top-bar__item top-bar__item--show"
-           v-if="showMenu">
-        <top-menu ref="topMenu"></top-menu>
-      </div>
-      <span class="top-bar__item"
-            v-if="showSearch">
-        <top-search></top-search>
-      </span>
-    </div>
+<!--    <div class="top-bar__title">-->
+<!--      <div class="top-bar__item top-bar__item&#45;&#45;show"-->
+<!--           v-if="showMenu">-->
+<!--        <top-menu ref="topMenu"></top-menu>-->
+<!--      </div>-->
+<!--      <span class="top-bar__item"-->
+<!--            v-if="showSearch">-->
+<!--        <top-search></top-search>-->
+<!--      </span>-->
+<!--    </div>-->
     <div class="top-bar__right">
       <el-tooltip v-if="showColor"
                   effect="dark"
diff --git a/src/page/login/codelogin.vue b/src/page/login/codelogin.vue
index 79022c3..bd6bc6d 100644
--- a/src/page/login/codelogin.vue
+++ b/src/page/login/codelogin.vue
@@ -5,47 +5,93 @@
            ref="loginForm"
            :model="loginForm"
            label-width="0">
-    <el-form-item prop="phone">
+    <el-form-item prop="username">
       <el-input size="small"
                 @keyup.enter.native="handleLogin"
+                v-model="loginForm.username"
+                auto-complete="off"
+                :placeholder="$t('login.username')">
+        <i slot="prefix" class="icon-yonghu"/>
+      </el-input>
+    </el-form-item>
+    <el-form-item prop="password">
+      <el-input size="small"
+                @keyup.enter.native="handleLogin"
+                v-model="loginForm.password"
+                auto-complete="off"
+                show-password
+                :placeholder="$t('login.password')">
+        <i slot="prefix" class="icon-mima"/>
+      </el-input>
+    </el-form-item>
+    <el-form-item prop="password2">
+      <el-input size="small"
+                @keyup.enter.native="handleLogin"
+                v-model="loginForm.password2"
+                auto-complete="off"
+                show-password
+                :placeholder="$t('login.password2')">
+        <i slot="prefix" class="icon-mima"/>
+      </el-input>
+    </el-form-item>
+    <el-form-item prop="sname">
+      <el-input size="small"
+                @keyup.enter.native="handleLogin"
+                v-model="loginForm.sname"
+                auto-complete="off"
+                :placeholder="$t('login.name')">
+        <i slot="prefix" class="icon-yonghu"/>
+      </el-input>
+    </el-form-item>
+    <el-form-item prop="phone">
+      <el-input size="small"
                 v-model="loginForm.phone"
                 auto-complete="off"
                 :placeholder="$t('login.phone')">
-        <i slot="prefix"
-           class="icon-shouji"/>
+        <i slot="prefix" class="icon-shouji"/>
       </el-input>
     </el-form-item>
-    <el-form-item prop="code">
-      <el-input size="small"
-                @keyup.enter.native="handleLogin"
-                v-model="loginForm.code"
-                auto-complete="off"
-                :placeholder="$t('login.code')">
-        <i slot="prefix"
-           class="icon-yanzhengma"
-           style="margin-top:6px;"/>
-        <template slot="append">
-          <span @click="handleSend"
-                class="msg-text"
-                :class="[{display:msgKey}]">{{msgText}}</span>
-        </template>
-      </el-input>
-    </el-form-item>
-    <el-form-item>
+    <div style="margin-top: 16px">
+      <el-radio v-model="loginForm.sex" label="1" border size="medium">男</el-radio>
+      <el-radio v-model="loginForm.sex" label="2" border size="medium">女</el-radio>
+    </div>
+    <el-form-item class="z-login-submit-prv">
       <el-button size="small"
                  type="primary"
                  @click.native.prevent="handleLogin"
-                 class="login-submit">{{$t('login.submit')}}</el-button>
+                 class="z-login-submit">{{ $t('login.zc') }}
+      </el-button>
+      <el-button size="small"
+                 @click.native.prevent="gbs"
+                 class="z-login-submit">{{ $t('login.gb') }}
+      </el-button>
     </el-form-item>
   </el-form>
 </template>
 
 <script>
-import { isvalidatemobile } from "@/util/validate";
-import { mapGetters } from "vuex";
+import {isvalidatemobile} from "@/util/validate";
+import {mapGetters} from "vuex";
+
 export default {
   name: "codelogin",
   data() {
+    const validatePass = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请输入密码'));
+      } else {
+        callback();
+      }
+    };
+    const validatePass2 = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('请再次输入密码'));
+      } else if (value !== this.loginForm.password) {
+        callback(new Error('两次输入密码不一致!'));
+      } else {
+        callback();
+      }
+    };
     const validatePhone = (rule, value, callback) => {
       if (isvalidatemobile(value)[0]) {
         callback(new Error(isvalidatemobile(value)[1]));
@@ -63,22 +109,36 @@
     return {
       msgText: "",
       msgTime: "",
+      dic: [],
       msgKey: false,
       loginForm: {
         phone: "",
-        code: ""
+        username: "",
+        sname: "",
+        password: "",
+        sex: null,
+        deptid: '',
+        password2: ""
       },
+      value: '',
+      options: [],
       loginRules: {
-        phone: [{ required: true, trigger: "blur", validator: validatePhone }],
-        code: [{ required: true, trigger: "blur", validator: validateCode }]
-      }
+        phone: [{required: true, trigger: "blur", validator: validatePhone}],
+        code: [{required: true, trigger: "blur", validator: validateCode}],
+        password: [{required: true, validator: validatePass, trigger: 'blur'}],
+        password2: [{required: true, validator: validatePass2, trigger: 'blur'}],
+        username: [
+          {required: true, message: "请输入用户名", trigger: "blur"}
+        ],
+      },
+      passwordType: "password",
+      passwordTypes: "password2"
     };
   },
   created() {
     this.msgText = this.config.MSGINIT;
     this.msgTime = this.config.MSGTIME;
   },
-  mounted() {},
   computed: {
     ...mapGetters(["tagWel"]),
     config() {
@@ -91,6 +151,73 @@
   },
   props: [],
   methods: {
+    ergodicData(val) {
+      var arr = [];
+      arr.push({label: val[0].title, value: val[0].value, id: val[0].id, parent_id: val[0].parent_id});
+      if (val.length > 1) {
+        val.forEach((item, index) => {
+          if (index > 0) {
+            var ind = true;
+            var arrInd = 0;
+            arr.forEach((it, i) => {
+              if (item.parent_id == it.id) {
+                ind = false;
+                arrInd = i;
+                return
+              }
+            })
+            if (ind == false) {
+              if (arr[arrInd].children && arr[arrInd].children.length > 0) {
+                arr[arrInd].children.push({label: item.title, value: item.value, id: item.id, parent_id: item.parent_id});
+              } else {
+                arr[arrInd].children = [];
+                arr[arrInd].children.push({label: item.title, value: item.value, id: item.id, parent_id: item.parent_id});
+              }
+            } else {
+              arr.push({label: item.title, value: item.value, id: item.id, parent_id: item.parent_id});
+            }
+          }
+        })
+      }
+
+      return arr;
+    },
+
+    clearValidate(formName) {
+      this.$refs[formName].clearValidate();
+    },
+    refreshCode(row) {
+      console.log(this.loginForm)
+      inster(row).then(res => {
+        this.loginForm.phone = ""
+        this.loginForm.username = ""
+        this.loginForm.sname = ""
+        this.loginForm.sex = null
+        this.loginForm.password = ""
+        this.loginForm.password2 = ""
+        this.loginForm.deptid = ""
+        this.$notify({
+          title: '注册成功,待审核',
+          type: 'warning'
+        });
+      })
+      var z = document.querySelector('.z');
+      z.style.display = 'none';
+      this.clearValidate('loginForm')
+      this.clearValidate('loginForm')
+    },
+    gb() {
+      this.loginForm.phone = ""
+      this.loginForm.username = ""
+      this.loginForm.sname = ""
+      this.loginForm.sex = null
+      this.loginForm.password = ""
+      this.loginForm.password2 = ""
+      this.loginForm.deptid = ""
+      var zs = document.querySelector('.z');
+      zs.style.display = 'none';
+      this.clearValidate('loginForm')
+    },
     handleSend() {
       if (this.msgKey) return;
       this.msgText = this.msgTime + this.config.MSGSCUCCESS;
@@ -106,28 +233,70 @@
         }
       }, 1000);
     },
+    showPassword() {
+      this.passwordType === ""
+        ? (this.passwordType = "password")
+        : (this.passwordType = "");
+    },
+    showPasswords() {
+      this.passwordType === ""
+        ? (this.passwordType = "password2")
+        : (this.passwordType = "");
+    },
     handleLogin() {
       this.$refs.loginForm.validate(valid => {
+        console.log(valid)
         if (valid) {
-          this.$store.dispatch("LoginByPhone", this.loginForm).then(() => {
-            this.$router.push({ path: this.tagWel.value });
-          });
+          this.refreshCode(this.loginForm);
+          this.message('dahsiofhiusa');
+          return Promise.reject(new Error("注册成功,待审核"));
         }
       });
+    },
+    gbs() {
+      this.gb();
     }
   }
+
 };
 </script>
 
 <style>
 .msg-text {
   display: block;
-  width: 60px;
+  width: 40px;
   font-size: 12px;
   text-align: center;
   cursor: pointer;
 }
+
 .msg-text.display {
   color: #ccc;
 }
+
+.z-login-submit-prv {
+  margin-top: 20px;
+  padding: 0 10%;
+  box-sizing: border-box;
+}
+
+.z-login-submit-prv > div {
+  width: 80%;
+  display: flex;
+}
+
+.z-login-submit {
+  flex: 1;
+  height: 45px;
+  border: 1px solid #409EFF;
+  background: none;
+  font-size: 18px;
+  letter-spacing: 2px;
+  font-weight: 300;
+  color: #409EFF;
+  cursor: pointer;
+  font-family: "neo";
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+}
 </style>
diff --git a/src/page/login/index.vue b/src/page/login/index.vue
index a1aa03f..2eb0b85 100644
--- a/src/page/login/index.vue
+++ b/src/page/login/index.vue
@@ -15,19 +15,22 @@
         <div class="login-main">
           <h4 class="login-title">
             {{ $t('login.title') }}
-<!--            <top-lang></top-lang>-->
+            <!--            <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>
+          <!--          <h4 class="login-title-child">IoT security cloud service platform</h4>-->
+          <userLogin></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="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>-->
+            <a href="#" @click.stop="zShow">{{ $t('login.phoneLogin') }}</a>
+            <!--   <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>-->
           </div>
         </div>
-
       </div>
+    </div>
+    <div class="z" v-show="activeName == 'code'">
+      <codeLogin></codeLogin>
     </div>
   </div>
 </template>
@@ -109,11 +112,40 @@
             loading.close();
           });
         }
-      }
+      },
+    zShow() {
+    document.querySelector('.z').style.display = 'block';
+  }
     }
   };
 </script>
 
 <style lang="scss">
+.z {
+  position: fixed;
+  margin: auto;
+  padding: 10px;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 80px;
+  width: 600px;
+  height: 500px;
+  background-color: #fff;
+  box-sizing: border-box;
+  box-shadow: 6px 6px 5px #909090;
+}
+
+.company-jx {
+  position: fixed;
+  margin: auto;
+  top: auto;
+  left: 0px;
+  right: 0px;
+  bottom: 120px;
+  text-align: center;
+  color: #fff;
+  font-size: 15px;
+}
   @import "@/styles/login.scss";
 </style>
diff --git a/src/page/login/userlogin.vue b/src/page/login/userlogin.vue
index 63f477a..dd64af7 100644
--- a/src/page/login/userlogin.vue
+++ b/src/page/login/userlogin.vue
@@ -5,7 +5,7 @@
            ref="loginForm"
            :model="loginForm"
            label-width="0">
-    <el-form-item v-if="tenantMode" prop="tenantId">
+    <el-form-item v-if="false" prop="tenantId">
       <el-input size="small"
                 @keyup.enter.native="handleLogin"
                 v-model="loginForm.tenantId"
diff --git a/src/router/views/index.js b/src/router/views/index.js
index 23531f1..6722a1c 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -1,28 +1,60 @@
 import Layout from '@/page/index/'
 
-export default [{
-  path: '/wel',
-  component: Layout,
-  redirect: '/wel/index',
-  children: [{
-    path: 'index',
-    name: '申办许可申请',
-    meta: {
-      i18n: 'dashboard'
-    },
+export default [
+  {
+    path: '/homespi',
     component: () =>
-      import( /* webpackChunkName: "views" */ '@/views/permit/permit')
-  }, {
-    path: 'dashboard',
-    name: '控制台',
-    meta: {
-      i18n: 'dashboard',
-      menu: false,
-    },
+      import( /* webpackChunkName: "views" */ '@/views/home/spi')
+  },
+  {
+    path: '/wel',
     component: () =>
-      import( /* webpackChunkName: "views" */ '@/views/wel/dashboard')
-  }]
-}, {
+      import('@/views/home/index')
+    // component: Layout,
+    // redirect: '/wel/index',
+    // children: [{
+    //   path: 'index',
+    //   name: '首页',
+    //   meta: {
+    //     i18n: 'dashboard'
+    //   },
+    //   component: () =>
+    //     import( /* webpackChunkName: "views" */ '@/views/wel/index')
+    // }, {
+    //   path: 'dashboard',
+    //   name: '控制台',
+    //   meta: {
+    //     i18n: 'dashboard',
+    //     menu: false,
+    //   },
+    //   component: () =>
+    //     import( /* webpackChunkName: "views" */ '@/views/wel/dashboard')
+    // }]
+  },
+//   {
+//   path: '/wel',
+//   component: Layout,
+//   redirect: '/wel/index',
+//   children: [{
+//     path: 'index',
+//     name: '申办许可申请',
+//     meta: {
+//       i18n: 'dashboard'
+//     },
+//     component: () =>
+//       import( /* webpackChunkName: "views" */ '@/views/permit/permit')
+//   }, {
+//     path: 'dashboard',
+//     name: '控制台',
+//     meta: {
+//       i18n: 'dashboard',
+//       menu: false,
+//     },
+//     component: () =>
+//       import( /* webpackChunkName: "views" */ '@/views/wel/dashboard')
+//   }]
+// },
+{
   path: '/test',
   component: Layout,
   redirect: '/test/index',
diff --git a/src/views/home/data.js b/src/views/home/data.js
new file mode 100644
index 0000000..0af47c1
--- /dev/null
+++ b/src/views/home/data.js
@@ -0,0 +1,570 @@
+
+export var column = [
+  {
+    label: "统一社会信用代码",
+    prop: "creditcode",
+    width: 140,
+    hide: true,
+    labelWidth: 160,
+  },
+  {
+    label: "企业名称",
+    prop: "enterprisename",
+    search: true,
+    searchSpan: 4,
+    labelWidth: 160,
+    // width: 130,
+    overHidden: true
+  },
+  {
+    label: "企业类型",
+    prop: "stats",
+    type: "tree",
+    labelWidth: 160,
+    dicUrl: "/api/blade-system/dict-biz/dictionary?code=stats",
+    props: {
+      label: "dictValue",
+      value: "dictKey"
+    },
+    width: 130,
+    rules: [
+      {
+        required: true,
+        message: "请选择企业类型",
+        trigger: "click",
+      },
+    ],
+  },
+  {
+    label: "法定代表人",
+    labelWidth: 160,
+    prop: "representative",
+    width: 80,
+    search: true,
+    searchSpan: 4,
+    searchLabelWidth: 100
+  },
+  {
+    label: "成立日期",
+    prop: "establishtime",
+    labelWidth: 160,
+    width: 130,
+    overHidden: true,
+    type: "date",
+    format: "yyyy-MM-dd",
+    valueFormat: "timestamp",
+    // addDisplay: true,
+    // editDisplay: true,
+    // viewDisplay: true,
+    // searchSpan: 4,
+    // dicUrl: "/api/blade-system/dict-biz/dictionary?code=experienceType",
+    // props: {
+    //     label: "dictValue",
+    //     value: "dictKey"
+    // },
+    // search: true,
+    // type: "select",
+    // // rules: [{
+    // //     required: true,
+    // //     message: "请选择工作经验",
+    // //     trigger: "blur"
+    // // }],
+  },
+  {
+    label: "注册资本(万元人民币)",
+    prop: "registeredcapital",
+    labelWidth: 160,
+    // search: true,
+    width: 140,
+    // overHidden: true
+  },
+  {
+    label: "实缴资本(万元人民币)",
+    prop: "capital",
+    labelWidth: 160,
+    // width: 85,
+    hide: true,
+    // search: true,
+    // searchSpan: 4,
+    // overHidden: true
+  },
+  {
+    label: "组织机构代码",
+    labelWidth: 160,
+    prop: "organizationcode",
+    // width: 110,
+    // search: true,
+    // searchSpan: 4,
+  },
+  {
+    label: "工商注册号",
+    prop: "registrationnumber",
+    labelWidth: 160,
+    width: 120,
+    // search: true,
+    // searchSpan: 4,
+  },
+  {
+    label: "纳税人识别号",
+    prop: "identificationnumber",
+    labelWidth: 160,
+    width: 140,
+    // addDisplay: true,
+    // editDisplay: true,
+    // viewDisplay: true,
+    // searchSpan: 4,
+    // dicUrl: "/api/blade-system/dict-biz/dictionary?code=unitsNatureType",
+    // props: {
+    //     label: "dictValue",
+    //     value: "dictKey"
+    // },
+    // // search: true,
+    // type: "select",
+    // // rules: [{
+    // //     required: false,
+    // //     message: "请选择单位规模",
+    // //     trigger: "blur"
+    // // }],
+  },
+  {
+    label: "注册地址",
+    prop: "address",
+    labelWidth: 160,
+    // search: true,
+    hide: true,
+  },
+  {
+    label: "经营范围",
+    prop: "business",
+    // search: true,
+    labelWidth: 160,
+    hide: true,
+    // width: 110,
+    overHidden: true
+  },
+  {
+    label: "所属地区",
+    prop: "region",
+    labelWidth: 160,
+    // width: 110,
+    // search: true,
+    overHidden: true
+  },
+  {
+    label: "登记机关",
+    prop: "registration",
+    // search: true,
+    labelWidth: 160,
+    // width: 88,
+    overHidden: true,
+    hide: true,
+  },
+  {
+    label: "所属行业",
+    prop: "industry",
+    labelWidth: 160,
+    hide: true,
+    // search: true,
+    // width: 88,
+  },
+]
+
+var w = 160
+  , s = 12;
+export var column0 = [
+  {
+    label: "",
+    labelWidth: 20,
+    type: 'title',
+    prop: "title0",
+    span: 24,
+    styles: {
+      fontSize: '24px'
+    }
+  },
+  {
+    label: "统一社会信用代码",
+    prop: "creditcode",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入社会信用代码",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "辖区",
+    prop: "jurisdiction",
+    // type: "tree",
+    // disabled: true,
+    type: "tree",
+    dicUrl: "/api/jurisdiction/lazy-trees",
+    props: {
+      label: "title",
+      value: "id"
+    },
+    labelWidth: w,
+    span: s,
+  },
+  {
+    label: "企业类型",
+    prop: "stats",
+    type: "tree",
+    dicUrl: "/api/blade-system/dict-biz/dictionary?code=stats",
+    props: {
+      label: "dictValue",
+      value: "dictKey"
+    },
+    labelWidth: w,
+    span: s,
+  },
+  {
+    label: "企业名称",
+    prop: "enterprisename",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入企业名称",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "法定代表人",
+    prop: "representative",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入法定代表人",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "成立日期",
+    prop: "establishtime",
+    labelWidth: w,
+    span: s,
+    type: "date",
+    format: "yyyy-MM-dd",
+    valueFormat: "timestamp",
+  },
+  {
+    label: "注册资本(万元人民币)",
+    prop: "registeredcapital",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入注册资本",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "实缴资本(万元人民币)",
+    prop: "capital",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入实缴资本",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "组织机构代码",
+    prop: "organizationcode",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入组织机构代码",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "工商注册号",
+    prop: "registrationnumber",
+
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入工商注册号",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "纳税人识别号",
+    prop: "identificationnumber",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入纳税人识别号",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "企业类型",
+    prop: "enterprises",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入企业类型",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "注册地址",
+    prop: "address",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入注册地址",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "经营范围",
+    prop: "business",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入经营范围",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "所属地区",
+    prop: "region",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入所属地区",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "登记机关",
+    prop: "registration",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入登记机关",
+      trigger: "blur"
+    }]
+    // overHidden: true,
+  },
+  {
+    label: "所属行业",
+    prop: "industry",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入所属行业",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: '拖拽上传',
+    prop: 'imgUrl5',
+    type: 'upload',
+    span: 24,
+    drag: true,
+    propsHttp: {
+      res: 'data'
+    },
+    tip: '只能上传jpg/png文件,且不超过500kb',
+    action: '/api/blade-resource/oss/endpoint/put-file-attach?deptid=&type=0'
+  },
+]
+
+export var column1 = [
+  {
+    label: "",
+    labelWidth: 20,
+    type: 'title',
+    prop: "title1",
+    span: 24,
+    styles: {
+      fontSize: '24px'
+    }
+  },
+  {
+    label: "统一社会信用代码",
+    prop: "creditcode",
+    disabled: true,
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入统一社会信用代码",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "股东",
+    prop: "shareholder",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入法定代表人",
+      trigger: "blur"
+    }]
+  }, {
+    label: "持股比例(%)",
+    prop: "shareholdingratio",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入持股比例",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "出资金额",
+    prop: "capital2",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入出资金额",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: "出资时间",
+    prop: "capitaltime",
+    type: "date",
+    format: "yyyy-MM-dd",
+    valueFormat: "timestamp",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入法定代表人",
+      trigger: "blur"
+    }]
+  }, {
+    label: "身份证",
+    prop: "cardid",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入身份证",
+      trigger: "blur"
+    }]
+  }, {
+    label: "联系电话",
+    prop: "cell",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入联系电话",
+      trigger: "blur"
+    }]
+  },
+]
+
+export var column2 = [
+  {
+    label: "",
+    labelWidth: 20,
+    type: 'title',
+    prop: "title2",
+    span: 24,
+    styles: {
+      fontSize: '24px'
+    }
+  },
+  {
+    label: "统一社会信用代码",
+    prop: "creditcode",
+    disabled: true,
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入统一社会信用代码",
+      trigger: "blur"
+    }]
+  },
+  // {
+  //     label: "部门",
+  //     prop: "departmentid",
+  //     // type: "tree",
+  //     disabled: true,
+  //     dicData: [],
+  //     labelWidth: w,
+  //     span: s,
+  //     props: {
+  //         label: "title",
+  //     },
+  //     rules: [
+  //         {
+  //             required: true,
+  //             message: "请选择所属部门",
+  //             trigger: "click",
+  //         },
+  //     ],
+  // },
+  {
+    label: "姓名",
+    prop: "name",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入姓名",
+      trigger: "blur"
+    }]
+  }, {
+    label: "职务",
+    prop: "post",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入职务",
+      trigger: "blur"
+    }]
+  }, {
+    label: "身份证",
+    prop: "cardid2",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入身份证",
+      trigger: "blur"
+    }]
+  }, {
+    label: "联系电话",
+    prop: "cell2",
+    labelWidth: w,
+    span: s,
+    rules: [{
+      required: true,
+      message: "请输入联系电话",
+      trigger: "blur"
+    }]
+  }
+  // , {
+  //     label: "持股比例(%)",
+  //     prop: "shareholdingratio2",
+  //     labelWidth: w,
+  //     span: s
+  // }
+]
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
new file mode 100644
index 0000000..16eec77
--- /dev/null
+++ b/src/views/home/index.vue
@@ -0,0 +1,1136 @@
+<template>
+  <div style="width: 100%;height: 100%; background: #ccc;">
+    <div style="background-color: #25aff3;width: 100%;height: 50px;">
+      <span
+        style="display: inline-block;color: #ffffff;font-size: 24px;line-height: 50px;margin-left: 5px;">服务许可审批备案系统</span>
+      <div
+        style="display: block;float: right;height: 50px;padding-right: 52px;color: #fff;line-height: 50px;cursor: pointer;position: relative;">
+        <img src="http://nx.baibaodun.cn:80/assets/images/username-person.png"
+             style="display: inline-block;vertical-align: middle">
+        <i
+          style="font-style: normal;color: #ffffff;font-size: 16px;line-height: 50px;display: inline-block;margin: 0; padding-left: 4px">{{userName}}</i>
+        <a style="margin-left: 15px;color: #ffffff;font-size: 16px;line-height: 50px" @click="logout">退出登录</a>
+      </div>
+    </div>
+    <div style="position: relative;
+    width: 100%;
+    height: 100%;background:#eff2fa">
+      <div class="header">
+        <h2 style="text-align: center;margin: 0;padding-top: 20px;">保安相关申请流程</h2>
+        <button
+          style="border:1px solid red;border-radius:3px; position: absolute;right: 16%;top: 30px;height:25px;width: 140px;text-align:center"
+          @click="ss">
+          审批进度查询
+        </button>
+      </div>
+
+      <div class="main">
+        <div v-for="(item, index) in menuData"
+             :key="index"
+             class='item-box'>
+
+          <div class='box-top'
+               :style="{ background: item.topUrl }"
+               @click="targetClick(item)">
+
+            <div class='img-box'>
+              <img :src="item.centerUrl"
+                   alt="">
+            </div>
+
+          </div>
+
+          <div class="box-bottom">
+            {{ item.menuName }}
+          </div>
+
+        </div>
+      </div>
+    </div>
+    <div class="detail-box" v-show="onit">
+      <span class="layui-layer-setwin">
+        <a class="layui-layer-ico layui-layer-close layui-layer-close1" href="javascript:;" id="close"></a>
+      </span>
+      <div class="layui-layer-title" style="height: 40px;line-height:40px;">保安服务公司许可证</div>
+      <span class="layui-layer-setwin"><a class="layui-layer-ico layui-layer-close layui-layer-close1"
+                                          href="javascript:;" @click="js_method"></a></span>
+      <div id="" class="layui-layer-content" style="height: 298px;">
+        <div class="radio-custom radio-primary">
+          <label for="sponsorlicenseType1">
+            <input id="sponsorlicenseType1" type="radio" value="0" name="sponsorlicenseType" ref="name"
+                   checked="">保安服务公司设立许可</label>
+          <div class="handling-guideline"><p>材料说明:普通保安服务公司是指申请服务范围为:门卫、巡逻、守护、随身护卫、安全检查、安全技术防范、安全风险评估、区域秩序维护的公司。</p>
+          </div>
+        </div>
+        <div class="radio-custom radio-primary">
+          <label for="sponsorlicenseType2"><input id="sponsorlicenseType2" type="radio" value="1" ref="name"
+                                                  name="sponsorlicenseType">保安培训公司设立许可</label>
+          <div class="handling-guideline"><p>
+            国务院《保安服务管理条例》(2009年国务院令第564号)第九条:申请设立保安服务公司,应当向所在地设区的市级人民政府公安机关提交申请书以及能够证明其符合本条例第八条规定条件的材料。</p>
+          </div>
+        </div>
+      </div>
+      <div class="layui-layer-btn" style="margin-left: 260px">
+        <button class="layui-layer-btn0" @click="onNext"
+                style="position: absolute;width: 95px; border: 1px solid #2673e5;background: rgb(46, 141, 237);border-radius: 4px;width: 100px;height: 38px;">
+          确认
+        </button>
+      </div>
+
+    </div>
+
+    <div class="lod" v-if="forms != 0">
+      <div class="lod-in">
+        <div v-show="forms == 1" class="first-box-outer">
+          <div class="first-box-title" style="">设立保安服务公司行政许可证
+          </div>
+          <div class="first-box-content">
+            <div class="handling-guideline">
+              <h2 class="hand-title">保安服务公司许可办理指南</h2>
+              <div class="hand-content">
+                <p><label>审批依据:</label></p>
+                <p>
+                  1、《保安服务管理条例》(中华人民共和国国务院令第564号);<br>
+
+                  2、《公安机关实施保安服务管理条例办法》(中华人民共和国公安部令 第 112 号);<br>
+
+                  3、关于印发《宁夏回族自治区保安服务公司许可备案实施细则(试行)》和《宁夏回族自治区保安培训机构管理办法实施细则(试行)》的通知(宁公通〔2017〕61号);<br>
+
+                </p>
+                <p><label>申请条件:</label>自然人、法人和其他组织。自然人需要有完全民事行为能力,年满18周岁且不具有精神疾病。 </p>
+                <p><label>申请材料:</label></p>
+                <p>
+                  1、《申请设立保安服务公司行政许可审批表》。<br>
+                  2、设立保安服务公司申请书<br>
+                  3、设立保安服务公司可行性分析报告<br>
+
+                  4、保安服务从业单位法定代表人(主要负责人)登记表<br>
+                  5、保安服务公司章程<br>
+                  6、注册资本认缴金额证明。<br>
+                  7、拟任的法定代表人、主要管理人员应提供下列材料:<br>
+                  ①有效身份证件;②保安师资格证书原件及复印件;③个人简历及5年以上军队、公安、安全、审判、检察、司法行政或者治保安卫、保安经营管理工作经验证明。<br>
+                  8、专业技术人员名单,法律、行政法规有资格要求的资格证明。<br>
+                  9、拟设保安服务公司住所的所有权或使用权有效证明文件和提供保安服务所需的有关设备、交通工具等材料并附彩色照片。<br>
+                  10、组织机构和保安服务管理制度、岗位责任制度、保安员管理制度材料。<br>
+                  11、工商行政管理部门核发的企业名称预先核准通知书。<br>
+                </p>
+
+
+                <p><label>申请设立中外合资、中外合作或者外资独资保安服务公司除以上1-11项内容外还需另外提供以下材料:</label></p>
+
+                <p>
+                  1、中外合资、中外合作合同原件及复印件。<br>
+
+                  2、外方的资信证明和注册登记文件原件及复印件。<br>
+
+                  3、境外法定代表人、主要管理人员所属国家或者地区无被刑事处罚记录证明(原居住地警察机构出具并经公证机关公证)。<br>
+
+                  4、境外法定代表人、主要管理人员5年以上保安经营管理工作经验证明。<br>
+                </p>
+
+                <p><label>法定周期:</label>区、市20个工作日</p>
+                <p><label>承诺时限:</label>区、市20个工作日</p>
+
+                <p><label>受理部门:</label>市级公安机关</p>
+
+                <p><label>审批机关::</label>区级公安机关</p>
+
+
+                <p><label>申请设立或增设从事武装守护押运业务的保安服务公司还需另外提供以下材料:</label></p>
+
+                <p>
+                  1、1000万元人民币以上注册资本。<br>
+
+                  2、出资属国有独资或者国有资本占注册资本总额51%以上的有效证明文件原件及复印件。<br>
+
+                  3、符合国家或者行业标准的专用运输车辆以及通信、报警设备的材料。<br>
+
+                  4、枪支安全管理制度和保管设施情况的材料。<br>
+                </p>
+
+
+                <p><label>法定周期:</label>区、市20个工作日</p>
+                <p><label>承诺时限:</label>区、市20个工作日</p>
+
+                <p><label>受理部门:</label>市级公安机关</p>
+
+                <p><label>审批机关::</label>区级公安机关</p>
+
+                <p><label>审批机关::</label>公安部</p>
+
+
+              </div>
+            </div>
+            <div class="hand-next">
+              <el-button type="primary" @click="tip0">下一步</el-button>
+              <el-button type="primary" @click="qx">取消</el-button>
+            </div>
+          </div>
+        </div>
+        <div v-show="forms == 2" class="first-box-outer">
+          <avue-form
+            ref="form1"
+            v-model="obj0"
+            :option="option">
+            <template slot="menuForm">
+              <el-button type="primary" @click="tip1up1">上一页</el-button>
+              <el-button type="primary" @click="tip1">暂存</el-button>
+              <el-button type="primary" @click="up()">提交审批</el-button>
+              <el-button type="info" @click="tipover">取消</el-button>
+            </template>
+          </avue-form>
+        </div>
+      </div>
+    </div>
+
+    <div class="lod" v-show="onits">
+      <div class="lod-in">
+        <div class="first-box-outers">
+          <div class="first-box-titles">审批进度
+            <a  style="margin-left: 1120px;font-size: 18px" href="javascript:;" @click="js_methods">X</a>
+          </div>
+          <div class="first-box-content">
+            <avue-crud :option="option1"
+                       :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"
+                       :row-style="rowStyle"
+            >
+              <template class="tdtype" slot-scope="{ row }" slot="type">
+                <el-tag class="dtype">
+                  {{
+                    row.type == "0" ? "通过" : row.type == "1" ? "不通过" : "待审核"
+                  }}
+                  <i class="gz" v-if="row.type == '0' "></i>
+                  <i class="yj" v-if="row.type == '1' "></i>
+                  <i class="zc" v-if="row.type == '2' "></i>
+                </el-tag>
+              </template>
+            </avue-crud>
+
+          </div>
+
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  add,
+  adds,
+  getDetail,
+  getList,
+  getListre,
+  getListrek,
+  getListrev,
+  remove,
+  selectIn,
+  update
+} from "@/api/permit/permit"
+import {mapGetters} from "vuex";
+import {resetRouter} from '@/router/router'
+
+export default {
+  data() {
+    return {
+      query: {},
+      loading: true,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      obj0: {
+        title0: "保安服务公司许可证审批",
+      },
+      // option0: {
+      //   emptyBtn: false,
+      //   submitBtn: false,
+      //   gutter: 30,
+      //   column: column0,
+      // },
+      option: {
+        emptyBtn: false,
+        submitBtn: false,
+        gutter: 50,
+        column: [
+          {
+            label: "",
+            labelWidth: 20,
+            type: 'title',
+            prop: "title0",
+            span: 24,
+            styles: {
+              fontSize: '24px'
+            }
+          },
+          {
+            label: "统一社会信用代码",
+            prop: "creditcode",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入社会信用代码",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "辖区",
+            prop: "jurisdiction",
+            // type: "tree",
+            // disabled: true,
+            type: "tree",
+            dicUrl: "/api/jurisdiction/lazy-trees",
+            props: {
+              label: "title",
+              value: "id"
+            },
+            labelWidth: 160,
+            span: 12,
+          },
+          {
+            label: "企业类型",
+            prop: "ptype",
+            hide: true,
+            display: false,
+          },
+          {
+            label: "所属单位",
+            prop: "deptid",
+            hide: true,
+            display: false,
+          },
+          {
+            label: "企业名称",
+            prop: "enterprisename",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入企业名称",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "法定代表人",
+            prop: "representative",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入法定代表人",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "法定代表人电话",
+            prop: "representativecell",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "法定代表人电话",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "联系人",
+            prop: "contacts",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "联系人",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "联系人电话",
+            prop: "contactscell",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "联系人电话",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "成立日期",
+            prop: "establishtime",
+            labelWidth: 160,
+            span: 12,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "timestamp",
+          },
+          {
+            label: "注册资本(万元人民币)",
+            prop: "registeredcapital",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入注册资本",
+              trigger: "blur"
+            }]
+          },
+          // {
+          //   label: "实缴资本(万元人民币)",
+          //   prop: "capital",
+          //   labelWidth: 160,
+          //   span: 12,
+          //   rules: [{
+          //     required: true,
+          //     message: "请输入实缴资本",
+          //     trigger: "blur"
+          //   }]
+          // },
+          {
+            label: "组织机构代码",
+            prop: "organizationcode",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入组织机构代码",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "工商注册号",
+            prop: "registrationnumber",
+
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入工商注册号",
+              trigger: "blur"
+            }]
+          },
+          // {
+          //   label: "纳税人识别号",
+          //   prop: "identificationnumber",
+          //   labelWidth: 160,
+          //   span: 12,
+          //   rules: [{
+          //     required: true,
+          //     message: "请输入纳税人识别号",
+          //     trigger: "blur"
+          //   }]
+          // },
+          {
+            label: "注册地址",
+            prop: "address",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入注册地址",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "经营范围",
+            prop: "business",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入经营范围",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "所属地区",
+            prop: "region",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入所属地区",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "登记机关",
+            prop: "registration",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入登记机关",
+              trigger: "blur"
+            }]
+            // overHidden: true,
+          },
+          {
+            label: "所属行业",
+            prop: "industry",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入所属行业",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: '拖拽上传',
+            prop: 'imgUrl5',
+            type: 'upload',
+            span: 12,
+            drag: true,
+            propsHttp: {
+              res: 'data'
+            },
+            tip: '只能上传jpg/png文件,且不超过500kb',
+            action: '/api/blade-resource/oss/endpoint/put-file-attach?deptid=&type=0'
+          },
+        ]
+      },
+      option1: {
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        height: 'auto',
+        calcHeight: 260,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        labelWidth: 130,
+        headerAlign: 'center',
+        align: 'center',
+        border: true,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "企业名称",
+            prop: "enterprisename",
+            labelWidth: 160,
+            span: 12,
+            rules: [{
+              required: true,
+              message: "请输入企业名称",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "许可类型",
+            prop: "ptype",
+            type: "select",
+            dicData: [
+              {
+                label: "保安服务公司许可",
+                value: '0'
+              },
+              {
+                label: "保安培训公司许可",
+                value: '1'
+              },
+              {
+                label: "保安服务公司备案",
+                value: '2'
+              },
+              {
+                label: "跨区域备案",
+                value: '3'
+              },
+              {
+                label: "备案撤销",
+                value: '4'
+              },
+            ],
+          },
+          {
+            label: "审批意见",
+            prop: "reason",
+
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            addDisplay: false,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: '0'
+              },
+              {
+                label: "不通过",
+                value: '1'
+              },
+              {
+                label: "待审核",
+                value: '2'
+              }
+            ],
+          },
+
+        ]
+      },
+      data0: {},
+      forms: 0,
+      onit: false,
+      onits: false,
+      menuData: [
+        {
+          menuName: '保安服务公司许可',
+          centerUrl: '/img/logo.png',
+          topUrl: 'url(/img/permit/服务许可背景图.jpg)',
+          targetUrl: 'per'
+        },
+        {
+          menuName: '保安服务公司备案',
+          centerUrl: '/img/logo.png',
+          topUrl: 'url(/img/permit/服务许可背景图.jpg)'
+        },
+        {
+          menuName: '自招保安单位备案撤销',
+          centerUrl: '/img/logo.png',
+          topUrl: 'url(/img/permit/服务许可背景图.jpg)'
+        },
+        {
+          menuName: '跨区域经营备案',
+          centerUrl: '/img/logo.png',
+          topUrl: 'url(/img/permit/服务许可背景图.jpg)'
+        },
+      ],
+      userName:''
+    }
+  },
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  created() {
+    this.convert();
+    this.cc();
+  },
+  methods: {
+    cc: function(){
+      this.userName =this.$store.getters.userInfo.user_name
+    },
+    convert: function () {
+      var caridid = this.$store.getters.userInfo.dept_id;
+      selectIn(caridid).then(res => {
+        this.option.column[1].value = res.data.data.creditCode
+        this.option.column[2].value = res.data.data.jurisdiction
+        this.option.column[3].value = res.data.data.enterpriseName
+        this.option.column[4].value = res.data.data.representative
+        this.option.column[5].value = res.data.data.representativecell
+        this.option.column[6].value = res.data.data.contacts
+        this.option.column[7].value = res.data.data.contactscell
+        this.option.column[8].value = res.data.data.establishTime
+        this.option.column[9].value = res.data.data.registeredCapital
+        this.option.column[10].value = res.data.data.capital
+        this.option.column[11].value = res.data.data.organizationCode
+        this.option.column[12].value = res.data.data.identificationNumber
+        this.option.column[13].value = res.data.data.enterprises
+        this.option.column[14].value = res.data.data.address
+        this.option.column[15].value = res.data.data.business
+        this.option.column[16].value = res.data.data.region
+        this.option.column[17].value = res.data.data.registration
+        this.option.column[18].value = res.data.data.industry
+      })
+    },
+    ss() {
+      this.onits = true;
+      //this.$router.push({path: '/homespi'});
+    },
+    onNext() {
+      this.forms = 1;
+      this.onit = false;
+    },
+    targetClick(item) {
+      var url = item.targetUrl
+      if (url == "per") {
+        this.onit = true;
+      }
+    },
+    tip0() {
+      this.forms = 2;
+    },
+    qx(){
+      this.forms = 0;
+    },
+    up() {
+      var d = {};
+      for (var k in this.obj0) {
+        for (var i in this.option.column) {
+          if (k == this.option.column[i].prop && k != "title0") {
+            d[k] = this.obj0[k];
+          }
+        }
+      }
+      this.data0 = d;
+      this.data0.ptype = this.$refs.name.value
+      this.data0.deptid = this.$store.getters.userInfo.dept_id
+      add(this.data0).then(() => {
+        this.tipover();
+      });
+    },
+    tip1() {
+      var d = {};
+      for (var k in this.obj0) {
+        for (var i in this.option.column) {
+          if (k == this.option.column[i].prop && k != "title0") {
+            d[k] = this.obj0[k];
+          }
+        }
+      }
+      this.data0 = d;
+      this.data0.ptype = this.$refs.name.value
+      this.data0.deptid = this.$store.getters.userInfo.dept_id
+      adds(this.data0).then(() => {
+        this.tipover();
+       });
+    },
+    tip1up1() {
+      this.forms = 1;
+    },
+    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;
+        getListre(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(ress => {
+          this.data = this.data.concat(ress.data.data.records)
+        });
+        getListrek(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(resk => {
+          this.data = this.data.concat(resk.data.data.records)
+        });
+        getListrev(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(resv => {
+          this.data = this.data.concat(resv.data.data.records)
+        });
+      });
+    },
+    rowUpdate(row, index, done, loading) {
+      update(row).then(() => {
+        this.onLoad(this.page);
+        this.$message({
+          type: "success",
+          message: "操作成功!"
+        });
+        done();
+      }, error => {
+        loading();
+        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: "操作成功!"
+          });
+        });
+    },
+    beforeOpen(done, type) {
+      if (["edit", "view"].includes(type)) {
+        getDetail(this.form.id).then(res => {
+          this.form = res.data.data;
+        });
+      }
+      done();
+    },
+    tipover() {
+      this.forms = 0;
+      this.obj0 = {
+        title0: "保安单位基本信息",
+      };
+      this.data0 = {};
+    },
+    js_method() {
+      this.onit = false;
+    },
+    js_methods() {
+      this.onits = false;
+    },
+    logout() {
+      this.$confirm(this.$t("logoutTip"), this.$t("tip"), {
+        confirmButtonText: this.$t("submitText"),
+        cancelButtonText: this.$t("cancelText"),
+        type: "warning"
+      }).then(() => {
+        this.$store.dispatch("LogOut").then(() => {
+          resetRouter();
+          this.$router.push({path: "/login"});
+        });
+      });
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.dtype {
+  width: 80px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #DFDFDF;
+}
+
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29C093;
+}
+
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #F34A4A;
+}
+
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #F48F57;
+}
+
+.el-tag {
+  display: inline-block;
+  width: 80px;
+  /*padding-right: 40px !important;*/
+
+}
+
+.layui-layer-setwin {
+  position: absolute;
+  right: 15px;
+  right: 0;
+  top: 15px;
+  font-size: 0;
+  line-height: initial;
+
+  .layui-layer-close1 {
+    color: #fff;
+    background: url(/img/permit/close-btn.png) no-repeat;
+    padding-right: 10px;
+  }
+
+  a {
+    position: relative;
+    width: 16px;
+    height: 16px;
+    margin-left: 10px;
+    font-size: 12px;
+    _overflow: hidden;
+    display: inline-block;
+  }
+}
+
+.close {
+  position: absolute;
+  right: 20px;
+  top: 5px;
+}
+
+.hand-next {
+  text-align: center;
+  padding: 15px 0;
+}
+
+.first-box-outers {
+  position: fixed;
+  pointer-events: auto;
+  z-index: 999;
+  width: 100%;
+  height: 80%;
+  top: 120px;
+  left: 340px;
+  background-color: #fff;
+  box-shadow: 1px 1px 50px rgba(0, 0, 0, .3);
+  border-radius: 2px;
+
+  max-height: 790px;
+  max-width: 1240px;
+
+  .first-box-titles {
+    padding: 0 80px 0 20px;
+    height: 42px;
+    line-height: 42px;
+    overflow: hidden;
+    border-radius: 2px 2px 0 0;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    margin: 0;
+    width: 100%;
+
+  }
+
+  .first-box-content {
+    height: calc(100% - 42px);
+  }
+
+}
+
+.first-box-outer {
+  position: fixed;
+  pointer-events: auto;
+  z-index: 999;
+  width: 100%;
+  height: 90%;
+  top: 30px;
+  left: 340px;
+  background-color: #fff;
+  box-shadow: 1px 1px 50px rgba(0, 0, 0, .3);
+  border-radius: 2px;
+
+  max-height: 790px;
+  max-width: 1240px;
+
+  .first-box-title {
+    padding: 0 80px 0 20px;
+    height: 42px;
+    line-height: 42px;
+    overflow: hidden;
+    border-radius: 2px 2px 0 0;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    margin: 0;
+
+  }
+
+  .first-box-content {
+    height: calc(100% - 42px);
+    overflow-y: auto;
+
+    .handling-guideline {
+      .hand-title {
+        text-align: center;
+        font-size: 20px;
+        line-height: 50px;
+        font-weight: 600;
+      }
+
+      .hand-content {
+        width: 1000px;
+        padding: 30px;
+        margin: 0 auto;
+        margin-bottom: 0px;
+        background: #f9f9f9;
+        margin-bottom: 15px;
+
+        p {
+          font-size: 14px;
+          line-height: 28px;
+
+          label {
+            font-weight: bold;
+          }
+        }
+      }
+    }
+
+  }
+
+}
+
+.layui-layer-setwin {
+  position: absolute;
+  right: 15px;
+  right: 0;
+  top: 15px;
+  font-size: 0;
+  line-height: initial;
+}
+
+.detail-box {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 50px;
+  margin: auto;
+  width: 600px;
+  height: 420px;
+  background: #fff;
+
+  .radio-custom {
+    position: relative;
+
+    input {
+      position: absolute;
+      top: 4px;
+      left: 0px;
+    }
+  }
+
+}
+
+.radio-custom {
+  margin-top: 15px;
+}
+
+.layui-layer-title {
+  background: #2575eb;
+  color: #fff;
+  border: none;
+  font-size: 16px;
+  text-align: center;
+}
+
+.radio-custom label {
+  min-height: 22px;
+  line-height: 22px;
+  margin-bottom: 0;
+  font-weight: 300;
+  cursor: pointer;
+  display: inline-block;
+  vertical-align: middle;
+  position: relative;
+  padding-left: 30px;
+  margin-left: 25px;
+  color: black;
+  font-weight: 700;
+}
+
+.radio-custom .handling-guideline {
+  margin-left: 50px;
+  margin-right: 25px;
+  margin-top: 5px;
+}
+
+//#barcon {
+//  position: fixed;
+//  top: calc(50% - 200px);
+//  left: calc(50% - 200px);
+//  z-index: 10;
+//  //top: 0;
+//  width: 400px;
+//  height: 400px;
+//  background-color: red;
+//}
+.main {
+  width: 80%;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: start;
+  position: absolute;
+  top: 20%;
+  right: 0;
+  left: 0;
+  bottom: auto;
+  margin: auto;
+
+  .item-box {
+    width: calc(25% - 12px);
+    height: 280px;
+    position: relative;
+    margin: 6px;
+    background: rgb(255, 255, 255);
+    border-radius: 10px;
+
+    .box-top {
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      width: calc(100%);
+      height: calc(100% - 36px);
+      border-radius: 10px 10px 0 0;
+
+      .img-box {
+        position: absolute;
+        top: 0;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        margin: auto;
+        width: 36px;
+        height: 36px;
+        border-radius: 50%;
+        background: rgba(17, 17, 17, 0.568);
+
+        img {
+          position: absolute;
+          top: 0;
+          left: 0;
+          right: 0;
+          bottom: 0;
+          margin: auto;
+          width: 24px;
+          height: 24px;
+        }
+      }
+    }
+
+    .box-bottom {
+      position: absolute;
+      bottom: 0;
+      left: 0;
+      width: 100%;
+      height: 36px;
+      line-height: 36px;
+      text-align: center;
+      background: white;
+      border-radius: 0 0 10px 10px;
+    }
+  }
+}
+</style>
diff --git a/src/views/home/spi.vue b/src/views/home/spi.vue
new file mode 100644
index 0000000..6e0c8ab
--- /dev/null
+++ b/src/views/home/spi.vue
@@ -0,0 +1,367 @@
+<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"
+               :row-style="rowStyle"
+    >
+      <template class="tdtype" slot-scope="{ row }" slot="type">
+        <el-tag class="dtype">
+          {{
+            row.type == "0" ? "通过" : row.type == "1" ? "不通过":"待审核"
+          }}
+          <i class="gz" v-if="row.type == '0' "></i>
+          <i class="yj" v-if="row.type == '1' "></i>
+          <i class="zc" v-if="row.type == '2' "></i>
+        </el-tag>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+import {getList, getDetail, add, update, remove} from "@/api/permit/permit";
+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,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 8,
+        labelWidth: 130,
+        headerAlign: 'center',
+        align: 'center',
+        border: true,
+        index: true,
+        viewBtn: true,
+        selection: true,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "社会信用代码",
+            prop: "creditcode",
+            hide: true,
+            rules: [{
+              required: true,
+              message: "请输入统一社会信用代码",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "许可类型",
+            prop: "ptype",
+            type: "select",
+            dicData: [
+              {
+                label: "保安服务许可",
+                value: '0'
+              },
+              {
+                label: "保安培训许可",
+                value: '1'
+              },
+            ],
+          },
+          {
+            label: "提交时间",
+            prop: "permitime",
+            addDisplay: false,
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+          },
+          {
+            label: "审核状态",
+            prop: "type",
+            addDisplay: false,
+            type: "select",
+            dicData: [
+              {
+                label: "通过",
+                value: '0'
+              },
+              {
+                label: "不通过",
+                value: '1'
+              },
+              {
+                label: "待审核",
+                value: '2'
+              }
+            ],
+          },
+
+        ]
+      },
+      data: []
+    };
+  },
+  computed: {
+    ...
+      mapGetters(["permission", "userInfo"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission.permit_add, true),
+        viewBtn: this.vaildData(this.permission.permit_view, true),
+        delBtn: this.vaildData(this.permission.permit_delete, true),
+        editBtn: this.vaildData(this.permission.permit_edit, true)
+      };
+    }
+    ,
+    ids() {
+      let ids = [];
+      this.selectionList.forEach(ele => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    }
+    ,
+  }
+  ,
+  // mounted() {
+  //     console.log(this.userInfo.dept_id);
+  // },
+  methods: {
+    handleCredentials(row) {
+      this.$router.push({
+        path: "/attach/index",
+        // redirect: { name: "foo" },
+        // query: { row: row },
+        query: {deptid: row.deptid, type: '0'},
+        // params: { row: row.identificationnumber },
+      });
+    },
+    rowSave(row, done, loading) {
+      row.deptid = this.userInfo.dept_id
+      add(row).then(() => {
+        this.onLoad(this.page);
+        this.$message({
+          type: "success",
+          message: "操作成功!"
+        });
+        done();
+      }, error => {
+        loading();
+        window.console.log(error);
+      });
+      // addnw(row).then(() => {
+      //   this.onLoad(this.page);
+      //   this.$message({
+      //     type: "success",
+      //     message: "操作成功!"
+      //   });
+      //   done();
+      // }, error => {
+      //   loading();
+      //   window.console.log(error);
+      // });
+    }
+    ,
+    rowUpdate(row, index, done, loading) {
+      update(row).then(() => {
+        this.onLoad(this.page);
+        this.$message({
+          type: "success",
+          message: "操作成功!"
+        });
+        done();
+      }, error => {
+        loading();
+        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.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();
+      });
+    },
+    rowStyle({row}) {
+      if (row.dtype != null && row.dtype != "") {
+        if (row.dtype == '2') {
+          return {
+            color: "#F34A4A"
+          };
+        }
+        if(row.dtype=='1'){
+          return {
+            color: "#F48F57"
+          };
+        }
+
+      }
+    }
+  }
+};
+
+</script>
+
+<style scoped>
+.dtype{
+  width: 80px;
+}
+
+.dx{
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #DFDFDF;
+}
+.zc{
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29C093;
+}
+.yj{
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #F34A4A;
+}
+.gz{
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #F48F57;
+}
+
+.el-tag{
+  display: inline-block;
+  width: 80px;
+  /*padding-right: 40px !important;*/
+
+}
+</style>
diff --git a/src/views/permit/permit.vue b/src/views/permit/permit.vue
index c21ed53..e41f2d7 100644
--- a/src/views/permit/permit.vue
+++ b/src/views/permit/permit.vue
@@ -336,17 +336,17 @@
         loading();
         window.console.log(error);
       });
-      addnw(row).then(() => {
-        this.onLoad(this.page);
-        this.$message({
-          type: "success",
-          message: "操作成功!"
-        });
-        done();
-      }, error => {
-        loading();
-        window.console.log(error);
-      });
+      // addnw(row).then(() => {
+      //   this.onLoad(this.page);
+      //   this.$message({
+      //     type: "success",
+      //     message: "操作成功!"
+      //   });
+      //   done();
+      // }, error => {
+      //   loading();
+      //   window.console.log(error);
+      // });
     }
     ,
     rowUpdate(row, index, done, loading) {
diff --git a/src/views/record/record.vue b/src/views/record/record.vue
index 9606e86..00cfb7c 100644
--- a/src/views/record/record.vue
+++ b/src/views/record/record.vue
@@ -334,17 +334,17 @@
           loading();
           window.console.log(error);
         });
-        addnw(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          loading();
-          window.console.log(error);
-        });
+        // addnw(row).then(() => {
+        //   this.onLoad(this.page);
+        //   this.$message({
+        //     type: "success",
+        //     message: "操作成功!"
+        //   });
+        //   done();
+        // }, error => {
+        //   loading();
+        //   window.console.log(error);
+        // });
       },
       rowUpdate(row, index, done, loading) {
         update(row).then(() => {
diff --git a/src/views/recordk/recordk.vue b/src/views/recordk/recordk.vue
index 63471d8..263aa29 100644
--- a/src/views/recordk/recordk.vue
+++ b/src/views/recordk/recordk.vue
@@ -331,17 +331,17 @@
           loading();
           window.console.log(error);
         });
-        addnw(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          loading();
-          window.console.log(error);
-        });
+        // addnw(row).then(() => {
+        //   this.onLoad(this.page);
+        //   this.$message({
+        //     type: "success",
+        //     message: "操作成功!"
+        //   });
+        //   done();
+        // }, error => {
+        //   loading();
+        //   window.console.log(error);
+        // });
       },
       rowUpdate(row, index, done, loading) {
         update(row).then(() => {
diff --git a/src/views/revoke/revoke.vue b/src/views/revoke/revoke.vue
index 9860189..61c8fa6 100644
--- a/src/views/revoke/revoke.vue
+++ b/src/views/revoke/revoke.vue
@@ -309,17 +309,17 @@
           loading();
           window.console.log(error);
         });
-        addnw(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          loading();
-          window.console.log(error);
-        });
+        // addnw(row).then(() => {
+        //   this.onLoad(this.page);
+        //   this.$message({
+        //     type: "success",
+        //     message: "操作成功!"
+        //   });
+        //   done();
+        // }, error => {
+        //   loading();
+        //   window.console.log(error);
+        // });
       },
       rowUpdate(row, index, done, loading) {
         update(row).then(() => {
diff --git a/vue.config.js b/vue.config.js
index 88f1000..1742295 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -1,6 +1,6 @@
 module.exports = {
   //路径前缀
-  publicPath: "/application/",
+  publicPath: "/",
   lintOnSave: true,
   productionSourceMap: false,
   chainWebpack: (config) => {
@@ -26,7 +26,7 @@
     proxy: {
       '/api': {
         //本地服务接口地址
-        target: 'http://localhost:82',
+        target: 'http://localhost:81',
         //远程演示服务地址,可用于直接启动项目
         //target: 'https://saber.bladex.vip/api',
         ws: true,

--
Gitblit v1.9.3