Преглед изворни кода

企业用户界面 businessusers

herozyw1 пре 6 година
родитељ
комит
5a6da5caca

+ 25 - 7
src/dashoo.cn/backend/api/controllers/casbin/user.go

@@ -1,13 +1,17 @@
 package casbin
 
 import (
-	"dashoo.cn/backend/api/business/accountinfo"
-	"dashoo.cn/backend/api/business/company"
-	"dashoo.cn/backend/api/business/printscheme"
 	"encoding/json"
 	"fmt"
+	"strconv"
 	"strings"
 
+	"dashoo.cn/backend/api/business/accountinfo"
+	"dashoo.cn/backend/api/business/company"
+	"dashoo.cn/backend/api/business/printscheme"
+	. "dashoo.cn/backend/api/controllers"
+	"dashoo.cn/business2/parameter"
+
 	"dashoo.cn/backend/api/business/logsinfo"
 	"dashoo.cn/business2/auth"
 
@@ -16,7 +20,6 @@ import (
 	"dashoo.cn/business2/permission"
 	"dashoo.cn/business2/userRole"
 
-	. "dashoo.cn/backend/api/controllers"
 	"dashoo.cn/utils"
 )
 
@@ -33,12 +36,14 @@ type UserModel struct {
 	Description    string `json:"description"`
 	Photo          string `json:"photo"`
 	Role           string `json:"role"`
+	RoleId         int    `json:"roleid"`
 	Id             int    `json:"id"`
 	ChannelIds     string `json:"channelids"`
 	Password       string `json:"password"`
 	DepartmentId   string `json:"departmentid"`
 	DepartmentName string `json:"departmentname"`
 	Sign           string `json:"sign"`
+	IsCompanyUser  int    `json:"Iscompanyuser"`
 }
 
 type ChangePwdModel struct {
@@ -130,10 +135,15 @@ func (this *UserController) UserPowerCheckRole() {
 func (this *UserController) List() {
 	page := this.GetPageInfoForm()
 	keyword := this.GetString("keyword")
+	IsCompanyUser := this.GetString("IsCompanyUser")
 	svc := permission.GetPermissionService(utils.DBE)
 	var users []userRole.Base_User
 
-	where := "IsVisible=1 and CreateUserId='" + utils.ToStr(this.User.Id) + "' or Id = '" + utils.ToStr(this.User.Id) + "' "
+	where := "IsVisible=1 and IsCompanyUser = 0 and CreateUserId='" + utils.ToStr(this.User.Id) + "' or Id = '" + utils.ToStr(this.User.Id) + "' "
+	//外部用户 IsCompanyUser == 1
+	if IsCompanyUser == "1" {
+		where = "IsVisible=1 and IsCompanyUser = 1 and CreateUserId='" + utils.ToStr(this.User.Id) + "' or Id = '" + utils.ToStr(this.User.Id) + "' "
+	}
 	if keyword != "" {
 		where = where + " and Realname like '%" + keyword + "%'"
 	}
@@ -202,7 +212,8 @@ func (this *UserController) AddUser() {
 		this.ServeJSON()
 		return
 	}
-	//获取组织名称
+
+	//	获取组织名称
 	svcorg := organize.GetOrganizeService(utils.DBE)
 	model.DepartmentName = svcorg.GetNameById(model.DepartmentId)
 
@@ -211,6 +222,13 @@ func (this *UserController) AddUser() {
 	if userentity.Roleid == 0 {
 		//userentity.Roleid = 10000123 //普通用户
 	}
+	if model.IsCompanyUser == 1 {
+		parameterSvc := baseparameter.GetBaseparameterService(utils.DBE) //取出外部门ID
+		extOrganizeId := parameterSvc.GetBaseparameterMessage("GFGL", "paramset", "ExtRoleId")
+		model.RoleId, _ = strconv.Atoi(extOrganizeId)
+		userentity.Roleid = model.RoleId
+		userentity.IsCompanyUser = model.IsCompanyUser
+	}
 	userentity.Username = model.Username
 	userentity.Realname = model.Realname
 	userentity.Telephone = model.Telephone
@@ -221,7 +239,6 @@ func (this *UserController) AddUser() {
 		userentity.Description = model.Sign
 	}
 	userentity.Photo = model.Photo
-
 	currentuser := this.User
 	userentity.Createuserid, _ = utils.StrTo(currentuser.Id).Int()
 	userentity.Createby = currentuser.Realname
@@ -246,6 +263,7 @@ func (this *UserController) AddUser() {
 	userentity.Publickey = key
 	userentity.Auditstatus = 1
 	userentity.Email = userentity.Username
+
 	svc := userRole.GetUserService(utils.DBE)
 	err := svc.AddUser(&userentity)
 

+ 816 - 0
src/dashoo.cn/frontend_web/src/pages/system/businessusers.vue

@@ -0,0 +1,816 @@
+<template>
+  <div>
+     <el-card class="box-card">
+      <div slot="header" style="height: 20px;">
+        <span style="float: left;">
+          <i class="icon icon-table2"></i>
+        </span>
+        <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
+          <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+          <el-breadcrumb-item :to="{ path: '/system/businessusers' }">企业用户管理</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" style="margin-left:10px; margin-top: -4px;" @click="opendatadialog(1,null,-1);resetForm('organizeform')">新增企业用户</el-button>
+        </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="账号">
+            <el-input size="mini" style="width: 165px;" v-model="keyword" placeholder="请输入账号"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="seachdata" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <!-- <el-dropdown-item command="search">高级查询</el-dropdown-item> -->
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
+      </div>
+        <el-table :data="list" border>
+          <el-table-column label="操作" align="center">
+            <template slot-scope="scope">
+              <el-button size="small" @click="opendatadialog(2,scope.row,scope.$index);" type="text" icon="el-icon-edit"
+                title="编辑"></el-button>
+              <el-button size="small" type="text" style="margin-left:3px" icon="el-icon-delete" title="删除" @click="deletedata(scope.row)"></el-button>
+              <!-- <el-button size="small" type="text" style="margin-left:1px" title="权限" @click="permission(scope.row)"><i class="icon icon-lock"></i></el-button> -->
+              <el-button size="small" type="text" style="margin-left:3px" title="密码重置" @click="resetpwd(scope.row)">
+                <i class="icon icon-spinner11"></i>
+              </el-button>
+              <el-button size="small" type="text" style="margin-left:3px" title="设置角色" @click="roleset(scope.row)">
+                <i class="icon icon-users"></i>
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column prop="Username" align="center" label="账号" show-overflow-tooltip></el-table-column>
+          <el-table-column prop="Realname" align="center" label="用户名"></el-table-column>
+          <el-table-column prop="Departmentname" align="center" label="所属组织"></el-table-column>
+          <!-- <el-table-column prop="RealnameRole" align="center" label="角色"></el-table-column> -->
+          <el-table-column prop="Telephone" align="center" label="手机" show-overflow-tooltip></el-table-column>
+          <el-table-column label="座机" align="center" prop="Mobile" show-overflow-tooltip></el-table-column>
+          <el-table-column v-if="this.appclient != 'lims'" prop="Description" align="center" label="备注"
+            show-overflow-tooltip></el-table-column>
+        </el-table>
+    </el-card>
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+      :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+    </el-pagination>
+
+    <el-dialog :title="dialogtitle" :visible.sync="datadialogVisible" width="720px">
+      <el-form :model="userform" :rules="rulesuser" ref="userform" label-width="100px">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="账号/Email" prop="username" required>
+              <el-input v-model="userform.username" auto-complete="off" :disabled="disabledserial"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="用户名" required prop="realname">
+              <el-input v-model="userform.realname"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="所属组织" required>
+              <el-cascader :options="orgtreelist" :props="orgtreeprops" change-on-select :show-all-levels="false"
+                v-model="selectedorg" placeholder="请选择组织"></el-cascader>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="手机" prop="telephone">
+              <el-input v-model="userform.telephone" auto-complete="off"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="座机" prop="mobile">
+              <el-input v-model="userform.mobile" auto-complete="off"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item v-if="this.appclient != 'lims'" label="备注">
+              <el-input type="textarea" v-model="userform.description" auto-complete="off"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item v-if=" this.appclient== 'lims'" label="签名">
+              <!-- <el-input type="textarea" v-model="userform.description" auto-complete="off"></el-input> -->
+              <el-upload style="margin-top: 10px;" class="usersignimg-uploader" :action="imghost + '/api/limsupload/usersignimg'"
+                :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
+                <img v-if="imageUrl" :src="imageUrl" class="uploadusersignimg">
+                <i v-else class="el-icon-plus usersignimg-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="datadialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="savedata('userform')">确 定</el-button>
+      </div>
+    </el-dialog>
+
+
+    <el-dialog :title="rolesettitle" :visible.sync="rolesetVisible">
+      <el-checkbox :indeterminate="isrolecheckall" v-model="roleCheckAll" @change="handleCheckAllChange">全选</el-checkbox>
+      <div style="margin-top:20px;">
+        <el-checkbox-group v-model="selectedrole">
+          <el-checkbox v-for="role in rolelist" @change="handlecheckedrolechange" :label="role.Id" :value="role.Id" :key="role.Id">{{role.Realname}}</el-checkbox>
+        </el-checkbox-group>
+      </div>
+      <div slot="footer">
+        <el-button @click="rolesetVisible = false">取消</el-button>
+        <el-button type="primary" @click="rolesave()">确定</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :title="permissiondialogtitle" :visible.sync="permissiondatadialogVisible" top="5vh">
+      <el-col :span="6" style="margin-right: 10px">
+        <div class="userpermisstreediv">
+          <el-tree style="border: 0" node-key="id" show-checkbox :data="orgtreelist" :props="orgtreeprops"
+            :default-expanded-keys="userdepartment" @check-change="userpermissorgcheckedchange" ref="userpermisstree">
+          </el-tree>
+        </div>
+      </el-col>
+      <el-col :span="17">
+        <el-form ref="alertform">
+          <el-form-item>
+            <div class="userpermissdiv">
+              <el-checkbox-group v-model="userpermissdevicesselects">
+                <el-checkbox v-for="item in equipdeviceslist" :label="item.Id+''" :key="item.Id">{{item.Code}}</el-checkbox>
+              </el-checkbox-group>
+            </div>
+          </el-form-item>
+        </el-form>
+      </el-col>
+      <div slot="footer" class="dialog-footer" style="margin-top:-35px;">
+        <el-button @click="permissiondatadialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="savepermission()">确 定</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import {
+    mapGetters
+  } from 'vuex'
+  export default {
+    name: 'users',
+
+    data() {
+      var checkusername = (rule, value, callback) => {
+        if (!value) {
+          callback(new Error('请输入账号'))
+        } else {
+          if (this.appclient == 'lims') { //大港油田lims系统不用邮箱
+            callback()
+          }
+          let re = /^([a-zA-Z0-9]+[_|-|.|-]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|-|.|-]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,3}$/
+          if (!re.test(value)) {
+            callback(new Error('请输入正确的邮箱地址'))
+          } else {
+            callback()
+          }
+        }
+      }
+      return {
+        downloading: '',
+        imghost: "",
+        organdialogVisible: false,
+        currentItemCount: 0,
+        currentItemCount2: 0,
+        currentItemCount3: 0,
+        currentPage: 1,
+        size: 10,
+        rolesettitle: '',
+        rolesetVisible: false,
+        roleCheckAll: false,
+        isrolecheckall: false,
+        selectedrole: [],
+        bossSelect: [],
+        list: [],
+        rolelist: [],
+        mustrolelist: [],
+        keyword: '',
+        datadialogVisible: false,
+        dialogtitle: '',
+        disabledserial: false,
+        IsInnerOrganize: 1,
+        appclient: '',
+        userform: {
+          username: '',
+          realname: '',
+          telephone: '',
+          mobile: '',
+          sign: '',
+          description: '',
+          id: 0,
+          departmentid: '',
+          departmentname: '',
+          RealnameRole: '',
+          GroupId: '',
+          GroupName: '',
+        },
+        rulesuser: {
+          username: [{
+            validator: checkusername,
+            trigger: 'blur'
+          }],
+          realname: [{
+            required: true,
+            message: '用户名',
+            trigger: 'blur'
+          }]
+        },
+        imageUrl: "",
+        operatingitem: 0,
+        permissiondialogtitle: '',
+        permissiondatadialogVisible: false,
+        isfristchecked: false, // 过滤点击树时出现的多次触发选择事件
+        userpermisstreedata: [], // 组织tree 数据
+        userpermissdevicesselects: [], // 设备批量设置所选设备
+        equipdeviceslist: [], // 批量设置设备设备所有数据
+        equipalllist: [], // 设备所有数据
+        checkedarr: [], // 树形控件多选框
+        orgtreelist: [],
+        orgtreeprops: {
+          value: 'id',
+          label: 'Fullname',
+          children: 'children'
+        },
+        rolelistcheckall: [],
+        selectedorg: [],
+        userdepartment: [],
+        ischeckbj: false, // 过滤字段勾选时触发的选中事件
+      }
+    },
+    computed: mapGetters({
+      authUser: 'authUser'
+    }),
+    created() {
+      this.appclient = process.env.appclient
+      this.imghost = process.env.limsimgserverhost;
+      this.getorgtreelist()
+      this.initData()
+      // this.loadequipsall()
+      this.userdepartment.push(parseInt(this.authUser.Profile.DepartmentId))
+      this.selectedorg = [parseInt(this.authUser.Profile.DepartmentId)]
+    },
+    methods: {
+      initData() {
+        let _this = this
+        // paginate
+        const params = {
+          IsCompanyUser: 1,
+          _currentPage: this.currentPage,
+          _size: this.size,
+          keyword: this.keyword
+        }
+        // request
+        this.$axios.get('users/list', {
+            params
+          })
+          .then(res => {
+            // response
+            _this.list = res.data.items
+            _this.currentItemCount = res.data.currentItemCount
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+        this.$axios.get('role/list', {})
+          .then(res => {
+            // response
+            _this.rolelist = res.data.items
+            _this.roleItemCount = res.data.currentItemCount
+            for (var i = 0; i < _this.roleItemCount; i++) {
+              _this.rolelistcheckall.push(_this.rolelist[i].Id)
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      handleAvatarSuccess(res, file) {
+        this.userform.sign = res
+        this.imageUrl = URL.createObjectURL(file.raw);
+      },
+      beforeAvatarUpload(file) {
+        console.log(file);
+        const isimg = file.type.indexOf("image/") === 0;
+        const isLt50k = file.size / 1024 / 50 < 1;
+        if (!isimg) {
+          this.$message.error("上传图片只能是 图片 格式!");
+          return false;
+        }
+        if (!isLt50k) {
+          this.$message.error("上传图片大小不能超过 50kb!");
+          return false;
+        }
+        return true;
+      },
+      roleset(val) {
+        this.rolesettitle = '用户(' + val.Realname + ')-角色管理'
+        this.rolesetVisible = true
+        this.selecteduserid = val.Id + ''
+        this.selectedrole = []
+        let _this = this
+        // request
+        this.$axios.get('users/getuserrole/' + this.selecteduserid, {})
+          .then(res => {
+            console.log("-------res----",res.data)
+            _this.mustrolelist = []
+            // response
+            for (let i = 0; i < res.data.length; i++) {
+              if (_this.roleisexist(parseInt(res.data[i]))) {
+                _this.selectedrole.push(parseInt(res.data[i]))
+              }
+
+              let flag = false
+              let rdx = 0
+              for (rdx = 0; rdx < _this.rolelist.length; rdx++) {
+                if (parseInt(_this.rolelist[rdx].Id) == parseInt(res.data[i])) {
+                  flag = true;
+                  break;
+                }
+              }
+              if (!flag) {
+                _this.mustrolelist.push(parseInt(res.data[i]))
+              }
+
+            }
+
+            let checkedCount = this.selectedrole.length
+            this.roleCheckAll = checkedCount === this.rolelist.length
+            this.isrolecheckall = checkedCount > 0 && checkedCount < this.rolelist.length
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      rolesave() {
+        let _this = this
+        for (let mdx in this.mustrolelist) {
+          if (this.selectedrole.indexOf(this.mustrolelist[mdx]) == -1) {
+            this.selectedrole.push(parseInt(this.mustrolelist[mdx]))
+          }
+        }
+        let rolestring = this.selectedrole.join(',')
+        // request
+        this.$axios.put('users/setuserrole/' + this.selecteduserid + '_' + rolestring, {})
+          .then(res => {
+            // response
+            if (res.data.code === 0) {
+              _this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              // 更新界面
+              this.list = []
+              this.initData()
+              this.rolesetVisible = false
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      handlecheckedrolechange() {
+        let checkedCount = this.selectedrole.length
+        this.roleCheckAll = checkedCount === this.rolelist.length
+        this.isrolecheckall = checkedCount > 0 && checkedCount < this.rolelist.length
+      },
+      handleCheckAllChange(val) {
+        this.selectedrole = val ? this.rolelistcheckall : []
+        this.isrolecheckall = false
+      },
+      roleisexist(val) {
+        for (let i = 0; i < this.rolelist.length; i++) {
+          if (this.rolelist[i].Id === val) {
+            return true
+          }
+        }
+        return false
+      },
+      // loadequipsall() {
+      //   // toggle loading
+      //   let _this = this
+      //   // request
+      //   this.$axios.get('equipment/alllist', null)
+      //     .then(res => {
+      //       // response
+      //       _this.equipalllist = res.data.items
+      //       _this.equipdeviceslist = res.data.items
+      //     })
+      //     .catch(err => {
+      //       // handle error
+      //       console.error(err)
+      //       this.loading = false
+      //     })
+      // },
+      seachdata() {
+        this.list = []
+        this.currentPage = 1
+        this.initData()
+      },
+      searchCommand(command) {
+        if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      handleSizeChange(value) {
+        this.list = []
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.list = []
+        this.initData()
+      },
+      jstimehandle(val) {
+        val = val.replace('T', ' ')
+        return val.substring(0, 19)
+      },
+      opendatadialog(item, v, index) {
+        let _this = this
+        this.operatingitem = item
+        this.datadialogVisible = true
+        this.clearuserForm()
+        if (item === 1) {
+          this.dialogtitle = '新增企业用户'
+          this.disabledserial = false
+        } else if (item === 2) {
+          this.$axios.get('organizes/parentlist/' + v.Departmentid, {})
+            .then(res => {
+              if (res.data.code === 0) {
+                _this.dialogtitle = `编辑用户信息(${v.Realname})`
+                _this.disabledserial = true
+                _this.userform.username = v.Username
+                _this.userform.realname = v.Realname + ''
+                _this.userform.telephone = v.Telephone
+                _this.userform.mobile = v.Mobile
+                _this.userform.description = v.Description
+                _this.userform.role = v.Roleid + ''
+                _this.userform.id = v.Id
+                // 选中状态
+                _this.selectedorg = []
+                let pidarr = res.data.message.split(',')
+                for (var i = pidarr.length - 1; i >= 0; i--) {
+                  if (pidarr[i] !== '0') {
+                    _this.selectedorg.push(parseInt(pidarr[i]))
+                  }
+                }
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: '出现错误!'
+                })
+                this.datadialogVisible = false
+              }
+            })
+            .catch(err => {
+              // handle error
+              console.error(err)
+            })
+        }
+      },
+      savedata(formName) {
+        let _this = this
+        if (this.selectedorg.length === 0) {
+          _this.$message({
+            type: 'warning',
+            message: '请选择所属组织!'
+          })
+          return
+        }
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            this.userform.departmentid = this.selectedorg[this.selectedorg.length - 1] + ''
+            if (_this.operatingitem === 1) {
+              _this.userform.IsCompanyUser = 1
+              _this.userform.RoleId = 10000120
+              console.log("-----_this.userform-------", _this.userform.IsCompanyUser)
+              _this.$axios.post('users', _this.userform)
+                .then(res => {
+                  // response
+                  if (res.data.code === 0) {
+                    _this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    this.list = []
+                    _this.datadialogVisible = false
+                    this.initData()
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  // handle error
+                  console.error(err)
+                })
+            } else if (_this.operatingitem === 2) {
+              _this.$axios.put('users/' + _this.userform.id, _this.userform)
+                .then(res => {
+                  // response
+                  if (res.data.code === 0) {
+                    _this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    this.list = []
+                    _this.datadialogVisible = false
+                    // 更新界面
+                    this.initData()
+                  } else {
+                    _this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(() => {})
+            }
+          } else {
+            return false
+          }
+        })
+      },
+      deletedata(val) {
+        let _this = this
+        _this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          _this.$axios.delete('users/' + val.Id, null)
+            .then(res => {
+              // response
+              if (res.data.code === 0) {
+                _this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+                this.list = []
+                // 更新界面
+                this.initData()
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(() => {})
+        }).catch(() => {})
+      },
+      resetForm(formName) {
+        // this.$refs[formName].resetFields()
+      },
+      clearuserForm() {
+        this.userform = {
+          username: '',
+          realname: '',
+          telephone: '',
+          mobile: '',
+          description: ''
+        }
+      },
+      permission(v) {
+        let _this = this
+        _this.ischeckbj = true // 过滤字段勾选时触发的选中事件
+        this.userpermissdevicesselects = []
+        this.permissiondialogtitle = `用户权限设置(${v.Realname})`
+        this.permissiondatadialogVisible = true
+        this.userform.id = v.Id
+        this.$axios.get('users/permission/' + v.Id, null)
+          .then(res => {
+            // response
+            res.data.forEach((item, k) => {
+              this.userpermissdevicesselects.push(item)
+            })
+            _this.getorgbyeid(res.data + '')
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      getorgbyeid(v) {
+        let _this = this
+        this.$axios.put('equipment/getorgidsbyeqids', {
+            EquipmentIds: v
+          })
+          .then(res => {
+            // response
+            setTimeout(function () {
+              setTimeout(function () {
+                _this.ischeckbj = false
+              }, 300)
+              // 清空树选择框
+              _this.$refs.userpermisstree.setCheckedKeys(res.data)
+            }, 100)
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      savepermission() {
+        let _this = this
+        _this.$axios.put('users/permission/' + this.userform.id, {
+            channelids: this.userpermissdevicesselects + ''
+          })
+          .then(res => {
+            // response
+            if (res.data.code === 0) {
+              _this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              _this.permissiondatadialogVisible = false
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(() => {})
+      },
+      resetpwd(val) {
+        let _this = this
+        _this.$confirm(`此操作将重置用户(${val.Realname})的密码为123456, 是否继续?`, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          _this.$axios.put('users/resetpwd/' + val.Id, null)
+            .then(res => {
+              // response
+              if (res.data.code === 0) {
+                _this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(() => {})
+        }).catch(() => {})
+      },
+      // 选择组织树时触发
+      userpermissorgcheckedchange(data, checked, indeterminate) {
+        let _this = this
+        if (!_this.ischeckbj) {
+          if (!_this.isfristchecked) {
+            _this.isfristchecked = true
+            setTimeout(function () {
+              _this.isfristchecked = false
+              _this.checkorgusermanage()
+            }, 100)
+          }
+        }
+      },
+      checkorgusermanage() {
+        let orgids = []
+        let selectnodes = this.$refs.userpermisstree.getCheckedNodes()
+        selectnodes.forEach(row => {
+          orgids.push(row.id)
+        })
+        const params = {
+          orgids: orgids
+        }
+        let _this = this
+        this.$axios.get('equipment/getidsbyoid', {
+            params
+          })
+          .then(res => {
+            // response
+            _this.userpermissdevicesselects = []
+            if (res.data) {
+              _this.equipdeviceslist = res.data
+              res.data.forEach(row => {
+                _this.userpermissdevicesselects.push(row.Id)
+              })
+            } else {
+              _this.equipdeviceslist = _this.equipalllist
+            }
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+            this.loading = false
+          })
+      },
+      getorgtreelist() {
+        let _this = this
+        // request
+        let params = {
+          IsInnerOrganize: 1
+        }
+        _this.$axios.get('organizes/list', {
+            params
+          })
+          .then(res => {
+            _this.orgtreelist = window.toolfun_gettreejson(res.data.items, 'Id', 'Parentid', 'Id,Fullname')
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      clearSearch() {
+        this.keyword = ''
+        this.list = []
+        this.initData()
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+
+  .triggerone {
+    font-size: 13px;
+    margin-left: 80px;
+  }
+
+  .plab {
+    font-size: 13px;
+    color: #999;
+  }
+
+  .userpermisstreediv {
+    border: 1px #CCCCCC solid;
+    overflow: auto;
+    height: 328px;
+    margin-right: 5px;
+  }
+
+  .userpermissdiv {
+    margin-left: 1px;
+    border: 1px #CCCCCC solid;
+    overflow: auto;
+    height: 320px;
+    padding: 4px;
+  }
+
+  .userpermissdiv .el-checkbox {
+    margin-top: 5px;
+    margin-left: 15px;
+  }
+
+  .usersignimg-uploader .el-upload {
+    border: 1px dashed #63b8ff;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+
+  .usersignimg-uploader .el-upload:hover {
+    border-color: #228b22;
+  }
+
+  .usersignimg-uploader-icon {
+    font-size: 28px;
+    color: #63b8ff;
+    width: 66px;
+    height: 66px;
+    line-height: 66px;
+    text-align: center;
+  }
+
+  .usersignimg-uploader-icon:hover {
+    color: #228b22;
+  }
+
+  .uploadusersignimg {
+    width: 66px;
+    height: 66px;
+    display: block;
+  }
+
+</style>