保安服务单位许可和备案申请系统
lin
2024-05-07 e047fc31f6d9c571b11a8c49072a34edb30176db
无诈调整
10 files modified
3053 ■■■■ changed files
public/index.html 207 ●●●● patch | view | raw | blame | history
src/api/system/user.js 12 ●●●●● patch | view | raw | blame | history
src/components/attach/attach.vue 733 ●●●● patch | view | raw | blame | history
src/components/cardPopup/cardPopup.vue 860 ●●●●● patch | view | raw | blame | history
src/config/website.js 4 ●●●● patch | view | raw | blame | history
src/lang/zh.js 8 ●●●● patch | view | raw | blame | history
src/page/login/codelogin.vue 524 ●●●● patch | view | raw | blame | history
src/views/home/index.vue 579 ●●●● patch | view | raw | blame | history
src/views/home/ourDatas.js 120 ●●●●● patch | view | raw | blame | history
vue.config.js 6 ●●●● patch | view | raw | blame | history
public/index.html
@@ -1,115 +1,124 @@
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
  <meta name="renderer" content="webkit">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <link rel="stylesheet" href="<%= BASE_URL %>cdn/element-ui/2.15.1/theme-chalk/index.css">
  <link rel="stylesheet" href="<%= BASE_URL %>cdn/animate/3.5.2/animate.css">
  <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/index.css">
  <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/avue/iconfont.css">
  <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/saber/iconfont.css">
  <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>
    html,
    body,
    #app {
      height: 100%;
      margin: 0;
      padding: 0;
    }
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="<%= BASE_URL %>cdn/element-ui/2.15.1/theme-chalk/index.css">
    <link rel="stylesheet" href="<%= BASE_URL %>cdn/animate/3.5.2/animate.css">
    <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/index.css">
    <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/avue/iconfont.css">
    <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/saber/iconfont.css">
    <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>
    <!-- AvueMap-begin-->
    <script>
      window._AMapSecurityConfig = {
        securityJsCode: '5c569caedb31676fc64da5be4c5e8cee',
      }
    </script>
    <script type="text/javascript"
      src='https://webapi.amap.com/maps?v=1.4.11&key=fce315b8c816ec06755a523ccae9922d&plugin=AMap.PlaceSearch'></script>
    <script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
    <link rel="icon" href="<%= BASE_URL %>favicon.png">
    <title>无诈场景系统</title>
    <style>
      html,
      body,
      #app {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    .avue-home {
      background-color: #303133;
      height: 100%;
      display: flex;
      flex-direction: column;
    }
      .avue-home {
        background-color: #303133;
        height: 100%;
        display: flex;
        flex-direction: column;
      }
    .avue-home__main {
      user-select: none;
      width: 100%;
      flex-grow: 1;
      display: flex;
      justify-content: center;
      align-items: center;
      flex-direction: column;
    }
      .avue-home__main {
        user-select: none;
        width: 100%;
        flex-grow: 1;
        display: flex;
        justify-content: center;
        align-items: center;
        flex-direction: column;
      }
    .avue-home__footer {
      width: 100%;
      flex-grow: 0;
      text-align: center;
      padding: 1em 0;
    }
      .avue-home__footer {
        width: 100%;
        flex-grow: 0;
        text-align: center;
        padding: 1em 0;
      }
    .avue-home__footer > a {
      font-size: 12px;
      color: #ABABAB;
      text-decoration: none;
    }
      .avue-home__footer>a {
        font-size: 12px;
        color: #ABABAB;
        text-decoration: none;
      }
    .avue-home__loading {
      height: 32px;
      width: 32px;
      margin-bottom: 20px;
    }
      .avue-home__loading {
        height: 32px;
        width: 32px;
        margin-bottom: 20px;
      }
    .avue-home__title {
      color: #FFF;
      font-size: 14px;
      margin-bottom: 10px;
    }
      .avue-home__title {
        color: #FFF;
        font-size: 14px;
        margin-bottom: 10px;
      }
    .avue-home__sub-title {
      color: #ABABAB;
      font-size: 12px;
    }
  </style>
</head>
      .avue-home__sub-title {
        color: #ABABAB;
        font-size: 12px;
      }
    </style>
  </head>
<body>
<noscript>
  <strong>
    很抱歉,如果没有 JavaScript 支持,Saber 将不能正常工作。请启用浏览器的 JavaScript 然后继续。
  </strong>
</noscript>
<div id="app">
  <div class="avue-home">
    <div class="avue-home__main">
      <img class="avue-home__loading" src="<%= BASE_URL %>svg/loading-spin.svg" alt="loading">
      <div class="avue-home__title">
        正在加载资源
      </div>
      <div class="avue-home__sub-title d">
        初次加载资源可能需要较多时间 请耐心等待
      </div>
    </div>
<!--    <div class="avue-home__footer">
  <body>
    <noscript>
      <strong>
        很抱歉,如果没有 JavaScript 支持,Saber 将不能正常工作。请启用浏览器的 JavaScript 然后继续。
      </strong>
    </noscript>
    <div id="app">
      <div class="avue-home">
        <div class="avue-home__main">
          <img class="avue-home__loading" src="<%= BASE_URL %>svg/loading-spin.svg" alt="loading">
          <div class="avue-home__title">
            正在加载资源
          </div>
          <div class="avue-home__sub-title d">
            初次加载资源可能需要较多时间 请耐心等待
          </div>
        </div>
        <!--    <div class="avue-home__footer">
      <a href="https://bladex.vip" target="_blank">
        https://bladex.vip </a>
    </div>-->
  </div>
</div>
<!-- built files will be auto injected -->
<script src="<%= BASE_URL %>util/aes.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vue/2.6.10/vue.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vuex/3.1.1/vuex.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vue-router/3.0.1/vue-router.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/axios/1.0.0/axios.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/element-ui/2.15.1/index.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/avue/2.8.12/avue.min.js" charset="utf-8"></script>
</body>
      </div>
    </div>
    <!-- built files will be auto injected -->
    <script src="<%= BASE_URL %>util/aes.js" charset="utf-8"></script>
    <script src="<%= BASE_URL %>cdn/vue/2.6.10/vue.min.js" charset="utf-8"></script>
    <script src="<%= BASE_URL %>cdn/vuex/3.1.1/vuex.min.js" charset="utf-8"></script>
    <script src="<%= BASE_URL %>cdn/vue-router/3.0.1/vue-router.min.js" charset="utf-8"></script>
    <script src="<%= BASE_URL %>cdn/axios/1.0.0/axios.min.js" charset="utf-8"></script>
    <script src="<%= BASE_URL %>cdn/element-ui/2.15.1/index.js" charset="utf-8"></script>
    <script src="<%= BASE_URL %>cdn/avue/2.8.12/avue.min.js" charset="utf-8"></script>
  </body>
</html>
src/api/system/user.js
@@ -119,14 +119,10 @@
  })
}
export const zc = (username, password, phone) => {
export const zc = (param) => {
  return request({
    url: '/api/blade-user/zc',
    method: 'get',
    params: {
      username,
      password,
      phone
    }
    url: '/api/blade-system/user/register-user',
    method: 'post',
    data: param
  })
}
src/components/attach/attach.vue
@@ -1,140 +1,105 @@
<template>
  <basic-container class="hasButTwo">
    <avue-crud
      :option="option"
      :table-loading="loading"
      :data="data"
      :page.sync="page"
      :permission="permissionList"
      :before-open="beforeOpen"
      v-model="form"
      ref="crud"
      @row-del="rowDel"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad"
    >
    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
      :before-open="beforeOpen" v-model="form" ref="crud" @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="type" slot-scope="{ row }">
        <el-tag :class="row.type != 2 ? 'red' : ''">{{
          row.type != 2 ? "未上传" : "已上传"
        }}</el-tag>
      </template>
      <template slot="downtemplate" slot-scope="{ row }">
        <el-tag
          @click="downTemplates(row.template)"
          class="hand"
          :class="row.template == '' ? 'red' : ''"
          >{{ row.template == "" ? "无模板" : "下载模板" }}</el-tag
        >
        <el-tag @click="downTemplates(row.template)" class="hand"
          :class="row.template == '' ? 'red' : ''">{{ row.template == "" ? "无模板" : "下载模板" }}</el-tag>
      </template>
      <template slot-scope="{ type, size, row }" slot="menu">
        <el-button
          icon="el-icon-upload2"
          :size="size"
          :type="type"
          @click="upData(row)"
          >上传</el-button
        >
        <el-button
          icon="el-icon-download"
          :size="size"
          :type="type"
          :disabled="row.type != 2"
          @click="dowmData(row)"
          >下载</el-button
        >
        <el-button icon="el-icon-upload2" :size="size" :type="type" @click="upData(row)">上传</el-button>
        <el-button icon="el-icon-download" :size="size" :type="type" :disabled="row.type != 2"
          @click="dowmData(row)">下载</el-button>
      </template>
    </avue-crud>
    <el-dialog
      title="附件管理"
      append-to-body
      :visible.sync="attachBox"
      width="555px"
    >
      <avue-form
        ref="form"
        :option="attachOption"
        v-model="attachForm"
        :upload-after="uploadAfter"
      >
    <el-dialog title="附件管理" append-to-body :visible.sync="attachBox" width="555px">
      <avue-form ref="form" :option="attachOption" v-model="attachForm" :upload-after="uploadAfter">
      </avue-form>
    </el-dialog>
  </basic-container>
</template>
<script>
import { getUseInfor, getTemplate, addUseInfor } from "@/api/resource/attach";
import { mapGetters } from "vuex";
  import {
    getUseInfor,
    getTemplate,
    addUseInfor
  } from "@/api/resource/attach";
  import {
    mapGetters
  } from "vuex";
export default {
  props: ["type", "opens", "enclosure", "ptype"],
  data() {
    var type = this.type;
    var deptid = this.$route.query.deptId;
    var cardid = this.$store.getters.userInfo.Id;
    return {
      form: {},
      query: {},
      putParam: "",
      loading: false,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
      },
      attachBox: false,
      selectionList: [],
      option: {
        height: 600,
        calcHeight: 30,
        tip: false,
        align: "center",
        searchShow: false,
        columnBtn: false,
        menuWidth: 180,
        searchMenuSpan: 6,
        border: false,
        index: true,
        delBtn: false,
        stripe: true,
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        column: [
          {
            label: "附件名称",
            prop: "originalname",
            overHidden: true
          },
          {
            label: "附件状态",
            prop: "type",
            width: 110,
            slot: true,
            overHidden: true
          },
          {
            label: "示范模板",
            prop: "downtemplate",
            width: 110,
            // overHidden: true,
            slot: true
          }
        ]
      },
      data: [],
      attachForm: {},
      attachOption: {
        submitBtn: false,
        emptyBtn: false,
        column: [
          {
  export default {
    props: ["type", "opens", "enclosure", "ptype"],
    data() {
      var type = this.type;
      var deptid = this.$route.query.deptId;
      var cardid = this.$store.getters.userInfo.Id;
      return {
        form: {},
        query: {},
        putParam: "",
        loading: false,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        attachBox: false,
        selectionList: [],
        option: {
          height: 600,
          calcHeight: 30,
          tip: false,
          align: "center",
          searchShow: false,
          columnBtn: false,
          menuWidth: 180,
          searchMenuSpan: 6,
          border: false,
          index: true,
          delBtn: false,
          stripe: true,
          viewBtn: true,
          selection: true,
          dialogClickModal: false,
          column: [{
              label: "附件名称",
              prop: "originalname",
              overHidden: true
            },
            {
              label: "附件状态",
              prop: "type",
              width: 110,
              slot: true,
              overHidden: true
            },
            {
              label: "示范模板",
              prop: "downtemplate",
              width: 110,
              // overHidden: true,
              slot: true
            }
          ]
        },
        data: [{
          file: "name"
        }],
        attachForm: {},
        attachOption: {
          submitBtn: false,
          emptyBtn: false,
          column: [{
            label: "拖拽上传",
            prop: "imgUrl5",
            type: "upload",
@@ -143,292 +108,292 @@
            propsHttp: {
              res: "data"
            },
            tip:
              "支持上传jpg/png/doc/docx/xls/xlsx文件,图片不超过500Kb,文档不超过3Mb",
            tip: "支持上传jpg/png/doc/docx/xls/xlsx文件,图片不超过500Kb,文档不超过3Mb",
            action:
              // "/api/blade-resource/oss/endpoint/put-file-attach",
              "/api/blade-resource/oss/endpoint/put-file-attach?deptid=&type=" +
              type +
              "&cardid=" +
              cardid
          }
        ]
          }]
        },
        imgSee: false,
        imgUrl: "",
        saveIds: [],
        saveLinks: [],
        onceIds: "",
        onceLinks: ""
      };
    },
    computed: {
      ...mapGetters(["permission", "canDoIt"]),
      permissionList() {
        return {
          addBtn: false,
          editBtn: false,
          viewBtn: false,
          delBtn: this.vaildData(this.permission.attach_delete, false)
        };
      },
      imgSee: false,
      imgUrl: "",
      saveIds: [],
      saveLinks: [],
      onceIds: "",
      onceLinks: ""
    };
  },
  computed: {
    ...mapGetters(["permission", "canDoIt"]),
    permissionList() {
      return {
        addBtn: false,
        editBtn: false,
        viewBtn: false,
        delBtn: this.vaildData(this.permission.attach_delete, false)
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
        ids.push(ele.id);
      });
      return ids.join(",");
    }
  },
  mounted() {
    // console.log(this.enclosure, "enclosure");
    var flag = false,
      i = 0,
      ind = null;
    this.$store.state.tags.tagList.forEach((item, index) => {
      if (item.label == "附件上传") {
        if (flag == false) {
          ind = index;
          flag = true;
        }
        i++;
      }
    });
    if (i > 1) {
      this.$store.state.tags.tagList.splice(ind, 1);
    }
  },
  methods: {
    upData(val) {
      // console.log(val);
      this.onceIds = +val.id + "";
      this.attachBox = true;
    },
    dowmData(val) {
      console.log(val.down);
      window.open(val.down);
      //
    },
    downTemplates(val) {
      // console.log(val);
      if (val == "") {
        return;
      }
      window.open(val);
      // window.open(`/api/examScore/export-template`);
    },
    handleUpload() {
      this.attachBox = true;
    },
    uploadAfter(res, done, loading, column) {
      // window.console.log(res.link);
      var test = /^http:\/\/.*/;
      if (!test.test(res.link)) {
        this.$message.error("上传失败");
        return;
      }
      this.onceLinks = res.link;
      // console.log(res);
      // return;
      var haveit = null;
      for (let k in this.saveIds) {
        if (this.saveIds[k] == this.onceIds) {
          // this.saveLinks[k] = this.onceLinks;
          haveit = k;
          break;
        }
      }
      if (haveit != null) {
        this.saveLinks[haveit] = this.onceLinks;
      } else {
        this.saveIds.push(this.onceIds);
        this.saveLinks.push(this.onceLinks);
      }
      // console.log(this.saveIds);
      // console.log(this.saveLinks);
      //  console.log(this.$store.getters.userInfo.Id);
      var params = {
        userid: this.$store.getters.userInfo.Id,
        ptype: this.ptype,
        templateid: this.saveIds.join(","),
        links: this.saveLinks.join(",")
      };
      // console.log(params);
      // loading();
      // return;
      addUseInfor(params).then(res => {
        // console.log(res);
        this.$message({
          type: "success",
          message: "操作成功!"
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
          ids.push(ele.id);
        });
      });
      this.refreshChange();
      this.attachBox = false;
      done();
    },
    handleDownload(row) {
      window.open(`${row.link}`);
    },
    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;
        return ids.join(",");
      }
      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 = {}) {
      var that = this;
      var data = [];
      // console.log(this.$store.getters.userInfo.Id);
      // this.data = this.enclosure;
      params["ptype"] = this.ptype;
      getTemplate(params, 1, 50).then(res => {
        data = res.data.data.records;
        // console.log(data, "::template");
        params["userid"] = this.$store.getters.userInfo.Id;
        getUseInfor(params).then(res => {
          var userInfo = res.data.data.records;
          // console.log(userInfo, "::userInfo");
          if (userInfo.length == 0) {
            for (var k in data) {
              data[k]["type"] = 1;
            }
            that.data = data;
            this.saveIds = [];
            this.saveLinks = [];
          } else {
            this.saveIds = userInfo[0].templateid.split(",");
            this.saveLinks = userInfo[0].links.split(",");
            for (let k in data) {
              for (let i in this.saveIds) {
                if (+data[k].id == this.saveIds[i]) {
                  data[k]["type"] = 2;
                  data[k]["down"] = this.saveLinks[i];
                }
              }
              // data[k]["type"] = 1;
            }
            that.data = data;
    mounted() {
      // console.log(this.enclosure, "enclosure");
      var flag = false,
        i = 0,
        ind = null;
      this.$store.state.tags.tagList.forEach((item, index) => {
        if (item.label == "附件上传") {
          if (flag == false) {
            ind = index;
            flag = true;
          }
        });
          i++;
        }
      });
      if (i > 1) {
        this.$store.state.tags.tagList.splice(ind, 1);
      }
    },
    methods: {
      upData(val) {
        // console.log(val);
        this.onceIds = +val.id + "";
        this.attachBox = true;
      },
      dowmData(val) {
        console.log(val.down);
        window.open(val.down);
        //
      },
      downTemplates(val) {
        // console.log(val);
        if (val == "") {
          return;
        }
        window.open(val);
        // window.open(`/api/examScore/export-template`);
      },
      handleUpload() {
        this.attachBox = true;
      },
      uploadAfter(res, done, loading, column) {
        // window.console.log(res.link);
        var test = /^http:\/\/.*/;
        if (!test.test(res.link)) {
          this.$message.error("上传失败");
          return;
        }
        this.onceLinks = res.link;
        // console.log(res);
        // return;
        var haveit = null;
        for (let k in this.saveIds) {
          if (this.saveIds[k] == this.onceIds) {
            // this.saveLinks[k] = this.onceLinks;
            haveit = k;
            break;
          }
        }
        if (haveit != null) {
          this.saveLinks[haveit] = this.onceLinks;
        } else {
          this.saveIds.push(this.onceIds);
          this.saveLinks.push(this.onceLinks);
        }
        // console.log(this.saveIds);
        // console.log(this.saveLinks);
    seeImages(row) {
      this.imgUrl = "";
      this.imgUrl = "url(" + row.link + ") center center / contain no-repeat";
      // console.log(this.imgUrl);
      // this.imgUrl = row.link;
        //  console.log(this.$store.getters.userInfo.Id);
        var params = {
          userid: this.$store.getters.userInfo.Id,
          ptype: this.ptype,
          templateid: this.saveIds.join(","),
          links: this.saveLinks.join(",")
        };
        // console.log(params);
        // loading();
        // return;
        addUseInfor(params).then(res => {
          // console.log(res);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
        });
        this.refreshChange();
        this.attachBox = false;
        done();
      },
      handleDownload(row) {
        window.open(`${row.link}`);
      },
      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 = {}) {
        var that = this;
        var data = [];
        // console.log(this.$store.getters.userInfo.Id);
        // this.data = this.enclosure;
        params["ptype"] = this.ptype;
        getTemplate(params, 1, 50).then(res => {
          data = res.data.data.records;
          // console.log(data, "::template");
          params["userid"] = this.$store.getters.userInfo.Id;
          getUseInfor(params).then(res => {
            var userInfo = res.data.data.records;
            // console.log(userInfo, "::userInfo");
            if (userInfo.length == 0) {
              for (var k in data) {
                data[k]["type"] = 1;
              }
              that.data = data;
              this.saveIds = [];
              this.saveLinks = [];
            } else {
              this.saveIds = userInfo[0].templateid.split(",");
              this.saveLinks = userInfo[0].links.split(",");
              for (let k in data) {
                for (let i in this.saveIds) {
                  if (+data[k].id == this.saveIds[i]) {
                    data[k]["type"] = 2;
                    data[k]["down"] = this.saveLinks[i];
                  }
                }
                // data[k]["type"] = 1;
              }
              that.data = data;
            }
          });
        });
      },
      this.imgSee = true;
    },
      seeImages(row) {
        this.imgUrl = "";
        this.imgUrl = "url(" + row.link + ") center center / contain no-repeat";
        // console.log(this.imgUrl);
        // this.imgUrl = row.link;
    fileFormat(row) {
      var index = row.link.lastIndexOf(".");
      var ext = row.link.substr(index + 1);
        this.imgSee = true;
      },
      return (
        [
          "png",
          "jpg",
          "jpeg",
          "bmp",
          "gif",
          "webp",
          "psd",
          "svg",
          "tiff"
        ].indexOf(ext.toLowerCase()) == -1
      );
      fileFormat(row) {
        var index = row.link.lastIndexOf(".");
        var ext = row.link.substr(index + 1);
        return (
          [
            "png",
            "jpg",
            "jpeg",
            "bmp",
            "gif",
            "webp",
            "psd",
            "svg",
            "tiff"
          ].indexOf(ext.toLowerCase()) == -1
        );
      }
    }
  }
};
  };
</script>
<style lang="scss" scoped>
.red {
  border: 1px solid rgba($color: #ff5656, $alpha: 0.3) !important;
  background-color: rgba($color: #ff5151, $alpha: 0.1) !important;
  color: rgba($color: #ff5151, $alpha: 1) !important;
}
.hand:hover {
  cursor: pointer;
}
// .longbut {
//   // background-color: red !important;
//   width: 125px;
// }
// .shortbut {
//   // background-color: green !important;
//   width: 80px;
// }
  .red {
    border: 1px solid rgba($color: #ff5656, $alpha: 0.3) !important;
    background-color: rgba($color: #ff5151, $alpha: 0.1) !important;
    color: rgba($color: #ff5151, $alpha: 1) !important;
  }
  .hand:hover {
    cursor: pointer;
  }
  // .longbut {
  //   // background-color: red !important;
  //   width: 125px;
  // }
  // .shortbut {
  //   // background-color: green !important;
  //   width: 80px;
  // }
</style>
src/components/cardPopup/cardPopup.vue
@@ -1,41 +1,15 @@
<template>
  <div class="once">
    <div v-if="OnceChouse && useWhere != 'close'" class="OnceChouse">
      <slot name="close"></slot>
      <div class="heards"></div>
      <basic-container>
        <div v-for="(item, index) in cardData" :key="index">
          <!-- <div class="chouseHide"> -->
          <el-radio v-model="choseType" :label="item.type">{{
            item.menuName
          }}</el-radio>
          <div class="choseTitle">{{ item.datas.msg }}</div>
          <!-- </div> -->
        </div>
        <div class="hand-next">
          <el-button type="primary" @click="tipchose">确认</el-button>
          <!-- <el-button type="primary" @click="qx">取消</el-button> -->
        </div>
      </basic-container>
    </div>
    <div
      v-if="see && useWhere != 'close' && !OnceChouse"
      class="securityPermit"
    >
    <div v-if="see && useWhere != 'close' && !OnceChouse" class="securityPermit">
      <slot name="close"></slot>
      <div class="heards">{{ name }}</div>
      <basic-container>
        <div v-show="forms == 1" class="first-box-outer">
        <!-- <div v-show="forms == 1" class="first-box-outer">
          <div class="f-b-o-in">
            <div class="handling-guideline">
              <h2 class="hand-title">{{ name }}办理指南</h2>
              <div
                class="hand-content"
                ref="handcontent"
                id="handcontent"
                v-html="htmls"
              >
                <!-- ### -->
              <div class="hand-content" ref="handcontent" id="handcontent" v-html="htmls">
                {{ htmls }}
              </div>
            </div>
@@ -44,35 +18,24 @@
            <el-button type="primary" @click="tip0">下一步</el-button>
            <el-button type="primary" @click="qx">取消</el-button>
          </div>
        </div>
        <div v-show="forms == 2" class="first-box-outer">
          <div class="f-b-o-in" v-if="active">
        </div> -->
        <div class="first-box-outer">
          <div class="f-b-o-in">
            <el-collapse v-model="activeNames" @change="handleChange">
              <el-collapse-item title="公司基本信息" name="1">
                <avue-form
                  ref="form1"
                  v-model="obj0"
                  :option="option"
                  @submit="submit"
                  class="cardButs"
                ></avue-form>
                <avue-form ref="form1" v-model="obj0" :option="option" @submit="submit" class="cardButs"></avue-form>
              </el-collapse-item>
              <el-collapse-item title="附件上传/查询" name="2">
                <attach
                  :type="imgType"
                  :ptype="type"
                  :opens="opens"
                  :enclosure="enclosure"
                ></attach>
              <el-collapse-item title="附件上传" name="2">
                <!-- <attach :type="imgType" :ptype="type" :opens="opens" :enclosure="enclosure"></attach> -->
                <avue-form :option="optionFile" v-model="form"></avue-form>
              </el-collapse-item>
            </el-collapse>
          </div>
          <div class="hand-next">
            <el-button type="primary" @click="tip1up1">上一页</el-button>
            <el-button type="primary" @click="tip1" :disabled="!opens"
              >暂存</el-button
            >
            <!-- <el-button type="primary" @click="tip1up1">上一页</el-button> -->
            <el-button type="primary" @click="tip1" :disabled="!opens">暂存</el-button>
            <el-button type="primary" @click="up()" :disabled="!opens">{{
              //canDoIt ? "提交审批" : "已成功提交"
              opens ? "提交审批" : "提交审批"
@@ -86,341 +49,498 @@
</template>
<script>
import { mapGetters } from "vuex";
import { add, adds, selectIn } from "@/api/recordOur/outCardPopup";
import attach from "@/components/attach/attach";
import {
  // getDetail,
  getList,
  getListre,
  getListrek,
  getListrev,
  getListrel
} from "@/api/permit/permit";
export default {
  components: {
    attach: attach
  },
  props: ["data", "together"],
  data() {
    return {
      htmls: "",
      see: false,
      name: "",
      type: "",
      imgType: "",
      apiName: [],
      forms: 1,
      data0: {},
      obj0: {},
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
      },
      option: {
        emptyBtn: false,
        submitBtn: true,
        gutter: 50,
        column: []
      },
      activeNames: ["1", "2"],
      opens: true,
      active: false,
  import {
    mapGetters
  } from "vuex";
  import {
    add,
    adds,
    selectIn
  } from "@/api/recordOur/outCardPopup";
  import attach from "@/components/attach/attach";
  import {
    // getDetail,
    getList,
    getListre,
    getListrek,
    getListrev,
    getListrel
  } from "@/api/permit/permit";
  export default {
    components: {
      attach: attach
    },
    props: ["data", "together"],
    data() {
      return {
        htmls: "",
        see: false,
        name: "",
        type: "",
        imgType: "",
        apiName: [],
        forms: 2,
        data0: {},
        obj0: {},
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        },
        option: {
          emptyBtn: false,
          submitBtn: true,
          gutter: 50,
          column: [{
              labelWidth: 100,
              label: "场所名称",
              prop: "placeName",
              // span: 24,
              rules: [{
                required: true,
                message: "请输入场所名称",
                trigger: "blur"
              }]
            }, {
              labelWidth: 100,
              label: "负责人名称",
              prop: "principal",
              // span: 24,
              rules: [{
                required: true,
                message: "请输入场所负责人姓名",
                trigger: "blur"
              }]
            },
            {
              labelWidth: 100,
              label: "负责人电话",
              prop: "principalPhone",
              // span: 24,
              rules: [{
                required: true,
                message: "请输入场所负责人联系方式",
                trigger: "blur"
              }]
            },
            // {
            //   label: "位置",
            //   prop: "location",
            //   span: 24,
            //   rules: [{
            //     required: true,
            //     message: "请选择位置",
            //     trigger: "blur"
            //   }]
            // },
            {
              labelWidth: 100,
              // width: 160,
              overHidden: true,
              slot: true,
              label: "位置",
              prop: "location",
              type: "map",
              dataType: "string",
              // labelWidth: 120,
              // span: 24,
              value: [117.96646, 28.431002, ""],
              // cascader: ['houseCodeBinds'],
              mapChange: (params) => {
                console.log('高德回调参数', params)
              },
              //高德初始化参数
              params: {
                zoom: 10,
                zoomEnable: false,
                dragEnable: false,
              },
              rules: [{
                required: true,
                message: "请选择地址",
                trigger: "blur",
              }, ],
            },
            {
              labelWidth: 100,
              label: "派出所名称",
              prop: "pcsName",
              // span: 24,
              rules: [{
                required: true,
                message: "请输入派出所名称",
                trigger: "blur"
              }]
            },
            {
              labelWidth: 100,
              label: "社区名称",
              prop: "communityName",
              // span: 24,
              rules: [{
                required: true,
                message: "请输入社区名称",
                trigger: "blur"
              }]
            },
            {
              labelWidth: 100,
              label: "社区名称",
              prop: "communityName",
              // span: 24,
              rules: [{
                required: true,
                message: "请输入社区名称",
                trigger: "blur"
              }]
            },
          ]
        },
      OnceChouse: false, //选择武装押运或者保安服务许可
      cardData: [],
      choseType: "",
      overtime: {
        overtimef: "",
        overtimec: ""
      },
      enclosure: [] //附件上传 基础数据
    };
  },
  computed: {
    ...mapGetters(["userInfo", "useWhere"])
  },
  watch: {
    useWhere() {
      var d = [];
      // console.log(this.together, "fromWhere");
      for (var i in this.together) {
        if (this.useWhere == this.together[i].fromWhere) {
          this.OnceChouse = true;
        optionFile: {
          emptyBtn: false,
          submitBtn: true,
          gutter: 50,
          column: [
            //   {
            //   label: "附件",
            //   prop: "parentCode",
            //   type: 'upload',
            //   span: 24,
            //   dragFile: true,
            //   // action: action,
            //   rules: [{
            //     required: true,
            //     message: "请上传附件",
            //     trigger: "blur"
            //   }]
            // },
            {
              label: '附件',
              prop: 'constructionSchemeUrls',
              type: 'upload',
              span: 24,
              hide: true,
              labelWidth: 140,
              multiple: true,
              listType: "text",
              // showFileList: true,
              propsHttp: {
                res: 'data',
                name: "originalName",
                url: "link"
              },
              data: {
                suffix: 'pdf,ppt,doc,docx'
              },
              action: '/api/blade-resource/oss/endpoint/put-file-attach-suffix',
              rules: [{
                required: true,
                message: "请上传附件",
                trigger: "blur",
              }, ],
            },
          ]
        },
          d.push(this.together[i]);
          // console.log("选择");
        }
      }
      if (this.OnceChouse) {
        this.choseType = this.useWhere;
        for (var k in this.data) {
          if (this.data[k].type == this.useWhere) {
            d.unshift(this.data[k]);
        activeNames: ["1", "2"],
        opens: true,
        active: false,
        OnceChouse: false, //选择武装押运或者保安服务许可
        cardData: [],
        choseType: "",
        overtime: {
          overtimef: "",
          overtimec: ""
        },
        enclosure: [] //附件上传 基础数据
      };
    },
    computed: {
      ...mapGetters(["userInfo", "useWhere"])
    },
    watch: {
      useWhere() {
        var d = [];
        // console.log(this.together, "fromWhere");
        for (var i in this.together) {
          if (this.useWhere == this.together[i].fromWhere) {
            this.OnceChouse = true;
            d.push(this.together[i]);
            // console.log("选择");
          }
        }
        this.cardData = d;
        console.log(this.cardData);
      } else {
        this.openS();
      }
      if (this.useWhere == "close") {
        this.tipover();
      }
    }
  },
  methods: {
    tipchose() {
      this.OnceChouse = false;
      this.openS(this.choseType, this.cardData);
    },
    openS(chose, datas) {
      var n = chose || this.useWhere;
      this.data = datas || this.data;
      for (var k in this.data) {
        if (n == this.data[k].type) {
        if (this.OnceChouse) {
          this.choseType = this.useWhere;
          for (var k in this.data) {
            if (this.data[k].type == this.useWhere) {
              d.unshift(this.data[k]);
            }
          }
          this.cardData = d;
          console.log(this.cardData);
        } else {
          this.see = true;
          this.type = this.data[k].type;
          this.enclosure = this.data[k].enclosure;
          this.overtime = this.data[k].overtime;
          this.imgType = this.data[k].imgType;
          this.htmls = this.data[k].datas.htmls;
          this.apiName = this.data[k].datas.apiName;
          this.name = this.data[k].menuName;
          var d = this.data[k].datas.column;
          this.onLoad(this.page, {}, n, d);
          console.log("已选择type:" + n + "--" + this.name);
          this.convert();
          // this.openS();
        }
        if (this.useWhere == "close") {
          this.tipover();
        }
      }
    },
    onLoad(page, params = {}, val, d) {
      params["cardid"] = this.userInfo.Id;
      getList(page.currentPage, page.pageSize, params).then(res => {
        const data = res.data.data;
        this.data = data.records;
        getListre(page.currentPage, page.pageSize, params).then(ress => {
          this.data = this.data.concat(ress.data.data.records);
          getListrek(page.currentPage, page.pageSize, params).then(resk => {
            this.data = this.data.concat(resk.data.data.records);
            getListrev(page.currentPage, page.pageSize, params).then(resv => {
              this.data = this.data.concat(resv.data.data.records);
              getListrel(page.currentPage, page.pageSize, params).then(resl => {
                this.data = this.data.concat(resl.data.data.records);
                // console.log("已有申请数量:", this.data.length);
                // console.log(val, "当前type");
                if (this.data.kservicetime) {
                  this.data.kservicetime.split(",");
                }
                this.changeBut(true, d);
                if (this.data.length == 0) {
                  // console.log("一条数据都没有");
                } else {
                  this.data.forEach(item => {
                    // console.log(item.ptype);
                    if (item.ptype == val) {
                      if (item.type == 0 || item.type == 2) {
                        this.changeBut(false, d);
                        // console.log(item, "有数据未审核或者审核通过");
                      } else {
                        this.changeBut(true, d);
                        // console.log(item, "审核不通过");
                      }
                    }
                  });
                }
              });
            });
    methods: {
      tipchose() {
        this.OnceChouse = false;
        this.openS(this.choseType, this.cardData);
      },
      openS(chose, datas) {
        var n = chose || this.useWhere;
        this.data = datas || this.data;
        for (var k in this.data) {
          if (n == this.data[k].type) {
            this.see = true;
            this.type = this.data[k].type;
            this.enclosure = this.data[k].enclosure;
            this.overtime = this.data[k].overtime;
            this.imgType = this.data[k].imgType;
            this.htmls = this.data[k].datas.htmls;
            this.apiName = this.data[k].datas.apiName;
            this.name = this.data[k].menuName;
            var d = this.data[k].datas.column;
            this.onLoad(this.page, {}, n, d);
            console.log("已选择type:" + n + "--" + this.name);
            this.convert();
          }
        }
      },
      onLoad(page, params = {}, val, d) {
        params["cardid"] = this.userInfo.Id;
        // getList(page.currentPage, page.pageSize, params).then(res => {
        //   const data = res.data.data;
        //   this.data = data.records;
        //   getListre(page.currentPage, page.pageSize, params).then(ress => {
        //     this.data = this.data.concat(ress.data.data.records);
        //     getListrek(page.currentPage, page.pageSize, params).then(resk => {
        //       this.data = this.data.concat(resk.data.data.records);
        //       getListrev(page.currentPage, page.pageSize, params).then(resv => {
        //         this.data = this.data.concat(resv.data.data.records);
        //         getListrel(page.currentPage, page.pageSize, params).then(resl => {
        //           this.data = this.data.concat(resl.data.data.records);
        //           // console.log("已有申请数量:", this.data.length);
        //           // console.log(val, "当前type");
        //           if (this.data.kservicetime) {
        //             this.data.kservicetime.split(",");
        //           }
        //           this.changeBut(true, d);
        //           if (this.data.length == 0) {
        //             // console.log("一条数据都没有");
        //           } else {
        //             this.data.forEach(item => {
        //               // console.log(item.ptype);
        //               if (item.ptype == val) {
        //                 if (item.type == 0 || item.type == 2) {
        //                   this.changeBut(false, d);
        //                   // console.log(item, "有数据未审核或者审核通过");
        //                 } else {
        //                   this.changeBut(true, d);
        //                   // console.log(item, "审核不通过");
        //                 }
        //               }
        //             });
        //           }
        //         });
        //       });
        //     });
        //   });
        // });
      },
      changeBut(val, d) {
        this.opens = val;
        for (var k in d) {
          d[k]["disabled"] = !this.opens;
        }
        this.option.column = d;
        this.active = true;
      },
      convert: function() {
        var caridid = this.$store.getters.userInfo.Id;
        selectIn(this.apiName[2], caridid, this.type).then(res => {
          var d = res.data.data;
          // console.log(d, "d");
          for (var k in d) {
            this.obj0[k.toLowerCase()] = d[k];
          }
          // console.log(this.obj0, "obj0");
        });
      },
      tip0() {
        this.forms = 2;
      },
      qx() {
        this.tipover();
        this.$store.commit("changeuseWhere", "close");
      },
      tip1up1() {
        this.forms = 2;
      },
      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];
            }
          }
        }
        console.log(d);
        this.data0 = d;
        this.data0.cardid = this.$store.getters.userInfo.Id;
        this.data0.ptype = this.type;
        adds(this.apiName[1], this.data0).then(() => {
          this.qx();
          this.$message({
            message: "暂存申请成功",
            type: "success"
          });
        });
      });
    },
    changeBut(val, d) {
      this.opens = val;
      for (var k in d) {
        d[k]["disabled"] = !this.opens;
      }
      this.option.column = d;
      this.active = true;
    },
    convert: function() {
      var caridid = this.$store.getters.userInfo.Id;
      selectIn(this.apiName[2], caridid, this.type).then(res => {
        var d = res.data.data;
        // console.log(d, "d");
        for (var k in d) {
          this.obj0[k.toLowerCase()] = d[k];
        }
        // console.log(this.obj0, "obj0");
      });
    },
    tip0() {
      this.forms = 2;
    },
    qx() {
      this.tipover();
      this.$store.commit("changeuseWhere", "close");
    },
    tip1up1() {
      this.forms = 1;
    },
    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];
          }
        }
      }
      console.log(d);
      this.data0 = d;
      this.data0.cardid = this.$store.getters.userInfo.Id;
      this.data0.ptype = this.type;
      adds(this.apiName[1], this.data0).then(() => {
        this.qx();
        this.$message({
          message: "暂存申请成功",
          type: "success"
        });
      });
    },
    aa(b) {
      console.log(b);
    },
    submit() {
      this.up(0);
    },
    up(val = 1) {
      //提交申请
      // this.submit();
      if (val == 1) {
        this.$refs.form1.submit(); //解决点击提交不能显示那个字段输入错误的问题
        return;
      }
      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.type;
      this.data0.cardid = this.$store.getters.userInfo.Id;
      //验证数据
      var commin = true;
      var a = this.data0;
      for (var k in a) {
        if (k == "representativecell" || k == "contactscell") {
          //电话验证
          if (!yanzhengphons.test(a[k])) {
            // console.log(a[k], k);
            commin = false;
            console.log(1);
            break;
          }
          // } else if (k == "creditcode" || k == "registeredcapital") {
        } else if (k == "registeredcapital") {
          //数字验证
          if (!yanzhengnumbers.test(a[k])) {
            // console.log(a[k], k);
            commin = false;
            console.log(2);
            break;
          }
        } else if (k == "address" || k == "business") {
          //跳过验证
          continue;
        } else {
          //空值验证
          // if (a[k] == "" && k != "ptype" && k != "creditcode") {
          //   console.log(a[k], k);
          //   commin = false;
          //   console.log(3);
          //   break;
          // }
        }
      }
      if (!commin) {
        this.$message({
          message: "请检查输入数据是否正确!",
          type: "warning"
        });
        return;
      }
      a["overtime"] = this.getNowTime(this.overtime.overtimec);
      // console.log(a);
      // return;
      // console.log(typeof this.data0.kservicetime);
      if (
        this.data0.kservicetime &&
        typeof this.data0.kservicetime != "string"
      ) {
        this.data0.kservicetime = this.data0.kservicetime.join(",");
      }
      // console.log(this.apiName[0], this.data0);
      // return;
      add(this.apiName[0], this.data0).then(() => {
        this.qx();
        this.$message({
          message: "提交申请成功",
          type: "success"
        });
        this.$store.commit("changecanDoIt", false);
      });
    },
    getNowTime(form) {
      var DaysToAdd = form;
      var now = new Date();
      var newdate = new Date();
      var newtimems = newdate.getTime() + DaysToAdd * 24 * 60 * 60 * 1000;
      newdate.setTime(newtimems);
      //只得到年月日的
      var time =
        newdate.getFullYear() +
        "-" +
        (newdate.getMonth() + 1) +
        "-" +
        newdate.getDate();
      //得到具体时间
      return time;
    },
    tipover(a, b) {
      if (a == 1) {
      },
      aa(b) {
        console.log(b);
        var number = false,
          reg = /^[0-9]+.?[0-9]*$/;
        for (var k in b) {
          if (k == "creditcode") {
            if (reg.test(b[k])) {
              number = true;
            } else {
              number = false;
      },
      submit() {
        this.up(0);
      },
      up(val = 1) {
        //提交申请
        // this.submit();
        if (val == 1) {
          this.$refs.form1.submit(); //解决点击提交不能显示那个字段输入错误的问题
          return;
        }
        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];
            }
          } else {
            continue;
          }
        }
        return number;
        this.data0 = d;
        this.data0.ptype = this.type;
        this.data0.cardid = this.$store.getters.userInfo.Id;
        //验证数据
        var commin = true;
        var a = this.data0;
        for (var k in a) {
          if (k == "representativecell" || k == "contactscell") {
            //电话验证
            if (!yanzhengphons.test(a[k])) {
              // console.log(a[k], k);
              commin = false;
              console.log(1);
              break;
            }
            // } else if (k == "creditcode" || k == "registeredcapital") {
          } else if (k == "registeredcapital") {
            //数字验证
            if (!yanzhengnumbers.test(a[k])) {
              // console.log(a[k], k);
              commin = false;
              console.log(2);
              break;
            }
          } else if (k == "address" || k == "business") {
            //跳过验证
            continue;
          } else {
            //空值验证
            // if (a[k] == "" && k != "ptype" && k != "creditcode") {
            //   console.log(a[k], k);
            //   commin = false;
            //   console.log(3);
            //   break;
            // }
          }
        }
        if (!commin) {
          this.$message({
            message: "请检查输入数据是否正确!",
            type: "warning"
          });
          return;
        }
        a["overtime"] = this.getNowTime(this.overtime.overtimec);
        // console.log(a);
        // return;
        // console.log(typeof this.data0.kservicetime);
        if (
          this.data0.kservicetime &&
          typeof this.data0.kservicetime != "string"
        ) {
          this.data0.kservicetime = this.data0.kservicetime.join(",");
        }
        // console.log(this.apiName[0], this.data0);
        // return;
        add(this.apiName[0], this.data0).then(() => {
          this.qx();
          this.$message({
            message: "提交申请成功",
            type: "success"
          });
          this.$store.commit("changecanDoIt", false);
        });
      },
      getNowTime(form) {
        var DaysToAdd = form;
        var now = new Date();
        var newdate = new Date();
        var newtimems = newdate.getTime() + DaysToAdd * 24 * 60 * 60 * 1000;
        newdate.setTime(newtimems);
        //只得到年月日的
        var time =
          newdate.getFullYear() +
          "-" +
          (newdate.getMonth() + 1) +
          "-" +
          newdate.getDate();
        //得到具体时间
        return time;
      },
      tipover(a, b) {
        if (a == 1) {
          console.log(b);
          var number = false,
            reg = /^[0-9]+.?[0-9]*$/;
          for (var k in b) {
            if (k == "creditcode") {
              if (reg.test(b[k])) {
                number = true;
              } else {
                number = false;
              }
            } else {
              continue;
            }
          }
          return number;
        }
        this.forms = 2;
        this.obj0 = {
          // title0: "保安单位基本信息",
        };
        var d = {};
        this.data0 = d;
        this.active = false;
        this.OnceChouse = false;
      }
      this.forms = 1;
      this.obj0 = {
        // title0: "保安单位基本信息",
      };
      var d = {};
      this.data0 = d;
      this.active = false;
      this.OnceChouse = false;
    }
  }
};
  };
</script>
<style lang="scss"></style>
src/config/website.js
@@ -4,8 +4,8 @@
export default {
  title: "saber",
  logo: "S",
  key: 'saber',//配置主键,目前用于存储
  indexTitle: '单位许可和备案系统',
  key: 'saber', //配置主键,目前用于存储
  indexTitle: '无诈场景系统',
  clientId: 'saber', // 客户端id
  clientSecret: 'saber_secret', // 客户端密钥
  tenantMode: true, // 是否开启租户模式
src/lang/zh.js
@@ -1,6 +1,6 @@
export default {
  tip: '提示',
  title: '单位许可和备案系统',
  title: '无诈场景系统',
  logoutTip: '退出系统, 是否继续?',
  submitText: '确定',
  cancelText: '取消',
@@ -67,7 +67,7 @@
  },
  login: {
    title: '登录 ',
    info: '单位许可和备案系统',
    info: '无诈场景系统',
    tenantId: '请输入租户ID',
    username: '请输入账号',
    password: '请输入密码',
@@ -81,8 +81,8 @@
    phone: '请输入手机号',
    code: '请输入验证码',
    submit: '登录',
    zc:'注册',
    gb:'关闭',
    zc: '注册',
    gb: '关闭',
    userLogin: '账号密码登录',
    phoneLogin: '账号密码注册',
    thirdLogin: '第三方系统登录',
src/page/login/codelogin.vue
@@ -1,13 +1,6 @@
<template>
  <el-form
    class="login-form"
    status-icon
    :rules="loginRules"
    ref="loginForm"
    :model="loginForm"
    label-width="0"
  >
    <el-form-item prop="username">
  <el-form class="login-form" status-icon :rules="loginRules" ref="loginForm" :model="loginForm" label-width="0">
    <!-- <el-form-item prop="username">
      <el-input
        size="small"
        @keyup.enter.native="handleLogin"
@@ -17,298 +10,301 @@
      >
        <i slot="prefix" class="icon-yonghu" />
      </el-input>
    </el-form-item>
    </el-form-item> -->
    <el-form-item prop="phone">
      <el-input
        size="small"
        @keyup.enter.native="handleLogin"
        v-model="loginForm.phone"
        auto-complete="off"
        :placeholder="$t('login.phone')"
      >
      <el-input size="small" @keyup.enter.native="handleLogin" v-model="loginForm.phone" auto-complete="off"
        :placeholder="$t('login.phone')">
        <i slot="prefix" class="el-icon-phone-outline" />
      </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')"
      >
      <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')"
      >
      <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 class="z-login-submit-prv">
      <el-button
        size="small"
        type="primary"
        @click.native.prevent="handleLogin"
        class="z-login-submit"
        >{{ $t("login.zc") }}
      <el-button size="small" type="primary" @click.native.prevent="handleLogin"
        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 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 { zc } from "@/api/system/user";
  import {
    isvalidatemobile
  } from "@/util/validate";
  import {
    mapGetters
  } from "vuex";
  import {
    zc
  } from "@/api/system/user";
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]));
      } else {
        callback();
      }
    };
    const validateCode = (rule, value, callback) => {
      if (value.length !== 4) {
        callback(new Error("请输入4位数的验证码"));
      } else {
        callback();
      }
    };
    return {
      msgText: "",
      msgTime: "",
      dic: [],
      msgKey: false,
      loginForm: {
        username: "",
        phone: "",
        password: "",
        password2: "",
      },
      value: "",
      options: [],
      loginRules: {
        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;
  },
  computed: {
    ...mapGetters(["tagWel"]),
    config() {
  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]));
        } else {
          callback();
        }
      };
      const validateCode = (rule, value, callback) => {
        if (value.length !== 4) {
          callback(new Error("请输入4位数的验证码"));
        } else {
          callback();
        }
      };
      return {
        MSGINIT: this.$t("login.msgText"),
        MSGSCUCCESS: this.$t("login.msgSuccess"),
        MSGTIME: 60,
        msgText: "",
        msgTime: "",
        dic: [],
        msgKey: false,
        loginForm: {
          username: "",
          account: "",
          phone: "",
          password: "",
          password2: "",
        },
        value: "",
        options: [],
        loginRules: {
          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",
      };
    },
  },
  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,
              });
            }
          }
    created() {
      this.msgText = this.config.MSGINIT;
      this.msgTime = this.config.MSGTIME;
    },
    computed: {
      ...mapGetters(["tagWel"]),
      config() {
        return {
          MSGINIT: this.$t("login.msgText"),
          MSGSCUCCESS: this.$t("login.msgSuccess"),
          MSGTIME: 60,
        };
      },
    },
    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;
    },
        return arr;
      },
    clearValidate(formName) {
      this.$refs[formName].clearValidate();
    },
    refreshCode(row) {
      zc(row.username, row.password, row.phone).then((res) => {
      clearValidate(formName) {
        this.$refs[formName].clearValidate();
      },
      refreshCode(row) {
        zc(row).then((res) => {
          this.loginForm.username = "";
          this.loginForm.phone = "";
          this.loginForm.password = "";
          this.loginForm.password2 = "";
          this.$notify({
            title: "注册成功",
            type: "warning",
          });
        });
        var z = document.querySelector(".z");
        z.style.display = "none";
        this.clearValidate("loginForm");
        this.clearValidate("loginForm");
      },
      gb() {
        this.loginForm.username = "";
        this.loginForm.phone = "";
        this.loginForm.password = "";
        this.loginForm.password2 = "";
        this.$notify({
          title: "注册成功",
          type: "warning",
        });
      });
      var z = document.querySelector(".z");
      z.style.display = "none";
      this.clearValidate("loginForm");
      this.clearValidate("loginForm");
    },
    gb() {
      this.loginForm.username = "";
      this.loginForm.password = "";
      this.loginForm.password2 = "";
      var zs = document.querySelector(".z");
      zs.style.display = "none";
      this.clearValidate("loginForm");
    },
    handleSend() {
      if (this.msgKey) return;
      this.msgText = this.msgTime + this.config.MSGSCUCCESS;
      this.msgKey = true;
      const time = setInterval(() => {
        this.msgTime--;
        var zs = document.querySelector(".z");
        zs.style.display = "none";
        this.clearValidate("loginForm");
      },
      handleSend() {
        if (this.msgKey) return;
        this.msgText = this.msgTime + this.config.MSGSCUCCESS;
        if (this.msgTime === 0) {
          this.msgTime = this.config.MSGTIME;
          this.msgText = this.config.MSGINIT;
          this.msgKey = false;
          clearInterval(time);
        }
      }, 1000);
        this.msgKey = true;
        const time = setInterval(() => {
          this.msgTime--;
          this.msgText = this.msgTime + this.config.MSGSCUCCESS;
          if (this.msgTime === 0) {
            this.msgTime = this.config.MSGTIME;
            this.msgText = this.config.MSGINIT;
            this.msgKey = false;
            clearInterval(time);
          }
        }, 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.loginForm.account = this.loginForm.phone
            this.refreshCode(this.loginForm);
            this.message("dahsiofhiusa");
            return Promise.reject(new Error("注册成功,待审核"));
          }
        });
      },
      gbs() {
        this.gb();
      },
    },
    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.refreshCode(this.loginForm);
          this.message("dahsiofhiusa");
          return Promise.reject(new Error("注册成功,待审核"));
        }
      });
    },
    gbs() {
      this.gb();
    },
  },
};
  };
</script>
<style>
.msg-text {
  display: block;
  width: 40px;
  font-size: 12px;
  text-align: center;
  cursor: pointer;
}
  .msg-text {
    display: block;
    width: 40px;
    font-size: 12px;
    text-align: center;
    cursor: pointer;
  }
.msg-text.display {
  color: #ccc;
}
  .msg-text.display {
    color: #ccc;
  }
.z-login-submit-prv {
  margin-top: 20px;
  padding: 0 10%;
  box-sizing: border-box;
}
  .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-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;
}
  .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>
src/views/home/index.vue
@@ -1,12 +1,9 @@
<template>
  <div id="examine">
    <div class="examine_heard">
      服务许可审批备案系统
      无诈场景系统
      <div class="e_h_right">
        <img
          src="http://nx.baibaodun.cn:80/assets/images/username-person.png"
          alt=""
        />
        <img src="http://nx.baibaodun.cn:80/assets/images/username-person.png" alt="" />
        <span>
          {{ userName }}
        </span>
@@ -15,18 +12,13 @@
    </div>
    <div class="examine_body">
      <div class="title">
        <h2>保安相关申请流程</h2>
        <h2>无诈场景信息提交</h2>
        <button @click="openApproval">审批进度查询</button>
      </div>
      <div class="b_main">
        <!-- 卡片 -->
        <examineCard
          v-for="(item, index) in dataCard"
          :key="index"
          :data="item"
          :ind="item.type"
          @open="openMain"
        ></examineCard>
        <examineCard v-for="(item, index) in dataCard" :key="index" :data="item" :ind="item.type" @open="openMain">
        </examineCard>
        <!-- v-show="showCard" -->
        <!-- :background="" -->
      </div>
@@ -35,10 +27,7 @@
    <!-- 审批进度查询 -->
    <Approval class="Approval" :data="dataCard">
      <span slot="close">
        <i
          class="el-icon-close ApprovalClose breakApprovalClose"
          @click="ApprovalClose"
        ></i>
        <i class="el-icon-close ApprovalClose breakApprovalClose" @click="ApprovalClose"></i>
      </span>
    </Approval>
    <cardPopup class="crossRegion" :data="dataCard" :together="together">
@@ -50,286 +39,318 @@
</template>
<script>
import { ourDatas } from "./ourDatas";
import examineCard from "@/components/examineCard/examineCard.vue"; //卡片
import Approval from "@/components/Approval/Approval.vue"; //审批进度查询
import cardPopup from "@/components/cardPopup/cardPopup.vue"; // 卡片弹窗
import { mapGetters } from "vuex";
import { resetRouter } from "@/router/router";
  import {
    ourDatas
  } from "./ourDatas";
  import examineCard from "@/components/examineCard/examineCard.vue"; //卡片
  import Approval from "@/components/Approval/Approval.vue"; //审批进度查询
  import cardPopup from "@/components/cardPopup/cardPopup.vue"; // 卡片弹窗
  import {
    mapGetters
  } from "vuex";
  import {
    resetRouter
  } from "@/router/router";
export default {
  components: {
    examineCard: examineCard,
    Approval: Approval,
    cardPopup: cardPopup,
  },
  data() {
    return {
      userName: "",
      data: [],
      dataCard: [],
      together: [],
      out: true,
      d: [],
    };
  },
  computed: {
    ...mapGetters(["userInfo", "ApprovalShow", "useWhere"]),
  },
  created() {
    this.cc();
    // this.dataCard = ourDatas;
    var cando = [];
    var normal = [];
    var both = [];
    for (var k in ourDatas) {
      if (ourDatas[k].fromWhere != undefined) {
        both.push(ourDatas[k]);
        continue;
      }
      normal.push(ourDatas[k]);
      cando.push({
        opens: true,
        type: ourDatas[k].type,
      });
    }
    this.dataCard = normal;
    this.together = both;
    this.$store.commit("setcanDoIt", cando);
  },
  methods: {
    cc: function () {
      this.userName = this.userInfo.user_name;
  export default {
    components: {
      examineCard: examineCard,
      Approval: Approval,
      cardPopup: cardPopup,
    },
    openApproval() {
      this.$store.commit("doitApprovalShow", true);
    data() {
      return {
        userName: "",
        data: [],
        dataCard: [],
        together: [],
        out: true,
        d: [],
      };
    },
    ApprovalClose() {
      this.$store.commit("doitApprovalShow", false);
    computed: {
      ...mapGetters(["userInfo", "ApprovalShow", "useWhere"]),
    },
    openClose() {
      this.$store.commit("changeuseWhere", "close");
    },
    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" });
    created() {
      this.cc();
      // this.dataCard = ourDatas;
      var cando = [];
      var normal = [];
      var both = [];
      for (var k in ourDatas) {
        if (ourDatas[k].fromWhere != undefined) {
          both.push(ourDatas[k]);
          continue;
        }
        normal.push(ourDatas[k]);
        cando.push({
          opens: true,
          type: ourDatas[k].type,
        });
      });
    },
    openMain(val, goon) {
      this.zhezao = true;
      if (goon == "openLook") {
        this.$store.commit("doitApprovalShow", true);
        return;
      }
      // this.onLoad(this.page, {}, val);
      this.$store.commit("changeuseWhere", val);
      this.dataCard = normal;
      this.together = both;
      this.$store.commit("setcanDoIt", cando);
    },
  },
};
    methods: {
      cc: function() {
        this.userName = this.userInfo.user_name;
      },
      openApproval() {
        this.$store.commit("doitApprovalShow", true);
      },
      ApprovalClose() {
        this.$store.commit("doitApprovalShow", false);
      },
      openClose() {
        this.$store.commit("changeuseWhere", "close");
      },
      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"
            });
          });
        });
      },
      openMain(val, goon) {
        this.zhezao = true;
        if (goon == "openLook") {
          this.$store.commit("doitApprovalShow", true);
          return;
        }
        // this.onLoad(this.page, {}, val);
        this.$store.commit("changeuseWhere", val);
      },
    },
  };
</script>
<style lang="scss">
#examine {
  width: 100%;
  height: 100%;
  overflow: hidden;
  box-sizing: border-box;
  .examine_heard {
    background-color: #25aff3;
    width: 100%;
    padding-left: 30px;
    box-sizing: border-box;
    height: 50px;
    color: #ffffff;
    font-size: 24px;
    line-height: 50px;
    .e_h_right {
      float: right;
      margin-right: 20px;
      img {
        display: inline-block;
        vertical-align: middle;
      }
      span {
        font-style: normal;
        color: #ffffff;
        font-size: 16px;
        line-height: 50px;
        display: inline-block;
        margin: 0;
        padding-left: 4px;
      }
      div {
        display: inline;
        margin-left: 15px;
        color: #ffffff;
        font-size: 16px;
        line-height: 50px;
      }
    }
  }
  .examine_body {
    width: 100%;
    height: calc(100% - 50px);
    .title {
      h2 {
        position: relative;
        left: 60px;
      }
      width: 100%;
      height: 200px;
      // border: 1px solid red;
      display: flex;
      align-items: center;
      padding-bottom: 120px;
      box-sizing: border-box;
      justify-content: center;
      button {
        position: relative;
        left: 30%;
        border: 1px solid rgba($color: #000000, $alpha: 0.3);
        border-radius: 5px;
        height: 25px;
        width: 140px;
        text-align: center;
        background-color: #fff;
      }
    }
    .b_main {
      // width: 1105px;// 3个一行
      width: 1475px; //4个一行
      height: calc(100% - 220px);
      // border: 1px solid red;
      margin: 0 auto;
      box-sizing: border-box;
    }
  }
  .zhezhao {
  #examine {
    width: 100%;
    height: 100%;
    overflow: hidden;
    box-sizing: border-box;
    .examine_heard {
      background-color: #25aff3;
      width: 100%;
      padding-left: 30px;
      box-sizing: border-box;
      height: 50px;
      color: #ffffff;
      font-size: 24px;
      line-height: 50px;
      .e_h_right {
        float: right;
        margin-right: 20px;
        img {
          display: inline-block;
          vertical-align: middle;
        }
        span {
          font-style: normal;
          color: #ffffff;
          font-size: 16px;
          line-height: 50px;
          display: inline-block;
          margin: 0;
          padding-left: 4px;
        }
        div {
          display: inline;
          margin-left: 15px;
          color: #ffffff;
          font-size: 16px;
          line-height: 50px;
        }
      }
    }
    .examine_body {
      width: 100%;
      height: calc(100% - 50px);
      .title {
        h2 {
          position: relative;
          left: 60px;
        }
        width: 100%;
        height: 200px;
        // border: 1px solid red;
        display: flex;
        align-items: center;
        padding-bottom: 120px;
        box-sizing: border-box;
        justify-content: center;
        button {
          position: relative;
          left: 30%;
          border: 1px solid rgba($color: #000000, $alpha: 0.3);
          border-radius: 5px;
          height: 25px;
          width: 140px;
          text-align: center;
          background-color: #fff;
        }
      }
      .b_main {
        // width: 1105px;// 3个一行
        width: 1475px; //4个一行
        height: calc(100% - 220px);
        // border: 1px solid red;
        margin: 0 auto;
        box-sizing: border-box;
      }
    }
    .zhezhao {
      width: 100%;
      height: 100%;
      position: fixed;
      top: 0;
      left: 0;
      background-color: rgba($color: #000000, $alpha: 0.2);
    }
    .Approval,
    .securityPermit {
      position: absolute;
      top: calc(10%);
      left: calc(50% - 621px);
      width: 1243px;
      // height: 766px;
    }
    .OnceChouse {
      position: absolute;
      top: calc(50% - 200px);
      left: calc(50% - 300px);
      width: 600px;
      height: 400px;
      // background-color: #fff;
    }
    .ApprovalClose {
      position: absolute;
      top: 17px;
      font-size: 20px;
      right: 11px;
      z-index: 10;
      color: #fff;
      &:hover {
        color: red;
      }
    }
    .breakApprovalClose {
      color: #000;
    }
  }
  //弹窗样式
  .heards {
    margin: 0 auto;
    width: calc(100% - 10px);
    height: 40px;
    position: relative;
    top: 13px;
    color: #fff;
    border-radius: 10px 10px 0 0;
    text-align: center;
    line-height: 40px;
    left: 1px;
    background-color: #25aff3;
  }
  .first-box-outer {
    width: 100%;
    max-height: 685px;
    overflow-y: hidden;
    overflow-x: hidden;
    .f-b-o-in {
      width: 100%;
      height: 620px;
      overflow-y: scroll;
      overflow-x: hidden;
    }
  }
  .handling-guideline {
    width: 85%;
    padding: 10px;
    margin: 0 auto;
    background-color: rgba($color: #f9f9f9, $alpha: 0.8);
  }
  .hand-next {
    margin-top: 15px;
    width: 100%;
    display: flex;
    justify-content: center;
  }
  p {
    font-size: 14px;
    line-height: 28px;
    label {
      font-weight: bold;
    }
  }
  .el-collapse-item__header {
    font-size: 20px !important;
  }
  .zhezhao {
    position: fixed;
    top: 0;
    left: 0;
    background-color: rgba($color: #000000, $alpha: 0.2);
  }
  .Approval,
  .securityPermit {
    position: absolute;
    top: calc(10%);
    left: calc(50% - 621px);
    width: 1243px;
    // height: 766px;
  }
  .OnceChouse {
    position: absolute;
    top: calc(50% - 200px);
    left: calc(50% - 300px);
    width: 600px;
    height: 400px;
    // background-color: #fff;
  }
  .ApprovalClose {
    position: absolute;
    top: 17px;
    font-size: 20px;
    right: 11px;
    z-index: 10;
    color: #fff;
    &:hover {
      color: red;
    }
  }
  .breakApprovalClose {
    color: #000;
  }
}
//弹窗样式
.heards {
  margin: 0 auto;
  width: calc(100% - 10px);
  height: 40px;
  position: relative;
  top: 13px;
  color: #fff;
  border-radius: 10px 10px 0 0;
  text-align: center;
  line-height: 40px;
  left: 1px;
  background-color: #25aff3;
}
.first-box-outer {
  width: 100%;
  max-height: 685px;
  overflow-y: hidden;
  overflow-x: hidden;
  .f-b-o-in {
    width: 100%;
    height: 620px;
    overflow-y: scroll;
    overflow-x: hidden;
    height: 100%;
    background-color: rgba($color: #7a7a7a, $alpha: 0.1);
  }
}
.handling-guideline {
  width: 85%;
  padding: 10px;
  margin: 0 auto;
  background-color: rgba($color: #f9f9f9, $alpha: 0.8);
}
.hand-next {
  margin-top: 15px;
  width: 100%;
  display: flex;
  justify-content: center;
}
p {
  font-size: 14px;
  line-height: 28px;
  label {
    font-weight: bold;
  //单选大小
  .el-radio__inner {
    width: 25px;
    height: 25px;
  }
}
.el-collapse-item__header {
  font-size: 20px !important;
}
.zhezhao {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba($color: #7a7a7a, $alpha: 0.1);
}
  .el-radio__inner::after {
    width: 8px;
    height: 8px;
    // left: calc(50% - 4px);
    // top: calc(50% - 4px);
  }
//单选大小
.el-radio__inner {
  width: 25px;
  height: 25px;
}
.el-radio__inner::after {
  width: 8px;
  height: 8px;
  // left: calc(50% - 4px);
  // top: calc(50% - 4px);
}
.el-radio__label {
  font-size: 16px;
  font-weight: 700;
  font: Helvetica Neue, Helvetica, PingFang SC, \5fae\8f6f\96c5\9ed1, Tahoma,
    Arial, sans-serif;
}
.choseTitle {
  padding: 15px 28px;
  font-size: 14px;
}
</style>
  .el-radio__label {
    font-size: 16px;
    font-weight: 700;
    font: Helvetica Neue, Helvetica, PingFang SC, \5fae\8f6f\96c5\9ed1, Tahoma,
      Arial, sans-serif;
  }
  .choseTitle {
    padding: 15px 28px;
    font-size: 14px;
  }
</style>
src/views/home/ourDatas.js
@@ -35,12 +35,12 @@
export var ourDatas = [{
    menuName: "保安服务许可申请",
    menuName: "企业",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq1.png)",
    topUrlh: "url(/img/login-sq11.png)",
    targetUrl: "per",
    type: 0,
    type: 2,
    imgType: 0,
    datas: {
      msg: `材料说明:普通保安服
@@ -49,7 +49,7 @@
            秩序维护的公司。`,
      htmls: securityPermit,
      column: securityPermitcolumn,
      apiName: ['permit/save', 'permit/storage', 'permit/selectIn']
      apiName: ['permit/save', 'permit/storage', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
@@ -58,16 +58,16 @@
    enclosure: securityPermitenclosure,
  },
  {
    menuName: "保安培训许可申请",
    menuName: "工地",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq4.png)",
    topUrlh: "url(/img/login-sq44.png)",
    type: 1,
    type: 3,
    imgType: 1,
    datas: {
      htmls: securityTraining,
      column: securityTrainingcolumn,
      apiName: ['permit/save', 'permit/storage', 'permit/selectIn']
      apiName: ['permit/save', 'permit/storage', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
@@ -77,16 +77,16 @@
  },
  {
    menuName: "设立分公司备案",
    menuName: "学校",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq2.png)",
    topUrlh: "url(/img/login-sq22.png)",
    type: 2,
    type: 4,
    imgType: 2,
    datas: {
      htmls: branchOffice,
      column: branchOfficecolumn,
      apiName: ['record/save', 'record/rocordsave', 'record/selectIn']
      apiName: ['record/save', 'record/rocordsave', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
@@ -96,16 +96,16 @@
  },
  {
    menuName: "自招保安单位备案",
    menuName: "医院",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq3.png)",
    topUrlh: "url(/img/login-sq33.png)",
    type: 3,
    type: 5,
    imgType: 3,
    datas: {
      htmls: securityGuard,
      column: securityGuardcolumn,
      apiName: ['record/save', 'record/rocordsave', 'record/selectIn']
      apiName: ['record/save', 'record/rocordsave', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
@@ -115,16 +115,16 @@
  },
  {
    menuName: "自招保安单位撤销备案",
    menuName: "村(社区)",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq5.png)",
    topUrlh: "url(/img/login-sq55.png)",
    type: 4,
    type: 6,
    imgType: 6,
    datas: {
      htmls: cancellationOfFiling,
      column: cancellationOfFilingcolumn,
      apiName: ['revoke/save', 'revoke/revokesave', 'revoke/selectIn']
      apiName: ['revoke/save', 'revoke/revokesave', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
@@ -133,16 +133,16 @@
    enclosure: cancellationOfFilingenclosure,
  },
  {
    menuName: "跨区域经营备案",
    menuName: "厂(园区)",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq10.png)",
    topUrlh: "url(/img/login-sq1010.png)",
    type: 5,
    type: 7,
    imgType: 7,
    datas: {
      htmls: crossRegion,
      column: crossRegioncolumn,
      apiName: ['recordk/save', 'recordk/recorkstorage', 'recordk/selectIn']
      apiName: ['recordk/save', 'recordk/recorkstorage', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
@@ -151,46 +151,64 @@
    enclosure: crossRegionenclosure,
  },
  {
    menuName: "武装押运许可申请",
    // centerUrl: "/img/logo.png",
    // topUrl: "url(/img/login-sq10.png)",
    // topUrlh: "url(/img/login-sq1010.png)",
    fromWhere: 0,
    type: 6,
    imgType: 8,
    datas: {
      msg: `按照《公安部关于印发<保安守
            护押运管理规定>的通知》(公通字[2017]13号)规定
            :各地原则上不再许可设立新的
            提供武装守护押运服务的保安企业,确需设立的,必须报经公安部同意后方可许可`,
      htmls: armedEscort,
      column: armedEscortcolumn,
      apiName: ['recordk/save', 'recordk/recorkstorage', 'recordk/selectIn']
    },
    overtime: {
      overtimef: 15,
      overtimec: 15,
    },
    enclosure: armedEscortenclosure,
  },
  { //保安服务公司法人变更
    menuName: "保安服务公司法人变更",
    menuName: "单位",
    centerUrl: "/img/logo.png",
    topUrl: "url(/img/login-sq10.png)",
    topUrlh: "url(/img/login-sq1010.png)",
    type: 7,
    imgType: 13,
    type: 8,
    imgType: 7,
    datas: {
      htmls: changeOfLegalPerson,
      column: changeOfLegalPersoncolumn,
      apiName: ['recordlegalperson/save', 'recordlegalperson/recorkstorage', 'recordlegalperson/selectIn']
      htmls: crossRegion,
      column: crossRegioncolumn,
      apiName: ['recordk/save', 'recordk/recorkstorage', 'blade-taskNoFraudReporting/taskNoFraudReporting/page']
    },
    overtime: {
      overtimef: 30,
      overtimec: 10,
      overtimec: 14,
    },
    enclosure: changeOfLegalPersonenclosure,
  }
    enclosure: crossRegionenclosure,
  },
  // {
  //   menuName: "武装押运许可申请",
  //   // centerUrl: "/img/logo.png",
  //   // topUrl: "url(/img/login-sq10.png)",
  //   // topUrlh: "url(/img/login-sq1010.png)",
  //   fromWhere: 0,
  //   type: 6,
  //   imgType: 8,
  //   datas: {
  //     msg: `按照《公安部关于印发<保安守
  //           护押运管理规定>的通知》(公通字[2017]13号)规定
  //           :各地原则上不再许可设立新的
  //           提供武装守护押运服务的保安企业,确需设立的,必须报经公安部同意后方可许可`,
  //     htmls: armedEscort,
  //     column: armedEscortcolumn,
  //     apiName: ['recordk/save', 'recordk/recorkstorage', 'recordk/selectIn']
  //   },
  //   overtime: {
  //     overtimef: 15,
  //     overtimec: 15,
  //   },
  //   enclosure: armedEscortenclosure,
  // },
  // { //保安服务公司法人变更
  //   menuName: "保安服务公司法人变更",
  //   centerUrl: "/img/logo.png",
  //   topUrl: "url(/img/login-sq10.png)",
  //   topUrlh: "url(/img/login-sq1010.png)",
  //   type: 7,
  //   imgType: 13,
  //   datas: {
  //     htmls: changeOfLegalPerson,
  //     column: changeOfLegalPersoncolumn,
  //     apiName: ['recordlegalperson/save', 'recordlegalperson/recorkstorage', 'recordlegalperson/selectIn']
  //   },
  //   overtime: {
  //     overtimef: 30,
  //     overtimec: 10,
  //   },
  //   enclosure: changeOfLegalPersonenclosure,
  // }
]
//数据形式参考
// { //保安服务公司法人变更
@@ -203,7 +221,7 @@
//   imgType: 13,//自身附件type
//   datas: {//主要数据
//     htmls: changeOfLegalPerson,//首页html
//     column: changeOfLegalPersoncolumn,//表格标题
//     column: changeOfLegalPersoncolumn,//表格标题
//     apiName: ['recordlegalperson/save', 'recordlegalperson/recorkstorage', 'recordlegalperson/selectIn']//请求方法,保存,暂存,查询
//   },
//   overtime: {// 计算审核最晚时间
vue.config.js
@@ -28,11 +28,11 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        // target: 'http://localhost:81',
        target: 'http://localhost:9528',
        //远程演示服务地址,可用于直接启动项目
        // target: 'https://saber.bladex.vip/api',
        // target: 'https://srgdjczzxtpt.com:2080/api',
        // target: "http://61.131.136.25:2080/api",
        target: 'http://60.220.177.113:2081/api',
        // target: 'http://60.220.177.113:2081/api',
        ws: true,
        pathRewrite: {
          '^/api': '/'