he wei
2023-04-20 c4bb37ec3cac4dad99688e8420e61816031e020c
UA 用户信息管理 国际化
7个文件已修改
3个文件已添加
1471 ■■■■ 已修改文件
src/assets/js/const/const_user.js 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/i18n/base.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/i18n/const_61850.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/i18n/const_user.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/btsStatus.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/js/i18n/btsStatus.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userMager/addEdit.vue 639 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userMager/i18n/addEdit.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userMager/i18n/userInfo.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userMager/userInfo.vue 590 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_user.js
@@ -1,56 +1,64 @@
export default {
  type: [
    {
      label: '长期',
      label: 'Longterm',
      value: 1
    },
    {
      label: '临时',
      label: 'Temporary',
      value: 2
    }
  ],
  status: [
    {
      label: '激活',
      label: 'Activate',
      value: 1
    },
    {
      label: '休眠',
      label: 'Sleep',
      value: 2
    },
    {
      label: '锁定',
      label: 'Lock',
      value: 3
    },
    {
      label: '连续登录失败锁定',
      label: 'Locked1',
      value: 4
    },
    {
      label: '注销',
      label: 'Logout',
      value: 0
    },
  ],
  roleList: [
    {
      label: "领导层",
      value: 10
    },
    {
      label: "管理员",
      label: "Administrator",
      value: 0,
    },
    {
      label: "运维层",
      label: "teamlead",
      value: 1,
    },
    {
      label: "监控层",
      label: "Members",
      value: 2,
    },
    {
      label: "专员层",
      value: 4
      label: "Leadership",
      value: 10
    },
    {
      label: "OMLayer",
      value: 11,
    },
    {
      label: "MonitoringLayer",
      value: 12,
    },
    {
      label: "CommissionorLayer",
      value: 14
    }
  ]
}
}
src/assets/js/i18n/base.js
@@ -9,6 +9,7 @@
      allCount: '全部(共{n}种) | 全部(共{n}种) | 全部(共{n}种)',
      selectDate: '选择日期',
      selectMsg: '请选择',
      inputMsg: '请输入',
      yes: '是',
      no: '否',
    },
@@ -20,6 +21,8 @@
      operation: '操作',
      successMsg: '操作成功',
      failMsg: '操作失败',
      delete: '删除',
      edit: '编辑',
    },
  },
  US: {
@@ -32,6 +35,7 @@
      allCount: 'All({n}) | All({n}) | All({n})',
      selectDate: 'Select Date',
      selectMsg: 'Please Select',
      inputMsg: 'Please Input',
      yes: 'Yes',
      no: 'No',
    },
@@ -43,6 +47,8 @@
      operation: 'Operation',
      successMsg: 'Operation Successful!',
      failMsg: 'Operation Failed!',
      delete: 'Delete',
      edit: 'Edit',
    },
  }
}
src/assets/js/i18n/const_61850.js
@@ -13,8 +13,6 @@
      CommunicationAlarm: "通讯告警",
      DeviceOverheatAlarm: "设备过温告警",
      DiodeD1Alarm: "二极管D1告警",
    },
    US: {
      OnlineFloatingCharge: 'Online Floating Charge',
@@ -29,8 +27,6 @@
      CommunicationAlarm: "Communication Alarm",
      DeviceOverheatAlarm: "Device Overheat Alarm",
      DiodeD1Alarm: "Diode D1 Alarm",
    }
  }
}
src/assets/js/i18n/const_user.js
New file
@@ -0,0 +1,36 @@
export default {
  messages: {
    CN: {
      Longterm: '长期',
      Temporary: '临时',
      Activate: '激活',
      Sleep: '休眠',
      Lock: '锁定',
      Locked1: '连续登录失败锁定',
      Logout: '注销',
      Administrator: "管理员",
      teamlead: "维护组长",
      Members: "维护组员",
      Leadership: "领导层",
      OMLayer: "运维层",
      MonitoringLayer: "监控层",
      CommissionorLayer: "专员层",
    },
    US: {
      Longterm: 'Long-term',
      Temporary: 'Temporary',
      Activate: 'Activate',
      Sleep: 'Sleep',
      Lock: 'Lock',
      Locked1: 'Locked, continuous login failed',
      Logout: 'Logout',
      Administrator: "Administrator",
      teamlead: "Team Lead",
      Members: "Members",
      Leadership: "Leadership",
      OMLayer: "O&M Layer",
      MonitoringLayer: "Monitoring Layer",
      CommissionorLayer: "Commissionor Layer",
    }
  }
}
src/views/dataTest/btsStatus.vue
@@ -101,29 +101,6 @@
        this.params.devWorkstate = status * 1;
      }
    },
    // // 展示数据数量
    // handleSizeChange(val) {
    //   this.pageSize = val;
    //   this.queryList();
    // },
    // // 翻页
    // handleCurrentChange(val) {
    //   this.pageCurr = val;
    //   this.queryList();
    // },
    // startQueryList() {
    //   this.timer.start(() => {
    //     this.$axios
    //       .all([this.queryList()])
    //       .then(() => {
    //         this.timer.open();
    //       })
    //       .catch((error) => {
    //         this.timer.open();
    //         console.log(error);
    //       });
    //   }, 4000);
    // },
    onWSOpen() {
      this.sendMessage();
    },
src/views/dataTest/js/i18n/btsStatus.js
@@ -17,24 +17,6 @@
      TestedCapacity: '已测容量',
      DeviceAlarm: '设备告警',
      TestedTime: '已测时间',
      deletealarmMsg: '确定删除这条告警记录吗, 是否继续?',
      message: '提示',
      devId: "设备ID",
      devName: "设备名",
      devIp: "设备IP",
      Delete: '删除',
      almTypeName: "告警事件",
      alarmLevelName: "告警等级",
      almStartTime: "告警开始时间",
      almConfirmedTime: "告警确认时间",
      almEndTime: '告警结束时间',
      ConfirmAlarm: '确认告警',
      OperationRecordTime: '操作记录时间段',
      Realtime: '实时',
      DeviceAlarmHistoryData: '设备告警历史数据',
    },
    US: {
      EquipmentRoomName: 'Equipment Room Name',
@@ -53,25 +35,6 @@
      TestedCapacity: 'Tested Capacity',
      DeviceAlarm: 'Device Alarm',
      TestedTime: 'Tested Time',
      deletealarmMsg: 'Confirm to delete this alarm record? Continue?',
      message: 'Message',
      devId: "Device ID",
      devName: "Device Name",
      devIp: "Device IP",
      Delete: 'Delete',
      almTypeName: "Alarm Event",
      alarmLevelName: "Alarm Level",
      almStartTime: "Alarm Start Time",
      almConfirmedTime: "Alarm Confirm Time",
      almEndTime: 'Alarm Finish Time',
      ConfirmAlarm: 'Confirm Alarm',
      OperationRecordTime: 'Operation Record Time',
      Realtime: 'Real-time',
      DeviceAlarmHistoryData: 'Device Alarm History Data',
    }
  }
}
src/views/userMager/addEdit.vue
@@ -1,262 +1,119 @@
<template>
  <div class="params-container">
    <el-form
      class="params-dialog formDataBox bg-white"
      :model="formData"
      :rules="rules"
      ref="formDataBox"
      label-width="80px"
    >
    <el-form class="params-dialog formDataBox bg-white" size="mini" :model="formData" :rules="rules" label-position="top"
      ref="formDataBox">
      <div class="staff">
        <p><span class="iconfont el-icon-duoyonghu"></span> 员工基本信息</p>
        <div class="table-row">
          <el-form-item label="维护区:" class="table-cell">
            <el-select
              v-model="formData.udepartment"
              size="mini"
              placeholder="请选择维护区"
              class="width_140"
            >
              <el-option
                v-for="item in udepartmentList"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="姓名:" class="table-cell" prop="uname">
            <el-input
              class="width_140"
              v-model="formData.uname"
              size="mini"
              placeholder="请输入姓名"
            ></el-input>
          </el-form-item>
          <el-form-item
            label="密码:"
            class="table-cell"
            prop="upassword"
            v-if="status == 'add'"
          >
            <el-input
              class="width_140"
              v-model="formData.upassword"
              type="password"
              size="mini"
              placeholder="请输入密码"
            ></el-input>
          </el-form-item>
          <div class="clear" v-if="status == 'add'"></div>
          <el-form-item label="性别:" class="table-cell">
            <el-select
              class="width_140"
              v-model="formData.usex"
              size="mini"
              placeholder="请选择性别"
            >
              <el-option label="男" value="男"></el-option>
              <el-option label="女" value="女"></el-option>
            </el-select>
          </el-form-item>
          <div class="clear" v-if="status == 'edit'"></div>
          <el-form-item label="手机:" class="table-cell" prop="umobilephone">
            <el-input
              class="width_140"
              v-model="formData.umobilephone"
              size="mini"
              placeholder="请输入手机"
            >
            </el-input>
          </el-form-item>
          <el-form-item label="邮箱:" class="table-cell">
            <el-input
              class="width_140"
              v-model="formData.uemail"
              size="mini"
              placeholder="请输入邮箱"
            >
            </el-input>
          </el-form-item>
          <div class="clear" v-if="status == 'add'"></div>
          <el-form-item label="工作班组:" class="table-cell">
            <el-select
              v-model="formData.ujobGroup"
              size="mini"
              placeholder="请选择工作班组"
              class="width_140"
            >
              <el-option
                v-for="item in ujobGroupList"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <div class="clear"></div>
          <el-form-item label="用户角色:" class="table-cell">
            <el-select
              v-model="formData.urole"
              size="mini"
              placeholder="请选择用户角色"
              class="width_140">
              <el-option
                v-for="item in uroleList"
                :key="item.value"
                :label="item.label"
                :value="item.value"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="用户类型:" class="table-cell">
            <el-select
              v-model="formData.type"
              size="mini"
              placeholder="请选择用户类型"
              class="width_140">
              <el-option
                v-for="item in type"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="过期时间:" class="table-cell" v-if="formData.type==2">
            <el-date-picker
                v-model="expirationTime"
                type="datetime"
                size="mini"
                :start-placeholder="startTime"
                placeholder="选择日期时间">
            </el-date-picker>
          </el-form-item>
          <div class="clear" v-if="formData.type==2"></div>
          <el-form-item label="用户权限:" class="table-cell" prop="permitGroupId" v-if="status=='add'">
            <el-select
                v-model="formData.permitGroupId"
                size="mini"
                placeholder="请选择用户权限组"
                class="width_140">
              <el-option
                  v-for="item in groupList"
                  :key="item.value"
                  :label="item.txt"
                  :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
          <div class="clear"></div>
          <el-form-item label="访问控制时间:" class="table-cell" prop="visitTime" v-if="isSysAdmin">
            <el-time-picker
                popper-class="white-bg"
                is-range
                size="mini"
                arrow-control
                v-model="rangeTime"
                range-separator="至"
                start-placeholder="开始时间"
                end-placeholder="结束时间"
                placeholder="选择时间范围"
        <p><span class="iconfont el-icon-duoyonghu"></span>{{ $t('UserInfo') }}</p>
        <el-row :gutter="row.gutter">
          <el-col :span="row.span">
            <el-form-item :label="$t('MaintenanceArea') + ':'">
              <el-select v-model="formData.udepartment" size="mini" :placeholder="$t('form.selectMsg')" class="">
                <el-option v-for="item in udepartmentList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item :label="$t('Name') + ':'" prop="uname">
              <el-input class="" v-model="formData.uname" size="mini"
                :placeholder="$t('form.inputMsg')"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item :label="$t('Password') + ':'" class="" prop="upassword" v-if="status == 'add'">
              <el-input class="" v-model="formData.upassword" type="password" size="mini"
                :placeholder="$t('form.inputMsg')"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <!-- <div class="clear" v-if="status == 'add'"></div> -->
        <el-row :gutter="row.gutter">
          <el-col :span="row.span">
            <el-form-item :label="$t('Gender') + ':'" class="">
              <el-select class="" v-model="formData.usex" size="mini" :placeholder="$t('form.selectMsg')">
                <el-option :label="$t('Male')" value="0"></el-option>
                <el-option :label="$t('Female')" value="1"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="row.gutter">
          <!-- <div class="clear" v-if="status == 'edit'"></div> -->
          <el-col :span="row.span">
            <el-form-item :label="$t('Phone') + ':'" class="" prop="umobilephone">
              <el-input class="" v-model="formData.umobilephone" size="mini" :placeholder="$t('form.inputMsg')">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item :label="$t('Email') + ':'" class="">
              <el-input class="" v-model="formData.uemail" size="mini" :placeholder="$t('form.inputMsg')">
              </el-input>
            </el-form-item>
          </el-col>
          <!-- <div class="clear" v-if="status == 'add'"></div> -->
          <el-col :span="row.span">
            <el-form-item :label="$t('WorkTeam') + ':'" class="">
              <el-select v-model="formData.ujobGroup" size="mini" :placeholder="$t('form.selectMsg')" class="">
                <el-option v-for="item in ujobGroupList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <!-- <div class="clear"></div> -->
          <el-col :span="row.span">
            <el-form-item :label="$t('UserRole') + ':'" class="">
              <el-select v-model="formData.urole" size="mini" :placeholder="$t('form.selectMsg')" class="">
                <el-option v-for="item in uroleList" :key="item.value" :label="$t('user.' + item.label)"
                  :value="item.value"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item :label="$t('UserType') + ':'" class="">
              <el-select v-model="formData.type" size="mini" :placeholder="$t('form.selectMsg')" class="">
                <el-option v-for="item in type" :key="item.value" :label="$t('user.' + item.label)" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item :label="$t('ExpirationDate') + ':'" class="" v-if="!0 || formData.type == 2">
              <el-date-picker v-model="expirationTime" type="datetime" size="mini" :start-placeholder="startTime">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <!-- <div class="clear" v-if="!0 || formData.type == 2"></div> -->
          <el-col :span="row.span">
            <el-form-item :label="$t('UserAuthority') + ':'" class="" prop="permitGroupId"
              v-if="status == 'add'">
              <el-select v-model="formData.permitGroupId" size="mini" :placeholder="$t('form.selectMsg')"
                class="">
                <el-option v-for="item in groupList" :key="item.value" :label="item.txt" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item label="访问控制时间:" class="" prop="visitTime" v-if="!0 || isSysAdmin">
              <el-time-picker popper-class="white-bg" is-range size="mini" arrow-control v-model="rangeTime"
                range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围"
                @change="timeChange">
            </el-time-picker>
          </el-form-item>
          <el-form-item label="IP白名单:" prop="visitIp" v-if="isSysAdmin">
            <el-input
                type="textarea"
                :rows="6"
                placeholder="请输入内容"
                resize="none"
              </el-time-picker>
            </el-form-item>
          </el-col>
          <el-col :span="row.span">
            <el-form-item label="IP白名单:" prop="visitIp" v-if="isSysAdmin">
              <el-input type="textarea" :rows="6" :placeholder="$t('form.inputMsg')" resize="none"
                v-model="formData.visitIp">
            </el-input>
          </el-form-item>
        </div>
        <!-- <div class="clear" v-if="status == 'edit'"></div> -->
        <!-- <el-form-item label="身份证号:" class="table-cell">
                <el-input class="width_140" v-model="formData.ushenFenId" size="mini" placeholder="请输入身份证号"></el-input>
            </el-form-item> -->
        <!-- <el-form-item label="员工编号:" class="table-cell">
                <el-input class="width_140" v-model="formData.uemployeeId" size="mini" placeholder="请输入员工编号"></el-input>
            </el-form-item> -->
        <!-- <div class="clear" style="clear:both" v-if="status == 'add'"></div> -->
        <!-- <el-form-item label="出生日期:" class="table-cell" prop="ubirthDay">
                <el-date-picker class="width_140" v-model="formData.ubirthDay" size="mini" type="date" placeholder="选择日期"> </el-date-picker>
            </el-form-item> -->
              </el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </div>
      <!-- <div class="staff">
        <p> <span class="iconfont el-icon-icon-sms"></span> 员工联系方式</p>
        <div class="table-row">
            <el-form-item label="电话:" class="table-cell">
                <el-input class="width_140" v-model="formData.utelephone" size="mini" placeholder="请输入电话"></el-input>
            </el-form-item>
            <el-form-item label="手机:" class="table-cell" prop="umobilephone">
                <el-input class="width_140" v-model="formData.umobilephone" size="mini" placeholder="请输入手机"></el-input>
            </el-form-item>
            <el-form-item label="邮箱:" class="table-cell">
                <el-input class="width_140" v-model="formData.uemail" size="mini" placeholder="请输入邮箱"></el-input>
            </el-form-item>
            <div class="clear" style="clear:both"></div>
            <el-form-item label="地址:" class="table-cell">
                <el-input class="width_140" v-model="formData.uaddr" size="mini" placeholder="请输入地址"></el-input>
            </el-form-item>
        </div>
    </div> -->
      <!-- <div class="staff">
        <p> <span class="iconfont el-icon-yanjiangzhe"></span> 员工工作内容</p>
        <div class="table-row">
            <el-form-item label="职称:" class="table-cell">
                <el-input class="width_140" v-model="formData.uproTitle" size="mini" placeholder="请输入职称"></el-input>
            </el-form-item>
            <el-form-item label="备注:" class="table-cell">
                <el-input class="width_140" v-model="formData.unote" size="mini" placeholder="请输入备注"></el-input>
            </el-form-item>
            <el-form-item label="工作内容:" class="table-cell">
                <el-input class="width_140" v-model="formData.utasks" size="mini" placeholder="请输入工作内容"></el-input>
            </el-form-item>
             <div class="clear:both"></div>
            <el-form-item label="工作职责:" class="table-cell">
                <el-input class="width_140" v-model="formData.uduties" size="mini" placeholder="请输入工作职责"></el-input>
            </el-form-item>
            <el-form-item label="权限描述:" class="table-cell">
                <el-input class="width_140" v-model="formData.uauthority" size="mini" placeholder="请输入权限描述"></el-input>
            </el-form-item>
            <el-form-item label="工作班组:" class="table-cell">
                <el-select v-model="formData.ujobGroup"  size="mini" placeholder="请选择工作班组" class="width_140">
                    <el-option
                    v-for="item in ujobGroupList"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                    </el-option>
                </el-select>
            </el-form-item>
            <div class="clear:both"></div>
            <el-form-item label="是否包机人:" class="table-cell">
                <el-select v-model="formData.ubaojiusr"  size="mini" placeholder="请选择是否包机人" class="width_140">
                    <el-option label="是" :value="1"></el-option>
                    <el-option label="否" :value="0"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="入职日期:" class="table-cell" prop="UAccessionDay">
                <el-date-picker class="width_140" v-model="formData.UAccessionDay" size="mini" type="date" placeholder="选择入职日期"> </el-date-picker>
            </el-form-item>
        </div>
    </div> -->
      <div class="btn_box">
        <el-button size="small" @click="cancelOpen">取 消</el-button>
        <el-button size="small" type="primary" @click="confirmOpen"
          >确 定</el-button
        >
        <!-- <el-button size="small" v-if="status == 'edit'" type="primary" @click="updateLicense">更新license</el-button> -->
        <el-button size="small" @click="cancelOpen">{{ $t('operate.cancel') }}</el-button>
        <el-button size="small" type="primary" @click="confirmOpen">{{ $t('operate.ok') }}</el-button>
      </div>
    </el-form>
    <el-dialog :visible.sync="dialog"> </el-dialog>
@@ -264,19 +121,27 @@
</template>
<script>
import { searchProvince } from "../../assets/js/api";
import { groupAndUserListOfCurrentUser,user,getPermitGroupList } from './apis/apis'
import { groupAndUserListOfCurrentUser, user, getPermitGroupList } from './apis/apis'
import { testVal } from '@/assets/js/tools'
import RSA from "@/assets/js/tools/RSA";
import const_user from "@/assets/js/const/const_user";
import const_rules from "@/assets/js/const/const_rules";
import formatPassword from "@/assets/js/tools/formatPassword";
import i18n from './i18n/addEdit';
import { createI18nOption } from '@/assets/js/tools/i18n';
import i18nConstUser from '@/assets/js/i18n/const_user';
const i18nMixin = createI18nOption(i18n, [[i18nConstUser, 'user']]);
export default {
  name:'addEdit',
  name: 'addEdit',
  mixins: [i18nMixin],
  props: ["status", "opt", "index", "seft"],
  data() {
    let userId = sessionStorage.getItem("userPowerGroup");
    let constRules = const_rules;
    return {
      row: {
        gutter: 16,
        span: 8,
      },
      expirationTime: new Date(),
      startTime: new Date().format("yyyy-MM-dd hh:mm:ss"),
      userId: userId,
@@ -294,10 +159,6 @@
        utelephone: this.opt.utelephone || "",
        uemail: this.opt.uemail || "",
        uaddr: this.opt.uaddr || "",
        // ubirthDay:
        //   this.opt.ubirthDay || new Date().format("yyyy-MM-dd hh:mm:ss"),
        // uaccessionDay:
        //   this.opt.uaccessionDay || new Date().format("yyyy-MM-dd hh:mm:ss"),
        usex: this.opt.usex || "",
        udepartment: this.opt.udepartment || "",
        uproTitle: this.opt.uproTitle || "",
@@ -309,13 +170,13 @@
        uauthority: this.opt.uauthority || "",
        umobilephone: this.opt.umobilephone || "",
        uemployeeId: this.opt.uemployeeId || "",
        type:this.opt.type || 1,
        status:  this.opt.status || 1,
        type: this.opt.type || 1,
        status: this.opt.status || 1,
        urole: 0,
        expirationTime: this.opt.expirationTime || null,
        permitGroupId: this.opt.permitGroupId || "",                // 用户所在权限组
        visitTime: this.opt.visitTime || "00:00:01~23:59:59",   // 默认值 全天
        visitIp: this.opt.visitIp ||"*"                      // 允许访问的IP * 代表全部
        visitIp: this.opt.visitIp || "*"                      // 允许访问的IP * 代表全部
      },
      groupList: [],
      rangeTime: [
@@ -326,41 +187,41 @@
        uname: [
          {
            required: true,
            message: "请输入姓名",
            // message: "请输入姓名",
            trigger: "blur",
          },
        ],
        upassword: [
          {
            required: true,
            message: "请输入密码",
            // message: "请输入密码",
            trigger: "blur",
          },
        ],
        ubirthDay: [
          {
            required: true,
            message: "请选择出生日期",
            // message: "请选择出生日期",
            trigger: "blur",
          },
        ],
        umobilephone: [
          {
            required: true,
            message: "请输入手机",
            // message: "请输入手机",
            trigger: "blur",
          },
          {
            min: 11,
            max: 11,
            message: "请输入正确的手机号",
            message: this.$t('phoneMsg'),
            trigger: "blur",
          },
        ],
        uaccessionDay: [
          {
            required: true,
            message: "请选择入职日期",
            // message: "请选择入职日期",
            trigger: "blur",
          },
        ],
@@ -375,7 +236,7 @@
        permitGroupId: [
          {
            required: true,
            message: "请选择用户权限组",
            // message: "请选择用户权限组",
            trigger: "blur",
          },
        ],
@@ -384,7 +245,7 @@
  },
  computed: {
    isSysAdmin() {
      return this.userId==1?true:false;
      return this.userId == 1 ? true : false;
    }
  },
  mounted() {
@@ -400,8 +261,8 @@
      this.formData.permitGroupId = 100;
      let times = this.opt.visitTime.split("~");
      this.rangeTime = [
          new Date("2016-10-1 "+times[0]),
        new Date("2016-10-1 "+times[1]),
        new Date("2016-10-1 " + times[0]),
        new Date("2016-10-1 " + times[1]),
      ];
    }
  },
@@ -432,93 +293,93 @@
    timeChange(time) {
      let time1 = time[0].format("hh:mm:ss");
      let time2 = time[1].format("hh:mm:ss");
      this.formData.visitTime = time1+"~"+time2;
      this.formData.visitTime = time1 + "~" + time2;
    },
    // 查询工作班组
    queryGzbz: function() {
    queryGzbz: function () {
      let vm = this;
      groupAndUserListOfCurrentUser().then((res) => {
          let re = res.data;
          let params = [];
          if (re.code == 1) {
            re.data.forEach((list) => {
              let objs = {
                label: list.baoJiGroupName,
                value: list.baoJiGroupName//list.baoJiGroupId,
              };
              params.push(objs);
            });
            vm.ujobGroupList = params;
          }
          if (vm.formData.ujobGroup == "" && params.length > 0) {
            vm.formData.ujobGroup = vm.ujobGroupList[0].value;
          }
        })
        .catch((error) => {});
        let re = res.data;
        let params = [];
        if (re.code == 1) {
          re.data.forEach((list) => {
            let objs = {
              label: list.baoJiGroupName,
              value: list.baoJiGroupName//list.baoJiGroupId,
            };
            params.push(objs);
          });
          vm.ujobGroupList = params;
        }
        if (vm.formData.ujobGroup == "" && params.length > 0) {
          vm.formData.ujobGroup = vm.ujobGroupList[0].value;
        }
      })
        .catch((error) => { });
    },
    // 查询维护区
    queryWhq: function() {
    queryWhq: function () {
      let vm = this;
      searchProvince().then((res) => {
          let rs = res.data;
          let params = [];
          if (rs.code == 1) {
            rs.data.forEach((list) => {
              let obj = {
                label: list,
                value: list,
              };
              params.push(obj);
            });
            vm.udepartmentList = params;
          }
        let rs = res.data;
        let params = [];
        if (rs.code == 1) {
          rs.data.forEach((list) => {
            let obj = {
              label: list,
              value: list,
            };
            params.push(obj);
          });
          vm.udepartmentList = params;
        }
          if (vm.formData.udepartment == "") {
            vm.formData.udepartment = vm.udepartmentList[0].value;
          }
        })
        .catch((err) => {});
        if (vm.formData.udepartment == "") {
          vm.formData.udepartment = vm.udepartmentList[0].value;
        }
      })
        .catch((err) => { });
    },
    // 取消隐藏弹框
    cancelOpen: function() {
    cancelOpen: function () {
      let vm = this;
      vm.$emit("onClose");
    },
    // 确定
    confirmOpen: function() {
    confirmOpen: function () {
      let vm = this;
      vm.$refs.formDataBox.validate((valid) => {
        if (valid) {
          let data = vm.formData;
              if(data.type == 1) {
                data.expirationTime = null;
              }else {
                data.expirationTime = new Date(this.expirationTime).format("yyyy-MM-dd hh:mm:ss");
              }
          if (data.type == 1) {
            data.expirationTime = null;
          } else {
            data.expirationTime = new Date(this.expirationTime).format("yyyy-MM-dd hh:mm:ss");
          }
          switch (vm.status) {
            case "add": //新增
              // vm.updateLicense();
              // let psw = RSA.encrypt(vm.formData.upassword);
              // debugger
              let psw = vm.formData.upassword;
                  vm.formData.upassword = encodeURIComponent(formatPassword(psw));
                  vm.addUser(vm.formData);
              vm.formData.upassword = encodeURIComponent(formatPassword(psw));
              vm.addUser(vm.formData);
              break;
            case "edit": //修改
              user(data,"PUT").then((res) => {
                  let result = res.data;
                  if (result.code == 1) {
                    if(result.data ===false){
                      vm.$layer.msg(result.msg);
                    }else{
                      vm.$emit("success", result);
                    }
              user(data, "PUT").then((res) => {
                let result = res.data;
                if (result.code == 1) {
                  if (result.data === false) {
                    this.$message.info(this.$t('operate.failMsg'));
                  } else {
                    vm.$layer.msg(result.msg);
                    vm.$emit("success", result);
                  }
                })
                } else {
                  this.$message.info(this.$t('operate.failMsg'))
                }
              })
                .catch((error) => {
                  vm.$layer.msg("修改失败,请仔细核对信息!");
                  this.$message.info(this.$t('operate.failMsg'))
                });
              break;
            default:
@@ -531,83 +392,85 @@
    addUser(data) {
      let vm = this;
      data.usnId = data.upassword;
      user(data,"POST").then((res) => {
          let result = res.data;
          vm.formData.upassword = "";
          if (result.code == 1) {
            if(result.data === false){
              vm.$layer.msg(result.msg);
            }else{
              vm.$emit("success", result);
            }
          } else {
      user(data, "POST").then((res) => {
        let result = res.data;
        vm.formData.upassword = "";
        if (result.code == 1) {
          if (result.data === false) {
            vm.$layer.msg(result.msg);
          } else {
            vm.$emit("success", result);
          }
        })
        } else {
          vm.$layer.msg(result.msg);
        }
      })
        .catch((error) => {
          vm.$layer.msg("新增失败,请仔细核对信息!");
          this.$message.info(this.$t('operate.failMsg'))
        });
    },
    // 添加/更新license
    updateLicense: function() {
      let vm = this;
      vm.$layer.prompt(
        {
          title: "请输入license",
          // value:'',
          formType: 3,
        },
        (value, index) => {
          if (!value) {
            vm.$layer.msg("未输入license");
            return false;
          }
          // 校验license
          vm.$axios({
            method: "post",
            url: "LicenseAction!checkLicense",
            data: "json=" + value,
          })
            .then((res) => {
              let result = JSON.parse(res.data.result);
              if (result.code == 1) {
                // 关闭弹窗
                vm.$layer.close(index);
                // 添加license参数
                vm.formData.license = value;
                if (vm.status == "add") {
                  vm.addUser(vm.formData);
                } else {
                  vm.$layer.msg("已添加license,保存后生效!");
                }
              } else {
                vm.$layer.msg(result.msg);
              }
            })
            .catch((err) => {
              vm.$layer.msg("license验证失败!");
            });
        }
      );
    },
    // updateLicense: function () {
    //   let vm = this;
    //   vm.$layer.prompt(
    //     {
    //       title: "请输入license",
    //       // value:'',
    //       formType: 3,
    //     },
    //     (value, index) => {
    //       if (!value) {
    //         vm.$layer.msg("未输入license");
    //         return false;
    //       }
    //       // 校验license
    //       vm.$axios({
    //         method: "post",
    //         url: "LicenseAction!checkLicense",
    //         data: "json=" + value,
    //       })
    //         .then((res) => {
    //           let result = JSON.parse(res.data.result);
    //           if (result.code == 1) {
    //             // 关闭弹窗
    //             vm.$layer.close(index);
    //             // 添加license参数
    //             vm.formData.license = value;
    //             if (vm.status == "add") {
    //               vm.addUser(vm.formData);
    //             } else {
    //               vm.$layer.msg("已添加license,保存后生效!");
    //             }
    //           } else {
    //             vm.$layer.msg(result.msg);
    //           }
    //         })
    //         .catch((err) => {
    //           vm.$layer.msg("license验证失败!");
    //         });
    //     }
    //   );
    // },
  },
};
</script>
<style scoped>
.staff .width_140 {
/* .staff .width_140 {
  width: 140px;
}
} */
.table-row {
/* .table-row {
  padding: 2px 10px;
} */
/deep/ .el-form--label-top .el-form-item__label {
  line-height: normal;
}
.staff {
  margin-bottom: 6px;
}
.staff > p {
.staff>p {
  padding: 6px 5px;
  background: #c9dcfa;
  margin-bottom: 8px;
src/views/userMager/i18n/addEdit.js
New file
@@ -0,0 +1,38 @@
export default {
  messages: {
    CN: {
      UserInfo: '用户信息',
      MaintenanceArea: '维护区',
      Name: '姓名',
      Password: '密码',
      Gender: '性别',
      Phone: '手机',
      Female: '女',
      Male: '男',
      Email: '邮箱',
      WorkTeam: '工作班组',
      UserRole: '用户角色',
      UserType: '用户类型',
      ExpirationDate: '过期时间',
      UserAuthority: '用户权限',
      phoneMsg: '请输入正确的手机号',
    },
    US: {
      UserInfo: 'User Info',
      MaintenanceArea: 'Maintenance Area',
      Name: 'Name',
      Password: 'Password',
      Gender: 'Gender',
      Phone: 'Phone',
      Female: 'Female',
      Male: 'Male',
      Email: 'E-mail',
      WorkTeam: 'Work Team',
      UserRole: 'User Role',
      UserType: 'User Type',
      ExpirationDate: 'Expiration Time',
      UserAuthority: 'User Authority',
      phoneMsg: 'Please input the correct phone number.',
    }
  }
}
src/views/userMager/i18n/userInfo.js
New file
@@ -0,0 +1,56 @@
export default {
  messages: {
    CN: {
      MaintenanceArea: '维护区',
      Name: '姓名',
      Phone: '手机',
      Email: '邮箱',
      EntryDate: '录入日期',
      Gender: '性别',
      WorkTeam: '工作班组',
      WorkTeamMember: '是否包机人',
      AuthorityGroup: '权限组',
      UserRole: '用户角色',
      UserType: '用户类型',
      ExpirationDate: '过期时间',
      UserState: '用户状态',
      AccessTimeControl: '访问时间控制',
      IPWhitelist: 'IP白名单',
      Unlock: '解锁',
      AddUser: '添加用户',
      Female: '女',
      Male: '男',
      UserInfo: '用户信息',
      Confirmunlock: '确定解锁',
      Edituserinfo: '编辑用户信息',
      Confirmdelete: '确定删除',
      message: '提示',
    },
    US: {
      MaintenanceArea: 'Maintenance Area',
      Name: 'Name',
      Phone: 'Phone',
      Email: 'E-mail',
      EntryDate: 'Entry Date',
      Gender: 'Gender',
      WorkTeam: 'Work Team',
      WorkTeamMember: 'Work Team Member',
      AuthorityGroup: 'Authority Group',
      UserRole: 'User Role',
      UserType: 'User Type',
      ExpirationDate: 'Expiration Time',
      UserState: 'User State',
      AccessTimeControl: 'Access Time Control',
      IPWhitelist: 'IP Whitelist',
      Unlock: 'Unlock',
      AddUser: 'Add User',
      Female: 'Female',
      Male: 'Male',
      UserInfo: 'User Info',
      Confirmunlock: 'Confirm unlock',
      Edituserinfo: 'Edit user info',
      Confirmdelete: 'Confirm delete',
      message: 'Message',
    }
  }
}
src/views/userMager/userInfo.vue
@@ -1,298 +1,310 @@
<template>
    <!-- 用户信息 -->
    <flex-layout>
        <div class="flex-page-content">
            <el-table ref="tableBox" stripe size="mini" header-row-class-name="header-primary" height="100%"
                :data="userList">
                <el-table-column prop="udepartment" align="center" label="维护区" :min-width="120"></el-table-column>
                <el-table-column prop="uname" align="center" label="姓名" :min-width="120"></el-table-column>
                <!-- <el-table-column prop="UShenFenId"  width="90px" align="center"  label="身份证号"></el-table-column> -->
                <!-- <el-table-column prop="UEmployeeId" width="90px"  align="center"  label="员工编号"></el-table-column> -->
                <!-- <el-table-column prop="UTelephone" width="90px"  align="center"  label="电话"></el-table-column> -->
                <el-table-column prop="umobilephone" align="center" label="手机" :min-width="120"></el-table-column>
                <el-table-column prop="uemail" align="center" label="邮箱" :min-width="180"></el-table-column>
                <!-- <el-table-column prop="UAddr" width="100px" align="center"  label="地址"></el-table-column>
                    <el-table-column prop="UBirthDay" width="140px" align="center"  label="出生日期"></el-table-column> -->
                <el-table-column prop="uaccessionDay" align="center" label="录入日期" :min-width="180"></el-table-column>
                <el-table-column prop="usex" align="center" label="性别" :min-width="80"></el-table-column>
                <!-- <el-table-column prop="UProTitle" width="90px" align="center"  label="职称"></el-table-column>
                    <el-table-column prop="UAuthority" width="100px" align="center"  label="权限描述"></el-table-column> -->
                <el-table-column prop="ujobGroup" align="center" label="工作班组" :min-width="120"></el-table-column>
                <!-- <el-table-column prop="UDuties" width="90px" align="center"  label="工作职责"></el-table-column>
                    <el-table-column prop="UTasks" width="90px" align="center"  label="工作内容"></el-table-column> -->
                <el-table-column prop="ubaojiusr" align="center" label="是否包机人" :min-width="120">
                    <template slot-scope="scope">
                        <el-checkbox :checked="scope.row.ubaojiusr == 1" readonly="true"></el-checkbox>
                    </template>
                </el-table-column>
                <el-table-column prop="permitGroupName" align="center" :min-width="120" label="权限组"></el-table-column>
                <el-table-column prop="URoleText" :min-width="120" align="center" label="用户角色"></el-table-column>
                <!-- <el-table-column prop="UNote" width="90px" align="center"  label="备注"></el-table-column> -->
                <el-table-column prop="typeText" :min-width="120" align="center" label="用户类型">
                  <template slot-scope="scope">
                    <el-tag type="success" size="mini" v-if="scope.row.type == 1">{{ scope.row.typeText }}</el-tag>
                    <el-tag type="danger" size="mini" v-if="scope.row.type == 2">{{ scope.row.typeText }}</el-tag>
                  </template>
                </el-table-column>
                <el-table-column prop="expirationTime" :min-width="180" align="center" label="过期日期"></el-table-column>
                <el-table-column prop="status" :min-width="120" align="center" label="用户状态">
                  <template slot-scope="scope">
                    <el-tag type="success" size="mini" v-if="scope.row.status == 1">{{ scope.row.statusText }}</el-tag>
                    <el-tag type="danger" size="mini" v-else>{{ scope.row.statusText }}</el-tag>
                  </template>
                </el-table-column>
                <el-table-column prop="visitTime" width="160" align="center"  label="访问时间控制"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="visitIp" width="160" align="center"  label="IP白名单"></el-table-column>
                <el-table-column prop="cztime" fixed="right" width="260px" align="center" label="操作">
                    <template slot-scope="scope">
                        <el-button :disabled="!isCanEdit" type="primary" size="mini"
                            @click="editUser(scope.$index, scope.row)">编辑</el-button>
                        <el-button :disabled="!(scope.row.status==4 || scope.row.status==3)" type="warning"
                                   size="mini" v-if="isSysAdmin"
                                    @click="unlock(scope.$index, scope.row)">解锁</el-button>
                        <el-button :disabled="!isCanEdit" type="danger" size="mini"
                            @click="deleteUser(scope.$index, scope.row)">删除</el-button>
                    </template>
  <!-- 用户信息 -->
  <flex-layout>
    <div class="flex-page-content">
      <el-table ref="tableBox" stripe size="mini" header-row-class-name="header-primary" height="100%" :data="userList">
        <el-table-column prop="udepartment" show-overflow-tooltip align="center" :label="$t('MaintenanceArea')"
          :min-width="160"></el-table-column>
        <el-table-column prop="uname" align="center" show-overflow-tooltip :label="$t('Name')"
          :min-width="120"></el-table-column>
        <el-table-column prop="umobilephone" align="center" :label="$t('Phone')" :min-width="120"></el-table-column>
        <el-table-column prop="uemail" align="center" show-overflow-tooltip :label="$t('Email')"
          :min-width="180"></el-table-column>
        <el-table-column prop="uaccessionDay" align="center" :label="$t('EntryDate')" :min-width="180"></el-table-column>
        <el-table-column prop="usexStr" align="center" :label="$t('Gender')" :min-width="80"></el-table-column>
        <el-table-column prop="ujobGroup" align="center" show-overflow-tooltip :label="$t('WorkTeam')"
          :min-width="120"></el-table-column>
        <!-- <el-table-column prop="ubaojiusr" align="center" :label="$t('WorkTeamMember')" :min-width="180">
          <template slot-scope="scope">
            <el-checkbox :checked="scope.row.ubaojiusr == 1" readonly="true"></el-checkbox>
          </template>
        </el-table-column> -->
        <el-table-column prop="permitGroupName" align="center" show-overflow-tooltip :min-width="180"
          :label="$t('AuthorityGroup')"></el-table-column>
        <el-table-column prop="URoleText" :min-width="120" align="center" show-overflow-tooltip
          :label="$t('UserRole')"></el-table-column>
        <el-table-column prop="typeText" :min-width="120" show-overflow-tooltip align="center" :label="$t('UserType')">
          <template slot-scope="scope">
            <el-tag type="success" size="mini" v-if="scope.row.type == 1">{{ scope.row.typeText }}</el-tag>
            <el-tag type="danger" size="mini" v-if="scope.row.type == 2">{{ scope.row.typeText }}</el-tag>
          </template>
        </el-table-column>
        <el-table-column prop="expirationTime" :min-width="180" align="center"
          :label="$t('ExpirationDate')"></el-table-column>
        <el-table-column prop="status" :min-width="120" align="center" :label="$t('UserState')">
          <template slot-scope="scope">
            <el-tag type="success" size="mini" v-if="scope.row.status == 1">{{ scope.row.statusText }}</el-tag>
            <el-tag type="danger" size="mini" v-else>{{ scope.row.statusText }}</el-tag>
          </template>
        </el-table-column>
        <el-table-column prop="visitTime" width="180" align="center" :label="$t('AccessTimeControl')"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="visitIp" width="160" align="center"
          :label="$t('IPWhitelist')"></el-table-column>
        <el-table-column prop="cztime" fixed="right" width="260px" align="center" :label="$t('operate.operation')">
          <template slot-scope="scope">
            <el-button :disabled="!isCanEdit" type="primary" size="mini" @click="editUser(scope.$index, scope.row)">{{
              $t('operate.edit') }}</el-button>
            <el-button :disabled="!(scope.row.status == 4 || scope.row.status == 3)" type="warning" size="mini"
              v-if="isSysAdmin" @click="unlock(scope.$index, scope.row)">{{ $t('Unlock') }}</el-button>
            <el-button :disabled="!isCanEdit" type="danger" size="mini" @click="deleteUser(scope.row)">{{
              $t('operate.delete') }}</el-button>
          </template>
                </el-table-column>
            </el-table>
        </div>
        </el-table-column>
      </el-table>
    </div>
        <div class="flex-page-footer" slot="footer">
            <div class="el-pagination-btns">
                <el-button type="primary" @click="queryData" round size="mini" icon="el-icon-search">查询</el-button>
                <el-button type="primary" round size="mini" icon="el-icon-wallet" @click="exportFile">导出</el-button>
            </div>
            <el-pagination size="mini" @size-change="handleSizeChange" @current-change="handleCurrentChange"
                :current-page="currentPage" :page-sizes="[10, 20, 30, 50, 100]" :page-size="pagesize"
                layout="total, sizes, prev, pager, next, jumper" :total="totalNum"></el-pagination>
            <div class="el-pagination-btns">
                <el-button :disabled="!isCanEdit" type="primary" icon="el-icon-plus" round size="mini" @click="addUser">
                    添加用户</el-button>
            </div>
        </div>
        <Dialog :title="dialogTitle" :visible.sync="centerDialogVisible" top='0' :close-on-click-modal="false"
            class="dialog-center" width="700px" center>
            <!-- addEdit -->
            <add-edit v-if="reFresh" :seft="this" @success="success" @onClose="onClose" :status="status"
                :index="thisIndex" :opt="opt"></add-edit>
        </Dialog>
    </flex-layout>
    <div class="flex-page-footer" slot="footer">
      <div class="el-pagination-btns">
        <el-button type="primary" @click="queryData" round size="mini" icon="el-icon-search">{{ $t('operate.search')
        }}</el-button>
        <el-button type="primary" round size="mini" icon="el-icon-wallet" @click="exportFile">{{ $t('operate.export')
        }}</el-button>
      </div>
      <el-pagination size="mini" @size-change="handleSizeChange" @current-change="handleCurrentChange"
        :current-page="currentPage" :page-sizes="[10, 20, 30, 50, 100]" :page-size="pagesize"
        layout="total, sizes, prev, pager, next, jumper" :total="totalNum"></el-pagination>
      <div class="el-pagination-btns">
        <el-button :disabled="!isCanEdit" type="primary" icon="el-icon-plus" round size="mini" @click="addUser">
          {{ $t('AddUser') }}</el-button>
      </div>
    </div>
    <Dialog :title="dialogTitle" :visible.sync="centerDialogVisible" top='0' :close-on-click-modal="false"
      class="dialog-center" width="700px" center>
      <!-- addEdit -->
      <add-edit v-if="reFresh" :seft="this" @success="success" @onClose="onClose" :status="status" :index="thisIndex"
        :opt="opt"></add-edit>
    </Dialog>
  </flex-layout>
</template>
<script>
    // import { Form } from 'element-ui'
    import addEdit from './addEdit'
    import { Dialog } from 'element-ui'
    // import { searchProvince } from '../../assets/js/api'
    // 引入导出表格
    import { export_json_to_excel } from '@/assets/js/excel/Export2Excel'
    import { isHasPermit,getLabelByValue } from "@/assets/js/tools";
    import { userPage,deleteInfo,unLock } from './apis/apis'
    import const_user from "@/assets/js/const/const_user";
    export default {
        name:"userInfo",
        data() {
            let permits = this.$store.state.user.permits;
            let isCanEdit = isHasPermit('usr_edit_permit', permits);
            let userId = sessionStorage.getItem("userId");
            return {
                userId: userId,
                isCanEdit: true,//isCanEdit,
                userType: const_user.type,
                userStatus: const_user.status,
                userRoles: const_user.roleList,
                currentPage: 1,
                pagesize: 10,
                totalNum: 0,
                userList: [],
                w: document.documentElement.offsetWidth + 'px',
                h: `${document.documentElement.offsetHeight - 344}  + 'px'`,
                // 新增编辑弹窗
                centerDialogVisible: false,
                dialogTitle: '',
                status: '',
                thisIndex: '',
                opt: {},
<script>
import addEdit from './addEdit'
import { Dialog } from 'element-ui'
// 引入导出表格
import { export_json_to_excel } from '@/assets/js/excel/Export2Excel'
import { isHasPermit, getLabelByValue } from "@/assets/js/tools";
import { userPage, deleteInfo, unLock } from './apis/apis'
import const_user from "@/assets/js/const/const_user";
import i18nConstUser from '@/assets/js/i18n/const_user';
import i18n from './i18n/userInfo';
import { createI18nOption } from '@/assets/js/tools/i18n';
const i18nMixin = createI18nOption(i18n, [[i18nConstUser, 'user']]);
export default {
  name: "userInfo",
  mixins: [i18nMixin],
  data() {
    let permits = this.$store.state.user.permits;
    let isCanEdit = isHasPermit('usr_edit_permit', permits);
    let userId = sessionStorage.getItem("userId");
    return {
      userId: userId,
      isCanEdit: true,//isCanEdit,
      userType: const_user.type,
      userStatus: const_user.status,
      userRoles: const_user.roleList,
      currentPage: 1,
      pagesize: 10,
      totalNum: 0,
      userList: [],
      w: document.documentElement.offsetWidth + 'px',
      h: `${document.documentElement.offsetHeight - 344}  + 'px'`,
      // 新增编辑弹窗
      centerDialogVisible: false,
      dialogTitle: '',
      status: '',
      thisIndex: '',
      opt: {},
                reFresh: true
            }
        },
        watch: {
        },
        components: {
            Dialog,
            addEdit
        },
        created() {
        },
        computed: {
          isSysAdmin() {
            return this.userId==1?true:false;
          }
        },
        mounted() {
            let vm = this;
            vm.queryData();
        },
        methods: {
            // 导出表格
            exportFile() {
                let tHeader = ['维护区','姓名','手机','邮箱','录入日期','性别','工作班组','是否包机人','权限组','用户角色','用户类型','过期日期','用户状态','访问时间控制','IP白名单'];
                let filterVal = ['udepartment','uname','umobilephone','uemail','uaccessionDay','usex','ujobGroup','uisBaojiusr','permitGroupName','uroleText','typeText','expirationTime','statusText','visitTime','visitIp'];
                let list = this.userList;
                if (list.length > 0) {
                    list.map((item, index) => {
                        if (item.ubaojiusr === 1) {
                            item.uisBaojiusr = '是'
                        } else {
                            item.uisBaojiusr = '否'
                        }
                    })
                }
                let excelData = this.formatJson(filterVal, list);
                export_json_to_excel(tHeader, excelData, "用户信息");
            },
            formatJson(filterVal, jsonData) {
                return jsonData.map(v => filterVal.map(j => v[j]));
            },
            // 初始化组件
            installComponents: function () {
                let vm = this;
                vm.reFresh = false
                vm.$nextTick(() => {
                    vm.reFresh = true
                })
            },
            // 添加用户
            addUser: function () {
                let vm = this;
                vm.installComponents();
                vm.dialogTitle = '添加新用户';
                vm.centerDialogVisible = true;
                vm.status = 'add';
                vm.thisIndex = -1;
                vm.opt = {};
            },
            unlock(index, data) {
              let vm = this;
              vm.$layer.confirm('确定解锁' + data.uname, {
                icon: 3
              }, function (index) {
                vm.$layer.close(index);
                unLock({uId:data.uid,unLockType:1}).then(res => {
                  let result = res.data;
                  if(result.code == 1){
                    vm.$layer.msg("解锁成功");
                    vm.queryData();
                  }else{
                    vm.$layer.msg("解锁失败,请重新操作!");
                  }
                }).catch(error => {
                  vm.$layer.msg('解锁失败');
                });
              })
            },
            // 编辑
            editUser: function (index, data) {
                let vm = this;
                vm.installComponents();
                vm.dialogTitle = '编辑用户信息';
                vm.centerDialogVisible = true;
                vm.status = 'edit';
                vm.thisIndex = index;
                vm.opt = data;
            },
            // 删除
            deleteUser: function (index, data) {
                let vm = this;
                vm.$layer.confirm('确定删除' + data.uname, {
                    icon: 3
                }, function (index) {
                    vm.$layer.close(index);
                    deleteInfo({id:data.uid}).then(res => {
                        let result = res.data;
                        vm.$layer.msg(result.msg)
                        vm.queryData();
                    }).catch(error => {
                        vm.$layer.msg('删除失败!请联系管理员')
                    });
                })
            },
            // 显示条数改变时
            handleSizeChange(val) {
                this.pagesize = val;
                this.queryData();
            },
            // 翻页
            handleCurrentChange(val) {
                this.currentPage = val;
                this.queryData();
            },
            // 查询列表数据
            queryData: function () {
                let vm = this;
                let loading = this.$layer.loading(1);
                let searchParams = {
                        pageNum:vm.currentPage,
                        pageSize:vm.pagesize
                    }
                    userPage(searchParams).then(res => {
                        // 关闭等待框
                        this.$layer.close(loading);
                        let rs = res.data;
                        let data = [];
                        if (rs.data.data.list.length>0) {
                            data = rs.data.data.list.map(item => {
                                return item;
                            });
                            if (data.length > 0) {
                                vm.totalNum = rs.data.data.total;
                            } else {
                                vm.totalNum = 0;
                            }
                        }
                    vm.userList = data;
                    vm.userList.map(item => {
                      item.URoleText = getLabelByValue(item.urole, this.userRoles);
                      item.typeText = getLabelByValue(item.type, this.userType);
                      item.statusText = getLabelByValue(item.status, this.userStatus);
                      return item;
                    }).filter(item=>{
                      return item.UId>100
                    });
                }).catch(error => {
                });
            },
            // 弹窗取消
            onClose: function () {
                let vm = this;
                vm.centerDialogVisible = false;
            },
            // 确定回调
            success: function (result) {
                let vm = this;
                vm.centerDialogVisible = false;
                if(vm.status=="add"){
                    vm.$layer.msg("新增用户成功!")
                }else{
                    vm.$layer.msg("更新用户信息成功!")
                }
                vm.queryData();
            }
        },
      reFresh: true
    }
  },
  watch: {
  },
  components: {
    Dialog,
    addEdit
  },
  created() {
  },
  computed: {
    isSysAdmin() {
      return this.userId == 1 ? true : false;
    }
  },
  mounted() {
    let vm = this;
    vm.queryData();
    this.$bus.$on('langChanged', () => {
      this.queryData();
    });
  },
  methods: {
    // 导出表格
    exportFile() {
      let tHeader = ['MaintenanceArea', 'Name', 'Phone', 'Email', 'EntryDate', 'Gender', 'WorkTeam', 'AuthorityGroup', 'UserRole', 'UserType', 'ExpirationDate', 'UserState', 'AccessTimeControl', 'IPWhitelist'].map((v) => this.$t(v));
      let filterVal = ['udepartment', 'uname', 'umobilephone', 'uemail', 'uaccessionDay', 'usexStr', 'ujobGroup', 'permitGroupName', 'uroleText', 'typeText', 'expirationTime', 'statusText', 'visitTime', 'visitIp'];
      let list = this.userList;
      // if (list.length > 0) {
      //   list.map((item, index) => {
      //     if (item.ubaojiusr === 1) {
      //       item.uisBaojiusr = '是'
      //     } else {
      //       item.uisBaojiusr = '否'
      //     }
      //   })
      // }
      let excelData = this.formatJson(filterVal, list);
      export_json_to_excel(tHeader, excelData, this.$t('UserInfo'));
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]));
    },
    // 初始化组件
    installComponents: function () {
      let vm = this;
      vm.reFresh = false
      vm.$nextTick(() => {
        vm.reFresh = true
      })
    },
    // 添加用户
    addUser: function () {
      let vm = this;
      vm.installComponents();
      vm.dialogTitle = this.$t('AddUser');
      vm.centerDialogVisible = true;
      vm.status = 'add';
      vm.thisIndex = -1;
      vm.opt = {};
    },
    unlock(index, data) {
      let vm = this;
      vm.$confirm(this.$t('Confirmunlock') + data.uname, this.$t('message'), {
        confirmButtonText: this.$t('operate.ok'),
        cancelButtonText: this.$t('operate.cancel'),
        type: "warning",
      }).then((re) => {
        if (re != 'confirm') {
          return false;
        }
        unLock({ uId: data.uid, unLockType: 1 }).then(res => {
          let result = res.data;
          if (result.code == 1) {
            this.$message.info(this.$t('operate.successMsg'));
            vm.queryData();
          } else {
            this.$message.info(this.$t('operate.failMsg'));
          }
        }).catch(error => {
          this.$message.info(this.$t('operate.failMsg'));
        });
      })
    },
    // 编辑
    editUser: function (index, data) {
      let vm = this;
      vm.installComponents();
      vm.dialogTitle = this.$t('Edituserinfo');
      vm.centerDialogVisible = true;
      vm.status = 'edit';
      vm.thisIndex = index;
      vm.opt = data;
    },
    // 删除
    deleteUser: function (data) {
      let vm = this;
      this.$confirm(this.$t('Confirmdelete') + data.uname, this.$t('message'), {
        confirmButtonText: this.$t('operate.ok'),
        cancelButtonText: this.$t('operate.cancel'),
        type: "warning",
      }).then((re) => {
        if (re != 'confirm') {
          return false;
        }
        deleteInfo({ id: data.uid }).then(res => {
          let result = res.data;
          if (result.code) {
            this.$message.info(this.$t('operate.successMsg'));
          } else {
            this.$message.info(this.$t('operate.failMsg'));
          }
          vm.queryData();
        }).catch(error => {
          this.$message.info(this.$t('operate.failMsg'))
        });
      })
    },
    // 显示条数改变时
    handleSizeChange(val) {
      this.pagesize = val;
      this.queryData();
    },
    // 翻页
    handleCurrentChange(val) {
      this.currentPage = val;
      this.queryData();
    },
    // 查询列表数据
    queryData: function () {
      let vm = this;
      let loading = this.$layer.loading(1);
      let searchParams = {
        pageNum: vm.currentPage,
        pageSize: vm.pagesize
      }
      userPage(searchParams).then(res => {
        // 关闭等待框
        this.$layer.close(loading);
        let rs = res.data;
        let data = [];
        if (rs.data.data.list.length > 0) {
          data = rs.data.data.list.map(item => {
            item.usexStr = 1 == item.usex ? this.$t('Female') : this.$t('Male');
            return item;
          });
          if (data.length > 0) {
            vm.totalNum = rs.data.data.total;
          } else {
            vm.totalNum = 0;
          }
        }
        vm.userList = data;
        vm.userList.map(item => {
          item.URoleText = this.$t('user.' + getLabelByValue(item.urole, this.userRoles));
          item.typeText = this.$t('user.' + getLabelByValue(item.type, this.userType));
          item.statusText = this.$t('user.' + getLabelByValue(item.status, this.userStatus));
          return item;
        });
      }).catch(error => {
      });
    },
    // 弹窗取消
    onClose: function () {
      let vm = this;
      vm.centerDialogVisible = false;
    },
    // 确定回调
    success: function (result) {
      let vm = this;
      vm.centerDialogVisible = false;
      if (vm.status == "add") {
        vm.$layer.msg(this.$t('operate.successMsg'));
      } else {
        vm.$layer.msg(this.$t('operate.successMsg'));
      }
      vm.queryData();
    }
  },
}
</script>
<style scoped>
</style>
<style scoped></style>