|
@@ -14,7 +14,7 @@
|
|
<el-form-item label="状态:">
|
|
<el-form-item label="状态:">
|
|
<el-select v-model="search.state.status" placeholder="全部">
|
|
<el-select v-model="search.state.status" placeholder="全部">
|
|
<el-option label="全部" :value="''"></el-option>
|
|
<el-option label="全部" :value="''"></el-option>
|
|
- <el-option label="可用" :value="1"></el-option>
|
|
|
|
|
|
+ <el-option label="启用" :value="1"></el-option>
|
|
<el-option label="禁用" :value="0"></el-option>
|
|
<el-option label="禁用" :value="0"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -36,7 +36,7 @@
|
|
ref="multipleTable"
|
|
ref="multipleTable"
|
|
:data="dataList.state"
|
|
:data="dataList.state"
|
|
tooltip-effect="dark"
|
|
tooltip-effect="dark"
|
|
- style="width: 100%"
|
|
|
|
|
|
+ style="width: 100%;max-height:480px"
|
|
@row-click="selectRow"
|
|
@row-click="selectRow"
|
|
>
|
|
>
|
|
<el-table-column label="序号" width="55" v-slot:default="{ $index }">
|
|
<el-table-column label="序号" width="55" v-slot:default="{ $index }">
|
|
@@ -55,14 +55,14 @@
|
|
></el-table-column>
|
|
></el-table-column>
|
|
<el-table-column label="角色" prop="roleName"></el-table-column>
|
|
<el-table-column label="角色" prop="roleName"></el-table-column>
|
|
<el-table-column label="状态" v-slot:default="{ row }">
|
|
<el-table-column label="状态" v-slot:default="{ row }">
|
|
- {{ row.status ? "可用" : "禁用" }}
|
|
|
|
|
|
+ {{ row.status ? "启用" : "禁用" }}
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column
|
|
<el-table-column
|
|
label="操作"
|
|
label="操作"
|
|
v-slot:default="{ row }"
|
|
v-slot:default="{ row }"
|
|
v-if="auth.update || auth.updatePwd || auth.delete"
|
|
v-if="auth.update || auth.updatePwd || auth.delete"
|
|
>
|
|
>
|
|
- <template v-if="row.id !== ADMIN_USER_ID && row.id !== user.info.id">
|
|
|
|
|
|
+ <template v-if="row.roleKey == roleKey[user.roleKey]">
|
|
<span class="oper-span" @click="updateInfo(row)" v-if="auth.update"
|
|
<span class="oper-span" @click="updateInfo(row)" v-if="auth.update"
|
|
v-power="'edit'">编辑</span
|
|
v-power="'edit'">编辑</span
|
|
>
|
|
>
|
|
@@ -100,8 +100,9 @@
|
|
<el-form ref="form" :model="form" label-width="90px" class="user-from">
|
|
<el-form ref="form" :model="form" label-width="90px" class="user-from">
|
|
<el-form-item label="用户姓名" class="mandatory" >
|
|
<el-form-item label="用户姓名" class="mandatory" >
|
|
<el-input
|
|
<el-input
|
|
- v-model="editName"
|
|
|
|
|
|
+ v-model.trim="editName"
|
|
placeholder="请输入"
|
|
placeholder="请输入"
|
|
|
|
+ maxlength="15"
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
@@ -116,19 +117,25 @@
|
|
<el-form ref="form" :model="form" label-width="90px" class="user-from">
|
|
<el-form ref="form" :model="form" label-width="90px" class="user-from">
|
|
<el-form-item label="用户姓名" class="mandatory" >
|
|
<el-form-item label="用户姓名" class="mandatory" >
|
|
<el-input
|
|
<el-input
|
|
|
|
+ maxlength="15"
|
|
v-model="newData.nickName"
|
|
v-model="newData.nickName"
|
|
placeholder="请输入"
|
|
placeholder="请输入"
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item label="所属架构:" v-if="user.roleKey !== 'admin-ordinary'">
|
|
|
|
+ <el-cascader
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ v-model="newData.deptId"
|
|
|
|
+ :options="treedata"
|
|
|
|
+ :props="{ checkStrictly: true, label: 'name', value: 'id' }"
|
|
|
|
+ ></el-cascader>
|
|
|
|
+ </el-form-item>
|
|
<el-form-item label="用户角色" class="roleName mandatory">
|
|
<el-form-item label="用户角色" class="roleName mandatory">
|
|
<com-role v-model="newData.roleId" style="width: 100%" allText="请选择" hideAll :notDefault="true" />
|
|
<com-role v-model="newData.roleId" style="width: 100%" allText="请选择" hideAll :notDefault="true" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="所属架构:" v-if="user.roleKey == 'admin' || user.roleKey == 'admin-super' ">
|
|
|
|
- <com-select v-model="newData.deptId" />
|
|
|
|
- </el-form-item>
|
|
|
|
<el-form-item label="用户账号" class="mandatory">
|
|
<el-form-item label="用户账号" class="mandatory">
|
|
<el-input
|
|
<el-input
|
|
- v-model="newData.userName"
|
|
|
|
|
|
+ v-model.trim="newData.userName"
|
|
placeholder="请输入11位手机号码作为用户账号"
|
|
placeholder="请输入11位手机号码作为用户账号"
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -146,22 +153,22 @@
|
|
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-import { reactive, ref, toRefs } from "vue";
|
|
|
|
|
|
+import { reactive, ref, toRefs,onMounted } from "vue";
|
|
import getTableState from "@/state/tableRef";
|
|
import getTableState from "@/state/tableRef";
|
|
import comDialog from "@/components/dialog";
|
|
import comDialog from "@/components/dialog";
|
|
import comHead from "@/components/head";
|
|
import comHead from "@/components/head";
|
|
import comCompany from "@/components/company-select";
|
|
import comCompany from "@/components/company-select";
|
|
import comPagination from "@/components/pagination";
|
|
import comPagination from "@/components/pagination";
|
|
import roleCompany from "@/components/role-select";
|
|
import roleCompany from "@/components/role-select";
|
|
-import comSelect from "@/components/company-select";
|
|
|
|
|
|
+// import comSelect from "@/components/company-select";
|
|
import auth from "@/state/viewAuth";
|
|
import auth from "@/state/viewAuth";
|
|
import user from "@/state/user";
|
|
import user from "@/state/user";
|
|
import axios from "axios";
|
|
import axios from "axios";
|
|
// import { encryption } from "@/util";
|
|
// import { encryption } from "@/util";
|
|
-// import { PSW, PHONE } from "@/constant/REG";
|
|
|
|
|
|
+import {PHONE,EPSW} from '@/constant/REG'
|
|
import { ADMIN_USER_ID } from "@/constant";
|
|
import { ADMIN_USER_ID } from "@/constant";
|
|
|
|
|
|
-import { getUserList, updateUser, deleUser, changeUserStatus,userAdd,userEdit } from "@/request/config";
|
|
|
|
|
|
+import { getTreeselect,getUserList, updateUser, deleUser, changeUserStatus,userAdd,userEdit } from "@/request/config";
|
|
import { getApp } from "../../app";
|
|
import { getApp } from "../../app";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -182,11 +189,13 @@ export default {
|
|
searchAttr: { nickName: "", status: "", deptId: "" },
|
|
searchAttr: { nickName: "", status: "", deptId: "" },
|
|
});
|
|
});
|
|
const headList = ref([{ name: "用户管理", value: 2 }]);
|
|
const headList = ref([{ name: "用户管理", value: 2 }]);
|
|
|
|
+ const roleKey = ref({ 'admin': "admin-dept", 'admin-dept': 'admin-ordinary' });
|
|
const operRoleId = ref("");
|
|
const operRoleId = ref("");
|
|
const updateInfo = (row) => {
|
|
const updateInfo = (row) => {
|
|
if (!row.status) {
|
|
if (!row.status) {
|
|
return getApp().$message.error("请先启用用户", "提示");
|
|
return getApp().$message.error("请先启用用户", "提示");
|
|
}
|
|
}
|
|
|
|
+ data.editName = row.nickName
|
|
operRoleId.value = row.roleId;
|
|
operRoleId.value = row.roleId;
|
|
state.oper.value.readyUpdate(row);
|
|
state.oper.value.readyUpdate(row);
|
|
};
|
|
};
|
|
@@ -198,12 +207,19 @@ export default {
|
|
getApp().$message({message: '操作成功', type: 'success'});
|
|
getApp().$message({message: '操作成功', type: 'success'});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ const getTreedata = async () => {
|
|
|
|
+ let res = await axios.get(getTreeselect, {});
|
|
|
|
+ data.treedata = res.data;
|
|
|
|
+ console.log('data.treedata',data.treedata);
|
|
|
|
+ // getApp().$ref.treeBox.setCurrentKey(user.info.id)
|
|
|
|
+ };
|
|
const newAddclick = () =>{
|
|
const newAddclick = () =>{
|
|
data.newShow = true
|
|
data.newShow = true
|
|
}
|
|
}
|
|
const data = reactive({
|
|
const data = reactive({
|
|
newShow: false,
|
|
newShow: false,
|
|
editName:'',//修改编辑用户名称
|
|
editName:'',//修改编辑用户名称
|
|
|
|
+ treedata:[],
|
|
newData:{
|
|
newData:{
|
|
userName: "",
|
|
userName: "",
|
|
userId: "",
|
|
userId: "",
|
|
@@ -211,9 +227,13 @@ export default {
|
|
userRole: "",
|
|
userRole: "",
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+ onMounted(async () => {
|
|
|
|
+ getTreedata();
|
|
|
|
+ });
|
|
return {
|
|
return {
|
|
...state,
|
|
...state,
|
|
...toRefs(data),
|
|
...toRefs(data),
|
|
|
|
+ getTreedata,
|
|
headList,
|
|
headList,
|
|
delInfo,
|
|
delInfo,
|
|
updateInfo,
|
|
updateInfo,
|
|
@@ -221,6 +241,7 @@ export default {
|
|
user,
|
|
user,
|
|
operRoleId,
|
|
operRoleId,
|
|
ADMIN_USER_ID,
|
|
ADMIN_USER_ID,
|
|
|
|
+ roleKey,
|
|
newAddclick
|
|
newAddclick
|
|
};
|
|
};
|
|
},
|
|
},
|
|
@@ -233,11 +254,16 @@ export default {
|
|
if (!this.newData.roleId) {
|
|
if (!this.newData.roleId) {
|
|
return this.$message.error("请选择用户角色", "提示");
|
|
return this.$message.error("请选择用户角色", "提示");
|
|
}
|
|
}
|
|
|
|
+ console.log(PHONE.REG.test(this.newData.userName),this.newData.userName)
|
|
if (!this.newData.userName) {
|
|
if (!this.newData.userName) {
|
|
return this.$message.error("请选择用户账户", "提示");
|
|
return this.$message.error("请选择用户账户", "提示");
|
|
|
|
+ }else if(!PHONE.REG.test(this.newData.userName)){
|
|
|
|
+ return this.$message.error(PHONE.tip, "提示");
|
|
}
|
|
}
|
|
if (!this.newData.psw) {
|
|
if (!this.newData.psw) {
|
|
return this.$message.error("请输入登录密码", "提示");
|
|
return this.$message.error("请输入登录密码", "提示");
|
|
|
|
+ }else if(!EPSW.REG.test(this.newData.psw)){
|
|
|
|
+ return this.$message.error(EPSW.tip, "提示");
|
|
}
|
|
}
|
|
await axios.post(userAdd, {
|
|
await axios.post(userAdd, {
|
|
nickName:this.newData.nickName,
|
|
nickName:this.newData.nickName,
|
|
@@ -266,64 +292,8 @@ export default {
|
|
this.oper.reset();
|
|
this.oper.reset();
|
|
this.editName = ''
|
|
this.editName = ''
|
|
this.dataList.refer();
|
|
this.dataList.refer();
|
|
- // const updatePhone = this.oper.state.__oldData
|
|
|
|
- // ? this.oper.state.__oldData.userName !== this.oper.state.userName
|
|
|
|
- // : true;
|
|
|
|
-
|
|
|
|
- // if (updatePhone && !PHONE.REG.test(this.oper.state.userName)) {
|
|
|
|
- // return this.$message.error(PHONE.tip, "提示");
|
|
|
|
- // }
|
|
|
|
- // if (this.oper.state.password !== this.oper.state.confirmPwd) {
|
|
|
|
- // return this.$message.error("两次密码不一致!", "提示");
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // if (!this.oper.state.roleId) {
|
|
|
|
- // return this.$message.error("请选择用户角色", "提示");
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // if (
|
|
|
|
- // !this.operRoleId &&
|
|
|
|
- // !(await this.$confirm(
|
|
|
|
- // "用户被启用后,可正常登录使用。确定要启用吗?",
|
|
|
|
- // "提示"
|
|
|
|
- // ))
|
|
|
|
- // ) {
|
|
|
|
- // return;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // if (this.oper.state.id) {
|
|
|
|
- // let updateState = {
|
|
|
|
- // ...this.oper.state,
|
|
|
|
- // password: void 0,
|
|
|
|
- // confirmPwd: void 0,
|
|
|
|
- // updatePwd: void 0,
|
|
|
|
- // userId: this.oper.state.id,
|
|
|
|
- // };
|
|
|
|
- // if (!updatePhone) {
|
|
|
|
- // delete updateState.userName;
|
|
|
|
- // }
|
|
|
|
- // let state = { ...this.oper.state };
|
|
|
|
- // await this.oper.update(updateState);
|
|
|
|
- // await this.changeUserStatus(state, true);
|
|
|
|
- // } else if (this.oper.state.password === this.oper.state.confirmPwd) {
|
|
|
|
- // if (PSW.REG.test(this.oper.state.password)) {
|
|
|
|
- // let cryPsw = encryption(this.oper.state.password);
|
|
|
|
- // this.oper.insert({
|
|
|
|
- // ...this.oper.state,
|
|
|
|
- // password: cryPsw,
|
|
|
|
- // confirmPwd: cryPsw,
|
|
|
|
- // updatePwd: void 0,
|
|
|
|
- // });
|
|
|
|
- // } else {
|
|
|
|
- // this.$message.error(PSW.tip, "提示");
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
},
|
|
},
|
|
async changeUserStatus(row, d) {
|
|
async changeUserStatus(row, d) {
|
|
- // if (!d && (!row.roleId && !row.status)) {
|
|
|
|
- // this.operRoleId = row.roleId
|
|
|
|
- // return this.oper.readyUpdate(row)
|
|
|
|
- // }
|
|
|
|
let msg = row.status
|
|
let msg = row.status
|
|
? `用户被禁用后,无法登录使用,无法编辑场景(可将该用户关联的相机绑定到其它管理员)。确定要禁用吗?`
|
|
? `用户被禁用后,无法登录使用,无法编辑场景(可将该用户关联的相机绑定到其它管理员)。确定要禁用吗?`
|
|
: `用户被启用后,可正常登录使用。确定要启用吗?`;
|
|
: `用户被启用后,可正常登录使用。确定要启用吗?`;
|
|
@@ -347,7 +317,7 @@ export default {
|
|
"com-company": comCompany,
|
|
"com-company": comCompany,
|
|
"com-role": roleCompany,
|
|
"com-role": roleCompany,
|
|
"com-pagination": comPagination,
|
|
"com-pagination": comPagination,
|
|
- "com-select": comSelect
|
|
|
|
|
|
+ // "com-select": comSelect
|
|
},
|
|
},
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|