Administrator
2021-07-19 954d3238ce181b2e1acd6fa05380435390a8869d
保安人员管理修改
3 files modified
17751 ■■■■■ changed files
package-lock.json 17247 ●●●●● patch | view | raw | blame | history
src/api/system/user.js 13 ●●●●● patch | view | raw | blame | history
src/views/management/register.vue 491 ●●●●● patch | view | raw | blame | history
package-lock.json
Diff too large
src/api/system/user.js
@@ -13,6 +13,19 @@
  })
}
export const getListSecurity = (current, size, params, deptId) => {
    return request({
        url: '/api/blade-user/page-security',
        method: 'get',
        params: {
            ...params,
            current,
            size,
            deptId,
        }
    })
}
export const remove = (ids) => {
  return request({
    url: '/api/blade-user/remove',
src/views/management/register.vue
@@ -11,16 +11,19 @@
            <div class="box">
                <el-scrollbar>
                    <basic-container>
                        <avue-tree :option="treeOption"
            <avue-tree
              :option="treeOption"
                                   :data="treeData"
                                   @node-click="nodeClick" />
              @node-click="nodeClick"
            />
                    </basic-container>
                </el-scrollbar>
            </div>
        </el-col>
        <el-col :span="19">
            <basic-container>
                <avue-crud :option="option"
        <avue-crud
          :option="option"
                           :search.sync="search"
                           :table-loading="loading"
                           :data="data"
@@ -37,7 +40,8 @@
                           @size-change="sizeChange"
                           @refresh-change="refreshChange"
                           @row-click="handleRowClick"
                           @on-load="onLoad">
          @on-load="onLoad"
        >
                    <!-- <template slot-scope="{row}"
                              slot="tenantName">
                        <el-tag>{{row.tenantName}}</el-tag>
@@ -54,64 +58,66 @@
                              slot="userTypeName">
                        <el-tag>{{row.userTypeName}}</el-tag>
                    </template> -->
                    <template slot-scope="{type,size,row}"
                              slot="menu">
                        <el-button icon="icon-zhengjian"
          <template slot-scope="{ type, size, row }" slot="menu">
            <el-button
              icon="icon-zhengjian"
                                   :size="size"
                                   :type="type"
                                   class="zhengJian-icon"
                                   @click.stop="handleCredentials(row)">证件吊销</el-button>
              @click.stop="handleCredentials(row)"
              >证件吊销</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>
                    </avue-form>
                </el-dialog>
            </basic-container>
        </el-col>
    </el-row>
</template>
<script>
import {
    getList,
    getUser,
    add,
    updateHold,
} from "@/api/management/user";
import { getDeptTree, getDeptLazyTree } from "@/api/system/dept";
import { getUser, add, updateHold } from "@/api/management/user";
import { getListSecurity } from "@/api/system/user";
import { getDeptLazyTree } from "@/api/Jurs/jurs";
// import { getDeptTree, getDeptLazyTree } from "@/api/system/dept";
import { getDeptTree } from "@/api/system/dept";
import { getRoleTree } from "@/api/system/role";
import { getPostList } from "@/api/system/post";
import { mapGetters } from "vuex";
import website from '@/config/website';
import { getToken } from '@/util/auth';
import website from "@/config/website";
import { getToken } from "@/util/auth";
export default {
    data () {
        const validatePass = (rule, value, callback) => {
            if (value === '') {
                callback(new Error('请输入密码'));
      if (value === "") {
        callback(new Error("请输入密码"));
            } else {
                callback();
            }
        };
        const validatePass2 = (rule, value, callback) => {
            if (value === '') {
                callback(new Error('请再次输入密码'));
      if (value === "") {
        callback(new Error("请再次输入密码"));
            } else if (value !== this.form.password) {
                callback(new Error('两次输入密码不一致!'));
        callback(new Error("两次输入密码不一致!"));
            } else {
                callback();
            }
@@ -127,7 +133,7 @@
            page: {
                pageSize: 10,
                currentPage: 1,
                total: 0
        total: 0,
            },
            init: {
@@ -135,31 +141,35 @@
                deptTree: [],
            },
            treeDeptId: '',
      treeDeptId: "",
      jurisdiction: "",
            treeData: [],
            treeOption: {
                nodeKey: 'id',
        nodeKey: "id",
        defaultExpandAll: true,
                lazy: true,
                treeLoad: function (node, resolve) {
                    const parentId = (node.level === 0) ? 0 : node.data.id;
                    getDeptLazyTree(parentId).then(res => {
                        resolve(res.data.data.map(item => {
          const parentId = node.level === 0 ? 0 : node.data.id;
          getDeptLazyTree(parentId).then((res) => {
            resolve(
              res.data.data.map((item) => {
                            return {
                                ...item,
                                leaf: !item.hasChildren
                            }
                        }))
                  leaf: !item.hasChildren,
                };
              })
            );
                    });
                },
                addBtn: false,
                menu: false,
                size: 'small',
        size: "small",
                props: {
                    labelText: '标题',
                    label: 'title',
                    value: 'value',
                    children: 'children'
                }
          labelText: "标题",
          label: "title",
          value: "value",
          children: "children",
        },
            },
            option: {
                // 操作栏多余按钮去除
@@ -167,9 +177,8 @@
                editBtn: false,
                addBtn: false,
                selection: false,
                align: 'center',
                height: 'auto',
        align: "center",
        height: "auto",
                calcHeight: 80,
                tip: false,
                searchShow: true,
@@ -180,7 +189,6 @@
                dialogClickModal: false,
                // 操作栏宽度
                menuWidth: 156,
                column: [
                    {
                        label: "保安姓名",
@@ -188,7 +196,7 @@
                        search: true,
                        searchSpan: 5,
                        display: false,
                        width: 78
            width: 78,
                    },
                    {
                        label: "性别",
@@ -197,62 +205,85 @@
                        search: true,
                        searchSpan: 4,
                        searchLabelWidth: 50,
                        dicData: [{
                            label: '女',
                            value: 2
                        }, {
                            label: '男',
            dicData: [
              {
                label: "女",
                value: 2,
              },
              {
                label: "男",
                            value: 1,
                        }],
              },
            ],
                        slot: true,
                        display: false,
                        width: 48
            width: 48,
          },
          {
            label: "保安公司",
            prop: "deptName",
            slot: true,
            display: false,
          },
          {
            label: "保安证编号",
            prop: "securitynumber",
            display: false,
                    },
                    {
                        label: "身份证号",
                        prop: "cardid",
                        slot: true,
                        display: false,
                        width: 138
            width: 138,
                    },
                    {
                        label: "联系方式",
                        prop: "phone",
                        slot: true,
                        display: false,
                        width: 92
            width: 92,
                    },
                    {
                        label: "联系地址",
                        prop: "address",
                        slot: true,
                        display: false
            display: false,
                    },
                    {
                        label: "入职时间",
                        prop: "rtime",
                        slot: true,
                        display: false,
                        width: 82
            width: 82,
                    },
                    {
                        label: "所属角色",
                        prop: "roleName",
                        slot: true,
                        display: false,
                        width: 78
            width: 78,
                    },
                    {
                        label: "所属公司",
                        prop: "deptName",
                        slot: true,
                        display: false
                    },
                    {
                        label: "所属辖区",
                        prop: "deptName",
            prop: "jurisdiction",
            // multiple: true,
            type: "tree",
            dicUrl: "/api/jurisdiction/lazy-tree?parentId=0",
            props: {
              label: "title",
              value: "id",
            },
            checkStrictly: true,
                        slot: true,
                        display: false
            rules: [
              {
                required: true,
                message: "请选择所属辖区",
                trigger: "click",
              },
            ],
                    },
                    {
                        label: "是否在职",
@@ -260,16 +291,19 @@
                        type: "select",
                        search: true,
                        searchSpan: 4,
                        dicData: [{
                            label: '否',
                            value: 0
                        }, {
                            label: '是',
            dicData: [
              {
                label: "否",
                value: 0,
              },
              {
                label: "是",
                            value: 1,
                        }],
              },
            ],
                        slot: true,
                        display: false,
                        width: 78
            width: 78,
                    },
                    {
                        label: "是否持证",
@@ -277,26 +311,30 @@
                        type: "select",
                        search: true,
                        searchSpan: 4,
                        dicData: [{
                            label: '是',
                            value: '0'
                        }, {
                            label: '否',
                            value: '1',
                        }, {
                            label: '已吊销',
                            value: '2',
                        }],
            dicData: [
              {
                label: "是",
                value: "0",
              },
              {
                label: "否",
                value: "1",
              },
              {
                label: "已吊销",
                value: "2",
              },
            ],
                        slot: true,
                        display: false,
                        width: 78
            width: 78,
                    },
                ],
                group: [
                    {
                        label: '基础信息',
                        prop: 'baseInfo',
                        icon: 'el-icon-user-solid',
            label: "基础信息",
            prop: "baseInfo",
            icon: "el-icon-user-solid",
                        column: [
                            {
                                label: "所属机构",
@@ -305,27 +343,31 @@
                                dicUrl: "/api/blade-system/tenant/select",
                                props: {
                                    label: "tenantName",
                                    value: "tenantId"
                  value: "tenantId",
                                },
                                hide: !website.tenantMode,
                                addDisplay: website.tenantMode,
                                editDisplay: website.tenantMode,
                                viewDisplay: website.tenantMode,
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请输入所属机构",
                                    trigger: "click"
                                }],
                    trigger: "click",
                  },
                ],
                                span: 24,
                            },
                            {
                                label: "登录账号",
                                prop: "account",
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请输入登录账号",
                                    trigger: "blur"
                                }],
                    trigger: "blur",
                  },
                ],
                            },
                            {
                                label: "用户平台",
@@ -333,73 +375,84 @@
                                dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
                                props: {
                                    label: "dictValue",
                                    value: "dictKey"
                  value: "dictKey",
                                },
                                dataType: "number",
                                slot: true,
                                prop: "userType",
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请选择用户平台",
                                    trigger: "blur"
                                }]
                    trigger: "blur",
                  },
                ],
                            },
                            {
                                label: '密码',
                                prop: 'password',
                label: "密码",
                prop: "password",
                                hide: true,
                                editDisplay: false,
                                viewDisplay: false,
                                rules: [{ required: true, validator: validatePass, trigger: 'blur' }]
                rules: [
                  { required: true, validator: validatePass, trigger: "blur" },
                ],
                            },
                            {
                                label: '确认密码',
                                prop: 'password2',
                label: "确认密码",
                prop: "password2",
                                hide: true,
                                editDisplay: false,
                                viewDisplay: false,
                                rules: [{ required: true, validator: validatePass2, trigger: 'blur' }]
                rules: [
                  { required: true, validator: validatePass2, trigger: "blur" },
                ],
                            },
                        ]
            ],
                    },
                    {
                        label: '详细信息',
                        prop: 'detailInfo',
                        icon: 'el-icon-s-order',
            label: "详细信息",
            prop: "detailInfo",
            icon: "el-icon-s-order",
                        column: [
                            {
                                label: "用户昵称",
                                prop: "name",
                                hide: true,
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请输入用户昵称",
                                    trigger: "blur"
                                }]
                    trigger: "blur",
                  },
                ],
                            },
                            {
                                label: "用户姓名",
                                prop: "realName",
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请输入用户姓名",
                                    trigger: "blur"
                                }, {
                    trigger: "blur",
                  },
                  {
                                    min: 2,
                                    max: 5,
                                    message: '姓名长度在2到5个字符'
                                }]
                    message: "姓名长度在2到5个字符",
                  },
                ],
                            },
                            {
                                label: "手机号码",
                                prop: "phone",
                                overHidden: true
                overHidden: true,
                            },
                            {
                                label: "电子邮箱",
                                prop: "email",
                                hide: true,
                                overHidden: true
                overHidden: true,
                            },
                            {
                                label: "用户性别",
@@ -408,18 +461,18 @@
                                dicData: [
                                    {
                                        label: "男",
                                        value: 1
                    value: 1,
                                    },
                                    {
                                        label: "女",
                                        value: 2
                    value: 2,
                                    },
                                    {
                                        label: "未知",
                                        value: 3
                                    }
                    value: 3,
                  },
                                ],
                                hide: true
                hide: true,
                            },
                            {
                                label: "用户生日",
@@ -427,20 +480,20 @@
                                prop: "birthday",
                                format: "yyyy-MM-dd hh:mm:ss",
                                valueFormat: "yyyy-MM-dd hh:mm:ss",
                                hide: true
                hide: true,
                            },
                            {
                                label: "账号状态",
                                prop: "statusName",
                                hide: true,
                                display: false
                            }
                        ]
                display: false,
              },
            ],
                    },
                    {
                        label: '职责信息',
                        prop: 'dutyInfo',
                        icon: 'el-icon-s-custom',
            label: "职责信息",
            prop: "dutyInfo",
            icon: "el-icon-s-custom",
                        column: [
                            {
                                label: "用户编号",
@@ -453,15 +506,17 @@
                                type: "tree",
                                dicData: [],
                                props: {
                                    label: "title"
                  label: "title",
                                },
                                checkStrictly: true,
                                slot: true,
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请选择所属角色",
                                    trigger: "click"
                                }]
                    trigger: "click",
                  },
                ],
                            },
                            {
                                label: "所属单位",
@@ -470,15 +525,17 @@
                                multiple: true,
                                dicData: [],
                                props: {
                                    label: "title"
                  label: "title",
                                },
                                checkStrictly: true,
                                slot: true,
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请选择所属部门",
                                    trigger: "click"
                                }]
                    trigger: "click",
                  },
                ],
                            },
                            {
                                label: "所属岗位",
@@ -488,17 +545,19 @@
                                dicData: [],
                                props: {
                                    label: "postName",
                                    value: "id"
                  value: "id",
                                },
                                rules: [{
                rules: [
                  {
                                    required: true,
                                    message: "请选择所属岗位",
                                    trigger: "click"
                                }],
                    trigger: "click",
                            },
                        ]
                ],
                    },
                ]
            ],
          },
        ],
            },
            data: [],
            platformQuery: {},
@@ -510,17 +569,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/blade-user/import-user"
            tip: "请上传 .xls,.xlsx 标准格式文件",
            action: "/api/blade-user/import-user",
                    },
                    {
                        label: "数据覆盖",
@@ -531,12 +590,12 @@
                        dicData: [
                            {
                                label: "否",
                                value: 0
                value: 0,
                            },
                            {
                                label: "是",
                                value: 1
                            }
                value: 1,
              },
                        ],
                        value: 0,
                        slot: true,
@@ -544,32 +603,32 @@
                            {
                                required: true,
                                message: "请选择是否覆盖",
                                trigger: "blur"
                            }
                        ]
                trigger: "blur",
              },
            ],
                    },
                    {
                        label: '模板下载',
                        prop: 'excelTemplate',
            label: "模板下载",
            prop: "excelTemplate",
                        formslot: true,
                        span: 24,
                    }
                ]
            }
          },
        ],
      },
        };
    },
    watch: {
        'form.tenantId' () {
            if (this.form.tenantId !== '' && this.initFlag) {
    "form.tenantId"() {
      if (this.form.tenantId !== "" && this.initFlag) {
                this.initData(this.form.tenantId);
            }
        },
        'excelForm.isCovered' () {
            if (this.excelForm.isCovered !== '') {
    "excelForm.isCovered"() {
      if (this.excelForm.isCovered !== "") {
                const column = this.findObject(this.excelOption.column, "excelFile");
                column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
            }
        }
    },
    },
    computed: {
        ...mapGetters(["permission"]),
@@ -578,13 +637,13 @@
                addBtn: this.vaildData(this.permission.user_add, false),
                viewBtn: this.vaildData(this.permission.user_view, false),
                delBtn: this.vaildData(this.permission.user_delete, false),
                editBtn: this.vaildData(this.permission.user_edit, false)
        editBtn: this.vaildData(this.permission.user_edit, false),
            };
        },
        ids () {
            let ids = [];
            this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
                ids.push(ele.id);
            });
            return ids.join(",");
@@ -598,20 +657,21 @@
    },
    methods: {
        nodeClick (data) {
            this.treeDeptId = data.id;
      //   this.treeDeptId = data.id;
      this.jurisdiction = data.id;
            this.page.currentPage = 1;
            this.onLoad(this.page);
        },
        initData (tenantId) {
            getRoleTree(tenantId).then(res => {
      getRoleTree(tenantId).then((res) => {
                const column = this.findObject(this.option.group, "roleId");
                column.dicData = res.data.data;
            });
            getDeptTree(tenantId).then(res => {
      getDeptTree(tenantId).then((res) => {
                const column = this.findObject(this.option.group, "deptId");
                column.dicData = res.data.data;
            });
            getPostList(tenantId).then(res => {
      getPostList(tenantId).then((res) => {
                const column = this.findObject(this.option.group, "postId");
                column.dicData = res.data.data;
            });
@@ -621,22 +681,25 @@
            row.deptId = row.deptId.join(",");
            row.roleId = row.roleId.join(",");
            row.postId = row.postId.join(",");
            add(row).then(() => {
      add(row).then(
        () => {
                this.initFlag = false;
                this.onLoad(this.page);
                this.$message({
                    type: "success",
                    message: "操作成功!"
            message: "操作成功!",
                });
                done();
            }, error => {
        },
        (error) => {
                window.console.log(error);
                loading();
            });
        }
      );
        },
        searchReset () {
            this.query = {};
            this.treeDeptId = '';
      this.treeDeptId = "";
            this.onLoad(this.page);
        },
        searchChange (params, done) {
@@ -660,11 +723,15 @@
        },
        handleTemplate () {
            window.open(`/api/blade-user/export-template?${this.website.tokenHeader}=${getToken()}`);
      window.open(
        `/api/blade-user/export-template?${
          this.website.tokenHeader
        }=${getToken()}`
      );
        },
        beforeOpen (done, type) {
            if (["edit", "view"].includes(type)) {
                getUser(this.form.id).then(res => {
        getUser(this.form.id).then((res) => {
                    this.form = res.data.data;
                    if (this.form.hasOwnProperty("deptId")) {
                        this.form.deptId = this.form.deptId.split(",");
@@ -691,7 +758,12 @@
        },
        onLoad (page, params = {}) {
            this.loading = true;
            getList(page.currentPage, page.pageSize, Object.assign(params, this.query), this.treeDeptId).then(res => {
      params["jurisdiction"] = this.jurisdiction;
      getListSecurity(
        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;
@@ -699,8 +771,6 @@
                this.selectionClear();
            });
        },
        platformSelectionClear () {
            this.platformSelectionList = [];
@@ -710,54 +780,49 @@
        // 行单击
        handleRowClick (row) {
            // delete (row["name"]);
            var obj = row
            obj["name"] = "保安详细资料"
      var obj = row;
      obj["name"] = "保安详细资料";
            this.$router.push({
                path: `/management/index`,
                query: obj,
            });
        },
        // 证件吊销事件
        handleCredentials (row) {
            if (row.hold == 1) {
                this.$message({
                  type: 'info',
                    message: '证件未拥有!'
          type: "info",
          message: "证件未拥有!",
                });
            } else if (row.hold == 2) {
                this.$message({
                   type: 'info',
                    message: '证件已吊销!'
          type: "info",
          message: "证件已吊销!",
                });
            } else {
                this.$confirm('此操作将吊销该人员的证件, 是否继续?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    updateHold(2, row.cardid).then(res => {
                        console.log(res)
        this.$confirm("此操作将吊销该人员的证件, 是否继续?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        })
          .then(() => {
            updateHold(2, row.cardid).then((res) => {
              console.log(res);
                        this.$message({
                            type: 'success',
                            message: '删除成功!'
                type: "success",
                message: "删除成功!",
              });
                        });
                    })
                }).catch(() => {
          .catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消删除'
              type: "info",
              message: "已取消删除",
                    });
                });
            }
        }
    }
    },
  },
};
</script>