|
@@ -4,13 +4,10 @@
|
|
<div class="search">
|
|
<div class="search">
|
|
<el-form label-width="100px" inline>
|
|
<el-form label-width="100px" inline>
|
|
<el-form-item label="用户账号">
|
|
<el-form-item label="用户账号">
|
|
- <el-input v-model="pageProps.cameraSn" clearable style="width: 250px" placeholder="请输入" />
|
|
|
|
|
|
+ <el-input v-model="pageProps.userName" clearable style="width: 250px" placeholder="请输入" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="所属单位">
|
|
<el-form-item label="所属单位">
|
|
- <!-- <el-select style="width: 250px" v-model="pageProps.cameraType" clearable>
|
|
|
|
- <el-option :value="Number(key)" :label="type" v-for="(type, key) in DeviceTypeDesc" />
|
|
|
|
- </el-select> -->
|
|
|
|
- <el-input v-model="pageProps.cameraSn" clearable style="width: 250px" placeholder="请输入" />
|
|
|
|
|
|
+ <el-input v-model="pageProps.orgName" clearable style="width: 250px" placeholder="请输入" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
@@ -18,6 +15,7 @@
|
|
<el-button type="primary" plain @click="pageProps = { ...initProps }">
|
|
<el-button type="primary" plain @click="pageProps = { ...initProps }">
|
|
重置
|
|
重置
|
|
</el-button>
|
|
</el-button>
|
|
|
|
+ <el-button type="primary" @click="addHandler"> 创建用户 </el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
@@ -25,24 +23,31 @@
|
|
|
|
|
|
<div class="relics-content">
|
|
<div class="relics-content">
|
|
<el-table :data="relicsArray" border>
|
|
<el-table :data="relicsArray" border>
|
|
- <el-table-column label="姓名" prop="cameraSn"></el-table-column>
|
|
|
|
-
|
|
|
|
- <el-table-column label="账号" prop="snCode" v-slot:default="{ row }: { row: Device }">
|
|
|
|
|
|
+ <el-table-column label="姓名" prop="nickName"></el-table-column>
|
|
|
|
+ <el-table-column label="账号" prop="userName"></el-table-column>
|
|
|
|
+ <!-- <el-table-column label="账号" prop="userName" v-slot:default="{ row }: { row: Device }">
|
|
{{ DeviceTypeDesc[row.cameraType] }}
|
|
{{ DeviceTypeDesc[row.cameraType] }}
|
|
- </el-table-column>
|
|
|
|
|
|
+ </el-table-column> -->
|
|
|
|
|
|
- <el-table-column label="所属单位" prop="createBy"> </el-table-column>
|
|
|
|
- <el-table-column label="角色" prop="createBy"> </el-table-column>
|
|
|
|
|
|
+ <el-table-column label="所属单位" prop="orgName"> </el-table-column>
|
|
|
|
+ <el-table-column label="角色" prop="roleNames"> </el-table-column>
|
|
<el-table-column label="创建人" prop="createBy"> </el-table-column>
|
|
<el-table-column label="创建人" prop="createBy"> </el-table-column>
|
|
<el-table-column label="创建时间" prop="createTime" v-slot:default="{ row }">
|
|
<el-table-column label="创建时间" prop="createTime" v-slot:default="{ row }">
|
|
{{ row.createTime && row.createTime.substr(0, 16) }}
|
|
{{ row.createTime && row.createTime.substr(0, 16) }}
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="状态" prop="createBy"> </el-table-column>
|
|
|
|
|
|
+ <el-table-column align="center" label="状态" prop="status" v-slot:default="{ row }">
|
|
|
|
+ <el-switch inline-prompt width="60" v-model="row.status" :before-change="() => beforeChangeStatus(row)"
|
|
|
|
+ :active-value='1' :inactive-value='0' active-text="启用" inactive-text="禁用"
|
|
|
|
+ style="--el-switch-on-color: #13ce66; " />
|
|
|
|
+ </el-table-column>
|
|
<el-table-column label="操作" width="100px" fixed="right">
|
|
<el-table-column label="操作" width="100px" fixed="right">
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
- <!-- <el-button link type="danger" @click="delHandler(row.cameraId)" size="small">
|
|
|
|
|
|
+ <el-button link type="primary" @click="editHandler(row)" size="small">
|
|
|
|
+ 编辑
|
|
|
|
+ </el-button>
|
|
|
|
+ <el-button link type="danger" @click="delHandler(row)" size="small">
|
|
删除
|
|
删除
|
|
- </el-button> -->
|
|
|
|
|
|
+ </el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -59,29 +64,61 @@
|
|
import { onActivated, ref, watch } from "vue";
|
|
import { onActivated, ref, watch } from "vue";
|
|
import {
|
|
import {
|
|
getUserpageFetch,
|
|
getUserpageFetch,
|
|
- PageProps
|
|
|
|
|
|
+ addUserFetch,
|
|
|
|
+ updateUserStatusFetch,
|
|
|
|
+ PageProps,
|
|
|
|
+ UserType
|
|
} from "@/request";
|
|
} from "@/request";
|
|
-import { Device } from "@/request/type";
|
|
|
|
-import { DeviceTypeDesc } from "@/store/device";
|
|
|
|
-// import { ElMessageBox } from "element-plus";
|
|
|
|
-// import { deviceEdit } from "./quisk";
|
|
|
|
|
|
+import { usersAdd } from "./quisk";
|
|
|
|
+import { openLoading, closeLoading } from "@/helper/loading";
|
|
|
|
+
|
|
import { debounce } from "@/util";
|
|
import { debounce } from "@/util";
|
|
|
|
|
|
-const initProps: PageProps<{}> = {
|
|
|
|
|
|
+const initProps: PageProps<Partial<Pick<UserType, "userName" | "orgName">>> = {
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
|
|
+ userName: '',
|
|
|
|
+ orgName: ''
|
|
};
|
|
};
|
|
|
|
+
|
|
const pageProps = ref({ ...initProps });
|
|
const pageProps = ref({ ...initProps });
|
|
const total = ref<number>(0);
|
|
const total = ref<number>(0);
|
|
-const relicsArray = ref<Device[]>([]);
|
|
|
|
|
|
+const relicsArray = ref<UserType[]>([]);
|
|
|
|
|
|
const refresh = debounce(async () => {
|
|
const refresh = debounce(async () => {
|
|
const data = await getUserpageFetch(pageProps.value);
|
|
const data = await getUserpageFetch(pageProps.value);
|
|
|
|
|
|
- // total.value = data.total;
|
|
|
|
- // relicsArray.value = data.records;
|
|
|
|
|
|
+ total.value = data.total;
|
|
|
|
+ relicsArray.value = data.records;
|
|
});
|
|
});
|
|
|
|
+const addHandler = async () => {
|
|
|
|
+ await usersAdd({ submit: addUserFetch });
|
|
|
|
+ await refresh();
|
|
|
|
+}
|
|
|
|
+const editHandler = (row: UserType) => {
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+const delHandler = (row: UserType) => {
|
|
|
|
|
|
|
|
+}
|
|
|
|
+const beforeChangeStatus = (row: UserType): Promise<boolean> => {
|
|
|
|
+ openLoading()
|
|
|
|
+ return new Promise(async (resolve, reject) => {
|
|
|
|
+ try {
|
|
|
|
+ const anti = !row.status
|
|
|
|
+ console.log('anti', anti)
|
|
|
|
+ await updateUserStatusFetch({
|
|
|
|
+ userId: row.userId,
|
|
|
|
+ status: Number(anti)
|
|
|
|
+ });
|
|
|
|
+ resolve(true)
|
|
|
|
+ } catch (error) {
|
|
|
|
+ reject(false)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ closeLoading();
|
|
|
|
+ })
|
|
|
|
+}
|
|
watch(pageProps, refresh, { deep: true, immediate: true });
|
|
watch(pageProps, refresh, { deep: true, immediate: true });
|
|
onActivated(refresh);
|
|
onActivated(refresh);
|
|
</script>
|
|
</script>
|