样式  (1:搜索按钮放入右侧,2:隐藏表格显影按钮,3:页码改为(15,30,50,100))
126 files modified
1 files added
5334 ■■■■■ changed files
public/papersApply.html 2 ●●● patch | view | raw | blame | history
src/page/index/logo.vue 11 ●●●●● patch | view | raw | blame | history
src/store/modules/common.js 1 ●●●● patch | view | raw | blame | history
src/styles/element-ui.scss 4 ●●● patch | view | raw | blame | history
src/styles/media.scss 126 ●●●● patch | view | raw | blame | history
src/styles/tableSearchBut.scss 21 ●●●●● patch | view | raw | blame | history
src/views/accreditationRecords/accreditationRecords.vue 51 ●●●●● patch | view | raw | blame | history
src/views/accreditationRecords/accreditationRecordsPaper.vue 50 ●●●●● patch | view | raw | blame | history
src/views/applydetailed/index.vue 11 ●●●● patch | view | raw | blame | history
src/views/applyexam/index.vue 134 ●●●●● patch | view | raw | blame | history
src/views/authority/apiscope.vue 269 ●●●●● patch | view | raw | blame | history
src/views/authority/datascope.vue 296 ●●●●● patch | view | raw | blame | history
src/views/authority/role.vue 9 ●●●● patch | view | raw | blame | history
src/views/companyApply/index.vue 24 ●●●● patch | view | raw | blame | history
src/views/desk/notice.vue 18 ●●●●● patch | view | raw | blame | history
src/views/desk/notification.vue 37 ●●●● patch | view | raw | blame | history
src/views/desk/policyRelease.vue 18 ●●●●● patch | view | raw | blame | history
src/views/dispatch/dispatch.vue 11 ●●●● patch | view | raw | blame | history
src/views/dispatch/dispatchChildoperable.vue 24 ●●●● patch | view | raw | blame | history
src/views/dispatch/dispatchChildoperableSee.vue 9 ●●●● patch | view | raw | blame | history
src/views/dispatchChild/data.js 2 ●●● patch | view | raw | blame | history
src/views/dispatchChild/index.vue 2 ●●● patch | view | raw | blame | history
src/views/exam/addsubject.vue 4 ●●●● patch | view | raw | blame | history
src/views/exam/examPayment.vue 20 ●●●● patch | view | raw | blame | history
src/views/exam/performance.vue 20 ●●●● patch | view | raw | blame | history
src/views/exam/singleperformance.vue 39 ●●●● patch | view | raw | blame | history
src/views/exam/startexam.vue 18 ●●●●● patch | view | raw | blame | history
src/views/exam/subject.vue 13 ●●●● patch | view | raw | blame | history
src/views/flow/follow.vue 77 ●●●●● patch | view | raw | blame | history
src/views/flow/manager.vue 186 ●●●● patch | view | raw | blame | history
src/views/flow/model.vue 194 ●●●●● patch | view | raw | blame | history
src/views/licenseApproval/branchOffice.vue 11 ●●●● patch | view | raw | blame | history
src/views/licenseApproval/cancellationOfFiling.vue 9 ●●●● patch | view | raw | blame | history
src/views/licenseApproval/crossRegion.vue 9 ●●●● patch | view | raw | blame | history
src/views/licenseApproval/securityGuard.vue 9 ●●●● patch | view | raw | blame | history
src/views/licenseApproval/securityPermit.vue 9 ●●●● patch | view | raw | blame | history
src/views/licenseApproval/securityTraining.vue 9 ●●●● patch | view | raw | blame | history
src/views/map/carGps.vue 1 ●●●● patch | view | raw | blame | history
src/views/map/gunGps.vue 1 ●●●● patch | view | raw | blame | history
src/views/map/peopleGps.vue 1 ●●●● patch | view | raw | blame | history
src/views/monitor/log/api.vue 61 ●●●●● patch | view | raw | blame | history
src/views/monitor/log/error.vue 59 ●●●●● patch | view | raw | blame | history
src/views/monitor/log/usual.vue 61 ●●●●● patch | view | raw | blame | history
src/views/onSiteInspection/company.vue 1 ●●●● patch | view | raw | blame | history
src/views/onSiteInspection/securityStaff.vue 1 ●●●● patch | view | raw | blame | history
src/views/ownerFeedback/owner.vue 116 ●●●●● patch | view | raw | blame | history
src/views/people/data.js 8 ●●●● patch | view | raw | blame | history
src/views/people/expression.vue 9 ●●●● patch | view | raw | blame | history
src/views/people/job.vue 9 ●●●● patch | view | raw | blame | history
src/views/recruitmentManagement/index.vue 9 ●●●● patch | view | raw | blame | history
src/views/report/reportlist.vue 63 ●●●●● patch | view | raw | blame | history
src/views/resource/attach.vue 9 ●●●● patch | view | raw | blame | history
src/views/resource/attachCopy.vue 9 ●●●● patch | view | raw | blame | history
src/views/resource/attachOnce copy.vue 6 ●●●● patch | view | raw | blame | history
src/views/resource/attachOnce.vue 2 ●●●●● patch | view | raw | blame | history
src/views/resource/oss.vue 9 ●●●● patch | view | raw | blame | history
src/views/resource/sms.vue 193 ●●●●● patch | view | raw | blame | history
src/views/resource/uploadNotice.vue 9 ●●●● patch | view | raw | blame | history
src/views/resource/uploadNotification.vue 9 ●●●● patch | view | raw | blame | history
src/views/resource/uploadPolicyRelease.vue 9 ●●●● patch | view | raw | blame | history
src/views/securityAnalysis/child/assignment.vue 9 ●●●● patch | view | raw | blame | history
src/views/securityAnalysis/child/certificate.vue 3 ●●●● patch | view | raw | blame | history
src/views/securityAnalysis/child/dispatch.vue 3 ●●●● patch | view | raw | blame | history
src/views/securityAnalysis/child/examination.vue 1 ●●●● patch | view | raw | blame | history
src/views/securityAnalysis/child/situation.vue 3 ●●●● patch | view | raw | blame | history
src/views/securityAnalysis/child/socialSecurity.vue 6 ●●●● patch | view | raw | blame | history
src/views/securityEquipment/car.js 4 ●●●● patch | view | raw | blame | history
src/views/securityEquipment/car.vue 12 ●●●● patch | view | raw | blame | history
src/views/securityEquipment/equipments.js 4 ●●●● patch | view | raw | blame | history
src/views/securityEquipment/equipments.vue 10 ●●●●● patch | view | raw | blame | history
src/views/securityEquipment/gun.js 8 ●●●● patch | view | raw | blame | history
src/views/securityEquipment/gun.vue 9 ●●●● patch | view | raw | blame | history
src/views/securityGuard/data.js 8 ●●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuardOnce copy.vue 6 ●●●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuardOnce.vue 4 ●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuardRegistration.vue 2 ●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuard指纹自动识别(集成VUE报错)-9.vue 4 ●●● patch | view | raw | blame | history
src/views/securityGuard/sfzJS.js 2 ●●● patch | view | raw | blame | history
src/views/securityMan/data.js 8 ●●●● patch | view | raw | blame | history
src/views/securityMan/index.vue 2 ●●●●● patch | view | raw | blame | history
src/views/securityUnit/armedEscort.vue 10 ●●●●● patch | view | raw | blame | history
src/views/securityUnit/index.vue 2 ●●●●● patch | view | raw | blame | history
src/views/securityUnit/localCompany.vue 13 ●●●●● patch | view | raw | blame | history
src/views/securityUnit/securityTraining.vue 10 ●●●●● patch | view | raw | blame | history
src/views/securityUnit/selfRecruitedSecurityGuard.vue 9 ●●●● patch | view | raw | blame | history
src/views/securityUnit/transRegionalcompany.vue 9 ●●●● patch | view | raw | blame | history
src/views/securityUnitChild/index.vue 21 ●●●●● patch | view | raw | blame | history
src/views/securityUnitChild/social.vue 6 ●●●● patch | view | raw | blame | history
src/views/securityUnit备份/armedEscort.vue 2 ●●●●● patch | view | raw | blame | history
src/views/securityUnit备份/index.vue 2 ●●●●● patch | view | raw | blame | history
src/views/securityUnit备份/localCompany.vue 2 ●●●●● patch | view | raw | blame | history
src/views/securityUnit备份/securityTraining.vue 2 ●●●●● patch | view | raw | blame | history
src/views/securityUnit备份/selfRecruitedSecurityGuard.vue 1 ●●●● patch | view | raw | blame | history
src/views/securityUnit备份/transRegionalcompany.vue 1 ●●●● patch | view | raw | blame | history
src/views/social/social.vue 231 ●●●●● patch | view | raw | blame | history
src/views/system/client.vue 9 ●●●● patch | view | raw | blame | history
src/views/system/dept.vue 9 ●●●● patch | view | raw | blame | history
src/views/system/dict.vue 220 ●●●●● patch | view | raw | blame | history
src/views/system/dictbiz.vue 221 ●●●●● patch | view | raw | blame | history
src/views/system/menu.vue 9 ●●●● patch | view | raw | blame | history
src/views/system/param.vue 41 ●●●●● patch | view | raw | blame | history
src/views/system/post.vue 121 ●●●●● patch | view | raw | blame | history
src/views/system/tenant.vue 212 ●●●●● patch | view | raw | blame | history
src/views/system/topmenu.vue 9 ●●●● patch | view | raw | blame | history
src/views/system/user copy.vue 5 ●●●● patch | view | raw | blame | history
src/views/system/user.vue 14 ●●●● patch | view | raw | blame | history
src/views/talk/talk.vue 6 ●●●● patch | view | raw | blame | history
src/views/tool/code.vue 202 ●●●●● patch | view | raw | blame | history
src/views/tool/datasource.vue 138 ●●●●● patch | view | raw | blame | history
src/views/trainApply/index.vue 9 ●●●● patch | view | raw | blame | history
src/views/trainExam/data.js 6 ●●●● patch | view | raw | blame | history
src/views/trainExam/index.vue 23 ●●●●● patch | view | raw | blame | history
src/views/trainExam/modifiedGrades.vue 162 ●●●●● patch | view | raw | blame | history
src/views/trainExam/performance.vue 313 ●●●● patch | view | raw | blame | history
src/views/trainExam/singleperformance.vue 13 ●●●● patch | view | raw | blame | history
src/views/traincompany/index.vue 80 ●●●●● patch | view | raw | blame | history
src/views/trainingRegistration/data.js 8 ●●●● patch | view | raw | blame | history
src/views/trainingRegistration/index.vue 7 ●●●● patch | view | raw | blame | history
src/views/util/demo/dict-classic.vue 113 ●●●● patch | view | raw | blame | history
src/views/work/claim.vue 102 ●●●●● patch | view | raw | blame | history
src/views/work/done.vue 92 ●●●●● patch | view | raw | blame | history
src/views/work/send.vue 103 ●●●●● patch | view | raw | blame | history
src/views/work/start.vue 120 ●●●●● patch | view | raw | blame | history
src/views/work/todo.vue 105 ●●●●● patch | view | raw | blame | history
src/views/workreport/workreply.vue 6 ●●●● patch | view | raw | blame | history
src/views/workreport/workreport.vue 9 ●●●● patch | view | raw | blame | history
src/views/zc/zc.vue 6 ●●●● patch | view | raw | blame | history
public/papersApply.html
@@ -108,7 +108,7 @@
                            <td width="60px">性别</td>
                            <td width="120px">准考证号</td>
                            <td width="160px">身份证号</td>
                            <td width="300px">单位名称</td>
                            <td width="300px">企业名称</td>
                            <td width="100px">报考证件</td>
                            <td width="200px">报名时间</td>
                        </tr>`
src/page/index/logo.vue
@@ -1,16 +1,13 @@
<template>
  <div class="avue-logo">
    <transition name="fade">
      <span v-if="keyCollapse"
            class="avue-logo_subtitle"
            key="0">
      <span v-if="keyCollapse" class="avue-logo_subtitle" key="0">
        {{website.logo}}
      </span>
    </transition>
    <transition-group name="fade">
      <template v-if="!keyCollapse">
        <span class="avue-logo_title"
              key="1">{{website.indexTitle}} </span>
        <span class="avue-logo_title" key="1">{{ website.indexTitle }} </span>
      </template>
    </transition-group>
  </div>
@@ -25,9 +22,9 @@
  },
  created() {},
  computed: {
    ...mapGetters(["website", "keyCollapse"])
    ...mapGetters(["website", "keyCollapse"]),
  },
  methods: {}
  methods: {},
};
</script>
src/store/modules/common.js
@@ -41,6 +41,7 @@
      state.isShade = active;
    },
    SET_COLLAPSE: (state, val = 3) => {
      // console.log(val)
      if (val == 3) {
        state.isCollapse = !state.isCollapse;
      } else {
src/styles/element-ui.scss
@@ -317,8 +317,10 @@
    }
}
.avue-form__group > div:last-child {
  display: inline-block !important;
  width: auto !important;
}
// 表格搜索按钮样式覆盖
@import "./tableSearchBut.scss";
src/styles/media.scss
@@ -108,68 +108,68 @@
  }
}
@media screen and (max-width: 992px) {
  $width: 240px;
  // ele的自适应
  .el-dialog,
  .el-message-box {
    width: 98% !important;
  }
  //登录页面
  .login-left {
    display: none !important;
  }
  .login-logo {
    padding-top: 30px !important;
    margin-left: -30px;
  }
  .login-weaper {
    margin: 0 auto;
    width: 96% !important;
  }
  .login-border {
    border-radius: 5px;
    padding: 40px;
    margin: 0 auto;
    float: none !important;
    width: 100% !important;
  }
  .login-main {
    width: 100% !important;
  }
  //主框架
  .avue-tags {
    display: none;
  }
  .avue-left,
  .avue-logo {
    left: -$width;
  }
  .avue-main {
    left: 0;
    width: 100%;
  }
  .avue-header {
    margin-bottom: 15px;
    padding-left: 15px;
  }
  .top-bar__item {
    display: none;
  }
  .avue--collapse {
    .avue-left,
    .avue-logo {
      width: $width;
      left: 0;
    }
// @media screen and (max-width: 992px) {
//   $width: 240px;
//   // ele的自适应
//   .el-dialog,
//   .el-message-box {
//     width: 98% !important;
//   }
//   //登录页面
//   .login-left {
//     display: none !important;
//   }
//   .login-logo {
//     padding-top: 30px !important;
//     margin-left: -30px;
//   }
//   .login-weaper {
//     margin: 0 auto;
//     width: 96% !important;
//   }
//   .login-border {
//     border-radius: 5px;
//     padding: 40px;
//     margin: 0 auto;
//     float: none !important;
//     width: 100% !important;
//   }
//   .login-main {
//     width: 100% !important;
//   }
//   //主框架
//   .avue-tags {
//     display: none;
//   }
//   .avue-left,
//   .avue-logo {
//     left: -$width;
//   }
//   .avue-main {
//     left: 0;
//     width: 100%;
//   }
//   .avue-header {
//     margin-bottom: 15px;
//     padding-left: 15px;
//   }
//   .top-bar__item {
//     display: none;
//   }
//   .avue--collapse {
//     .avue-left,
//     .avue-logo {
//       width: $width;
//       left: 0;
//     }
    .avue-main {
      width: calc(100% - 60px);
      left: 60px;
    }
//     .avue-main {
//       width: calc(100% - 60px);
//       left: 60px;
//     }
    .avue-header {
      padding-left: 60px;
    }
  }
}
//     .avue-header {
//       padding-left: 60px;
//     }
//   }
// }
src/styles/tableSearchBut.scss
New file
@@ -0,0 +1,21 @@
.tooRowSearch .avue-crud__search .avue-form__group.avue-form__group--flex .avue-form__menu--center {
    width: 222px !important;
    position: absolute !important;
    right: 0 !important;
    top: 126px !important;
    z-index: 100 !important;
}
.tooRowSearch .el-card.is-never-shadow.avue-crud__search {
    overflow: visible;
}
.oneRowSearch .avue-crud__search .avue-form__group.avue-form__group--flex .avue-form__menu--center {
    width: 222px !important;
    position: absolute !important;
    right: 0 !important;
    top: 71px !important;
    z-index: 100 !important;
}
.oneRowSearch .el-card.is-never-shadow.avue-crud__search {
    overflow: visible;
}
src/views/accreditationRecords/accreditationRecords.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="desk1">
  <basic-container
    :class="[
      'desk1',
      $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -67,7 +72,9 @@
            <el-tag>{{ row.deptName }}</el-tag>
      </template>
      <template slot-scope="{ row }" slot="sex">
            <el-tag>{{ row.sex=="1"?"男":row.sex=="2"?"女":""}}</el-tag>
        <el-tag>{{
          row.sex == "1" ? "男" : row.sex == "2" ? "女" : ""
        }}</el-tag>
      </template>
    </avue-crud>
  </basic-container>
@@ -79,7 +86,7 @@
  remove,
  update,
  add,
  getAccreditationRecords
  getAccreditationRecords,
} from "@/api/accreditationRecords/accreditationRecords";
import { getDept } from "@/api/system/dept";
import { mapGetters } from "vuex";
@@ -105,6 +112,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -126,6 +134,7 @@
        saveBtnText: "发布",
        menuWidth: 150,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "申请时间",
@@ -158,7 +167,7 @@
            // display: false,
          },
          // {
          //   label: "所属保安公司",
          //   label: "企业名称",
          //   searchLabelWidth: "110",
          //   // prop: "deptName",
          //   prop: "deptId",
@@ -177,7 +186,7 @@
          //   minWidth: 260,
          // },
          {
              label: "所属保安公司",
            label: "企业名称",
              searchLabelWidth: "110",
              prop: "deptName",
              // type: "tree",
@@ -190,7 +199,7 @@
              searchSpan: 5,
              search: true,
              overHidden: true,
              minWidth: 200
            minWidth: 200,
          },
          {
            label: "性别",
@@ -276,17 +285,17 @@
            dicData:[
              {
                label:"全部",
                value:3
                value: 3,
              },
              {
                label:"有",
                value:1
                value: 1,
              },
              {
                label:"无",
                value:2
              }
            ]
                value: 2,
              },
            ],
          },
        ],
      },
@@ -298,8 +307,14 @@
    permissionList() {
      return {
        addBtn: this.vaildData(null, false),
        viewBtn: this.vaildData(this.permission.accreditationRecords_view, false),
        delBtn: this.vaildData(this.permission.accreditationRecords_delete, false),
        viewBtn: this.vaildData(
          this.permission.accreditationRecords_view,
          false
        ),
        delBtn: this.vaildData(
          this.permission.accreditationRecords_delete,
          false
        ),
        editBtn: this.vaildData(null, false),
      };
    },
@@ -518,8 +533,8 @@
        //获取查询条件
        const { releaseTimeRange } = this.questionBankSearch;
        if (releaseTimeRange) {
            this.questionBankSearch['startTime'] = releaseTimeRange[0];
            this.questionBankSearch['endTime'] = releaseTimeRange[1];
          this.questionBankSearch["startTime"] = releaseTimeRange[0];
          this.questionBankSearch["endTime"] = releaseTimeRange[1];
        }
        var data = {
          type:1,
@@ -546,7 +561,11 @@
        }
        //序列号url形式,用&拼接
        data = Qs.stringify(data);
        window.open(`/api/accreditationRecords/export-security-paper?${this.website.tokenHeader}=${getToken()}&`+data);
        window.open(
          `/api/accreditationRecords/export-security-paper?${
            this.website.tokenHeader
          }=${getToken()}&` + data
        );
      });
    },
  },
src/views/accreditationRecords/accreditationRecordsPaper.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="desk1">
  <basic-container
    :class="[
      'desk1',
      $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -65,9 +70,7 @@
        <el-tag>{{ row.categoryName }}</el-tag>
      </template>
      <template slot-scope="{ row }" slot="userType">
            {{
              row.userType == 6 ? "已制证" : row.userType == 7 ? "未制证" : ""
            }}
        {{ row.userType == 6 ? "已制证" : row.userType == 7 ? "未制证" : "" }}
      </template>
      <template slot-scope="{ type, size, row }" slot="menu">
        <el-button
@@ -194,7 +197,7 @@
  add,
  getAccreditationRecords,
  audit,
  batchAudit
  batchAudit,
} from "@/api/accreditationRecords/accreditationRecords";
import { updatePaperTime } from "@/api/system/user";
import { getDept } from "@/api/system/dept";
@@ -237,6 +240,7 @@
        excelBtn: false,
        menuWidth: 230,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "审核状态",
@@ -297,6 +301,7 @@
        excelBtn: false,
        menuWidth: 380,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "所选保安人数",
@@ -361,6 +366,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -384,6 +390,7 @@
        saveBtnText: "发布",
        menuWidth: 180,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "申请时间",
@@ -416,7 +423,7 @@
            // display: false,
          },
          // {
          //   label: "所属保安公司",
          //   label: "企业名称",
          //   searchLabelWidth: "110",
          //   // prop: "deptName",
          //   prop: "deptId",
@@ -435,7 +442,7 @@
          //   minWidth: 260,
          // },
          {
            label: "所属保安公司",
            label: "企业名称",
            searchLabelWidth: "110",
            prop: "deptName",
            // type: "tree",
@@ -592,17 +599,17 @@
            dicData:[
              {
                label:"全部",
                value:3
                value: 3,
              },
              {
                label:"有",
                value:1
                value: 1,
              },
              {
                label:"无",
                value:2
              }
            ]
                value: 2,
              },
            ],
          },
        ],
      },
@@ -614,7 +621,10 @@
    permissionList() {
      return {
        addBtn: this.vaildData(null, false),
        viewBtn: this.vaildData(this.permission.accreditationRecords_paper_view, false),
        viewBtn: this.vaildData(
          this.permission.accreditationRecords_paper_view,
          false
        ),
        delBtn: this.vaildData(null, false),
        editBtn: this.vaildData(null, false),
      };
@@ -791,7 +801,7 @@
        auditStatus:row.auditStatus,
        auditDetail:row.auditDetail,
        auditUser:this.userInfo.Id,
      }
      };
      //提交申请
      batchAudit(data).then(
        () => {
@@ -1039,7 +1049,11 @@
        }
        //序列号url形式,用&拼接
        data = Qs.stringify(data);
        window.open(`/api/accreditationRecords/export-security-book-paper?${this.website.tokenHeader}=${getToken()}&`+data);
        window.open(
          `/api/accreditationRecords/export-security-book-paper?${
            this.website.tokenHeader
          }=${getToken()}&` + data
        );
      });
    },
    //保安员证信息导出
@@ -1082,7 +1096,11 @@
        }
        //序列号url形式,用&拼接
        data = Qs.stringify(data);
        window.open(`/api/accreditationRecords/export-security-book-papers?${this.website.tokenHeader}=${getToken()}&`+data);
        window.open(
          `/api/accreditationRecords/export-security-book-papers?${
            this.website.tokenHeader
          }=${getToken()}&` + data
        );
      });
    },
  },
src/views/applydetailed/index.vue
@@ -7,7 +7,13 @@
 */
<template>
  <el-row class="morpheus-box-apply-exam-1">
    <el-col :span="24" class="hasButOne">
    <el-col
      :span="24"
      :class="[
        'hasButOne',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <el-card>
        <div class="exam-card-body">
          <avue-crud
@@ -443,6 +449,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
@@ -475,7 +482,6 @@
    };
  },
  created() {
    // if (this.userInfo.role_name.indexOf("ksxtadmin") != -1) {
    //   this.questionBankOption.column[0].dicUrl =
    //     "/api/blade-system/dept/lazy-tree-user?parentId=";
@@ -637,7 +643,6 @@
          this.$refs.questionBankCrud.toggleSelection();
        });
    },
    handleImport() {
      this.excelBox = true;
src/views/applyexam/index.vue
@@ -1,17 +1,28 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-05 12:02:26
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:19:17
 * menu-name 报名考试
 */
<template>
    <el-row class="morpheus-box-apply-exam">
        <el-col :span="24"
                class="hasButOne">
    <el-col
      :span="24"
      :class="[
        'hasButOne',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
            <el-card>
                <div class="exam-card-body">
                    <avue-crud v-model="obj"
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
                               class="company-box"
                               :option="questionBankOption"
                               :search.sync="questionBankSearch"
@@ -26,7 +37,8 @@
                               @current-change="questionBankCurrentChange"
                               @size-change="questionBankSizeChange"
                               @row-save="questionBankRowSave"
                               @row-del="questionBankRowDel">
            @row-del="questionBankRowDel"
          >
                        <!-- 自定义按钮 -->
                        <!-- <template slot="menuLeft">
                            <el-button type="danger"
@@ -58,91 +70,110 @@
                        </template> -->
                        <!-- 自定义按钮 -->
                        <template slot="menuLeft">
                            <el-button type="primary"
              <el-button
                type="primary"
                                       size="small"
                                       plain
                                       icon="el-icon-folder-checked"
                                       @click="handleBatchExam"
                                       v-if="permission.applyexam_exam">生成考试
                v-if="permission.applyexam_exam"
                >生成考试
                            </el-button>
                            <!-- v-if="examPersission" -->
                            <el-button type="primary"
              <el-button
                type="primary"
                                       size="small"
                                       plain
                                       icon="el-icon-folder-checked"
                                       v-if="permission.applyexam_import"
                                       @click="handleImport">批量报名
                @click="handleImport"
                >批量报名
                            </el-button>
                        </template>
                        <template slot-scope="{ type, row }"
                                  slot="menu">
                            <el-button :type="type"
            <template slot-scope="{ type, row }" slot="menu">
              <el-button
                :type="type"
                                       size="small"
                                       icon="el-icon-refresh-left"
                                       v-if="permission.applyexam_cancel"
                                       :disabled="row.isApply == 2"
                                       @click="handleCancel(row)">取消报名
                @click="handleCancel(row)"
                >取消报名
                            </el-button>
                            <el-button style="display: none"
              <el-button
                style="display: none"
                                       :type="type"
                                       size="small"
                                       icon="el-icon-folder-checked"
                                       :disabled="row.applyStatus == 4"
                                       @click="handleAudit(row)">审核
                @click="handleAudit(row)"
                >审核
                            </el-button>
                            <el-button :type="type"
              <el-button
                :type="type"
                                       size="small"
                                       icon="el-icon-receiving"
                                       v-if="permission.applyexam_print && row.candidateNo!=''"
                                       @click="handlePrint(row)">准考证打印
                @click="handlePrint(row)"
                >准考证打印
                            </el-button>
                        </template>
                        <template slot-scope="{ row }"
                                  slot="age">
            <template slot-scope="{ row }" slot="age">
                            {{ row.age == -1 ? "" : row.age }}
                        </template>
                    </avue-crud>
                    <el-dialog title="考试资格审核"
          <el-dialog
            title="考试资格审核"
                               :visible.sync="dialogFormVisible"
                               modal-append-to-body="false"
                               append-to-body="true"
                               :close-on-click-model="true">
                        <avue-form ref="formAudit"
            :close-on-click-model="true"
          >
            <avue-form
              ref="formAudit"
                                   v-model="Audit"
                                   :option="optionAudit"
                                   @reset-change="emptytChange"
                                   @submit="submit"></avue-form>
              @submit="submit"
            ></avue-form>
                    </el-dialog>
                    <el-dialog title="批量报名导入"
          <el-dialog
            title="批量报名导入"
                               append-to-body
                               :visible.sync="excelBox"
                               width="555px">
                        <avue-form :option="excelOption"
            width="555px"
          >
            <avue-form
              :option="excelOption"
                                   v-model="excelForm"
                                   :upload-after="uploadAfter">
              :upload-after="uploadAfter"
            >
                            <template slot="excelTemplate">
                                <el-button type="primary"
                                           @click="handleTemplate">
                <el-button type="primary" @click="handleTemplate">
                                    点击下载<i class="el-icon-download el-icon--right"></i>
                                </el-button>
                            </template>
                        </avue-form>
                    </el-dialog>
                    <el-dialog title="考试生成"
          <el-dialog
            title="考试生成"
                               append-to-body
                               :visible.sync="dialogExamFormVisible"
                               width="900px"
                               @close="closeDialog">
                        <avue-form ref="formExamApply"
            @close="closeDialog"
          >
            <avue-form
              ref="formExamApply"
                                   v-model="examApply"
                                   :option="optionExamApply"
                                   @reset-change="emptytChange"
                                   @submit="submitExamApply"></avue-form>
              @submit="submitExamApply"
            ></avue-form>
                    </el-dialog>
                </div>
            </el-card>
@@ -225,6 +256,7 @@
                excelBtn: false,
                menuWidth: 230,
                dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
                column: [
                    {
                        label: "审核状态",
@@ -278,19 +310,20 @@
                excelBtn: false,
                menuWidth: 380,
                dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
                column: [
                    {
                        label: "考试人数",
                        prop: "number",
                        type: 'number',
            type: "number",
                        span: 12,
                        precision: 0,
                        step: 50,
                        mock: {
                            type: 'number',
              type: "number",
                            max: 1000,
                            min: 0,
                            precision: 0
              precision: 0,
                        },
                        rules: [
                            {
@@ -309,10 +342,10 @@
                        span: 6,
                        value: 1,
                        mock: {
                            type: 'number',
              type: "number",
                            max: 1000,
                            min: 1,
                            precision: 0
              precision: 0,
                        },
                        minRows: 1,
                        maxRows: 1000,
@@ -331,10 +364,10 @@
                        span: 6,
                        value: 50,
                        mock: {
                            type: 'number',
              type: "number",
                            max: 1000,
                            min: 1,
                            precision: 0
              precision: 0,
                        },
                        minRows: 1,
                        maxRows: 1000,
@@ -430,7 +463,7 @@
                defaultExpandAll: true,
                // 操作栏宽度
                menuWidth: 250,
        ...this.$store.state.control.clearOtherBut,
                column: [
                    {
                        label: "保安姓名",
@@ -817,6 +850,7 @@
                pageSize: 10,
                currentPage: 1,
                total: 16,
        ...this.$store.state.control.changePageSize,
            },
            questionBankQuery: {},
            questionBankSelectionList: [],
@@ -848,12 +882,11 @@
        },
    },
    created () {
        if (this.userInfo.role_name.indexOf("ksxtadmin") != -1) {
            this.examPersission = true;
        }
        this.questionBankSearch['applyStatus'] = 2;
    this.questionBankSearch["applyStatus"] = 2;
    },
    mounted () { },
    computed: {
@@ -898,10 +931,7 @@
            roleIds.forEach((roleId) => {
                getRoleDetail(roleId).then((res) => {
                    var roleAlias = res.data.data.roleAlias;
                    if (
                        roleAlias == "保安公司管理员" ||
                        roleAlias == "保安"
                    ) {
          if (roleAlias == "保安公司管理员" || roleAlias == "保安") {
                        //如果是保安公司管理员
                        params["deptId"] = that.userInfo.dept_id;
                    }
@@ -916,8 +946,8 @@
                        this.questionBankLoading = false;
                        this.questionBankSelectionClear();
                    });
                })
            })
        });
      });
        },
        questionBankSelectionClear () {
            this.questionBankSelectionList = [];
@@ -990,7 +1020,7 @@
            var that = this;
            row.startTime = row.startTime + ":00";
            row.endTime = row.endTime + ":00";
            if (row.number != ((row.serialEnd - row.serialStart) + 1)) {
      if (row.number != row.serialEnd - row.serialStart + 1) {
                this.$message({
                    type: "error",
                    message: "考试人数与序号不匹配!",
src/views/authority/apiscope.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -17,15 +20,18 @@
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad"
               @tree-load="treeLoad">
      @tree-load="treeLoad"
    >
      <template slot-scope="{row}" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   icon="el-icon-setting"
                   size="small"
                   v-if="permission.api_scope_setting"
                   plain
                   style="border: 0;background-color: transparent !important;"
                   @click.stop="handleDataScope(row)">权限配置
          style="border: 0; background-color: transparent !important"
          @click.stop="handleDataScope(row)"
          >权限配置
        </el-button>
      </template>
      <template slot-scope="{row}" slot="source">
@@ -34,11 +40,17 @@
        </div>
      </template>
    </avue-crud>
    <el-drawer :title="`[${scopeMenuName}] 接口权限配置`" :visible.sync="drawerVisible" :direction="direction"
    <el-drawer
      :title="`[${scopeMenuName}] 接口权限配置`"
      :visible.sync="drawerVisible"
      :direction="direction"
               append-to-body
               :before-close="handleDrawerClose" size="1000px">
      :before-close="handleDrawerClose"
      size="1000px"
    >
      <basic-container>
        <avue-crud :option="optionScope"
        <avue-crud
          :option="optionScope"
                   :data="dataScope"
                   :page="pageScope"
                   v-model="formScope"
@@ -53,17 +65,19 @@
                   @selection-change="selectionChangeScope"
                   @current-change="currentChangeScope"
                   @size-change="sizeChangeScope"
                   @on-load="onLoadScope">
          @on-load="onLoadScope"
        >
          <template slot="menuLeft">
            <el-button type="danger"
            <el-button
              type="danger"
                       size="small"
                       icon="el-icon-delete"
                       plain
                       @click="handleDeleteScope">删 除
              @click="handleDeleteScope"
              >删 除
            </el-button>
          </template>
          <template slot-scope="{row}"
                    slot="scopeType">
          <template slot-scope="{ row }" slot="scopeType">
            <el-tag>{{row.scopeTypeName}}</el-tag>
          </template>
        </avue-crud>
@@ -78,14 +92,14 @@
    remove,
    update,
    getLazyMenuList,
    getMenu
  getMenu,
  } from "@/api/system/menu";
  import {
    addApiScope,
    removeApiScope,
    updateApiScope,
    getListApiScope,
    getMenuApiScope
  getMenuApiScope,
  } from "@/api/system/scope";
  import {mapGetters} from "vuex";
  import iconList from "@/config/iconList";
@@ -101,10 +115,11 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        drawerVisible: false,
        direction: 'rtl',
      direction: "rtl",
        scopeLoading: false,
        scopeMenuId: 0,
        scopeMenuName: "菜单",
@@ -126,6 +141,7 @@
          delBtn: false,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "菜单名称",
@@ -135,9 +151,9 @@
                {
                  required: true,
                  message: "请输入菜单名称",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "路由地址",
@@ -146,9 +162,9 @@
                {
                  required: true,
                  message: "请输入路由地址",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "上级菜单",
@@ -157,15 +173,15 @@
              dicUrl: "/api/blade-system/menu/tree",
              hide: true,
              props: {
                label: "title"
              label: "title",
              },
              rules: [
                {
                  required: false,
                  message: "请选择上级菜单",
                  trigger: "click"
                }
              ]
                trigger: "click",
              },
            ],
            },
            {
              label: "菜单图标",
@@ -178,9 +194,9 @@
                {
                  required: true,
                  message: "请输入菜单图标",
                  trigger: "click"
                }
              ]
                trigger: "click",
              },
            ],
            },
            {
              label: "菜单编号",
@@ -190,9 +206,9 @@
                {
                  required: true,
                  message: "请输入菜单编号",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "菜单类型",
@@ -201,21 +217,21 @@
              dicData: [
                {
                  label: "菜单",
                  value: 1
                value: 1,
                },
                {
                  label: "按钮",
                  value: 2
                }
                value: 2,
              },
              ],
              hide: true,
              rules: [
                {
                  required: true,
                  message: "请选择菜单类型",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "菜单别名",
@@ -224,9 +240,9 @@
                {
                  required: true,
                  message: "请输入菜单别名",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "按钮功能",
@@ -235,25 +251,25 @@
              dicData: [
                {
                  label: "工具栏",
                  value: 0
                value: 0,
                },
                {
                  label: "操作栏",
                  value: 1
                value: 1,
                },
                {
                  label: "工具操作栏",
                  value: 2
                }
                value: 2,
              },
              ],
              hide: true,
              rules: [
                {
                  required: true,
                  message: "请选择按钮功能",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "菜单排序",
@@ -264,9 +280,9 @@
                {
                  required: true,
                  message: "请输入菜单排序",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "新窗口",
@@ -275,14 +291,14 @@
              dicData: [
                {
                  label: "否",
                  value: 0
                value: 0,
                },
                {
                  label: "是",
                  value: 1
                value: 1,
                },
              ],
              hide: true
            hide: true,
            },
            {
              label: "菜单备注",
@@ -290,9 +306,9 @@
              type: "textarea",
              span: 24,
              minRows: 6,
              hide: true
            }
          ]
            hide: true,
          },
        ],
        },
        data: [],
        formScope: {},
@@ -300,7 +316,7 @@
        pageScope: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        },
        optionScope: {
          tip: false,
@@ -313,37 +329,44 @@
          menuWidth: 200,
          dialogWidth: 900,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "权限名称",
              prop: "scopeName",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限名称",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "权限编号",
              prop: "resourceCode",
              search: true,
              width: 180,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限编号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "权限路径",
              prop: "scopePath",
              width: 180,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限编号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "接口类型",
@@ -351,17 +374,19 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=api_scope_type",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
              width: 100,
              prop: "scopeType",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入通知类型",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "备注",
@@ -369,9 +394,9 @@
              span: 24,
              hide: true,
            },
          ]
        ],
        },
        dataScope: []
      dataScope: [],
      };
    },
@@ -382,57 +407,63 @@
          addBtn: this.vaildData(this.permission.menu_add, false),
          viewBtn: this.vaildData(this.permission.menu_view, false),
          delBtn: this.vaildData(this.permission.menu_delete, false),
          editBtn: this.vaildData(this.permission.menu_edit, false)
        editBtn: this.vaildData(this.permission.menu_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      },
      scopeIds() {
        let ids = [];
        this.selectionListScope.forEach(ele => {
      this.selectionListScope.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      // 菜单管理模块
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -441,7 +472,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -452,7 +483,7 @@
      },
      searchChange(params, done) {
        this.query = params;
        this.parentId = '';
      this.parentId = "";
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        done();
@@ -472,7 +503,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -481,14 +512,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getMenu(this.form.id).then(res => {
        getMenu(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -505,15 +536,17 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getLazyMenuList(this.parentId, Object.assign(params, this.query)).then(res => {
      getLazyMenuList(this.parentId, Object.assign(params, this.query)).then(
        (res) => {
          this.data = res.data.data;
          this.loading = false;
          this.selectionClear();
        });
        }
      );
      },
      treeLoad(tree, treeNode, resolve) {
        const parentId = tree.id;
        getLazyMenuList(parentId).then(res => {
      getLazyMenuList(parentId).then((res) => {
          resolve(res.data.data);
        });
      },
@@ -522,7 +555,7 @@
        this.drawerVisible = true;
        this.scopeMenuId = row.id;
        this.scopeMenuName = row.name;
        this.onLoadScope(this.pageScope)
      this.onLoadScope(this.pageScope);
      },
      handleDrawerClose(hide) {
        hide();
@@ -532,40 +565,46 @@
          ...row,
          menuId: this.scopeMenuId,
        };
        addApiScope(row).then(() => {
      addApiScope(row).then(
        () => {
          this.onLoadScope(this.pageScope);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdateScope(row, index, done, loading) {
        row = {
          ...row,
          menuId: this.scopeMenuId,
        };
        updateApiScope(row).then(() => {
      updateApiScope(row).then(
        () => {
          this.onLoadScope(this.pageScope);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDelScope(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return removeApiScope(row.id);
@@ -574,7 +613,7 @@
            this.onLoadScope(this.pageScope);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -586,7 +625,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return removeApiScope(this.scopeIds);
@@ -595,14 +634,14 @@
            this.onLoadScope(this.pageScope);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crudScope.toggleSelection();
          });
      },
      beforeOpenScope(done, type) {
        if (["edit", "view"].includes(type)) {
          getMenuApiScope(this.formScope.id).then(res => {
        getMenuApiScope(this.formScope.id).then((res) => {
            this.formScope = res.data.data;
          });
        }
@@ -629,8 +668,12 @@
        const values = {
          ...params,
          menuId: this.scopeMenuId,
        }
        getListApiScope(page.currentPage, page.pageSize, Object.assign(values, this.query)).then(res => {
      };
      getListApiScope(
        page.currentPage,
        page.pageSize,
        Object.assign(values, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.pageScope.total = data.total;
          this.dataScope = data.records;
@@ -638,6 +681,6 @@
          this.scopeLoading = false;
        });
      },
    }
  },
  };
</script>
src/views/authority/datascope.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -17,15 +20,18 @@
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad"
               @tree-load="treeLoad">
      @tree-load="treeLoad"
    >
      <template slot-scope="{row}" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   icon="el-icon-setting"
                   size="small"
                   v-if="permission.data_scope_setting"
                   plain
                   style="border: 0;background-color: transparent !important;"
                   @click.stop="handleDataScope(row)">权限配置
          style="border: 0; background-color: transparent !important"
          @click.stop="handleDataScope(row)"
          >权限配置
        </el-button>
      </template>
      <template slot-scope="{row}" slot="source">
@@ -34,11 +40,17 @@
        </div>
      </template>
    </avue-crud>
    <el-drawer :title="`[${scopeMenuName}] 数据权限配置`" :visible.sync="drawerVisible" :direction="direction"
    <el-drawer
      :title="`[${scopeMenuName}] 数据权限配置`"
      :visible.sync="drawerVisible"
      :direction="direction"
               append-to-body
               :before-close="handleDrawerClose" size="1000px">
      :before-close="handleDrawerClose"
      size="1000px"
    >
      <basic-container>
        <avue-crud :option="optionScope"
        <avue-crud
          :option="optionScope"
                   :data="dataScope"
                   :page="pageScope"
                   v-model="formScope"
@@ -53,17 +65,19 @@
                   @selection-change="selectionChangeScope"
                   @current-change="currentChangeScope"
                   @size-change="sizeChangeScope"
                   @on-load="onLoadScope">
          @on-load="onLoadScope"
        >
          <template slot="menuLeft">
            <el-button type="danger"
            <el-button
              type="danger"
                       size="small"
                       icon="el-icon-delete"
                       plain
                       @click="handleDeleteScope">删 除
              @click="handleDeleteScope"
              >删 除
            </el-button>
          </template>
          <template slot-scope="{row}"
                    slot="scopeType">
          <template slot-scope="{ row }" slot="scopeType">
            <el-tag>{{row.scopeTypeName}}</el-tag>
          </template>
        </avue-crud>
@@ -78,14 +92,14 @@
    remove,
    update,
    getLazyMenuList,
    getMenu
  getMenu,
  } from "@/api/system/menu";
  import {
    addDataScope,
    removeDataScope,
    updateDataScope,
    getListDataScope,
    getMenuDataScope
  getMenuDataScope,
  } from "@/api/system/scope";
  import {mapGetters} from "vuex";
  import iconList from "@/config/iconList";
@@ -102,12 +116,13 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        drawerVisible: false,
        direction: 'rtl',
      direction: "rtl",
        scopeMenuId: 0,
        scopeMenuCode: '',
      scopeMenuCode: "",
        scopeMenuName: "菜单",
        scopeLoading: false,
        menu: true,
@@ -129,6 +144,7 @@
          delBtn: false,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "菜单名称",
@@ -138,9 +154,9 @@
                {
                  required: true,
                  message: "请输入菜单名称",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "路由地址",
@@ -149,9 +165,9 @@
                {
                  required: true,
                  message: "请输入路由地址",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "上级菜单",
@@ -160,15 +176,15 @@
              dicUrl: "/api/blade-system/menu/tree",
              hide: true,
              props: {
                label: "title"
              label: "title",
              },
              rules: [
                {
                  required: false,
                  message: "请选择上级菜单",
                  trigger: "click"
                }
              ]
                trigger: "click",
              },
            ],
            },
            {
              label: "菜单图标",
@@ -181,9 +197,9 @@
                {
                  required: true,
                  message: "请输入菜单图标",
                  trigger: "click"
                }
              ]
                trigger: "click",
              },
            ],
            },
            {
              label: "菜单编号",
@@ -193,9 +209,9 @@
                {
                  required: true,
                  message: "请输入菜单编号",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "菜单类型",
@@ -204,21 +220,21 @@
              dicData: [
                {
                  label: "菜单",
                  value: 1
                value: 1,
                },
                {
                  label: "按钮",
                  value: 2
                }
                value: 2,
              },
              ],
              hide: true,
              rules: [
                {
                  required: true,
                  message: "请选择菜单类型",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "菜单别名",
@@ -227,9 +243,9 @@
                {
                  required: true,
                  message: "请输入菜单别名",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "按钮功能",
@@ -238,25 +254,25 @@
              dicData: [
                {
                  label: "工具栏",
                  value: 0
                value: 0,
                },
                {
                  label: "操作栏",
                  value: 1
                value: 1,
                },
                {
                  label: "工具操作栏",
                  value: 2
                }
                value: 2,
              },
              ],
              hide: true,
              rules: [
                {
                  required: true,
                  message: "请选择按钮功能",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "菜单排序",
@@ -267,9 +283,9 @@
                {
                  required: true,
                  message: "请输入菜单排序",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "新窗口",
@@ -278,14 +294,14 @@
              dicData: [
                {
                  label: "否",
                  value: 0
                value: 0,
                },
                {
                  label: "是",
                  value: 1
                value: 1,
                },
              ],
              hide: true
            hide: true,
            },
            {
              label: "菜单备注",
@@ -293,9 +309,9 @@
              type: "textarea",
              span: 24,
              minRows: 6,
              hide: true
            }
          ]
            hide: true,
          },
        ],
        },
        data: [],
        formScope: {},
@@ -303,7 +319,7 @@
        pageScope: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        },
        optionScope: {
          tip: false,
@@ -316,38 +332,45 @@
          menuWidth: 200,
          dialogWidth: 900,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "权限名称",
              prop: "scopeName",
              search: true,
              value: "",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限名称",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "权限编号",
              prop: "resourceCode",
              search: true,
              width: 100,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限编号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "权限字段",
              prop: "scopeColumn",
              width: 130,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限编号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "规则类型",
@@ -355,17 +378,19 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=data_scope_type",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
              width: 140,
              prop: "scopeType",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入通知类型",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "可见字段",
@@ -373,22 +398,26 @@
              span: 24,
              hide: true,
              value: "*",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据权限可见的字段",
                trigger: "blur"
              }],
                trigger: "blur",
              },
            ],
            },
            {
              label: "权限类名",
              prop: "scopeClass",
              span: 24,
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入MybatisMapper对应方法的完整类名路径",
                trigger: "blur"
              }],
                trigger: "blur",
              },
            ],
            },
            {
              label: "规则值",
@@ -405,15 +434,15 @@
              span: 24,
              hide: true,
            },
          ]
        ],
        },
        dataScope: []
      dataScope: [],
      };
    },
    watch: {
      'formScope.scopeType'() {
    "formScope.scopeType"() {
        this.initScope();
      }
    },
    },
    computed: {
      ...mapGetters(["permission"]),
@@ -422,29 +451,30 @@
          addBtn: this.vaildData(this.permission.menu_add, false),
          viewBtn: this.vaildData(this.permission.menu_view, false),
          delBtn: this.vaildData(this.permission.menu_delete, false),
          editBtn: this.vaildData(this.permission.menu_edit, false)
        editBtn: this.vaildData(this.permission.menu_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      },
      scopeIds() {
        let ids = [];
        this.selectionListScope.forEach(ele => {
      this.selectionListScope.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      initScope() {
        const scopeType = func.toInt(this.formScope.scopeType);
        const watchMode = this.watchMode;
        let column = "-", name = "暂无";
      let column = "-",
        name = "暂无";
        if (scopeType === 1) {
          column = "-";
          name = "全部可见";
@@ -461,7 +491,7 @@
          column = "";
          name = "自定义";
        }
        this.$refs.crudScope.option.column.filter(item => {
      this.$refs.crudScope.option.column.filter((item) => {
          if (watchMode) {
            if (item.prop === "scopeName") {
              this.formScope.scopeName = `${this.scopeMenuName} [${name}]`;
@@ -480,36 +510,42 @@
      },
      // 菜单管理模块
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -518,7 +554,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -529,7 +565,7 @@
      },
      searchChange(params, done) {
        this.query = params;
        this.parentId = '';
      this.parentId = "";
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        done();
@@ -549,7 +585,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -558,14 +594,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getMenu(this.form.id).then(res => {
        getMenu(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -582,15 +618,17 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getLazyMenuList(this.parentId, Object.assign(params, this.query)).then(res => {
      getLazyMenuList(this.parentId, Object.assign(params, this.query)).then(
        (res) => {
          this.data = res.data.data;
          this.loading = false;
          this.selectionClear();
        });
        }
      );
      },
      treeLoad(tree, treeNode, resolve) {
        const parentId = tree.id;
        getLazyMenuList(parentId).then(res => {
      getLazyMenuList(parentId).then((res) => {
          resolve(res.data.data);
        });
      },
@@ -600,7 +638,7 @@
        this.scopeMenuId = row.id;
        this.scopeMenuCode = row.code;
        this.scopeMenuName = row.name;
        this.onLoadScope(this.pageScope)
      this.onLoadScope(this.pageScope);
      },
      handleDrawerClose(hide) {
        hide();
@@ -610,40 +648,46 @@
          ...row,
          menuId: this.scopeMenuId,
        };
        addDataScope(row).then(() => {
      addDataScope(row).then(
        () => {
          this.onLoadScope(this.pageScope);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdateScope(row, index, done, loading) {
        row = {
          ...row,
          menuId: this.scopeMenuId,
        };
        updateDataScope(row).then(() => {
      updateDataScope(row).then(
        () => {
          this.onLoadScope(this.pageScope);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDelScope(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return removeDataScope(row.id);
@@ -652,7 +696,7 @@
            this.onLoadScope(this.pageScope);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -664,7 +708,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return removeDataScope(this.scopeIds);
@@ -673,7 +717,7 @@
            this.onLoadScope(this.pageScope);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crudScope.toggleSelection();
          });
@@ -685,7 +729,7 @@
        }
        if (["edit", "view"].includes(type)) {
          this.watchMode = false;
          getMenuDataScope(this.formScope.id).then(res => {
        getMenuDataScope(this.formScope.id).then((res) => {
            this.formScope = res.data.data;
          });
        }
@@ -712,8 +756,12 @@
        const values = {
          ...params,
          menuId: this.scopeMenuId,
        }
        getListDataScope(page.currentPage, page.pageSize, Object.assign(values, this.query)).then(res => {
      };
      getListDataScope(
        page.currentPage,
        page.pageSize,
        Object.assign(values, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.pageScope.total = data.total;
          this.dataScope = data.records;
@@ -721,7 +769,7 @@
          this.scopeLoading = false;
        });
      },
    }
  },
  };
</script>
src/views/authority/role.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButThree">
  <basic-container
    :class="[
      'hasButThree',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -126,6 +131,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      option: {
        tip: false,
@@ -139,6 +145,7 @@
        viewBtn: true,
        dialogWidth: 900,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "角色名称",
src/views/companyApply/index.vue
@@ -1,15 +1,26 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-19 19:39:45
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:16:07
 * menu-name 报名考试
 */
<template>
  <el-row class="morpheus-box-apply-exam">
    <el-col :span="24" class="hasButOne">
    <el-col
      :span="24"
      :class="[
        'hasButOne',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
            class="company-box"
@@ -158,6 +169,7 @@
        excelBtn: false,
        menuWidth: 230,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "审核状态",
@@ -211,6 +223,7 @@
        excelBtn: false,
        menuWidth: 320,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "姓名",
@@ -264,7 +277,7 @@
        defaultExpandAll: true,
        // 操作栏宽度
        menuWidth: 200,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "姓名",
@@ -415,6 +428,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
src/views/desk/notice.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="desk1">
  <basic-container
    :class="[
      'desk1',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -60,7 +65,7 @@
import { getListPage, remove, update, add, getNotice } from "@/api/desk/notice";
import { getDept } from "@/api/system/dept";
import { mapGetters } from "vuex";
import { mapState } from 'vuex';
import { mapState } from "vuex";
export default {
  data() {
@@ -78,6 +83,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -99,6 +105,7 @@
        saveBtnText: "发布",
        menuWidth: 320,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "通知标题",
@@ -231,8 +238,8 @@
      return ids.join(",");
    },
    ...mapState({
        userInfo: state => state.user.userInfo
    })
      userInfo: (state) => state.user.userInfo,
    }),
  },
  mounted() {
    this.getDeptInfo(this.userInfo.dept_id);
@@ -246,7 +253,6 @@
        deptCategory == 1
          ? (that.deptCategory = true)
          : (that.deptCategory = false);
      });
    },
    //跳转到附件列表页面
@@ -265,7 +271,7 @@
      }else{
        row.category = 2;
      }
      row['type'] = 1;
      row["type"] = 1;
      row.deptId = this.deptId;
      add(row).then(
        () => {
src/views/desk/notification.vue
@@ -1,5 +1,29 @@
<template>
  <basic-container class="desk1">
  <basic-container
    :class="[
      'desk1',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <!--
:class="[
$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
]"
:class="[
'exam-card-body',
$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
]"
:class="[
'dispatchChildoperable',
$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
]"
:class="[
'securityUnit',
$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
]"
...this.$store.state.control.clearOtherBut,
...this.$store.state.control.changePageSize,
   -->
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -60,7 +84,7 @@
import { getListPage, remove, update, add, getNotice } from "@/api/desk/notice";
import { getDept } from "@/api/system/dept";
import { mapGetters } from "vuex";
import { mapState } from 'vuex';
import { mapState } from "vuex";
export default {
  data() {
@@ -78,6 +102,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -99,6 +124,7 @@
        saveBtnText: "发布",
        menuWidth: 320,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "标题",
@@ -245,8 +271,8 @@
      return ids.join(",");
    },
    ...mapState({
        userInfo: state => state.user.userInfo
    })
      userInfo: (state) => state.user.userInfo,
    }),
  },
  mounted() {
    this.getDeptInfo(this.userInfo.dept_id);
@@ -260,7 +286,6 @@
        deptCategory == 1
          ? (that.deptCategory = true)
          : (that.deptCategory = false);
      });
    },
    //跳转到附件列表页面
@@ -274,7 +299,7 @@
      });
    },
    rowSave(row, done, loading) {
      row['type'] = 3;
      row["type"] = 3;
      row.deptId = this.deptId;
      add(row).then(
        () => {
src/views/desk/policyRelease.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="desk1">
  <basic-container
    :class="[
      'desk1',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -60,7 +65,7 @@
import { getListPage, remove, update, add, getNotice } from "@/api/desk/notice";
import { getDept } from "@/api/system/dept";
import { mapGetters } from "vuex";
import { mapState } from 'vuex';
import { mapState } from "vuex";
export default {
  data() {
@@ -78,6 +83,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -99,6 +105,7 @@
        saveBtnText: "发布",
        menuWidth: 320,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "标题",
@@ -245,8 +252,8 @@
      return ids.join(",");
    },
    ...mapState({
        userInfo: state => state.user.userInfo
    })
      userInfo: (state) => state.user.userInfo,
    }),
  },
  mounted() {
    this.getDeptInfo(this.userInfo.dept_id);
@@ -260,7 +267,6 @@
        deptCategory == 1
          ? (that.deptCategory = true)
          : (that.deptCategory = false);
      });
    },
    //跳转到附件列表页面
@@ -274,7 +280,7 @@
      });
    },
    rowSave(row, done, loading) {
      row['type'] = 2;
      row["type"] = 2;
      row.deptId = this.deptId;
      add(row).then(
        () => {
src/views/dispatch/dispatch.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="dispatch">
    <div
      :class="[
        'dispatch',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <!-- <avue-tabs :option="optionTABS" @change="handleChangeTABS"></avue-tabs>
    <span v-if="typeTABS.prop === 'tab1'"> -->
      <avue-crud
@@ -150,6 +155,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
@@ -216,10 +222,11 @@
        menuWidth: 160,
        align: "center",
        selection: true,
        ...this.$store.state.control.clearOtherBut,
        column: [
          //派遣服务公司登记
          {
            label: "派遣单位名称",
            label: "派遣企业名称",
            prop: "name",
            search: true,
            searchLabelWidth: 110,
src/views/dispatch/dispatchChildoperable.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="dispatchChildoperable">
    <div
      :class="[
        'dispatchChildoperable',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -46,6 +51,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      form: {},
      query1: {},
@@ -65,6 +71,7 @@
        // menuWidth: 160,
        align: "center",
        selection: true,
        ...this.$store.state.control.clearOtherBut,
        column: [
          // },
          {
@@ -361,8 +368,7 @@
        form["deptId"] = this.useifid;
      }
      console.log(form,123456);
      form["ids"] = form.userIds.join(","),
      delete form.userIds;
      (form["ids"] = form.userIds.join(",")), delete form.userIds;
      console.log(form,321);
      saveDispatcher(form).then(
        (res) => {
@@ -465,12 +471,20 @@
        console.log(row,123);
        const userColumn = this.findObject(this.option.column, "userIds");
        userColumn.multiple = false;
        userColumn.dicUrl = "/api/blade-user/security-dispatcher-tree?deptId="+this.userInfo.dept_id+"&id="+this.form.userIds+"&realName="+this.form.securityName;
        userColumn.dicUrl =
          "/api/blade-user/security-dispatcher-tree?deptId=" +
          this.userInfo.dept_id +
          "&id=" +
          this.form.userIds +
          "&realName=" +
          this.form.securityName;
      }
      if(type=="add"){
        const userColumn = this.findObject(this.option.column, "userIds");
        userColumn.multiple = true;
        userColumn.dicUrl = "/api/blade-user/security-dispatcher-tree?deptId="+this.userInfo.dept_id;
        userColumn.dicUrl =
          "/api/blade-user/security-dispatcher-tree?deptId=" +
          this.userInfo.dept_id;
      }
      done();
    },
src/views/dispatch/dispatchChildoperableSee.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="dispatchChildoperable">
    <div
      :class="[
        'dispatchChildoperable',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option1"
        :data="data1"
@@ -46,6 +51,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      form: {},
      query1: {},
@@ -65,6 +71,7 @@
        // menuWidth: 160,
        align: "center",
        selection: true,
        ...this.$store.state.control.clearOtherBut,
        column: [
          // },
          {
src/views/dispatchChild/data.js
@@ -20,7 +20,7 @@
        }
    },
    {
        label: "派遣单位名称",
        label: "派遣企业名称",
        prop: "name",
        span: 11,
        labelWidth: 130,
src/views/dispatchChild/index.vue
@@ -120,6 +120,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -339,7 +340,6 @@
        if (i == 1) {
          // console.log("存在");
        } else {
          this.obj0 = {};
          this.obj0.name = row.name + " 该派遣单位已删除";
          window.localStorage.removeItem("paqiandata");
src/views/exam/addsubject.vue
@@ -110,6 +110,7 @@
        viewBtn: true,
        defaultExpandAll: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "题目名称",
@@ -280,6 +281,7 @@
        viewBtn: true,
        defaultExpandAll: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "题目名称",
@@ -450,6 +452,7 @@
        viewBtn: true,
        defaultExpandAll: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "题目名称",
@@ -573,6 +576,7 @@
        viewBtn: true,
        defaultExpandAll: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "题目名称",
src/views/exam/examPayment.vue
@@ -2,14 +2,25 @@
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: liu
 * @Last Modified time: 2021-09-28 11:45:28
 * @Last Modified time: 2021-11-23 14:20:02
 * menu-name 考试缴费管理
 */
<template>
  <el-row class="morpheus-box">
    <el-col :span="24" class="recruitmentManagement">
    <el-col
      :span="24"
      :class="[
        'recruitmentManagement',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
            class="company-box"
@@ -127,7 +138,7 @@
        menu: true,
        menuWidth: 186,
        labelWidth: 120,
        ...this.$store.state.control.clearOtherBut,
        column: [
          // {
          //     label: "缴费类型",
@@ -238,6 +249,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
src/views/exam/performance.vue
@@ -2,14 +2,25 @@
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: liu
 * @Last Modified time: 2021-10-25 15:10:09
 * @Last Modified time: 2021-11-23 14:17:22
 * menu-name 成绩管理
 */
<template>
  <el-row class="morpheus-box">
    <el-col :span="24" class="recruitmentManagement">
    <el-col
      :span="24"
      :class="[
        'recruitmentManagement',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
            class="company-box"
@@ -164,7 +175,7 @@
        menu: true,
        menuWidth: 186,
        labelWidth: 120,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "考试名称",
@@ -446,6 +457,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
src/views/exam/singleperformance.vue
@@ -1,15 +1,20 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-18 21:02:10
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:18:07
 * menu-name 成绩查看
 */
<template>
  <el-row class="morpheus-box-score">
    <el-col :span="24">
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
            class="company-box"
@@ -37,7 +42,15 @@
              {{ row.learnGrade == -1 ? "" : row.allGrade }}
            </template>
            <template slot-scope="{ row }" slot="qualified">
              {{ row.learnGrade == -1 ? "" : row.qualified == 0?"合格":row.qualified==1?"不合格":'' }}
              {{
                row.learnGrade == -1
                  ? ""
                  : row.qualified == 0
                  ? "合格"
                  : row.qualified == 1
                  ? "不合格"
                  : ""
              }}
            </template>
            <template slot-scope="{ row }" slot="menu">
@@ -134,6 +147,7 @@
        menu: true,
        menuWidth: 136,
        labelWidth: 120,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "考试名称",
@@ -357,11 +371,13 @@
              editDisplay: true,
              // 表单编辑时是否为查看模式
              editDetail: false,
              rules: [{
            rules: [
              {
                  required: true,
                  message: "请输入考试名称",
                  trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
          },
          {
            label: "是否合格",
@@ -413,6 +429,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
@@ -426,7 +443,10 @@
        viewBtn: this.vaildData(null, false),
        delBtn: this.vaildData(null, false),
        editBtn: this.vaildData(this.permission.user_edit, false),
        excelBtn: this.vaildData(this.permission.singleperformance_export, false),
        excelBtn: this.vaildData(
          this.permission.singleperformance_export,
          false
        ),
      };
    },
  },
@@ -471,9 +491,8 @@
              that.questionBankLoading = false;
              that.questionBankSelectionClear();
            });
        })
      });
      });
    },
    questionBankSelectionClear() {
      this.questionBankSelectionList = [];
src/views/exam/startexam.vue
@@ -1,15 +1,20 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-18 17:09:52
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:16:42
 * menu-name 考试管理
 */
<template>
  <el-row class="morpheus-box-paper">
    <el-col :span="24">
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="form"
            class="company-box"
@@ -134,7 +139,7 @@
        menuWidth: 280,
        labelWidth: 140,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "考试名称",
@@ -327,6 +332,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
@@ -356,7 +362,7 @@
  methods: {
    questionBankOnLoad(page, params = {}) {
      this.questionBankLoading = false;
      params['examType'] = 1;
      params["examType"] = 1;
      getList(
        page.currentPage,
        page.pageSize,
@@ -413,7 +419,7 @@
    // 新增
    questionBankRowSave(row, done, loading) {
      row.startTime = row.startTime+":00";
      row['examType'] = 1;
      row["examType"] = 1;
      // row.endTime = row.examTime[1];
      // row.examTime = JSON.stringify(row.examTime);
      add(row).then(
src/views/exam/subject.vue
@@ -1,8 +1,8 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-18 16:04:26
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:14:38
 * menu-name 题库查询
 */
<template>
@@ -10,7 +10,12 @@
    <el-row class="morpheus-box">
      <el-col :span="24">
        <el-card>
          <div class="exam-card-body">
          <div
            :class="[
              'exam-card-body',
              $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
            ]"
          >
            <avue-crud
              class="company-box"
              :option="questionBankOption"
@@ -164,6 +169,7 @@
        dialogClickModal: false,
        // 操作栏宽度
        menuWidth: 226,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "题目名称",
@@ -244,6 +250,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
src/views/flow/follow.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -14,29 +17,26 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      <template slot-scope="{row}"
                slot="suspensionState">
        <el-tag>{{row.suspensionState===1?'激活':'挂起'}}</el-tag>
      @on-load="onLoad"
    >
      <template slot-scope="{ row }" slot="suspensionState">
        <el-tag>{{ row.suspensionState === 1 ? "激活" : "挂起" }}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程删除"
    <el-dialog
      title="流程删除"
               append-to-body
               :visible.sync="followBox"
               width="20%">
      <el-form :model="form"
               ref="form"
               label-width="80px">
      width="20%"
    >
      <el-form :model="form" ref="form" label-width="80px">
        <el-form-item label="删除理由">
          <el-input v-model="deleteReason"
                    placeholder="请输入删除理由" />
          <el-input v-model="deleteReason" placeholder="请输入删除理由" />
        </el-form-item>
      </el-form>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="followBox = false">关 闭</el-button>
        <el-button type="primary"
                   @click="handleDelete">确 定</el-button>
        <el-button type="primary" @click="handleDelete">确 定</el-button>
      </span>
    </el-dialog>
  </basic-container>
@@ -50,20 +50,21 @@
    data() {
      return {
        form: {},
        selectionId: '',
        processInstanceId: '',
      selectionId: "",
      processInstanceId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        followBox: false,
        deleteReason: '',
      deleteReason: "",
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -77,6 +78,7 @@
          dialogWidth: 900,
          menuWidth: 100,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "执行id",
@@ -107,13 +109,13 @@
              width: 100,
            },
            {
              label: '开始时间',
              prop: 'startTime',
            label: "开始时间",
            prop: "startTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
@@ -125,11 +127,11 @@
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowDel(row) {
@@ -141,17 +143,20 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return deleteProcessInstance({deleteReason: this.deleteReason, processInstanceId: this.processInstanceId});
          return deleteProcessInstance({
            deleteReason: this.deleteReason,
            processInstanceId: this.processInstanceId,
          });
          })
          .then(() => {
            this.onLoad(this.page);
            this.followBox = false;
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -183,15 +188,19 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        followList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      followList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/flow/manager.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -13,7 +16,8 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-radio-group v-model="mode" size="small">
          <el-radio-button label="1">通用流程</el-radio-button>
@@ -21,51 +25,55 @@
        </el-radio-group>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_manager_state"
                   plain
                   class="none-border"
                   @click.stop="handleState(scope.row,scope.index)">变更状态
          @click.stop="handleState(scope.row, scope.index)"
          >变更状态
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_manager_image"
                   plain
                   class="none-border"
                   @click.stop="handleImage(scope.row,scope.index)">流程图
          @click.stop="handleImage(scope.row, scope.index)"
          >流程图
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_manager_remove"
                   plain
                   class="none-border"
                   @click.stop="handleSlotDelete(scope.row,scope.index)">删除
          @click.stop="handleSlotDelete(scope.row, scope.index)"
          >删除
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="tenantId">
        <el-tag>{{row.tenantId===''?'通用':row.tenantId}}</el-tag>
      <template slot-scope="{ row }" slot="tenantId">
        <el-tag>{{ row.tenantId === "" ? "通用" : row.tenantId }}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="version">
      <template slot-scope="{ row }" slot="version">
        <el-tag>v{{row.version}}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="suspensionState">
        <el-tag>{{row.suspensionState===1?'激活':'挂起'}}</el-tag>
      <template slot-scope="{ row }" slot="suspensionState">
        <el-tag>{{ row.suspensionState === 1 ? "激活" : "挂起" }}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="category">
      <template slot-scope="{ row }" slot="category">
        <el-tag>{{row.categoryName}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程图"
    <el-dialog
      title="流程图"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程图"
@@ -74,36 +82,35 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">关 闭</el-button>
      </span>
    </el-dialog>
    <el-dialog title="流程变更"
    <el-dialog
      title="流程变更"
               append-to-body
               :visible.sync="stateBox"
               width="20%">
      <el-form :model="form"
               ref="form"
               label-width="80px">
      width="20%"
    >
      <el-form :model="form" ref="form" label-width="80px">
        <el-form-item label="流程状态">
          <el-select v-model="flowState" placeholder="请选择" value="">
            <el-option
              v-for="item in stateOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value">
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="stateBox = false">关 闭</el-button>
        <el-button type="primary"
                   @click="handleDoState">确 定</el-button>
        <el-button type="primary" @click="handleDoState">确 定</el-button>
      </span>
    </el-dialog>
  </basic-container>
@@ -118,29 +125,33 @@
    data() {
      return {
        form: {},
        mode: '1',
        selectionId: '',
      mode: "1",
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        stateBox: false,
        flowState: '',
        stateOptions: [{
          value: 'active',
          label: '激活'
        }, {
          value: 'suspend',
          label: '挂起'
        }],
      flowState: "",
      stateOptions: [
        {
          value: "active",
          label: "激活",
        },
        {
          value: "suspend",
          label: "挂起",
        },
      ],
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -155,26 +166,27 @@
          dialogWidth: 900,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: '保安单位编号',
              prop: 'tenantId',
            label: "保安单位编号",
            prop: "tenantId",
              slot: true,
              width: 120,
            },
            {
              label: '流程主键',
              prop: 'id',
            label: "流程主键",
            prop: "id",
            },
            {
              label: '流程标识',
              prop: 'key',
            label: "流程标识",
            prop: "key",
              search: true,
              width: 150,
            },
            {
              label: '流程名称',
              prop: 'name',
            label: "流程名称",
            prop: "name",
              width: 150,
            },
            {
@@ -184,7 +196,7 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
@@ -193,31 +205,31 @@
              width: 100,
            },
            {
              label: '流程版本',
              prop: 'version',
            label: "流程版本",
            prop: "version",
              slot: true,
              width: 80,
            },
            {
              label: '状态',
              prop: 'suspensionState',
            label: "状态",
            prop: "suspensionState",
              slot: true,
              width: 80,
            },
            {
              label: '部署时间',
              prop: 'deploymentTime',
            label: "部署时间",
            prop: "deploymentTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    watch: {
      'mode'() {
    mode() {
        this.onLoad(this.page);
      }
    },
    },
    computed: {
      ...mapGetters(["permission"]),
@@ -228,18 +240,18 @@
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      },
      deploymentIds() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.deploymentId);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      searchReset() {
@@ -267,7 +279,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return deleteDeployment(this.deploymentIds);
@@ -275,7 +287,7 @@
          .then(() => {
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
            this.onLoad(this.page);
@@ -285,7 +297,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return deleteDeployment(row.deploymentId);
@@ -293,7 +305,7 @@
          .then(() => {
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
            this.onLoad(this.page);
@@ -307,26 +319,28 @@
        if (!this.flowState) {
          this.$message({
            type: "warn",
            message: "请先选择流程状态!"
          message: "请先选择流程状态!",
          });
          return;
        }
        changeState({processId: this.selectionId, state: this.flowState}).then(res => {
      changeState({ processId: this.selectionId, state: this.flowState }).then(
        (res) => {
          const data = res.data;
          if (data.success) {
            this.$message({
              type: "success",
              message: data.msg
              message: data.msg,
            });
            this.stateBox = false;
            this.onLoad(this.page);
          } else {
            this.$message({
              type: "warn",
              message: data.msg
              message: data.msg,
            });
          }
        })
        }
      );
      },
      handleImage(row) {
        this.flowUrl = `/api/blade-flow/process/resource-view?processDefinitionId=${row.id}`;
@@ -344,19 +358,23 @@
      onLoad(page, params = {}) {
        const values = {
          ...params,
          category: (params.category) ? flowCategory(params.category) : null,
          mode: this.mode
        category: params.category ? flowCategory(params.category) : null,
        mode: this.mode,
        };
        this.loading = true;
        managerList(page.currentPage, page.pageSize, Object.assign(values, this.query)).then(res => {
      managerList(
        page.currentPage,
        page.pageSize,
        Object.assign(values, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/flow/model.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -12,64 +15,78 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="primary"
        <el-button
          type="primary"
                   size="small"
                   icon="el-icon-circle-plus"
                   v-if="permission.flow_model_create"
                   plain
                   @click="handleCreate">创 建
          @click="handleCreate"
          >创 建
        </el-button>
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   v-if="permission.flow_model_delete"
                   plain
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_model_update"
                   plain
                   class="none-border"
                   @click.stop="handleUpdate(scope.row,scope.index)">配置
          @click.stop="handleUpdate(scope.row, scope.index)"
          >配置
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_model_deploy"
                   plain
                   class="none-border"
                   @click.stop="handleDeploy(scope.row,scope.index)">部署
          @click.stop="handleDeploy(scope.row, scope.index)"
          >部署
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_model_download"
                   plain
                   class="none-border"
                   @click.stop="handleDownload(scope.row,scope.index)">下载
          @click.stop="handleDownload(scope.row, scope.index)"
          >下载
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.flow_model_delete"
                   plain
                   class="none-border"
                   @click.stop="handleSlotDelete(scope.row,scope.index)">删除
          @click.stop="handleSlotDelete(scope.row, scope.index)"
          >删除
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="version">
      <template slot-scope="{ row }" slot="version">
        <el-tag>v{{row.version}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程配置"
    <el-dialog
      title="流程配置"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程设计器"
@@ -78,23 +95,34 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">取 消</el-button>
        <el-button type="primary" @click="handleRefresh">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="流程部署"
    <el-dialog
      title="流程部署"
               append-to-body
               :visible.sync="deployBox"
               width="20%">
      <avue-form ref="form" :option="optionDeploy" v-model="form" @submit="handleSubmit"/>
      <span slot="footer"
            class="dialog-footer">
      width="20%"
    >
      <avue-form
        ref="form"
        :option="optionDeploy"
        v-model="form"
        @submit="handleSubmit"
      />
      <span slot="footer" class="dialog-footer">
        <el-button @click="deployBox = false">取 消</el-button>
        <el-button type="primary" @click="handleDoDeploy" :loading="deployLoading">确 定</el-button>
        <el-button
          type="primary"
          @click="handleDoDeploy"
          :loading="deployLoading"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </basic-container>
@@ -102,7 +130,7 @@
<script>
  import {mapGetters} from "vuex";
  import website from '@/config/website';
import website from "@/config/website";
  import {modelList, removeModel, deployModel} from "@/api/flow/flow";
  import {flowCategory} from "@/util/flow";
@@ -119,18 +147,20 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
              prop: "categoryValue",
              search: true,
              span: 24,
              rules: [{
            rules: [
              {
                required: true,
                message: "请选择流程类型",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "流程模式",
@@ -139,21 +169,21 @@
              dicData: [
                {
                  label: "通用流程",
                  value: 1
                value: 1,
                },
                {
                  label: "定制流程",
                  value: 2
                }
                value: 2,
              },
              ],
              value: 1,
              span: 24,
              rules: [
                {
                  required: true,
                  message: '请选择流程模式',
                  trigger: 'blur'
                }
                message: "请选择流程模式",
                trigger: "blur",
              },
              ],
            },
            {
@@ -164,21 +194,21 @@
              dicUrl: "/api/blade-system/tenant/select",
              props: {
                label: "tenantName",
                value: "tenantId"
              value: "tenantId",
              },
              display: false,
              span: 24,
              rules: [
                {
                  required: true,
                  message: '请选择所属保安单位',
                  trigger: 'blur'
                }
                message: "请选择所属保安单位",
                trigger: "blur",
              },
              ],
            },
          ],
        },
        selectionId: '',
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
@@ -186,13 +216,14 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        deployBox: false,
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -207,62 +238,63 @@
          dialogWidth: 900,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: '模型主键',
              prop: 'id',
            label: "模型主键",
            prop: "id",
            },
            {
              label: '模型标识',
              prop: 'modelKey',
            label: "模型标识",
            prop: "modelKey",
              search: true,
              width: 150,
            },
            {
              label: '模型名称',
              prop: 'name',
            label: "模型名称",
            prop: "name",
              search: true,
              width: 150,
            },
            {
              label: '流程版本',
              prop: 'version',
            label: "流程版本",
            prop: "version",
              slot: true,
              width: 80,
            },
            {
              label: '创建时间',
              prop: 'created',
            label: "创建时间",
            prop: "created",
              width: 165,
            },
            {
              label: '更新时间',
              prop: 'lastUpdated',
            label: "更新时间",
            prop: "lastUpdated",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    watch: {
      'form.flowMode'() {
        this.$refs.form.option.column.filter(item => {
    "form.flowMode"() {
      this.$refs.form.option.column.filter((item) => {
          if (item.prop === "tenantId") {
            item.display = this.form.flowMode === 2;
          }
        });
      }
    },
    },
    computed: {
      ...mapGetters(["permission"]),
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      handleSubmit(form, done) {
@@ -270,13 +302,13 @@
        deployModel({
          modelId: this.selectionId,
          category: flowCategory(form.categoryValue),
          tenantIds: form.tenantId.join(",")
        }).then(res => {
        tenantIds: form.tenantId.join(","),
      }).then((res) => {
          const data = res.data;
          if (data.success) {
            this.$message({
              type: "success",
              message: data.msg
            message: data.msg,
            });
            done();
            this.$refs.form.resetForm();
@@ -287,10 +319,10 @@
            this.deployLoading = false;
            this.$message({
              type: "warn",
              message: data.msg
            message: data.msg,
            });
          }
        })
      });
      },
      searchReset() {
        this.query = {};
@@ -317,7 +349,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return removeModel(this.ids);
@@ -325,7 +357,7 @@
          .then(() => {
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
            this.onLoad(this.page);
@@ -353,7 +385,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return removeModel(row.id);
@@ -361,7 +393,7 @@
          .then(() => {
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
            this.onLoad(this.page);
@@ -382,15 +414,19 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        modelList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      modelList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/licenseApproval/branchOffice.vue
@@ -2,13 +2,18 @@
 * @Author: liu
 * @Date: 2021-08-26 17:00:55 
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-05 14:51:45
 * @Last Modified time: 2021-11-23 14:41:23
 */
<template>
  <div>
    <basic-container class="permit">
    <basic-container
      :class="[
        'permit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :table-loading="loading"
@@ -193,6 +198,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -214,6 +220,7 @@
        selection: true,
        dialogClickModal: false,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
      userData: "",
src/views/licenseApproval/cancellationOfFiling.vue
@@ -8,7 +8,12 @@
<template>
  <div>
    <basic-container class="permit">
    <basic-container
      :class="[
        'permit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :table-loading="loading"
@@ -132,6 +137,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -153,6 +159,7 @@
        selection: true,
        dialogClickModal: false,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
      userData: "",
src/views/licenseApproval/crossRegion.vue
@@ -8,7 +8,12 @@
<template>
  <div>
    <basic-container class="permit">
    <basic-container
      :class="[
        'permit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :table-loading="loading"
@@ -191,6 +196,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -212,6 +218,7 @@
        selection: true,
        dialogClickModal: false,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
      userData: "",
src/views/licenseApproval/securityGuard.vue
@@ -8,7 +8,12 @@
<template>
  <div>
    <basic-container class="permit">
    <basic-container
      :class="[
        'permit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :table-loading="loading"
@@ -280,6 +285,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -301,6 +307,7 @@
        selection: true,
        dialogClickModal: false,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
src/views/licenseApproval/securityPermit.vue
@@ -8,7 +8,12 @@
<template>
  <div>
    <basic-container class="permit">
    <basic-container
      :class="[
        'permit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :table-loading="loading"
@@ -244,6 +249,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -265,6 +271,7 @@
        selection: true,
        dialogClickModal: false,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
src/views/licenseApproval/securityTraining.vue
@@ -8,7 +8,12 @@
<template>
  <div>
    <basic-container class="permit">
    <basic-container
      :class="[
        'permit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :table-loading="loading"
@@ -244,6 +249,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -265,6 +271,7 @@
        selection: true,
        dialogClickModal: false,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
      userData: "",
src/views/map/carGps.vue
@@ -158,6 +158,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      detailFlag: false,
      loading: true,
src/views/map/gunGps.vue
@@ -153,6 +153,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      detailFlag: false,
      loading: true,
src/views/map/peopleGps.vue
@@ -150,6 +150,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      detailFlag: false,
      loading: true,
src/views/monitor/log/api.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -13,7 +16,8 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
    </avue-crud>
  </basic-container>
</template>
@@ -32,10 +36,11 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -47,52 +52,52 @@
          addBtn: false,
          delBtn: false,
          menuWidth: 120,
          dialogType: 'drawer',
        dialogType: "drawer",
          column: [
            {
              label: "服务id",
              prop: "serviceId",
              width:'120',
              search: true
            width: "120",
            search: true,
            },
            {
              label: "服务host",
              prop: "serverHost",
              search: true
            search: true,
            },
            {
              label: "服务ip",
              prop: "serverIp",
              width:'160'
            width: "160",
            },
            {
              label: "软件环境",
              prop: "env",
              width:'80',
            width: "80",
            },
            {
              label: "日志名",
              prop: "title"
            prop: "title",
            },
            {
              label: "请求方法",
              prop: "method",
              width:'80'
            width: "80",
            },
            {
              label: "请求接口",
              prop: "requestUri"
            prop: "requestUri",
            },
            {
              label: "日志时间",
              prop: "createTime",
              width:'180'
            width: "180",
            },
            {
              label: "用户代理",
              prop: "userAgent",
              span: 24,
              hide: true
            hide: true,
            },
            {
              label: "请求数据",
@@ -100,11 +105,11 @@
              type: "textarea",
              span: 24,
              minRows: 2,
              hide: true
            }
          ]
            hide: true,
        },
        data: []
        ],
      },
      data: [],
      };
    },
@@ -112,9 +117,9 @@
      ...mapGetters(["permission"]),
      permissionList() {
        return {
          viewBtn: this.vaildData(this.permission.log_api_view, false)
        viewBtn: this.vaildData(this.permission.log_api_view, false),
        };
      }
    },
    },
    methods: {
      searchReset() {
@@ -129,7 +134,7 @@
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getApiLogs(this.form.id).then(res => {
        getApiLogs(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -146,14 +151,18 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getApiList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getApiList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
        });
      }
    }
    },
  },
  };
</script>
src/views/monitor/log/error.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -13,7 +16,8 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
    </avue-crud>
  </basic-container>
</template>
@@ -32,10 +36,11 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -47,49 +52,49 @@
          addBtn: false,
          delBtn: false,
          menuWidth: 120,
          dialogType: 'drawer',
        dialogType: "drawer",
          column: [
            {
              label: "服务id",
              prop: "serviceId",
              search: true,
              width:'120'
            width: "120",
            },
            {
              label: "服务host",
              prop: "serverHost",
              search: true,
              width:'150'
            width: "150",
            },
            {
              label: "服务ip",
              prop: "serverIp",
              width:'160'
            width: "160",
            },
            {
              label: "软件环境",
              prop: "env",
              width:'80'
            width: "80",
            },
            {
              label: "请求方法",
              prop: "method",
              width:'80'
            width: "80",
            },
            {
              label: "请求接口",
              prop: "requestUri"
            prop: "requestUri",
            },
            {
              label: "日志时间",
              prop: "createTime",
              width:'180'
            width: "180",
            },
            {
              label: "用户代理",
              prop: "userAgent",
              span: 24,
              hide: true
            hide: true,
            },
            {
              label: "请求数据",
@@ -97,7 +102,7 @@
              type: "textarea",
              span: 24,
              minRows: 2,
              hide: true
            hide: true,
            },
            {
              label: "日志数据",
@@ -105,20 +110,20 @@
              type: "textarea",
              span: 24,
              minRows: 16,
              hide: true
            }
          ]
            hide: true,
        },
        data: []
        ],
      },
      data: [],
      };
    },
    computed: {
      ...mapGetters(["permission"]),
      permissionList() {
        return {
          viewBtn: this.vaildData(this.permission.log_error_view, false)
        viewBtn: this.vaildData(this.permission.log_error_view, false),
        };
      }
    },
    },
    methods: {
      searchReset() {
@@ -133,7 +138,7 @@
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getErrorLogs(this.form.id).then(res => {
        getErrorLogs(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -150,14 +155,18 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getErrorList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getErrorList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
        });
      }
    }
    },
  },
  };
</script>
src/views/monitor/log/usual.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -13,7 +16,8 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
    </avue-crud>
  </basic-container>
</template>
@@ -32,10 +36,11 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -47,49 +52,49 @@
          addBtn: false,
          delBtn: false,
          menuWidth: 120,
          dialogType: 'drawer',
        dialogType: "drawer",
          column: [
            {
              label: "服务id",
              prop: "serviceId",
              search: true
            search: true,
            },
            {
              label: "服务host",
              prop: "serverHost",
              search: true
            search: true,
            },
            {
              label: "服务ip",
              prop: "serverIp"
            prop: "serverIp",
            },
            {
              label: "软件环境",
              prop: "env",
              width:'80'
            width: "80",
            },
            {
              label: "日志级别",
              prop: "logLevel"
            prop: "logLevel",
            },
            {
              label: "日志id",
              prop: "logId"
            prop: "logId",
            },
            {
              label: "请求接口",
              prop: "requestUri"
            prop: "requestUri",
            },
            {
              label: "日志时间",
              prop: "createTime",
              width:'180'
            width: "180",
            },
            {
              label: "用户代理",
              prop: "userAgent",
              span: 24,
              hide: true
            hide: true,
            },
            {
              label: "日志数据",
@@ -97,7 +102,7 @@
              type: "textarea",
              span: 24,
              minRows: 2,
              hide: true
            hide: true,
            },
            {
              label: "请求数据",
@@ -105,20 +110,20 @@
              type: "textarea",
              span: 24,
              minRows: 2,
              hide: true
            }
          ]
            hide: true,
        },
        data: []
        ],
      },
      data: [],
      };
    },
    computed: {
      ...mapGetters(["permission"]),
      permissionList() {
        return {
          viewBtn: this.vaildData(this.permission.log_usual_view, false)
        viewBtn: this.vaildData(this.permission.log_usual_view, false),
        };
      }
    },
    },
    methods: {
      searchReset() {
@@ -133,7 +138,7 @@
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getUsualLogs(this.form.id).then(res => {
        getUsualLogs(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -150,14 +155,18 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getUsualList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getUsualList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
        });
      }
    }
    },
  },
  };
</script>
src/views/onSiteInspection/company.vue
@@ -46,6 +46,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
src/views/onSiteInspection/securityStaff.vue
@@ -46,6 +46,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
src/views/ownerFeedback/owner.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
@@ -17,18 +20,20 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   v-if="permission.owner_delete"
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="category">
      <template slot-scope="{ row }" slot="category">
        <el-tag>{{row.categoryName}}</el-tag>
      </template>
    </avue-crud>
@@ -48,11 +53,12 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        selectionList: [],
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
          tip: false,
@@ -65,16 +71,19 @@
          selection: true,
          excelBtn: true,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "服务单位",
              prop: "company",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入服务单位",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "联系方式",
@@ -106,36 +115,45 @@
              type: "date",
              format: "yyyy-MM-dd hh:mm:ss",
              valueFormat: "yyyy-MM-dd hh:mm:ss",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入反馈时间",
                trigger: "click"
              }]
            }, {
                trigger: "click",
              },
            ],
          },
          {
              label: "反馈意见",
              prop: "opinion",
            }, {
          },
          {
              label: "业主",
              prop: "owner",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入反馈时间",
                trigger: "click"
              }]
            }, {
                trigger: "click",
              },
            ],
          },
          {
              label: "业主联系方式",
              prop: "ownerContact",
            }, {
          },
          {
              label: "备注",
              prop: "remarks",
            }, {
          },
          {
              label: "处置结果",
              prop: "result",
            }
          ]
        },
        data: []
        ],
      },
      data: [],
      };
    },
    computed: {
@@ -145,49 +163,55 @@
          addBtn: this.vaildData(this.permission.owner_add, false),
          viewBtn: this.vaildData(this.permission.owner_view, false),
          delBtn: this.vaildData(this.permission.owner_delete, false),
          editBtn: this.vaildData(this.permission.owner_edit, false)
        editBtn: this.vaildData(this.permission.owner_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -196,7 +220,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -225,7 +249,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -234,14 +258,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getNotice(this.form.id).then(res => {
        getNotice(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -266,20 +290,20 @@
            ...params,
            startTime: releaseTimeRange[0],
            endTime: releaseTimeRange[1],
            ...this.query
          ...this.query,
          };
          values.releaseTimeRange = null;
        }
        this.loading = true;
        getList(page.currentPage, page.pageSize, values).then(res => {
      getList(page.currentPage, page.pageSize, values).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/people/data.js
@@ -10,7 +10,7 @@
    }
},
{
    label: "所属保安公司",
    label: "企业名称",
    prop: "deptName",
    disabled: true,
    span: 24,
@@ -313,7 +313,7 @@
    editDisplay: false,
    addDisplay: false
}, {
    label: '单位名称',
    label: '企业名称',
    prop: "companyname",
    formslot: true,
}, {
@@ -350,7 +350,7 @@
export var practitionersColumns = [{
    width: 200,
    label: '单位名称',
    label: '企业名称',
    prop: "companyname",
    formslot: true,
}, {
@@ -468,7 +468,7 @@
    display: false
},
{
    label: "所属保安公司",
    label: "企业名称",
    searchLabelWidth: "110",
    // prop: "deptName",
    prop: "deptId",
src/views/people/expression.vue
@@ -5,7 +5,12 @@
<template>
  <basic-container class="dispatchChildoperable">
  <basic-container
    :class="[
      'dispatchChildoperable',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option1"
      :data="data1"
@@ -46,6 +51,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -65,6 +71,7 @@
        headerAlign: "center",
        align: "center",
        column: trackRecordColumn,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/people/job.vue
@@ -5,7 +5,12 @@
<template>
  <basic-container class="dispatchChildoperable">
  <basic-container
    :class="[
      'dispatchChildoperable',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option1"
      :data="data1"
@@ -52,6 +57,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -71,6 +77,7 @@
        headerAlign: "center",
        align: "center",
        column: practitionersColumn,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/recruitmentManagement/index.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="recruitmentManagement">
    <div
      :class="[
        'recruitmentManagement',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -50,6 +55,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
@@ -65,6 +71,7 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      useifid: 266,
    };
src/views/report/reportlist.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -14,13 +17,16 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
      <template slot-scope="scope" slot="menu">
@@ -42,7 +48,9 @@
        </el-button>
      </template>
      <template slot-scope="{row}" slot="name">
        <el-tag style="cursor:pointer" @click="handlePreview(row.name)">{{ row.name }}</el-tag>
        <el-tag style="cursor: pointer" @click="handlePreview(row.name)">{{
          row.name
        }}</el-tag>
      </template>
    </avue-crud>
  </basic-container>
@@ -62,10 +70,10 @@
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
        total: 0,
      },
      option: {
        height: 'auto',
        height: "auto",
        calcHeight: 30,
        tip: false,
        searchShow: true,
@@ -75,6 +83,7 @@
        selection: true,
        viewBtn: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "文件名",
@@ -89,10 +98,10 @@
          {
            label: "更新时间",
            prop: "updateTime",
          }
        ]
      },
      data: []
        ],
      },
      data: [],
    };
  },
  computed: {
@@ -102,29 +111,33 @@
        addBtn: false,
        viewBtn: false,
        delBtn: true,
        editBtn: false
        editBtn: false,
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
        ids.push(ele.id);
      });
      return ids.join(",");
    }
    },
  },
  methods: {
    handlePreview(name) {
      this.$router.push({path: `/myiframe/urlPath?name=preview-${name}&src=${this.website.reportUrl}/preview?_u=blade-${name}`});
      this.$router.push({
        path: `/myiframe/urlPath?name=preview-${name}&src=${this.website.reportUrl}/preview?_u=blade-${name}`,
      });
    },
    handleDesign(name) {
      this.$router.push({path: `/myiframe/urlPath?name=designer-${name}&src=${this.website.reportUrl}/designer?_u=blade-${name}`});
      this.$router.push({
        path: `/myiframe/urlPath?name=designer-${name}&src=${this.website.reportUrl}/designer?_u=blade-${name}`,
      });
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return remove(row.id);
@@ -133,7 +146,7 @@
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
        });
    },
@@ -162,7 +175,7 @@
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return remove(this.ids);
@@ -171,7 +184,7 @@
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
        });
@@ -187,15 +200,19 @@
    },
    onLoad(page, params = {}) {
      this.loading = true;
      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    }
  }
    },
  },
};
</script>
src/views/resource/attach.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -103,6 +108,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -118,6 +124,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件地址",
src/views/resource/attachCopy.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -103,6 +108,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -118,6 +124,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件地址",
src/views/resource/attachOnce copy.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -95,6 +97,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -111,6 +114,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件地址",
src/views/resource/attachOnce.vue
@@ -109,6 +109,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -127,6 +128,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件名称",
src/views/resource/oss.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButOne">
  <basic-container
    :class="[
      'hasButOne',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -95,6 +100,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -111,6 +117,7 @@
        labelWidth: 100,
        dialogWidth: 880,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "分类",
src/views/resource/sms.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
@@ -17,50 +20,69 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   v-if="permission.sms_delete"
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   icon="el-icon-video-play"
                   size="small"
                   v-if="userInfo.role_name.includes('admin')"
                   @click="handleDebug(scope.row)">调试
          @click="handleDebug(scope.row)"
          >调试
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   icon="el-icon-circle-check"
                   size="small"
                   v-if="permission.sms_enable"
                   @click.stop="handleEnable(scope.row)">启用
          @click.stop="handleEnable(scope.row)"
          >启用
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="status">
      <template slot-scope="{ row }" slot="status">
        <el-tag>{{row.statusName}}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="category">
      <template slot-scope="{ row }" slot="category">
        <el-tag>{{row.categoryName}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="手机短信发送调试"
    <el-dialog
      title="手机短信发送调试"
               append-to-body
               :visible.sync="box"
               width="550px">
      <avue-form :option="debugOption" v-model="debugForm" @submit="handleSend"/>
      width="550px"
    >
      <avue-form
        :option="debugOption"
        v-model="debugForm"
        @submit="handleSend"
      />
    </el-dialog>
  </basic-container>
</template>
<script>
  import {getList, getDetail, add, update, remove, enable, send} from "@/api/resource/sms";
import {
  getList,
  getDetail,
  add,
  update,
  remove,
  enable,
  send,
} from "@/api/resource/sms";
  import {mapGetters} from "vuex";
  import func from "@/util/func";
@@ -74,11 +96,12 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        selectionList: [],
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -91,6 +114,7 @@
          labelWidth: 100,
          dialogWidth: 880,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "分类",
@@ -103,17 +127,19 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=sms",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
              prop: "category",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请选择分类",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "资源编号",
@@ -121,11 +147,13 @@
              span: 24,
              width: 200,
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入资源编号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "模版ID",
@@ -133,22 +161,26 @@
              span: 24,
              width: 200,
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入模版ID",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "accessKey",
              prop: "accessKey",
              span: 24,
              overHidden: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入accessKey",
                trigger: "blur"
              }],
                trigger: "blur",
              },
            ],
            },
            {
              label: "secretKey",
@@ -157,11 +189,13 @@
              overHidden: true,
              display: true,
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入secretKey",
                trigger: "blur"
              }],
                trigger: "blur",
              },
            ],
            },
            {
              label: "regionId",
@@ -169,18 +203,20 @@
              span: 24,
              value: "cn-hangzhou",
              hide: true,
              display: false
            display: false,
            },
            {
              label: "短信签名",
              prop: "signName",
              span: 24,
              width: 200,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入短信签名",
                trigger: "blur"
              }],
                trigger: "blur",
              },
            ],
            },
            {
              label: "是否启用",
@@ -197,13 +233,13 @@
              label: "备注",
              prop: "remark",
              span: 24,
              hide: true
            hide: true,
            },
          ]
        ],
        },
        data: [],
        debugForm: {
          code: '',
        code: "",
        },
        debugOption: {
          submitText: "发送",
@@ -225,14 +261,14 @@
              span: 24,
              placeholder: "例: {'code':2333,'title':'通知标题'}",
            },
          ]
        }
        ],
      },
      };
    },
    watch: {
      'form.category'() {
    "form.category"() {
        const category = func.toInt(this.form.category);
        this.$refs.crud.option.column.filter(item => {
      this.$refs.crud.option.column.filter((item) => {
          if (item.prop === "templateId") {
            if (category === 1) {
              item.label = "模版内容";
@@ -266,7 +302,7 @@
            }
          }
        });
      }
    },
    },
    computed: {
      ...mapGetters(["userInfo", "permission"]),
@@ -275,49 +311,55 @@
          addBtn: this.vaildData(this.permission.sms_add, false),
          viewBtn: this.vaildData(this.permission.sms_view, false),
          delBtn: this.vaildData(this.permission.sms_delete, false),
          editBtn: this.vaildData(this.permission.sms_edit, false)
        editBtn: this.vaildData(this.permission.sms_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -326,7 +368,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -334,7 +376,7 @@
        this.$confirm("是否确定启用这条配置?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return enable(row.id);
@@ -343,7 +385,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
@@ -353,18 +395,21 @@
        this.debugForm.code = row.smsCode;
      },
      handleSend(form, done, loading) {
        send(form.code, form.phones, form.params).then((res) => {
      send(form.code, form.phones, form.params).then(
        (res) => {
          this.$message({
            type: "success",
            message: "发送成功!"
            message: "发送成功!",
          });
          done();
          window.console.log(res);
          this.box = false;
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      handleDelete() {
        if (this.selectionList.length === 0) {
@@ -374,7 +419,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -383,14 +428,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.id).then(res => {
        getDetail(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -424,15 +469,19 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/resource/uploadNotice.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -101,6 +106,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -117,6 +123,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件地址",
src/views/resource/uploadNotification.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -101,6 +106,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -117,6 +123,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件地址",
src/views/resource/uploadPolicyRelease.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -101,6 +106,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      attachBox: false,
      selectionList: [],
@@ -117,6 +123,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "附件地址",
src/views/securityAnalysis/child/assignment.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="dispatchChildoperable">
    <div
      :class="[
        'dispatchChildoperable',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option1"
        :data="data1"
@@ -95,6 +100,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      form1: {},
      query1: {},
@@ -332,6 +338,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      form2: {},
      query2: {},
src/views/securityAnalysis/child/certificate.vue
@@ -40,6 +40,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -72,7 +73,7 @@
            search: true,
          },
          {
            label: "所属保安公司",
            label: "企业名称",
            searchLabelWidth: "110",
            // prop: "deptName",
            prop: "deptId",
src/views/securityAnalysis/child/dispatch.vue
@@ -40,6 +40,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -63,7 +64,7 @@
        column: [
          //派遣服务公司登记
          {
            label: "派遣单位名称",
            label: "派遣企业名称",
            prop: "name",
            search: true,
            searchLabelWidth: 110,
src/views/securityAnalysis/child/examination.vue
@@ -29,6 +29,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
src/views/securityAnalysis/child/situation.vue
@@ -41,6 +41,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -73,7 +74,7 @@
            search: true,
          },
          {
            label: "所属保安公司",
            label: "企业名称",
            searchLabelWidth: "110",
            // prop: "deptName",
            prop: "deptId",
src/views/securityAnalysis/child/socialSecurity.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -114,6 +116,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -131,6 +134,7 @@
        menu: false,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "姓名",
src/views/securityEquipment/car.js
@@ -66,13 +66,13 @@
        }]
    },
    {
        label: "所属保安公司",
        label: "企业名称",
        prop: "deptId",
        searchSpan: 6,
        searchLabelWidth: 110,
        rules: [{
            required: true,
            message: "请输入所属保安公司",
            message: "请输入企业名称",
            trigger: "blur"
        }],
        hide: true,
src/views/securityEquipment/car.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="equipments">
    <div
      :class="[
        'equipments',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -116,6 +121,7 @@
        selection: true,
        labelWidth: 110,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      useifid: 266,
    };
@@ -334,14 +340,14 @@
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        data.records.forEach(item=>{
        data.records.forEach((item) => {
          if(item.numberType==-1){
            item.numberType=null;
          }
          if(item.carType==-1){
            item.carType=null;
          }
        })
        });
        this.data = data.records;
        console.log(this.data);
        this.loading = false;
src/views/securityEquipment/equipments.js
@@ -62,13 +62,13 @@
    width: 70,
},
{
    label: "所属保安公司",
    label: "企业名称",
    prop: "deptId",
    searchSpan: 6,
    searchLabelWidth: 110,
    rules: [{
        required: true,
        message: "请输入所属保安公司",
        message: "请输入企业名称",
        trigger: "blur"
    }],
    hide: true,
src/views/securityEquipment/equipments.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="equipments">
    <div
      :class="[
        'equipments',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -99,6 +104,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
@@ -114,7 +120,9 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
        labelWidth: 110,
        ...this.$store.state.control.clearOtherBut,
      },
      useifid: 266,
src/views/securityEquipment/gun.js
@@ -20,14 +20,14 @@
    //     }]
    // },
    {
        label: "发证单位名称",
    label: "发证企业名称",
        searchLabelWidth: 110,
        labelWidth: 160,
        prop: "issueUnit",
        searchSpan: 4,
        rules: [{
            required: false,
            message: "请输入发证单位名称",
        message: "请输入发证企业名称",
            trigger: "blur"
        }],
        search: true,
@@ -60,13 +60,13 @@
        // search: true,
    },
    {
        label: "所属保安公司",
    label: "企业名称",
        prop: "deptId",
        searchSpan: 6,
        searchLabelWidth: 110,
        rules: [{
            required: true,
            message: "请输入所属保安公司",
        message: "请输入企业名称",
            trigger: "blur"
        }],
        hide: true,
src/views/securityEquipment/gun.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="equipments">
    <div
      :class="[
        'equipments',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -100,6 +105,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
@@ -116,6 +122,7 @@
        selection: true,
        labelWidth: 110,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
      useifid: 266,
    };
src/views/securityGuard/data.js
@@ -10,7 +10,7 @@
        }
    },
    {
        label: "所属保安公司",
    label: "企业名称",
        prop: "deptId",
        type: "tree",
        dicUrl: "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
@@ -320,7 +320,7 @@
    editDisplay: false,
    addDisplay: false
}, {
    label: '单位名称',
    label: '企业名称',
    prop: "companyname",
    formslot: true,
}, {
@@ -357,7 +357,7 @@
export var practitionersColumns = [{
    width: 200,
    label: '单位名称',
    label: '企业名称',
    prop: "companyname",
    formslot: true,
}, {
@@ -474,7 +474,7 @@
        display: false
    },
    {
        label: "所属保安公司",
    label: "企业名称",
        searchLabelWidth: "110",
        // prop: "deptName",
        prop: "deptId",
src/views/securityGuard/securityGuardOnce copy.vue
@@ -341,6 +341,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      roleId: "1412226235153731586",
      deptId: "1413470343230877697",
@@ -348,6 +349,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      init: {
        roleTree: [],
@@ -416,7 +418,7 @@
            icon: "el-icon-user-solid",
            column: [
              {
                label: "所属保安公司",
                label: "企业名称",
                prop: "deptId",
                type: "tree",
                // dicUrl:
@@ -723,7 +725,7 @@
                  column: [
                    {
                      width: 200,
                      label: "单位名称",
                      label: "企业名称",
                      prop: "companyname",
                      formslot: true,
                    },
src/views/securityGuard/securityGuardOnce.vue
@@ -417,6 +417,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      roleId: "1412226235153731586",
      deptId: "1413470343230877697",
@@ -424,6 +425,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      init: {
        roleTree: [],
@@ -493,7 +495,7 @@
            icon: "el-icon-user-solid",
            column: [
              {
                label: "所属保安公司",
                label: "企业名称",
                prop: "deptId",
                type: "tree",
                // dicUrl:
src/views/securityGuard/securityGuardRegistration.vue
@@ -341,7 +341,7 @@
                  column: [
                    {
                      width: 200,
                      label: "单位名称",
                      label: "企业名称",
                      prop: "companyname",
                      formslot: true,
                    },
src/views/securityGuard/securityGuard指纹自动识别(集成VUE报错)-9.vue
@@ -557,6 +557,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      roleId: "1412226235153731586",
      deptId: "1413470343230877697",
@@ -565,6 +566,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      init: {
        roleTree: [],
@@ -641,7 +643,7 @@
            icon: "el-icon-user-solid",
            column: [
              {
                label: "所属保安公司",
                label: "企业名称",
                prop: "deptId",
                type: "tree",
                // dicUrl:
src/views/securityGuard/sfzJS.js
@@ -96,7 +96,7 @@
        // alert("Got IP! :" + ip);
        baseURL = ip;
    });
    console.log(baseURL, 666666);
    // console.log(baseURL, 666666);
    var result = "";
    var iParam1 = "1";
    //创建请求 第一个参数是代表以post方式发送;第二个是请求端口和地址;第三个表示是否异步
src/views/securityMan/data.js
@@ -10,7 +10,7 @@
    }
},
{
    label: "所属保安公司",
    label: "企业名称",
    prop: "deptName",
    disabled: true,
    span: 24,
@@ -313,7 +313,7 @@
    editDisplay: false,
    addDisplay: false
}, {
    label: '单位名称',
    label: '企业名称',
    prop: "companyname",
    formslot: true,
}, {
@@ -350,7 +350,7 @@
export var practitionersColumns = [{
    width: 200,
    label: '单位名称',
    label: '企业名称',
    prop: "companyname",
    formslot: true,
}, {
@@ -447,7 +447,7 @@
    display: false
},
{
    label: "所属保安公司",
    label: "企业名称",
    searchLabelWidth: "110",
    // prop: "deptName",
    prop: "deptId",
src/views/securityMan/index.vue
@@ -152,11 +152,13 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      page2: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      query2: {},
src/views/securityUnit/armedEscort.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="securityUnit">
    <div
      :class="[
        'securityUnit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -158,6 +163,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -238,6 +244,8 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit/index.vue
@@ -178,6 +178,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -287,6 +288,7 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit/localCompany.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="securityUnit">
    <div
      :class="[
        'securityUnit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -158,6 +163,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -193,6 +199,7 @@
        submitBtn: true,
        gutter: 30,
        column: column0,
        ...this.$store.state.control.clearOtherBut,
      },
      obj1: {
        title1: "保安单位出资人员",
@@ -202,6 +209,7 @@
        submitBtn: false,
        gutter: 30,
        column: column1,
        ...this.$store.state.control.clearOtherBut,
      },
      obj2: {
        title2: "主要管理人员信息",
@@ -211,6 +219,7 @@
        submitBtn: false,
        gutter: 30,
        column: column2,
        ...this.$store.state.control.clearOtherBut,
      },
      forms: false,
@@ -238,6 +247,8 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit/securityTraining.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="securityUnit">
    <div
      :class="[
        'securityUnit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -158,6 +163,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -269,6 +275,8 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit/selfRecruitedSecurityGuard.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="securityUnit">
    <div
      :class="[
        'securityUnit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -158,6 +163,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -268,6 +274,7 @@
        border: true,
        selection: true,
        ...this.$store.state.control.clearOtherBut,
        column: [
          ...column,
          {
src/views/securityUnit/transRegionalcompany.vue
@@ -1,6 +1,11 @@
<template>
  <basic-container>
    <div class="securityUnit">
    <div
      :class="[
        'securityUnit',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <avue-crud
        :option="option"
        :data="data"
@@ -160,6 +165,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -271,6 +277,7 @@
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnitChild/index.vue
@@ -142,7 +142,13 @@
        <!-- </span> -->
      </el-tab-pane>
      <!-- <span v-else-if="typeTABS.prop === 'tab2'" class="tab"> -->
      <el-tab-pane label="保安单位出资人员" name="tab2">
      <el-tab-pane
        label="保安单位出资人员"
        name="tab2"
        :class="[
          $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
        ]"
      >
        <basic-container>
          <avue-crud
            :option="option1"
@@ -182,7 +188,13 @@
        <!-- </span> -->
      </el-tab-pane>
      <!-- <span v-else-if="typeTABS.prop === 'tab3'" class="tab"> -->
      <el-tab-pane label="主要管理人员信息" name="tab3">
      <el-tab-pane
        label="主要管理人员信息"
        name="tab3"
        :class="[
          $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
        ]"
      >
        <basic-container>
          <avue-crud
            :option="option2"
@@ -405,6 +417,7 @@
      excelOption1: {
        submitBtn: false,
        emptyBtn: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "文件上传",
@@ -512,6 +525,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query1: {},
      data1: [],
@@ -524,6 +538,7 @@
        menuWidth: 200,
        align: "center",
        selection: true,
        ...this.$store.state.control.clearOtherBut,
        column: column1,
      },
@@ -533,6 +548,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query2: {},
      data2: [],
@@ -546,6 +562,7 @@
        menuAlign: "center",
        align: "center",
        selection: true,
        ...this.$store.state.control.clearOtherBut,
        column: column2,
      },
    };
src/views/securityUnitChild/social.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -91,6 +93,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -106,6 +109,7 @@
        menu: false,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "姓名",
src/views/securityUnit备份/armedEscort.vue
@@ -194,6 +194,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -274,6 +275,7 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit备份/index.vue
@@ -178,6 +178,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -287,6 +288,7 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit备份/localCompany.vue
@@ -194,6 +194,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -274,6 +275,7 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit备份/securityTraining.vue
@@ -194,6 +194,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
@@ -305,6 +306,7 @@
        align: "center",
        selection: true,
        column: column,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/securityUnit备份/selfRecruitedSecurityGuard.vue
@@ -194,6 +194,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
src/views/securityUnit备份/transRegionalcompany.vue
@@ -196,6 +196,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      treeData: [],
src/views/social/social.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
@@ -17,28 +20,39 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   v-if="permission.social_delete"
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
                    <el-button type="success"
        <el-button
          type="success"
                              size="small"
                             plain
                               icon="el-icon-upload2"
                               @click="handleImport">导入
          @click="handleImport"
          >导入
                  </el-button>
      </template>
    </avue-crud>
    <el-dialog title="用户数据导入"
    <el-dialog
      title="用户数据导入"
                         append-to-body
                         :visible.sync="excelBox"
                         width="555px">
                <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
      width="555px"
    >
      <avue-form
        :option="excelOption"
        v-model="excelForm"
        :upload-after="uploadAfter"
      >
                  <template slot="excelTemplate">
                    <el-button type="primary" @click="handleTemplate">
                      点击下载<i class="el-icon-download el-icon--right"></i>
@@ -64,11 +78,12 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        selectionList: [],
        option: {
          height:'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -78,105 +93,128 @@
          viewBtn: true,
          selection: true,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "姓名",
              prop: "namb",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入姓名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "性别",
              prop: "sex",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入性别",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "民族",
              prop: "nation",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入民族",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "出生日期",
              prop: "birthday",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入出生日期",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "联系电话",
              prop: "telephone",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入联系电话",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "身份证号",
              prop: "cardid",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入身份证号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "户籍所在地址",
              prop: "residence",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入户籍所在地址",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "居住地址  ",
              prop: "address",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入居住地址  ",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "户籍性质",
              prop: "nature",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入户籍性质",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "个人缴费额",
              prop: "amount",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入个人缴费额",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "参保时间",
              prop: "insuredtime",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入参保时间",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "所属机构",
@@ -186,10 +224,10 @@
              dicUrl: "/api/blade-system/dept/selectIn",
              props: {
                label: "deptname",
                value: "deptid"
              value: "deptid",
              },
            },
          ]
        ],
        },
        data: [],
        excelForm: {},
@@ -198,17 +236,17 @@
          emptyBtn: false,
          column: [
            {
              label: '模板上传',
              prop: 'excelFile',
              type: 'upload',
            label: "模板上传",
            prop: "excelFile",
            type: "upload",
              drag: true,
              loadText: '模板上传中,请稍等',
            loadText: "模板上传中,请稍等",
              span: 24,
              propsHttp: {
                res: 'data'
              res: "data",
              },
              tip: '请上传 .xls,.xlsx 标准格式文件',
              action: "/api/social/import-user"
            tip: "请上传 .xls,.xlsx 标准格式文件",
            action: "/api/social/import-user",
            },
            {
              label: "数据覆盖",
@@ -220,12 +258,12 @@
              dicData: [
                {
                  label: "否",
                  value: 0
                value: 0,
                },
                {
                  label: "是",
                  value: 1
                }
                value: 1,
              },
              ],
              value: 0,
              slot: true,
@@ -233,27 +271,30 @@
                {
                  required: true,
                  message: "请选择是否覆盖",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: '模板下载',
              prop: 'excelTemplate',
            label: "模板下载",
            prop: "excelTemplate",
              formslot: true,
              span: 24,
            }
          ]
        }
          },
        ],
      },
      };
    },
    watch: {
      'excelForm.isCovered'() {
        if (this.excelForm.isCovered !== '') {
    "excelForm.isCovered"() {
      if (this.excelForm.isCovered !== "") {
          const column = this.findObject(this.excelOption.column, "excelFile");
          column.action = `/api/social/import-user?isCovered=${this.excelForm.isCovered}`+"&deptid="+this.userInfo.dept_id;
        column.action =
          `/api/social/import-user?isCovered=${this.excelForm.isCovered}` +
          "&deptid=" +
          this.userInfo.dept_id;
        }
      }
    },
    },
    computed: {
      ... mapGetters(["permission", "userInfo"]),
@@ -262,49 +303,55 @@
          addBtn: this.vaildData(this.permission.social_add, false),
          viewBtn: this.vaildData(this.permission.social_view, false),
          delBtn: this.vaildData(this.permission.social_delete, false),
          editBtn: this.vaildData(this.permission.social_edit, false)
        editBtn: this.vaildData(this.permission.social_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          loading();
          window.console.log(error);
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          loading();
          console.log(error);
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -313,12 +360,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
      handleTemplate() {
        window.open(`/api/social/export-template?${this.website.tokenHeader}=${getToken()}`);
      window.open(
        `/api/social/export-template?${this.website.tokenHeader}=${getToken()}`
      );
      },
      uploadAfter(res, done, loading, column) {
        window.console.log(column);
@@ -337,7 +386,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -346,14 +395,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.id).then(res => {
        getDetail(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -387,15 +436,19 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/system/client.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButOne">
  <basic-container
    :class="[
      'hasButOne',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -49,6 +54,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -62,6 +68,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "应用id",
src/views/system/dept.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -73,6 +78,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      option: {
        lazy: true,
@@ -87,6 +93,7 @@
        viewBtn: true,
        menuWidth: 300,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "机构名称",
src/views/system/dict.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="optionParent"
      :table-loading="loading"
@@ -145,8 +150,217 @@
      },
      dataParent: [],
      dataChild: [],
      optionParent: optionParent,
      optionChild: optionChild,
      optionParent: {
        height: "auto",
        calcHeight: 30,
        tip: false,
        searchShow: true,
        searchMenuSpan: 10,
        border: true,
        index: true,
        selection: true,
        viewBtn: true,
        menuWidth: 250,
        dialogWidth: 880,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "字典编号",
            prop: "code",
            search: true,
            slot: true,
            span: 24,
            rules: [
              {
                required: true,
                message: "请输入字典编号",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典名称",
            prop: "dictValue",
            search: true,
            align: "center",
            rules: [
              {
                required: true,
                message: "请输入字典名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典排序",
            prop: "sort",
            type: "number",
            align: "right",
            width: 100,
            rules: [
              {
                required: true,
                message: "请输入字典排序",
                trigger: "blur",
              },
            ],
          },
          {
            label: "封存",
            prop: "isSealed",
            type: "switch",
            align: "center",
            width: 100,
            dicData: [
              {
                label: "否",
                value: 0,
              },
              {
                label: "是",
                value: 1,
              },
            ],
            value: 0,
            slot: true,
            rules: [
              {
                required: true,
                message: "请选择封存",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典备注",
            prop: "remark",
            hide: true,
          },
        ],
      },
      optionChild: {
        height: "auto",
        calcHeight: 95,
        tip: false,
        searchShow: true,
        searchMenuSpan: 10,
        tree: true,
        border: true,
        index: true,
        selection: true,
        viewBtn: true,
        menuWidth: 300,
        dialogWidth: 880,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "字典编号",
            prop: "code",
            addDisabled: true,
            editDisabled: true,
            search: true,
            span: 24,
            rules: [
              {
                required: true,
                message: "请输入字典编号",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典名称",
            prop: "dictValue",
            search: true,
            align: "center",
            rules: [
              {
                required: true,
                message: "请输入字典名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "上级字典",
            prop: "parentId",
            type: "tree",
            dicData: [],
            hide: true,
            props: {
              label: "title",
            },
            addDisabled: true,
            editDisabled: true,
            rules: [
              {
                required: false,
                message: "请选择上级字典",
                trigger: "click",
              },
            ],
          },
          {
            label: "字典键值",
            prop: "dictKey",
            width: 80,
            rules: [
              {
                required: true,
                message: "请输入字典键值",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典排序",
            prop: "sort",
            type: "number",
            align: "right",
            hide: true,
            rules: [
              {
                required: true,
                message: "请输入字典排序",
                trigger: "blur",
              },
            ],
          },
          {
            label: "封存",
            prop: "isSealed",
            type: "switch",
            align: "center",
            width: 80,
            dicData: [
              {
                label: "否",
                value: 0,
              },
              {
                label: "是",
                value: 1,
              },
            ],
            value: 0,
            slot: true,
            rules: [
              {
                required: true,
                message: "请选择封存",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典备注",
            prop: "remark",
            hide: true,
          },
        ],
      },
    };
  },
  computed: {
src/views/system/dictbiz.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="optionParent"
      :table-loading="loading"
@@ -145,8 +150,218 @@
      },
      dataParent: [],
      dataChild: [],
      optionParent: optionParent,
      optionChild: optionChild,
      optionParent: {
        height: "auto",
        calcHeight: 30,
        tip: false,
        searchShow: true,
        searchMenuSpan: 10,
        border: true,
        index: true,
        selection: true,
        viewBtn: true,
        menuWidth: 250,
        dialogWidth: 880,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "字典编号",
            prop: "code",
            search: true,
            slot: true,
            span: 24,
            rules: [
              {
                required: true,
                message: "请输入字典编号",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典名称",
            prop: "dictValue",
            search: true,
            align: "center",
            rules: [
              {
                required: true,
                message: "请输入字典名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典排序",
            prop: "sort",
            type: "number",
            align: "right",
            width: 100,
            hide: true,
            rules: [
              {
                required: true,
                message: "请输入字典排序",
                trigger: "blur",
              },
            ],
          },
          {
            label: "封存",
            prop: "isSealed",
            type: "switch",
            align: "center",
            width: 100,
            dicData: [
              {
                label: "否",
                value: 0,
              },
              {
                label: "是",
                value: 1,
              },
            ],
            value: 0,
            slot: true,
            rules: [
              {
                required: true,
                message: "请选择封存",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典备注",
            prop: "remark",
            hide: true,
          },
        ],
      },
      optionChild: {
        height: "auto",
        calcHeight: 95,
        tip: false,
        searchShow: true,
        searchMenuSpan: 10,
        tree: true,
        border: true,
        index: true,
        selection: true,
        viewBtn: true,
        menuWidth: 300,
        dialogWidth: 880,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "字典编号",
            prop: "code",
            addDisabled: true,
            editDisabled: true,
            search: true,
            span: 24,
            rules: [
              {
                required: true,
                message: "请输入字典编号",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典名称",
            prop: "dictValue",
            search: true,
            align: "center",
            rules: [
              {
                required: true,
                message: "请输入字典名称",
                trigger: "blur",
              },
            ],
          },
          {
            label: "上级字典",
            prop: "parentId",
            type: "tree",
            dicData: [],
            hide: true,
            props: {
              label: "title",
            },
            addDisabled: true,
            editDisabled: true,
            rules: [
              {
                required: false,
                message: "请选择上级字典",
                trigger: "click",
              },
            ],
          },
          {
            label: "字典键值",
            prop: "dictKey",
            width: 80,
            rules: [
              {
                required: true,
                message: "请输入字典键值",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典排序",
            prop: "sort",
            type: "number",
            align: "right",
            hide: true,
            rules: [
              {
                required: true,
                message: "请输入字典排序",
                trigger: "blur",
              },
            ],
          },
          {
            label: "封存",
            prop: "isSealed",
            type: "switch",
            align: "center",
            width: 80,
            dicData: [
              {
                label: "否",
                value: 0,
              },
              {
                label: "是",
                value: 1,
              },
            ],
            value: 0,
            slot: true,
            rules: [
              {
                required: true,
                message: "请选择封存",
                trigger: "blur",
              },
            ],
          },
          {
            label: "字典备注",
            prop: "remark",
            hide: true,
          },
        ],
      },
    };
  },
  computed: {
src/views/system/menu.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="hasButTwo">
  <basic-container
    :class="[
      'hasButTwo',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -72,6 +77,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      option: {
        lazy: true,
@@ -87,6 +93,7 @@
        viewBtn: true,
        menuWidth: 300,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "菜单名称",
src/views/system/param.vue
@@ -1,17 +1,24 @@
<template>
  <basic-container>
    <avue-crud v-bind="bindVal"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      v-bind="bindVal"
               v-on="onEvent"
               v-model="form"
               :permission="permissionList"
               :page.sync="page">
      :page.sync="page"
      :option="option"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   v-if="permission.param_delete"
                   plain
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
    </avue-crud>
@@ -19,10 +26,14 @@
</template>
<script>
export default window.$crudCommon({
export default window.$crudCommon(
  {
  data() {
    return {}
      return {
        option: {
          ...this.$store.state.control.clearOtherBut,
        },
      };
  },
  computed: {
    permissionList() {
@@ -30,15 +41,17 @@
        addBtn: this.vaildData(this.permission.param_add, false),
        viewBtn: this.vaildData(this.permission.param_view, false),
        delBtn: this.vaildData(this.permission.param_delete, false),
        editBtn: this.vaildData(this.permission.param_edit, false)
          editBtn: this.vaildData(this.permission.param_edit, false),
      };
    }
  },
  methods: {}
}, {
    },
    methods: {},
  },
  {
  //模块路径
  name: 'system/param',
})
    name: "system/param",
  }
);
</script>
<style>
src/views/system/post.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container :class="[
$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
]">
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
@@ -17,18 +20,20 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   v-if="permission.post_delete"
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="category">
      <template slot-scope="{ row }" slot="category">
        <el-tag>{{row.categoryName}}</el-tag>
      </template>
    </avue-crud>
@@ -49,11 +54,12 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        selectionList: [],
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -63,6 +69,7 @@
          viewBtn: true,
          selection: true,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "所属保安单位",
@@ -75,14 +82,16 @@
              span: 24,
              props: {
                label: "tenantName",
                value: "tenantId"
              value: "tenantId",
              },
              hide: !website.tenantMode,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入所属保安单位",
                trigger: "click"
              }]
                trigger: "click",
              },
            ],
            },
            {
              label: "岗位类型",
@@ -91,46 +100,54 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=post_category",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请选择岗位类型",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "岗位编号",
              prop: "postCode",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入岗位编号",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "岗位名称",
              prop: "postName",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入岗位名称",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "岗位排序",
              prop: "sort",
              type: "number",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入岗位排序",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "岗位描述",
@@ -140,9 +157,9 @@
              minRows: 6,
              hide: true,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
@@ -152,49 +169,55 @@
          addBtn: this.vaildData(this.permission.post_add, false),
          viewBtn: this.vaildData(this.permission.post_view, false),
          delBtn: this.vaildData(this.permission.post_delete, false),
          editBtn: this.vaildData(this.permission.post_edit, false)
        editBtn: this.vaildData(this.permission.post_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -203,7 +226,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -215,7 +238,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -224,14 +247,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.id).then(res => {
        getDetail(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -265,15 +288,19 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/system/tenant.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -17,54 +20,81 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   v-if="permission.tenant_delete"
                   plain
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
        <el-button size="small"
        <el-button
          size="small"
                   plain
                   v-if="userInfo.role_name.includes('administrator')"
                   icon="el-icon-setting"
                   @click="handleSetting">授权配置
          @click="handleSetting"
          >授权配置
        </el-button>
        <el-button size="small"
        <el-button
          size="small"
                   plain
                   v-if="userInfo.role_name.includes('administrator')"
                   icon="el-icon-coin"
                   @click="handleDatasource">数据源配置
          @click="handleDatasource"
          >数据源配置
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="accountNumber">
        <el-tag>{{ row.accountNumber > 0 ? row.accountNumber : '不限制' }}</el-tag>
      <template slot-scope="{ row }" slot="accountNumber">
        <el-tag>{{
          row.accountNumber > 0 ? row.accountNumber : "不限制"
        }}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="expireTime">
        <el-tag>{{ row.expireTime ? row.expireTime : '不限制' }}</el-tag>
      <template slot-scope="{ row }" slot="expireTime">
        <el-tag>{{ row.expireTime ? row.expireTime : "不限制" }}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="保安单位授权配置"
    <el-dialog
      title="保安单位授权配置"
               append-to-body
               :visible.sync="box"
               width="450px">
      <avue-form :option="settingOption" v-model="settingForm" @submit="handleSubmit"/>
      width="450px"
    >
      <avue-form
        :option="settingOption"
        v-model="settingForm"
        @submit="handleSubmit"
      />
    </el-dialog>
    <el-dialog title="保安单位数据源配置"
    <el-dialog
      title="保安单位数据源配置"
               append-to-body
               :visible.sync="datasourceBox"
               width="450px">
      <avue-form :option="datasourceOption" v-model="datasourceForm" @submit="handleDatasourceSubmit"/>
      width="450px"
    >
      <avue-form
        :option="datasourceOption"
        v-model="datasourceForm"
        @submit="handleDatasourceSubmit"
      />
    </el-dialog>
  </basic-container>
</template>
<script>
import {getList, getDetail, remove, update, add, setting, datasource} from "@/api/system/tenant";
import {
  getList,
  getDetail,
  remove,
  update,
  add,
  setting,
  datasource,
} from "@/api/system/tenant";
import {mapGetters} from "vuex";
export default {
@@ -79,12 +109,13 @@
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      option: {
        height: 'auto',
        height: "auto",
        calcHeight: 30,
        labelWidth: '125',
        labelWidth: "125",
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
@@ -94,6 +125,7 @@
        viewBtn: true,
        dialogWidth: 900,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "保安单位ID",
@@ -105,25 +137,29 @@
            addDisplay: false,
            editDisplay: false,
            span: 24,
            rules: [{
            rules: [
              {
              required: true,
              message: "请输入保安单位ID",
              trigger: "blur"
            }]
                trigger: "blur",
              },
            ],
          },
          {
            label: "保安单位名称",
            label: "保安企业名称",
            searchLabelWidth:"150",
            prop: "tenantName",
            searchSpan:5,
            search: true,
            width: 280,
            span: 24,
            rules: [{
            rules: [
              {
              required: true,
              message: "请输入参数名称",
              trigger: "blur"
            }]
                trigger: "blur",
              },
            ],
          },
          {
            label: "联系人",
@@ -132,11 +168,13 @@
            width: 200,
            search: true,
            searchSpan:5,
            rules: [{
            rules: [
              {
              required: true,
              message: "请输入联系人",
              trigger: "blur"
            }]
                trigger: "blur",
              },
            ],
          },
          {
            label: "联系电话",
@@ -175,17 +213,17 @@
          {
            label: "系统背景",
            prop: "backgroundUrl",
            type: 'upload',
            listType: 'picture-img',
            action: '/api/blade-resource/oss/endpoint/put-file',
            type: "upload",
            listType: "picture-img",
            action: "/api/blade-resource/oss/endpoint/put-file",
            propsHttp: {
              res: 'data',
              url: 'link',
              res: "data",
              url: "link",
            },
            hide: true,
            span: 24,
          },
        ]
        ],
      },
      data: [],
      settingForm: {},
@@ -205,7 +243,7 @@
            valueFormat: "yyyy-MM-dd hh:mm:ss",
            span: 24,
          },
        ]
        ],
      },
      datasourceForm: {},
      datasourceOption: {
@@ -219,16 +257,18 @@
            dicUrl: "/api/blade-develop/datasource/select",
            props: {
              label: "name",
              value: "id"
              value: "id",
            },
            rules: [{
            rules: [
              {
              required: true,
              message: "请选择数据源",
              trigger: "blur"
            }]
                trigger: "blur",
          },
        ]
      }
            ],
          },
        ],
      },
    };
  },
  computed: {
@@ -238,52 +278,58 @@
        addBtn: this.vaildData(this.permission.tenant_add, false),
        viewBtn: this.vaildData(this.permission.tenant_view, false),
        delBtn: this.vaildData(this.permission.tenant_delete, false),
        editBtn: this.vaildData(this.permission.tenant_edit, false)
        editBtn: this.vaildData(this.permission.tenant_edit, false),
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
        ids.push(ele.id);
      });
      return ids.join(",");
    },
    tenantId() {
      return this.selectionList[0].tenantId;
    }
    },
  },
  methods: {
    rowSave(row, done, loading) {
      add(row).then(() => {
      add(row).then(
        () => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "操作成功!"
            message: "操作成功!",
        });
        done();
      }, error => {
        },
        (error) => {
        window.console.log(error);
        loading();
      });
        }
      );
    },
    rowUpdate(row, index, done, loading) {
      update(row).then(() => {
      update(row).then(
        () => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "操作成功!"
            message: "操作成功!",
        });
        done();
      }, error => {
        },
        (error) => {
        window.console.log(error);
        loading();
      });
        }
      );
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return remove(row.id);
@@ -292,13 +338,13 @@
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
        });
    },
    beforeOpen(done, type) {
      if (["view"].includes(type)) {
        getDetail(this.form.id).then(res => {
        getDetail(this.form.id).then((res) => {
          const data = res.data.data;
          if (!(data.accountNumber > 0)) {
            data.accountNumber = "不限制";
@@ -336,7 +382,7 @@
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return remove(this.ids);
@@ -345,7 +391,7 @@
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
        });
@@ -356,14 +402,14 @@
        return;
      }
      if (this.selectionList.length === 1) {
        getDetail(this.selectionList[0].id).then(res => {
        getDetail(this.selectionList[0].id).then((res) => {
          const data = res.data.data;
          this.settingForm.accountNumber = data.accountNumber;
          this.settingForm.expireTime = data.expireTime;
        });
      } else {
        this.settingForm.accountNumber = -1;
        this.settingForm.expireTime = '';
        this.settingForm.expireTime = "";
      }
      this.box = true;
    },
@@ -376,38 +422,44 @@
        this.$message.warning("只能选择一条数据");
        return;
      }
      getDetail(this.selectionList[0].id).then(res => {
      getDetail(this.selectionList[0].id).then((res) => {
        const data = res.data.data;
        this.datasourceForm.datasourceId = data.datasourceId;
      });
      this.datasourceBox = true;
    },
    handleSubmit(form, done, loading) {
      setting(this.ids, form).then(() => {
      setting(this.ids, form).then(
        () => {
        this.onLoad(this.page);
        this.$message({
          type: "success",
          message: "配置成功!"
            message: "配置成功!",
        });
        done();
        this.box = false;
      }, error => {
        },
        (error) => {
        window.console.log(error);
        loading();
      });
        }
      );
    },
    handleDatasourceSubmit(form, done, loading) {
      datasource(this.tenantId, form.datasourceId).then(() => {
      datasource(this.tenantId, form.datasourceId).then(
        () => {
        this.$message({
          type: "success",
          message: "配置成功!"
            message: "配置成功!",
        });
        done();
        this.datasourceBox = false;
      }, error => {
        },
        (error) => {
        window.console.log(error);
        loading();
      });
        }
      );
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
@@ -420,15 +472,19 @@
    },
    onLoad(page, params = {}) {
      this.loading = true;
      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    }
  }
    },
  },
};
</script>
src/views/system/topmenu.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="topmenu">
  <basic-container
    :class="[
      'topmenu',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -106,6 +111,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      menuGrantList: [],
@@ -122,6 +128,7 @@
        selection: true,
        dialogWidth: 900,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "菜单名",
src/views/system/user copy.vue
@@ -196,7 +196,7 @@
  grant,
  resetPassword,
  getJurisdiction,
  getJurisdictionDetail
  getJurisdictionDetail,
} from "@/api/system/user";
import { getDeptTree, getDeptLazyTree } from "@/api/system/dept";
import { getRoleTree } from "@/api/system/role";
@@ -244,11 +244,13 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      platformPage: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      init: {
        roleTree: [],
@@ -322,6 +324,7 @@
        viewBtn: true,
        //dialogType: 'drawer',
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "登录账号",
src/views/system/user.vue
@@ -14,7 +14,11 @@
      </div>
    </el-col>
    <el-col :span="sizes[1]">
      <basic-container>
      <basic-container
        :class="[
          $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
        ]"
      >
        <avue-crud
          :option="option"
          :search.sync="search"
@@ -242,11 +246,13 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      platformPage: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      init: {
        roleTree: [],
@@ -324,6 +330,7 @@
        viewBtn: true,
        //dialogType: 'drawer',
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "登录账号",
@@ -691,7 +698,10 @@
  },
  created() {
    console.log(this.userInfo.role_name);
    if (this.userInfo.role_name == "保安公司管理员" || this.userInfo.role_name == "分公司管理员") {
    if (
      this.userInfo.role_name == "保安公司管理员" ||
      this.userInfo.role_name == "分公司管理员"
    ) {
      this.deptids = this.userInfo.dept_id;
      this.sizes = [0, 24];
      this.isguanli = false;
src/views/talk/talk.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -67,6 +69,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -81,6 +84,7 @@
        viewBtn: true,
        selection: true,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "标题",
src/views/tool/code.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -17,29 +20,36 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   v-if="permission.code_delete"
                   plain
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
        <el-button type="primary"
        <el-button
          type="primary"
                   size="small"
                   plain
                   icon="el-icon-refresh"
                   @click="handleBuild">代码生成
          @click="handleBuild"
          >代码生成
        </el-button>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   icon="el-icon-document-copy"
                   v-if="permission.code_edit"
                   class="none-border"
                   @click.stop="handleCopy(scope.row)">复制
          @click.stop="handleCopy(scope.row)"
          >复制
        </el-button>
      </template>
    </avue-crud>
@@ -47,7 +57,15 @@
</template>
<script>
  import {getList, getCode, build, remove, add, update, copy} from "@/api/tool/code";
import {
  getList,
  getCode,
  build,
  remove,
  add,
  update,
  copy,
} from "@/api/tool/code";
  import {mapGetters} from "vuex";
  export default {
@@ -60,10 +78,11 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          dialogWidth: 900,
          tip: false,
@@ -76,6 +95,7 @@
          menuWidth: 250,
          viewBtn: true,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "数据源",
@@ -86,132 +106,154 @@
              dicUrl: "/api/blade-develop/datasource/select",
              props: {
                label: "name",
                value: "id"
              value: "id",
              },
              rules: [{
            rules: [
              {
                required: true,
                message: "请选择数据源",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "模块名",
              prop: "codeName",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入模块名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "服务名",
              prop: "serviceName",
              search: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入服务名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "表名",
              prop: "tableName",
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入表名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "表前缀",
              prop: "tablePrefix",
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入表前缀",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "主键名",
              prop: "pkName",
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入主键名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "包名",
              prop: "packageName",
              overHidden: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入包名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "基础业务",
              prop: "baseMode",
              type: 'radio',
            type: "radio",
              dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请选择基础业务",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "包装器",
              prop: "wrapMode",
              type: 'radio',
            type: "radio",
              dicUrl: "/api/blade-system/dict/dictionary?code=yes_no",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请选择包装器",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "后端生成路径",
              prop: "apiPath",
              span: 24,
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入后端生成路径",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "前端生成路径",
              prop: "webPath",
              span: 24,
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入前端生成路径",
                trigger: "blur"
              }]
            }
          ]
                trigger: "blur",
        },
        data: []
            ],
          },
        ],
      },
      data: [],
      };
    },
    computed: {
@@ -221,49 +263,55 @@
          addBtn: this.vaildData(this.permission.code_add, false),
          viewBtn: this.vaildData(this.permission.code_view, false),
          delBtn: this.vaildData(this.permission.code_delete, false),
          editBtn: this.vaildData(this.permission.code_edit, false)
        editBtn: this.vaildData(this.permission.code_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -272,7 +320,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -301,7 +349,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -310,7 +358,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
@@ -324,7 +372,7 @@
          title: "代码生成确认",
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return build(this.ids);
@@ -333,7 +381,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
@@ -343,13 +391,13 @@
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "复制成功!"
          message: "复制成功!",
          });
        });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getCode(this.form.id).then(res => {
        getCode(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -366,14 +414,18 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/tool/datasource.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
@@ -17,14 +20,17 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="danger"
        <el-button
          type="danger"
                   size="small"
                   icon="el-icon-delete"
                   plain
                   v-if="permission.datasource_delete"
                   @click="handleDelete">删 除
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
    </avue-crud>
@@ -44,11 +50,12 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        selectionList: [],
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          dialogWidth: 900,
          tip: false,
@@ -59,69 +66,82 @@
          viewBtn: true,
          selection: true,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "名称",
              prop: "name",
              width: 120,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入数据源名称",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "驱动类",
              prop: "driverClass",
              type: 'select',
            type: "select",
              dicData: [
                {
                  label: 'com.mysql.cj.jdbc.Driver',
                  value: 'com.mysql.cj.jdbc.Driver',
                }, {
                  label: 'org.postgresql.Driver',
                  value: 'org.postgresql.Driver',
                }, {
                  label: 'oracle.jdbc.OracleDriver',
                  value: 'oracle.jdbc.OracleDriver',
                }
                label: "com.mysql.cj.jdbc.Driver",
                value: "com.mysql.cj.jdbc.Driver",
              },
              {
                label: "org.postgresql.Driver",
                value: "org.postgresql.Driver",
              },
              {
                label: "oracle.jdbc.OracleDriver",
                value: "oracle.jdbc.OracleDriver",
              },
              ],
              width: 200,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入驱动类",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "用户名",
              prop: "username",
              width: 120,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入用户名",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "密码",
              prop: "password",
              hide: true,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入密码",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "连接地址",
              prop: "url",
              span: 24,
              rules: [{
            rules: [
              {
                required: true,
                message: "请输入连接地址",
                trigger: "blur"
              }]
                trigger: "blur",
              },
            ],
            },
            {
              label: "备注",
@@ -129,11 +149,11 @@
              span: 24,
              minRows: 3,
              hide: true,
              type: "textarea"
            type: "textarea",
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
@@ -143,49 +163,55 @@
          addBtn: this.vaildData(this.permission.datasource_add, false),
          viewBtn: this.vaildData(this.permission.datasource_view, false),
          delBtn: this.vaildData(this.permission.datasource_delete, false),
          editBtn: this.vaildData(this.permission.datasource_edit, false)
        editBtn: this.vaildData(this.permission.datasource_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    methods: {
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -194,7 +220,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -206,7 +232,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -215,14 +241,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDetail(this.form.id).then(res => {
        getDetail(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -256,15 +282,19 @@
      },
      onLoad(page, params = {}) {
        this.loading = true;
        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/trainApply/index.vue
@@ -7,7 +7,13 @@
 */
<template>
  <el-row class="morpheus-box-apply-exam-1">
    <el-col :span="24" class="hasButOne">
    <el-col
      :span="24"
      :class="[
        'hasButOne',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
      <el-card>
        <div class="exam-card-body">
          <avue-crud
@@ -529,6 +535,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
src/views/trainExam/data.js
@@ -1,5 +1,5 @@
export var infoColumn = [{
        label: "申请单位名称",
    label: "申请企业名称",
        prop: "deptId",
        type: "tree",
@@ -13,11 +13,11 @@
        },
        rules: [{
            required: true,
            message: "请选择申请单位名称",
        message: "请选择申请企业名称",
            trigger: "blur"
        }]
    }, {
        label: "申请单位名称",
    label: "申请企业名称",
        prop: "deptName",
        type: "select",
        dicUrl: "/api/blade-system/dept/tree",
src/views/trainExam/index.vue
@@ -1,15 +1,20 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-18 17:09:52
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:12:55
 * menu-name 考试管理
 */
<template>
  <el-row class="morpheus-box-paper">
    <el-col :span="24">
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="form"
            class="company-box"
@@ -164,6 +169,7 @@
        menuWidth: 230,
        dialogClickModal: false,
        column: auditColumn,
        ...this.$store.state.control.clearOtherBut,
      },
      questionBankOption: {
        // 操作栏多余按钮去除
@@ -191,7 +197,7 @@
        // 操作栏宽度
        menuWidth: 280,
        labelWidth: 140,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "考试名称",
@@ -327,7 +333,7 @@
            editDetail: false,
            // hide: true,
            display: false,
            width: 80
            width: 80,
          },
          {
            label: "申请人所属学校",
@@ -489,6 +495,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
@@ -520,7 +527,7 @@
      params["examType"] = 2;
      //如果是培训公司管理员,则只能看到当前培训公司申请的考试
      if(this.userInfo.role_name =="培训公司管理员"){
          params['deptId'] = this.userInfo.dept_id;
        params["deptId"] = this.userInfo.dept_id;
      }
      getList(
        page.currentPage,
@@ -604,7 +611,7 @@
    // 新增
    questionBankRowSave(row, done, loading) {
      row.startTime = row.startTime + ":00";
       row['examType'] = 2;
      row["examType"] = 2;
      // row.endTime = row.examTime[1];
      // row.examTime = JSON.stringify(row.examTime);
      add(row).then(
@@ -630,7 +637,7 @@
          id:row.id,
          startTime:row.startTime + ":00",
          endTime:row.endTime + ":00",
      }
      };
      // row.startTime = row.startTime + ":00";
      // row.endTime = row.endTime + ":00";
      // row.endTime = row.examTime[1];
src/views/trainExam/modifiedGrades.vue
@@ -1,17 +1,28 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-04 18:54:44
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 13:55:09
 * menu-name 成绩修改管理
 */
<template>
    <el-row class="morpheus-box">
        <el-col :span="24"
                class="recruitmentManagement">
    <el-col
      :span="24"
      :class="[
        'recruitmentManagement',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
            <el-card>
                <div class="exam-card-body">
                    <avue-crud v-model="obj"
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
                               class="company-box"
                               :option="questionBankOption"
                               :search.sync="questionBankSearch"
@@ -27,8 +38,8 @@
                               @current-change="questionBankCurrentChange"
                               @size-change="questionBankSizeChange"
                               @row-update="questionBankRowUpdate"
                               @refresh-change="refreshChange">
            @refresh-change="refreshChange"
          >
                        <!-- 自定义按钮 -->
                        <template slot="menuLeft">
                            <!-- <el-button type="danger"
@@ -43,38 +54,38 @@
                                       plain
                                       @click="handleDelete">删除
                            </el-button> -->
                        </template>
                        <template slot-scope="{ type, size, row }"
                                  slot="menu">
                            <el-button :type="type"
            <template slot-scope="{ type, size, row }" slot="menu">
              <el-button
                :type="type"
                                       :size="size"
                                       icon="el-icon-folder-checked"
                                       v-if="permission.score_audit_check || check"
                                       @click="handleAudit(row)">审核
                @click="handleAudit(row)"
                >审核
                            </el-button>
                        </template>
                    </avue-crud>
                </div>
            </el-card>
        </el-col>
        <el-dialog title="成绩修改审核"
    <el-dialog
      title="成绩修改审核"
                   :visible.sync="dialogFormVisible"
                   modal-append-to-body="false"
                   append-to-body="true"
                   :close-on-click-model="true">
            <avue-form ref="formAudit"
      :close-on-click-model="true"
    >
      <avue-form
        ref="formAudit"
                       v-model="Audit"
                       :option="optionAudit"
                       @reset-change="emptytChange"
                       @submit="submit"></avue-form>
        @submit="submit"
      ></avue-form>
        </el-dialog>
    </el-row>
</template>
@@ -83,9 +94,7 @@
import { mapGetters } from "vuex";
import { getRoleDetail } from "@/api/system/role";
export default {
    data () {
        return {
            Audit: {},
            dialogFormVisible: false,
@@ -106,7 +115,9 @@
                excelBtn: false,
                menuWidth: 230,
                dialogClickModal: false,
                column: [{
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
                    label: "审核状态",
                    search: true,
                    searchSpan: 5,
@@ -116,12 +127,15 @@
                    editDisplay: false,
                    addDisplay: false,
                    type: "select",
                    rules: [{
            rules: [
              {
                        required: true,
                        message: "请选择审核类型",
                        trigger: "blur"
                    }],
                    dicData: [{
                trigger: "blur",
              },
            ],
            dicData: [
              {
                        label: "待审核",
                        value: 1,
                    },
@@ -132,15 +146,15 @@
                    {
                        label: "审核不通过",
                        value: 3,
                    }
                    ]
              },
            ],
                },
                {
                    label: "审核明细",
                    span: 24,
                    type: "textarea",
                    prop: "auditDetail"
                }
            prop: "auditDetail",
          },
                ],
            },
            obj: {
@@ -172,6 +186,7 @@
                menu: true,
                menuWidth: 295,
                labelWidth: 120,
        ...this.$store.state.control.clearOtherBut,
                column: [
                    {
                        label: "考试名称",
@@ -312,7 +327,7 @@
                        editDisplay: true,
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        width: 88
            width: 88,
                    },
                    {
@@ -331,7 +346,7 @@
                        editDisplay: true,
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        width: 88
            width: 88,
                    },
                    {
@@ -373,7 +388,7 @@
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        viewDisplay: false,
                        width: 120
            width: 120,
                    },
                    {
@@ -397,7 +412,7 @@
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        viewDisplay: false,
                        width: 120
            width: 120,
                    },
                    {
@@ -419,7 +434,7 @@
                            {
                                label: "审核不通过",
                                value: 3,
                            }
              },
                        ],
                        // 表单新增时是否禁止
                        addDisabled: false,
@@ -433,7 +448,7 @@
                        editDisplay: true,
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        width: 96
            width: 96,
                    },
                    {
@@ -453,7 +468,7 @@
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        width: 68,
                    }
          },
                ],
            },
            questionBankSearch: {},
@@ -463,10 +478,10 @@
                pageSize: 10,
                currentPage: 1,
                total: 16,
        ...this.$store.state.control.changePageSize,
            },
            questionBankQuery: {},
            questionBankSelectionList: [],
        };
    },
    created(){
@@ -485,34 +500,57 @@
        permissionList () {
            return {
                addBtn: this.vaildData(null, false),
                viewBtn: this.vaildData(
                    this.permission.score_audit_view,
                    false
                ),
        viewBtn: this.vaildData(this.permission.score_audit_view, false),
                delBtn: this.vaildData(null, false),
                editBtn: this.vaildData(
                    this.permission.score_audit_edit,
                    false
                ),
        editBtn: this.vaildData(this.permission.score_audit_edit, false),
            };
        },
    },
    methods: {
        getNewTime () {
            var nowTime = new Date()
      var nowTime = new Date();
            var oneHoursAgo = new Date(new Date(nowTime).getTime() - 1 * 60 * 60 * 1000)
            var oneHoursAgoY = oneHoursAgo.getFullYear()
            var oneHoursAgoM = oneHoursAgo.getMonth() + 1 < 10 ? '0' + (oneHoursAgo.getMonth() + 1) : oneHoursAgo.getMonth() + 1
            var oneHoursAgoD = oneHoursAgo.getDate() < 10 ? '0' + oneHoursAgo.getDate() : oneHoursAgo.getDate()
            var oneHoursAgoH = oneHoursAgo.getHours() < 10 ? '0' + oneHoursAgo.getHours() : oneHoursAgo.getHours()
            var oneHoursAgom = oneHoursAgo.getMinutes() < 10 ? '0' + oneHoursAgo.getMinutes() : oneHoursAgo.getMinutes()
            var oneHoursAgos = oneHoursAgo.getSeconds() < 10 ? '0' + oneHoursAgo.getSeconds() : oneHoursAgo.getSeconds()
      var oneHoursAgo = new Date(
        new Date(nowTime).getTime() - 1 * 60 * 60 * 1000
      );
      var oneHoursAgoY = oneHoursAgo.getFullYear();
      var oneHoursAgoM =
        oneHoursAgo.getMonth() + 1 < 10
          ? "0" + (oneHoursAgo.getMonth() + 1)
          : oneHoursAgo.getMonth() + 1;
      var oneHoursAgoD =
        oneHoursAgo.getDate() < 10
          ? "0" + oneHoursAgo.getDate()
          : oneHoursAgo.getDate();
      var oneHoursAgoH =
        oneHoursAgo.getHours() < 10
          ? "0" + oneHoursAgo.getHours()
          : oneHoursAgo.getHours();
      var oneHoursAgom =
        oneHoursAgo.getMinutes() < 10
          ? "0" + oneHoursAgo.getMinutes()
          : oneHoursAgo.getMinutes();
      var oneHoursAgos =
        oneHoursAgo.getSeconds() < 10
          ? "0" + oneHoursAgo.getSeconds()
          : oneHoursAgo.getSeconds();
            /**
             * @return 返回1小时,2小时,3小时,4小时,24小时
             */
            return oneHoursAgoY + '-' + oneHoursAgoM + '-' + oneHoursAgoD + ' ' + oneHoursAgoH + ':' + oneHoursAgom + ':' + oneHoursAgos
      return (
        oneHoursAgoY +
        "-" +
        oneHoursAgoM +
        "-" +
        oneHoursAgoD +
        " " +
        oneHoursAgoH +
        ":" +
        oneHoursAgom +
        ":" +
        oneHoursAgos
      );
        },
        handleAudit (row) {
@@ -521,14 +559,13 @@
        },
        //审核
        submit (row, done, loading) {
            row.auditTime = this.getNewTime()
      row.auditTime = this.getNewTime();
            const data  = {
                id:row.id,
                status:row.status,
                auditDetail:row.auditDetail,
                auditUser:this.userInfo.Id
            }
        auditUser: this.userInfo.Id,
      };
            applyAudit(data).then(
                () => {
@@ -610,7 +647,7 @@
        questionBankRowUpdate (row, index, done, loading) {
            update({
                id: row.id,
                newScore: row.newScore
        newScore: row.newScore,
            }).then(
                () => {
                    this.questionBankOnLoad(this.questionBankPage);
@@ -630,7 +667,6 @@
        refreshChange () {
            this.questionBankOnLoad(this.questionBankPage, this.questionBankQuery);
        },
    },
};
</script>
src/views/trainExam/performance.vue
@@ -1,17 +1,28 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-04 16:18:32
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:11:41
 * menu-name 成绩管理
 */
<template>
    <el-row class="morpheus-box">
        <el-col :span="24"
                class="recruitmentManagement">
    <el-col
      :span="24"
      :class="[
        'recruitmentManagement',
        $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
      ]"
    >
            <el-card>
                <div class="exam-card-body">
                    <avue-crud v-model="obj"
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
                               class="company-box"
                               :option="questionBankOption"
                               :search.sync="questionBankSearch"
@@ -27,23 +38,20 @@
                               @current-change="questionBankCurrentChange"
                               @size-change="questionBankSizeChange"
                               @row-update="questionBankRowUpdate"
                               @refresh-change="refreshChange">
                        <template slot-scope="{ row }"
                                  slot="theoryGrade">
            @refresh-change="refreshChange"
          >
            <template slot-scope="{ row }" slot="theoryGrade">
                            {{ row.theoryGrade }}
                        </template>
                        <template slot-scope="{ row }"
                                  slot="learnGrade">
                            {{ row.learnGrade == '' ? "暂未录入" : row.learnGrade }}
            <template slot-scope="{ row }" slot="learnGrade">
              {{ row.learnGrade == "" ? "暂未录入" : row.learnGrade }}
                        </template>
                        <template slot-scope="{ row }"
                                  slot="allGrade">
            <template slot-scope="{ row }" slot="allGrade">
                            {{ row.allGrade == -1 ? "" : row.allGrade }}
                        </template>
                        <template slot-scope="{ row }"
                                  slot="qualified">
            <template slot-scope="{ row }" slot="qualified">
                            {{
                row.qualified == ''
                row.qualified == ""
                  ? ""
                  : row.qualified == 0
                  ? "合格"
@@ -69,51 +77,65 @@
                                       plain
                                       @click="handleDelete">删除
                            </el-button> -->
                            <el-button type="success"
              <el-button
                type="success"
                                       size="small"
                                       plain
                                       icon="el-icon-upload2"
                                       v-if="permission.trainExam_performance_import"
                                       @click="handleImport">实操成绩导入
                @click="handleImport"
                >实操成绩导入
                            </el-button>
                            <el-button type="warning"
              <el-button
                type="warning"
                                       size="small"
                                       plain
                                       icon="el-icon-download"
                                       v-if="permission.trainExam_performance_export"
                                       @click="handleExport">成绩导出
                @click="handleExport"
                >成绩导出
                            </el-button>
                        </template>
                        <template slot-scope="{ type, size, row }"
                                  slot="menu">
                            <el-button icon="el-icon-s-flag"
            <template slot-scope="{ type, size, row }" slot="menu">
              <el-button
                icon="el-icon-s-flag"
                                       @click="absent(row)"
                                       :size="size"
                                       :type="type">缺考标记</el-button>
                            <el-button icon="el-icon-s-promotion"
                :type="type"
                >缺考标记</el-button
              >
              <el-button
                icon="el-icon-s-promotion"
                                       @click="openzhengjian(row)"
                                       :disabled="row.qualified != 0"
                                       :size="size"
                                       :type="type">查看证件</el-button>
                            <el-button icon="el-icon-edit"
                :type="type"
                >查看证件</el-button
              >
              <el-button
                icon="el-icon-edit"
                                       @click="modifiedGrades(row)"
                                       :size="size"
                                       :type="type">申请修改成绩</el-button>
                :type="type"
                >申请修改成绩</el-button
              >
                        </template>
                    </avue-crud>
                    <el-dialog title="实操成绩导入"
          <el-dialog
            title="实操成绩导入"
                               append-to-body
                               :visible.sync="excelBox"
                               width="555px">
                        <avue-form :option="excelOption"
            width="555px"
          >
            <avue-form
              :option="excelOption"
                                   v-model="excelForm"
                                   :upload-after="uploadAfter">
              :upload-after="uploadAfter"
            >
                            <template slot="excelTemplate">
                                <el-button type="primary"
                                           @click="handleTemplate">
                <el-button type="primary" @click="handleTemplate">
                                    点击下载<i class="el-icon-download el-icon--right"></i>
                                </el-button>
                            </template>
@@ -123,111 +145,102 @@
            </el-card>
        </el-col>
        <el-dialog title="申请修改成绩"
    <el-dialog
      title="申请修改成绩"
                   :visible.sync="gradeBoxVisible"
                   width="width"
                   :modal='true'
                   :modal-append-to-body='true'
                   :append-to-body='true'
                   :close-on-click-modal='false'
                   :close-on-press-escape='false'
                   :before-close="dialogBeforeClose">
      :modal="true"
      :modal-append-to-body="true"
      :append-to-body="true"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :before-close="dialogBeforeClose"
    >
            <div>
                <el-form ref="gradeForm"
        <el-form
          ref="gradeForm"
                         :model="gradeForm"
                         :rules="rules"
                         label-width="80px"
                         label-position="left">
          label-position="left"
        >
                    <el-row :gutter="24">
                        <el-col :span="12">
                            <el-form-item label="考试名称"
                                          label-width="108px">
                                <el-input v-model="gradeForm.examName"
                                          disabled></el-input>
              <el-form-item label="考试名称" label-width="108px">
                <el-input v-model="gradeForm.examName" disabled></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="姓名"
                                          label-width="108px">
                                <el-input v-model="gradeForm.securityName"
                                          disabled></el-input>
              <el-form-item label="姓名" label-width="108px">
                <el-input v-model="gradeForm.securityName" disabled></el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row :gutter="24">
                        <el-col :span="12">
                            <el-form-item label="身份证号"
                                          label-width="108px">
                                <el-input v-model="gradeForm.account"
                                          disabled></el-input>
              <el-form-item label="身份证号" label-width="108px">
                <el-input v-model="gradeForm.account" disabled></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="准考证号"
                                          label-width="108px">
                                <el-input v-model="gradeForm.candidateNo"
                                          disabled></el-input>
              <el-form-item label="准考证号" label-width="108px">
                <el-input v-model="gradeForm.candidateNo" disabled></el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row :gutter="24">
                        <el-col :span="12">
                            <el-form-item label="原理论成绩"
                                          label-width="108px">
                                <el-input v-model="gradeForm.theoryGrade"
                                          disabled></el-input>
              <el-form-item label="原理论成绩" label-width="108px">
                <el-input v-model="gradeForm.theoryGrade" disabled></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="修改考试成绩"
              <el-form-item
                label="修改考试成绩"
                                          label-width="108px"
                                          prop='editGrades'>
                                <el-input v-model.number="gradeForm.editGrades"
                                          autocomplete="off"></el-input>
                prop="editGrades"
              >
                <el-input
                  v-model.number="gradeForm.editGrades"
                  autocomplete="off"
                ></el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row :gutter="24">
                        <el-col :span="12">
                            <el-form-item label="实操成绩"
                                          label-width="108px">
                                <el-input v-model="gradeForm.learnGrade"
                                          disabled></el-input>
              <el-form-item label="实操成绩" label-width="108px">
                <el-input v-model="gradeForm.learnGrade" disabled></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="总成绩"
                                          label-width="108px">
                                <el-input v-model="gradeForm.allGrade"
                                          disabled></el-input>
              <el-form-item label="总成绩" label-width="108px">
                <el-input v-model="gradeForm.allGrade" disabled></el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-form-item label="修改理由"
                                  label-width="108px">
                        <el-input type='textarea'
          <el-form-item label="修改理由" label-width="108px">
            <el-input
              type="textarea"
                                  :rows="3"
                                  placeholder="请输入修改理由"
                                  resize='none'
                                  v-model="gradeForm.editReason"></el-input>
              resize="none"
              v-model="gradeForm.editReason"
            ></el-input>
                    </el-form-item>
                    <el-form-item style="text-align: center;"
                                  label-width="0">
                        <el-button type="primary"
                                   @click="uploadGrade('gradeForm')">确 定</el-button>
          <el-form-item style="text-align: center" label-width="0">
            <el-button type="primary" @click="uploadGrade('gradeForm')"
              >确 定</el-button
            >
                        <el-button @click="gradeBoxVisible = false">取 消</el-button>
                    </el-form-item>
                </el-form>
            </div>
        </el-dialog>
        <!-- <el-dialog
@@ -235,12 +248,13 @@
      :visible.sync="dialogVisiblezhengjian"
      :modal-append-to-body="false"
    > -->
        <div class="dialogVisiblezhengjian"
             v-if="dialogVisiblezhengjian">
            <baoanz :data="baoanzdata"
    <div class="dialogVisiblezhengjian" v-if="dialogVisiblezhengjian">
      <baoanz
        :data="baoanzdata"
                    :close="1"
                    @close="closezhengjian"
                    :closePrint="1"></baoanz>
        :closePrint="1"
      ></baoanz>
        </div>
        <!-- </el-dialog> -->
    </el-row>
@@ -248,7 +262,12 @@
<script>
import baoanz from "../securityGuard/baoanz.vue";
import { getList, update, updateAbsent, updateGrade } from "@/api/examapi/performance";
import {
  getList,
  update,
  updateAbsent,
  updateGrade,
} from "@/api/examapi/performance";
import { mapGetters } from "vuex";
import { getRoleDetail } from "@/api/system/role";
import Qs from "qs";
@@ -276,19 +295,19 @@
            rules: {
                editGrades: [
                    { validator: validatePass, required: true, trigger: "blur" },
                ]
        ],
            },
            gradeForm: {
                id: null,
                examName: '',
                securityName: '',
                account: '',
                candidateNo: '',
                theoryGrade: '',
                learnGrade: '',
                allGrade: '',
                editGrades: '',
                editReason: ''
        examName: "",
        securityName: "",
        account: "",
        candidateNo: "",
        theoryGrade: "",
        learnGrade: "",
        allGrade: "",
        editGrades: "",
        editReason: "",
            },
            gradeBoxVisible: false,
            dialogVisiblezhengjian: false,
@@ -322,6 +341,7 @@
                menu: true,
                menuWidth: 295,
                labelWidth: 120,
        ...this.$store.state.control.clearOtherBut,
                column: [
                    {
                        label: "考试时间",
@@ -631,7 +651,7 @@
                        editDisplay: true,
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        width: 58
            width: 58,
                    },
                    {
                        label: "是否合格",
@@ -670,7 +690,7 @@
                        // 表单编辑时是否可见
                        editDisplay: true,
                        // 表单编辑时是否为查看模式
                        editDetail: false
            editDetail: false,
                    },
                ],
            },
@@ -681,6 +701,7 @@
                pageSize: 10,
                currentPage: 1,
                total: 16,
        ...this.$store.state.control.changePageSize,
            },
            questionBankQuery: {},
            questionBankSelectionList: [],
@@ -798,16 +819,17 @@
                        page.pageSize,
                        Object.assign(params, this.questionBankQuery)
                    ).then((res) => {
                        const data = res.data.data;
                        data.records.forEach(item => {
            data.records.forEach((item) => {
                            if (item.theoryGrade == null && item.learnGrade == -1) {
                                item.qualified = ''
                item.qualified = "";
                            }
                            item.theoryGrade == null ? item.theoryGrade = '' : item.theoryGrade
                            item.learnGrade == -1 ? item.learnGrade = '' : item.learnGrade
                        })
              item.theoryGrade == null
                ? (item.theoryGrade = "")
                : item.theoryGrade;
              item.learnGrade == -1 ? (item.learnGrade = "") : item.learnGrade;
            });
                        that.questionBankPage.total = data.total;
                        that.questionBankData = data.records;
                        that.questionBankLoading = false;
@@ -843,58 +865,59 @@
        // 修改考试成绩
        modifiedGrades (row) {
      var {
        id,
        examName,
        securityName,
        account,
        candidateNo,
        theoryGrade,
        learnGrade,
        allGrade,
      } = row;
            var { id, examName, securityName, account, candidateNo, theoryGrade, learnGrade, allGrade } = row
      this.gradeForm.examName = examName;
      this.gradeForm.securityName = securityName;
      this.gradeForm.account = account;
      this.gradeForm.candidateNo = candidateNo;
      this.gradeForm.theoryGrade = theoryGrade;
      this.gradeForm.learnGrade = learnGrade;
      this.gradeForm.allGrade = allGrade;
      this.gradeForm.editGrades = "";
      this.gradeForm.editReason = "";
      this.gradeForm.id = id;
            this.gradeForm.examName = examName
            this.gradeForm.securityName = securityName
            this.gradeForm.account = account
            this.gradeForm.candidateNo = candidateNo
            this.gradeForm.theoryGrade = theoryGrade
            this.gradeForm.learnGrade = learnGrade
            this.gradeForm.allGrade = allGrade
            this.gradeForm.editGrades = ''
            this.gradeForm.editReason = ''
            this.gradeForm.id = id
            this.gradeBoxVisible = true
      this.gradeBoxVisible = true;
        },
        uploadGrade (formName) {
            var that = this
      var that = this;
            this.$refs[formName].validate((valid) => {
                if (valid) {
                    var obj = {}
                    obj.oldScore = this.gradeForm.theoryGrade
                    obj.newScore = this.gradeForm.editGrades
                    obj.applyCause = this.gradeForm.editReason
                    obj.examScoreId = this.gradeForm.id
                    obj.createUser = this.userInfo.Id
          var obj = {};
          obj.oldScore = this.gradeForm.theoryGrade;
          obj.newScore = this.gradeForm.editGrades;
          obj.applyCause = this.gradeForm.editReason;
          obj.examScoreId = this.gradeForm.id;
          obj.createUser = this.userInfo.Id;
                    updateGrade(obj).then(
                        () => {
                            that.questionBankOnLoad(that.questionBankPage)
              that.questionBankOnLoad(that.questionBankPage);
                            that.$message({
                                type: "success",
                                message: "操作成功!",
                            })
              });
                            that.gradeBoxVisible = false
              that.gradeBoxVisible = false;
                        },
                        (error) => {
                            window.console.log(error)
              window.console.log(error);
                        }
                    );
                }
            })
      });
        },
        questionBankSelectionClear () {
src/views/trainExam/singleperformance.vue
@@ -2,14 +2,19 @@
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: liu
 * @Last Modified time: 2021-10-26 15:38:19
 * @Last Modified time: 2021-11-23 14:11:16
 * menu-name 成绩查看
 */
<template>
  <el-row class="morpheus-box-score">
    <el-col :span="24">
      <el-card>
        <div class="exam-card-body">
        <div
          :class="[
            'exam-card-body',
            $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '',
          ]"
        >
          <avue-crud
            v-model="obj"
            class="company-box"
@@ -156,6 +161,7 @@
        menu: false,
        menuWidth: 136,
        labelWidth: 120,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "考试时间",
@@ -525,7 +531,8 @@
      questionBankPage: {
        pageSize: 10,
        currentPage: 1,
        total: 16,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
src/views/traincompany/index.vue
@@ -1,12 +1,14 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-07 17:30:05
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-07-10 16:06:14
 * @Last Modified by: liu
 * @Last Modified time: 2021-11-23 14:03:37
 * menu-name 保安培训报名
 */
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -28,7 +30,6 @@
      @row-click="handleRowClick"
      @on-load="onLoad"
    >
      <template slot-scope="{ type,row }" slot="menu">
          <el-button
          :type="type"
@@ -56,7 +57,12 @@
        :visible.sync="dialogDisable"
        width="1000px"
        >
      <avue-form ref="formTrainApply" :option="optionTrainApply" v-model="formTrainApply" @submit="submit"></avue-form>
      <avue-form
        ref="formTrainApply"
        :option="optionTrainApply"
        v-model="formTrainApply"
        @submit="submit"
      ></avue-form>
    </el-dialog>
  </basic-container>
</template>
@@ -69,18 +75,20 @@
  update,
  remove,
} from "@/api/securityCompany/train";
import {adddata,batchTrain} from "@/api/trainingRegistration/trainingRegistration";
import {
  adddata,
  batchTrain,
} from "@/api/trainingRegistration/trainingRegistration";
import { mapGetters } from "vuex";
import { mapState } from 'vuex';
import { mapState } from "vuex";
import {getUser} from "@/api/system/user";
export default {
  data() {
    return {
      form: {},
      auditStatus:false,
      formTrainApply: {
        num:0
        num: 0,
      },
      query: {},
      deptId:null,
@@ -90,6 +98,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -108,9 +117,10 @@
        searchMenuSpan: 6,
        index: true,
        viewBtn: false,
        editBtnText:'报名',
        editTitle: '报名',
        editBtnText: "报名",
        editTitle: "报名",
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "学校",
@@ -131,7 +141,7 @@
          {
            label: "负责人",
            prop: "contacts",
            display: false
            display: false,
          },
          {
            label: "联系方式",
@@ -144,7 +154,7 @@
            prop: "address",
            display: false,
            width: 280,
          }
          },
        ],
      },
      optionTrainApply: {
@@ -158,31 +168,35 @@
        index: true,
        dialogClickModal: false,
        labelWidth:110,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
              label: "学校",
              prop: "trainingUnitId",
              dicUrl: "/api/blade-system/dept/lazy-tree-type?parentId=1418458374477549569",
            dicUrl:
              "/api/blade-system/dept/lazy-tree-type?parentId=1418458374477549569",
              cascaderItem: ["trainExamId"],
              props: {
                  label: "title",
                  value: "id"
              value: "id",
              },
              type: "select",
              disabled:true,
              rules: [{
            rules: [
              {
                  required: true,
                  message: "请输入学校",
                  trigger: "blur"
              }],
                trigger: "blur",
              },
            ],
              hide:true,
              searchSpan: 6,
              searchLabelWidth: 110,
              search: true,
              span:24
            span: 24,
          },
          // {
          //     label: "单位名称",
          //     label: "企业名称",
          //     prop: "deptId",
          //     dicUrl: "/api/blade-system/dept/security_lazy-tree?parentId=1413470343230877697",
          //     // dicUrl: "/api/blade-system/dept/security_lazy-tree?parentId=0",
@@ -196,7 +210,7 @@
          //     hide: true,
          //     rules: [{
          //         required: true,
          //         message: "请输入单位名称",
          //         message: "请输入企业名称",
          //         trigger: "blur"
          //     }],
          //     span: 24
@@ -230,7 +244,6 @@
            disabled:true,
            span: 12,
          },
        ],
      },
      data: [],
@@ -260,11 +273,8 @@
      return ids.join(",");
    },
    ...mapState({
        userInfo: state => state.user.userInfo
    })
      userInfo: (state) => state.user.userInfo,
    }),
  },
  created() {
      this.optionTrainApply.column[1].dicUrl =
@@ -279,11 +289,11 @@
      var that = this;
      getUser(this.userInfo.Id).then((res)=>{
          var status = res.data.data.examinationType;
          if(status=='1'){
        if (status == "1") {
            that.auditStatus = true;
          }
          // console.log(that.auditStatus,3333);
      })
      });
    },
    //保安公司批量报名
    handleTrainApplyBatch(row){
@@ -291,14 +301,14 @@
      this.optionTrainApply.column.trainingUnitId = row.departmentid;
      // this.deptId= this.userInfo.dept_id;
      this.formTrainApply = {
        trainingUnitId: row.departmentid
      }
        trainingUnitId: row.departmentid,
      };
    },
    //批量报名提交
    submit(){
        batchTrain({
          userIds: this.formTrainApply.userId.join(","),
          trainingUnitId: this.formTrainApply.trainingUnitId
        trainingUnitId: this.formTrainApply.trainingUnitId,
        }).then(
          (res) => {
            this.onLoad(this.page);
@@ -333,8 +343,8 @@
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        row['userId'] = this.userInfo.user_id;
        row['trainingUnitId'] = row.departmentid;
        row["userId"] = this.userInfo.user_id;
        row["trainingUnitId"] = row.departmentid;
        adddata(row).then(
          (res) => {
            // this.onLoad(this.page);
@@ -361,7 +371,7 @@
            loading();
          }
        );
      })
      });
    },
    //关闭窗口清除数据
    closeDialog(){
src/views/trainingRegistration/data.js
@@ -96,7 +96,7 @@
    //     width: 110,
    // },
    {
        label: "单位名称",
    label: "企业名称",
        prop: "deptId",
        // width: 70,
        // search: true,
@@ -112,19 +112,19 @@
        hide: true,
        rules: [{
            required: true,
            message: "请输入单位名称",
        message: "请输入企业名称",
            trigger: "blur"
        }],
        overHidden: true
    }, {
        label: "单位名称",
    label: "企业名称",
        prop: "deptName",
        // hide: true,
        search: true,
        searchSpan: 6,
        rules: [{
            required: true,
            message: "请输入单位名称",
        message: "请输入企业名称",
            trigger: "blur"
        }],
src/views/trainingRegistration/index.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -157,6 +159,7 @@
        excelBtn: false,
        menuWidth: 380,
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "所选保安人数",
@@ -299,6 +302,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      query: {},
      data: [],
@@ -326,6 +330,7 @@
        delBtn: false,
        editBtn: false,
        addBtn: false,
        ...this.$store.state.control.clearOtherBut,
      },
    };
  },
src/views/util/demo/dict-classic.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -32,7 +34,7 @@
        </el-button>
      </template>
      <template slot-scope="{row}" slot="isSealed">
        <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
        <el-tag>{{ row.isSealed === 0 ? "否" : "是" }}</el-tag>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button
@@ -54,7 +56,7 @@
    update,
    add,
    getDict,
    getDictTree
  getDictTree,
  } from "@/api/system/dict";
  import {mapGetters} from "vuex";
@@ -68,7 +70,8 @@
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        option: {
          tip: false,
@@ -91,9 +94,9 @@
                {
                  required: true,
                  message: "请输入字典编号",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "字典名称",
@@ -104,9 +107,9 @@
                {
                  required: true,
                  message: "请输入字典名称",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "上级字典",
@@ -115,15 +118,15 @@
              dicData: [],
              hide: true,
              props: {
                label: "title"
              label: "title",
              },
              rules: [
                {
                  required: false,
                  message: "请选择上级字典",
                  trigger: "click"
                }
              ]
                trigger: "click",
              },
            ],
            },
            {
              label: "字典键值",
@@ -133,9 +136,9 @@
                {
                  required: true,
                  message: "请输入字典键值",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "字典排序",
@@ -145,9 +148,9 @@
                {
                  required: true,
                  message: "请输入字典排序",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "封存",
@@ -156,31 +159,31 @@
              dicData: [
                {
                  label: "否",
                  value: 0
                value: 0,
                },
                {
                  label: "是",
                  value: 1
                }
                value: 1,
              },
              ],
              slot: true,
              rules: [
                {
                  required: true,
                  message: "请选择封存",
                  trigger: "blur"
                }
              ]
                trigger: "blur",
              },
            ],
            },
            {
              label: "字典备注",
              prop: "remark",
              search: true,
              hide: true
            }
          ]
            hide: true,
        },
        data: []
        ],
      },
      data: [],
      };
    },
    computed: {
@@ -190,19 +193,19 @@
          addBtn: this.vaildData(this.permission.dict_add, false),
          viewBtn: this.vaildData(this.permission.dict_view, false),
          delBtn: this.vaildData(this.permission.dict_delete, false),
          editBtn: this.vaildData(this.permission.dict_edit, false)
        editBtn: this.vaildData(this.permission.dict_edit, false),
        };
      },
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
      }
    },
    },
    mounted() {
      getDictTree().then(res => {
    getDictTree().then((res) => {
        const column = this.findObject(this.optionChild.column, "parentId");
        column.dicData = res.data.data;
      });
@@ -211,7 +214,7 @@
      handleAdd(row) {
        this.$refs.crud.value.code = row.code;
        this.$refs.crud.value.parentId = row.id;
        this.$refs.crud.option.column.filter(item => {
      this.$refs.crud.option.column.filter((item) => {
          if (item.prop === "code") {
            item.value = row.code;
            item.addDisabled = true;
@@ -224,36 +227,42 @@
        this.$refs.crud.rowAdd();
      },
      rowSave(row, done, loading) {
        add(row).then(() => {
      add(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowUpdate(row, index, done, loading) {
        update(row).then(() => {
      update(row).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        }, error => {
        },
        (error) => {
          window.console.log(error);
          loading();
        });
        }
      );
      },
      rowDel(row) {
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(row.id);
@@ -262,7 +271,7 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
@@ -291,7 +300,7 @@
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return remove(this.ids);
@@ -300,14 +309,14 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
            this.$refs.crud.toggleSelection();
          });
      },
      beforeOpen(done, type) {
        if (["edit", "view"].includes(type)) {
          getDict(this.form.id).then(res => {
        getDict(this.form.id).then((res) => {
            this.form = res.data.data;
          });
        }
@@ -318,7 +327,7 @@
        this.$refs.crud.value.code = "";
        this.$refs.crud.value.parentId = "";
        this.$refs.crud.value.addDisabled = false;
        this.$refs.crud.option.column.filter(item => {
      this.$refs.crud.option.column.filter((item) => {
          if (item.prop === "code") {
            item.value = "";
            item.addDisabled = false;
@@ -345,13 +354,13 @@
          page.currentPage,
          page.pageSize,
          Object.assign(params, this.query)
        ).then(res => {
      ).then((res) => {
          this.data = res.data.data;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/work/claim.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -11,41 +14,49 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_claim_sign"
                   plain
                   class="none-border"
                   @click.stop="handleClaim(scope.row)">签收
          @click.stop="handleClaim(scope.row)"
          >签收
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_claim_detail"
                   plain
                   class="none-border"
                   @click.stop="handleDetail(scope.row)">详情
          @click.stop="handleDetail(scope.row)"
          >详情
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_claim_follow"
                   plain
                   class="none-border"
                   @click.stop="handleImage(scope.row,scope.index)">跟踪
          @click.stop="handleImage(scope.row, scope.index)"
          >跟踪
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="processDefinitionVersion">
      <template slot-scope="{ row }" slot="processDefinitionVersion">
        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程图"
    <el-dialog
      title="流程图"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程图"
@@ -54,10 +65,10 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">关 闭</el-button>
      </span>
    </el-dialog>
@@ -73,20 +84,21 @@
    data() {
      return {
        form: {},
        selectionId: '',
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        workBox: false,
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          simplePage: true,
@@ -102,6 +114,7 @@
          dialogWidth: 900,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "流程分类",
@@ -110,7 +123,7 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
@@ -120,35 +133,35 @@
              width: 100,
            },
            {
              label: '流程名称',
              prop: 'processDefinitionName',
            label: "流程名称",
            prop: "processDefinitionName",
              search: true,
            },
            {
              label: '当前步骤',
              prop: 'taskName',
            label: "当前步骤",
            prop: "taskName",
            },
            {
              label: '流程版本',
              prop: 'processDefinitionVersion',
            label: "流程版本",
            prop: "processDefinitionVersion",
              slot: true,
              width: 80,
            },
            {
              label: '申请时间',
              prop: 'createTime',
            label: "申请时间",
            prop: "createTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
      ...mapGetters(["permission", "flowRoutes"]),
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
@@ -176,7 +189,7 @@
        this.$confirm("确定签收此任务?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        type: "warning",
        })
          .then(() => {
            return claimTask(row.taskId);
@@ -185,12 +198,17 @@
            this.onLoad(this.page);
            this.$message({
              type: "success",
              message: "操作成功!"
            message: "操作成功!",
            });
          });
      },
      handleDetail(row) {
        this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}`});
      this.$router.push({
        path: `/work/process/${flowRoute(
          this.flowRoutes,
          row.category
        )}/detail/${row.processInstanceId}/${row.businessId}`,
      });
      },
      handleImage(row) {
        this.flowUrl = `/api/blade-flow/process/diagram-view?processInstanceId=${row.processInstanceId}`;
@@ -208,18 +226,22 @@
      onLoad(page, params = {}) {
        const query = {
          ...this.query,
          category: (params.category) ? flowCategory(params.category) : null
        category: params.category ? flowCategory(params.category) : null,
        };
        this.loading = true;
        claimList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
      claimList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/work/done.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -12,34 +15,40 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_done_detail"
                   plain
                   class="none-border"
                   @click.stop="handleDetail(scope.row)">详情
          @click.stop="handleDetail(scope.row)"
          >详情
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_done_follow"
                   plain
                   class="none-border"
                   @click.stop="handleImage(scope.row,scope.index)">跟踪
          @click.stop="handleImage(scope.row, scope.index)"
          >跟踪
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="processDefinitionVersion">
      <template slot-scope="{ row }" slot="processDefinitionVersion">
        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程图"
    <el-dialog
      title="流程图"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程图"
@@ -48,10 +57,10 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">关 闭</el-button>
      </span>
    </el-dialog>
@@ -67,20 +76,21 @@
    data() {
      return {
        form: {},
        selectionId: '',
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        workBox: false,
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -95,6 +105,7 @@
          dialogWidth: 900,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "流程分类",
@@ -103,7 +114,7 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
@@ -113,35 +124,35 @@
              width: 100,
            },
            {
              label: '流程名称',
              prop: 'processDefinitionName',
            label: "流程名称",
            prop: "processDefinitionName",
              search: true,
            },
            {
              label: '当前步骤',
              prop: 'taskName',
            label: "当前步骤",
            prop: "taskName",
            },
            {
              label: '流程版本',
              prop: 'processDefinitionVersion',
            label: "流程版本",
            prop: "processDefinitionVersion",
              slot: true,
              width: 80,
            },
            {
              label: '申请时间',
              prop: 'createTime',
            label: "申请时间",
            prop: "createTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
      ...mapGetters(["permission", "flowRoutes"]),
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
@@ -166,7 +177,12 @@
        this.$refs.crud.toggleSelection();
      },
      handleDetail(row) {
        this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}`});
      this.$router.push({
        path: `/work/process/${flowRoute(
          this.flowRoutes,
          row.category
        )}/detail/${row.processInstanceId}/${row.businessId}`,
      });
      },
      handleImage(row) {
        this.flowUrl = `/api/blade-flow/process/diagram-view?processInstanceId=${row.processInstanceId}`;
@@ -184,18 +200,22 @@
      onLoad(page, params = {}) {
        const query = {
          ...this.query,
          category: (params.category) ? flowCategory(params.category) : null
        category: params.category ? flowCategory(params.category) : null,
        };
        this.loading = true;
        doneList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
      doneList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/work/send.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -12,38 +15,45 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_send_detail"
                   plain
                   class="none-border"
                   @click.stop="handleDetail(scope.row)">详情
          @click.stop="handleDetail(scope.row)"
          >详情
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_send_follow"
                   plain
                   class="none-border"
                   @click.stop="handleImage(scope.row,scope.index)">跟踪
          @click.stop="handleImage(scope.row, scope.index)"
          >跟踪
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="processDefinitionVersion">
      <template slot-scope="{ row }" slot="processDefinitionVersion">
        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="processIsFinished">
        <el-tag>{{row.processIsFinished==='finished' ? '已完成' : '未完成'}}</el-tag>
      <template slot-scope="{ row }" slot="processIsFinished">
        <el-tag>{{
          row.processIsFinished === "finished" ? "已完成" : "未完成"
        }}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程图"
    <el-dialog
      title="流程图"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程图"
@@ -52,10 +62,10 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">关 闭</el-button>
      </span>
    </el-dialog>
@@ -71,20 +81,21 @@
    data() {
      return {
        form: {},
        selectionId: '',
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        workBox: false,
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -99,6 +110,7 @@
          dialogWidth: 900,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "流程分类",
@@ -107,7 +119,7 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
@@ -117,41 +129,41 @@
              width: 100,
            },
            {
              label: '流程名称',
              prop: 'processDefinitionName',
            label: "流程名称",
            prop: "processDefinitionName",
              search: true,
            },
            {
              label: '当前步骤',
              prop: 'taskName',
            label: "当前步骤",
            prop: "taskName",
            },
            {
              label: '流程版本',
              prop: 'processDefinitionVersion',
            label: "流程版本",
            prop: "processDefinitionVersion",
              slot: true,
              width: 80,
            },
            {
              label: '流程进度',
              prop: 'processIsFinished',
            label: "流程进度",
            prop: "processIsFinished",
              slot: true,
              width: 80,
            },
            {
              label: '申请时间',
              prop: 'createTime',
            label: "申请时间",
            prop: "createTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
      ...mapGetters(["permission", "flowRoutes"]),
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
@@ -176,7 +188,12 @@
        this.$refs.crud.toggleSelection();
      },
      handleDetail(row) {
        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` });
      this.$router.push({
        path: `/work/process/${flowRoute(
          this.flowRoutes,
          row.category
        )}/detail/${row.processInstanceId}/${row.businessId}`,
      });
      },
      handleImage(row) {
        this.flowUrl = `/api/blade-flow/process/diagram-view?processInstanceId=${row.processInstanceId}`;
@@ -194,18 +211,22 @@
      onLoad(page, params = {}) {
        const query = {
          ...this.query,
          category: (params.category) ? flowCategory(params.category) : null
        category: params.category ? flowCategory(params.category) : null,
        };
        this.loading = true;
        sendList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
      sendList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/work/start.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               :page.sync="page"
@@ -12,7 +15,8 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-radio-group v-model="mode" size="small">
          <el-radio-button label="1">通用流程</el-radio-button>
@@ -20,44 +24,46 @@
        </el-radio-group>
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_start_flow"
                   plain
                   class="none-border"
                   @click.stop="handleStart(scope.row)">发起
          @click.stop="handleStart(scope.row)"
          >发起
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_start_image"
                   plain
                   class="none-border"
                   @click.stop="handleImage(scope.row,scope.index)">流程图
          @click.stop="handleImage(scope.row, scope.index)"
          >流程图
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="tenantId">
        <el-tag>{{row.tenantId===''?'通用':row.tenantId}}</el-tag>
      <template slot-scope="{ row }" slot="tenantId">
        <el-tag>{{ row.tenantId === "" ? "通用" : row.tenantId }}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="version">
      <template slot-scope="{ row }" slot="version">
        <el-tag>v{{row.version}}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="suspensionState">
        <el-tag>{{row.suspensionState===1?'激活':'挂起'}}</el-tag>
      <template slot-scope="{ row }" slot="suspensionState">
        <el-tag>{{ row.suspensionState === 1 ? "激活" : "挂起" }}</el-tag>
      </template>
      <template slot-scope="{row}"
                slot="category">
      <template slot-scope="{ row }" slot="category">
        <el-tag>{{row.categoryName}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程图"
    <el-dialog
      title="流程图"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程图"
@@ -66,10 +72,10 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">关 闭</el-button>
      </span>
    </el-dialog>
@@ -85,21 +91,22 @@
    data() {
      return {
        form: {},
        mode: '1',
        selectionId: '',
      mode: "1",
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        workBox: false,
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          searchShow: true,
@@ -114,10 +121,11 @@
          menuWidth: 150,
          dialogWidth: 900,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: '保安单位编号',
              prop: 'tenantId',
            label: "保安单位编号",
            prop: "tenantId",
              slot: true,
              width: 120,
            },
@@ -128,7 +136,7 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
@@ -137,46 +145,46 @@
              width: 100,
            },
            {
              label: '流程标识',
              prop: 'key',
            label: "流程标识",
            prop: "key",
            },
            {
              label: '流程名称',
              prop: 'name',
            label: "流程名称",
            prop: "name",
              search: true,
            },
            {
              label: '流程版本',
              prop: 'version',
            label: "流程版本",
            prop: "version",
              slot: true,
              width: 80,
            },
            {
              label: '状态',
              prop: 'suspensionState',
            label: "状态",
            prop: "suspensionState",
              slot: true,
              width: 80,
            },
            {
              label: '部署时间',
              prop: 'deploymentTime',
            label: "部署时间",
            prop: "deploymentTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    watch: {
      'mode'() {
    mode() {
        this.onLoad(this.page);
      }
    },
    },
    computed: {
      ...mapGetters(["permission", "flowRoutes"]),
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
@@ -201,7 +209,11 @@
        this.$refs.crud.toggleSelection();
      },
      handleStart(row) {
        this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/form/${row.id}`});
      this.$router.push({
        path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/form/${
          row.id
        }`,
      });
      },
      handleImage(row) {
        this.flowUrl = `/api/blade-flow/process/resource-view?processDefinitionId=${row.id}`;
@@ -219,19 +231,23 @@
      onLoad(page, params = {}) {
        const query = {
          ...this.query,
          category: (params.category) ? flowCategory(params.category) : null,
          mode: this.mode
        category: params.category ? flowCategory(params.category) : null,
        mode: this.mode,
        };
        this.loading = true;
        startList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
      startList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/work/todo.vue
@@ -1,6 +1,9 @@
<template>
  <basic-container>
    <avue-crud :option="option"
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
@@ -11,41 +14,49 @@
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
      @on-load="onLoad"
    >
      <template slot-scope="scope" slot="menu">
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_todo_handle"
                   plain
                   class="none-border"
                   @click.stop="handleWork(scope.row)">处理
          @click.stop="handleWork(scope.row)"
          >处理
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_todo_detail"
                   plain
                   class="none-border"
                   @click.stop="handleDetail(scope.row)">详情
          @click.stop="handleDetail(scope.row)"
          >详情
        </el-button>
        <el-button type="text"
        <el-button
          type="text"
                   size="small"
                   v-if="permission.work_todo_follow"
                   plain
                   class="none-border"
                   @click.stop="handleImage(scope.row,scope.index)">跟踪
          @click.stop="handleImage(scope.row, scope.index)"
          >跟踪
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="processDefinitionVersion">
      <template slot-scope="{ row }" slot="processDefinitionVersion">
        <el-tag>v{{row.processDefinitionVersion}}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程图"
    <el-dialog
      title="流程图"
               append-to-body
               :visible.sync="flowBox"
               :fullscreen="true">
      :fullscreen="true"
    >
      <iframe
        :src=flowUrl
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程图"
@@ -54,10 +65,10 @@
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes">
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer"
            class="dialog-footer">
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">关 闭</el-button>
      </span>
    </el-dialog>
@@ -73,20 +84,21 @@
    data() {
      return {
        form: {},
        selectionId: '',
      selectionId: "",
        selectionList: [],
        query: {},
        loading: true,
        page: {
          pageSize: 10,
          currentPage: 1,
          total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
        },
        flowBox: false,
        flowUrl: '',
      flowUrl: "",
        workBox: false,
        option: {
          height: 'auto',
        height: "auto",
          calcHeight: 30,
          tip: false,
          simplePage: true,
@@ -102,6 +114,7 @@
          dialogWidth: 900,
          menuWidth: 150,
          dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
          column: [
            {
              label: "流程分类",
@@ -110,7 +123,7 @@
              dicUrl: "/api/blade-system/dict/dictionary?code=flow",
              props: {
                label: "dictValue",
                value: "dictKey"
              value: "dictKey",
              },
              dataType: "number",
              slot: true,
@@ -120,35 +133,35 @@
              width: 100,
            },
            {
              label: '流程名称',
              prop: 'processDefinitionName',
            label: "流程名称",
            prop: "processDefinitionName",
              search: true,
            },
            {
              label: '当前步骤',
              prop: 'taskName',
            label: "当前步骤",
            prop: "taskName",
            },
            {
              label: '流程版本',
              prop: 'processDefinitionVersion',
            label: "流程版本",
            prop: "processDefinitionVersion",
              slot: true,
              width: 80,
            },
            {
              label: '申请时间',
              prop: 'createTime',
            label: "申请时间",
            prop: "createTime",
              width: 165,
            },
          ]
        ],
        },
        data: []
      data: [],
      };
    },
    computed: {
      ...mapGetters(["permission", "flowRoutes"]),
      ids() {
        let ids = [];
        this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
          ids.push(ele.id);
        });
        return ids.join(",");
@@ -173,10 +186,20 @@
        this.$refs.crud.toggleSelection();
      },
      handleWork(row) {
        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` });
      this.$router.push({
        path: `/work/process/${flowRoute(
          this.flowRoutes,
          row.category
        )}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}`,
      });
      },
      handleDetail(row) {
        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/detail/${row.processInstanceId}/${row.businessId}` });
      this.$router.push({
        path: `/work/process/${flowRoute(
          this.flowRoutes,
          row.category
        )}/detail/${row.processInstanceId}/${row.businessId}`,
      });
      },
      handleImage(row) {
        this.flowUrl = `/api/blade-flow/process/diagram-view?processInstanceId=${row.processInstanceId}`;
@@ -194,18 +217,22 @@
      onLoad(page, params = {}) {
        const query = {
          ...this.query,
          category: (params.category) ? flowCategory(params.category) : null
        category: params.category ? flowCategory(params.category) : null,
        };
        this.loading = true;
        todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
      todoList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, query)
      ).then((res) => {
          const data = res.data.data;
          this.page.total = data.total;
          this.data = data.records;
          this.loading = false;
          this.selectionClear();
        });
      }
    }
    },
  },
  };
</script>
src/views/workreport/workreply.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -69,6 +71,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -90,6 +93,7 @@
        menuWidth: 320,
        dialogClickModal: false,
        column: workreplyColumn,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
    };
src/views/workreport/workreport.vue
@@ -1,5 +1,10 @@
<template>
  <basic-container class="workreply">
  <basic-container
    :class="[
      'workreply',
      $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
    ]"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -70,6 +75,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -91,6 +97,7 @@
        menuWidth: 320,
        dialogClickModal: false,
        column: workreportColumn,
        ...this.$store.state.control.clearOtherBut,
      },
      data: [],
    };
src/views/zc/zc.vue
@@ -1,5 +1,7 @@
<template>
  <basic-container>
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -71,6 +73,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      selectionList: [],
      option: {
@@ -86,6 +89,7 @@
        headerAlign: "center",
        align: "center",
        dialogClickModal: false,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "账号",